diff options
author | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
commit | 76bcc36ed305418a3ddc5752d287ede894243e1b (patch) | |
tree | bacb320c825768471ce56f058f17ce863d592376 /xorg-server/hw/xwin/wintrayicon.c | |
parent | 7d894e32566b710952c44cbc71939ad1d9e2fa8d (diff) | |
parent | 0f834b91a4768673833ab4917e87d86c237bb1a6 (diff) | |
download | vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.gz vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.bz2 vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
pixman/pixman/pixman-mmx.c
xorg-server/Xext/shm.c
xorg-server/Xext/syncsrv.h
xorg-server/Xext/xvmain.c
xorg-server/Xi/exevents.c
xorg-server/Xi/opendev.c
xorg-server/composite/compalloc.c
xorg-server/composite/compoverlay.c
xorg-server/dix/colormap.c
xorg-server/dix/devices.c
xorg-server/dix/dispatch.c
xorg-server/dix/dixfonts.c
xorg-server/dix/eventconvert.c
xorg-server/dix/events.c
xorg-server/dix/gc.c
xorg-server/dix/getevents.c
xorg-server/dix/main.c
xorg-server/dix/privates.c
xorg-server/dix/registry.c
xorg-server/dix/resource.c
xorg-server/exa/exa_accel.c
xorg-server/exa/exa_migration_classic.c
xorg-server/exa/exa_unaccel.c
xorg-server/fb/fb.h
xorg-server/fb/fbcopy.c
xorg-server/fb/fbpixmap.c
xorg-server/glx/dispatch.h
xorg-server/glx/glapi.h
xorg-server/glx/glapi_gentable.c
xorg-server/glx/glapitable.h
xorg-server/glx/glprocs.h
xorg-server/glx/glxcmds.c
xorg-server/glx/glxcmdsswap.c
xorg-server/glx/glxdricommon.c
xorg-server/glx/glxdriswrast.c
xorg-server/glx/glxext.c
xorg-server/glx/indirect_dispatch.c
xorg-server/glx/indirect_dispatch.h
xorg-server/glx/indirect_dispatch_swap.c
xorg-server/glx/indirect_size.h
xorg-server/glx/indirect_size_get.h
xorg-server/glx/indirect_table.c
xorg-server/glx/indirect_util.c
xorg-server/glx/rensize.c
xorg-server/glx/single2swap.c
xorg-server/glx/singlepix.c
xorg-server/glx/singlepixswap.c
xorg-server/glx/singlesize.c
xorg-server/hw/dmx/dmxinit.c
xorg-server/hw/kdrive/ephyr/ephyr.c
xorg-server/hw/kdrive/ephyr/hostx.c
xorg-server/hw/kdrive/ephyr/hostx.h
xorg-server/hw/kdrive/src/kinput.c
xorg-server/hw/xfree86/common/compiler.h
xorg-server/hw/xwin/InitInput.c
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/ddraw.h
xorg-server/hw/xwin/glx/glwrap.c
xorg-server/hw/xwin/glx/indirect.c
xorg-server/hw/xwin/glx/wgl_ext_api.h
xorg-server/hw/xwin/glx/winpriv.c
xorg-server/hw/xwin/win.h
xorg-server/hw/xwin/winallpriv.c
xorg-server/hw/xwin/winauth.c
xorg-server/hw/xwin/winclipboard.h
xorg-server/hw/xwin/winclipboardinit.c
xorg-server/hw/xwin/winclipboardthread.c
xorg-server/hw/xwin/winclipboardunicode.c
xorg-server/hw/xwin/winclipboardwndproc.c
xorg-server/hw/xwin/winclipboardwrappers.c
xorg-server/hw/xwin/winclipboardxevents.c
xorg-server/hw/xwin/wincmap.c
xorg-server/hw/xwin/winconfig.c
xorg-server/hw/xwin/wincreatewnd.c
xorg-server/hw/xwin/wincursor.c
xorg-server/hw/xwin/windialogs.c
xorg-server/hw/xwin/winengine.c
xorg-server/hw/xwin/winerror.c
xorg-server/hw/xwin/wingc.c
xorg-server/hw/xwin/wingetsp.c
xorg-server/hw/xwin/winkeybd.c
xorg-server/hw/xwin/winkeybd.h
xorg-server/hw/xwin/winlayouts.h
xorg-server/hw/xwin/winmisc.c
xorg-server/hw/xwin/winmonitors.c
xorg-server/hw/xwin/winmouse.c
xorg-server/hw/xwin/winmsg.c
xorg-server/hw/xwin/winmsg.h
xorg-server/hw/xwin/winmultiwindowclass.c
xorg-server/hw/xwin/winmultiwindowicons.c
xorg-server/hw/xwin/winmultiwindowshape.c
xorg-server/hw/xwin/winmultiwindowwindow.c
xorg-server/hw/xwin/winmultiwindowwm.c
xorg-server/hw/xwin/winmultiwindowwndproc.c
xorg-server/hw/xwin/winnativegdi.c
xorg-server/hw/xwin/winpfbdd.c
xorg-server/hw/xwin/winpixmap.c
xorg-server/hw/xwin/winpolyline.c
xorg-server/hw/xwin/winprefs.c
xorg-server/hw/xwin/winprocarg.c
xorg-server/hw/xwin/winregistry.c
xorg-server/hw/xwin/winscrinit.c
xorg-server/hw/xwin/winsetsp.c
xorg-server/hw/xwin/winshaddd.c
xorg-server/hw/xwin/winshadddnl.c
xorg-server/hw/xwin/winshadgdi.c
xorg-server/hw/xwin/wintrayicon.c
xorg-server/hw/xwin/winwin32rootless.c
xorg-server/hw/xwin/winwin32rootlesswindow.c
xorg-server/hw/xwin/winwin32rootlesswndproc.c
xorg-server/hw/xwin/winwindow.c
xorg-server/hw/xwin/winwindow.h
xorg-server/hw/xwin/winwindowswm.c
xorg-server/hw/xwin/winwndproc.c
xorg-server/include/callback.h
xorg-server/include/dixstruct.h
xorg-server/include/misc.h
xorg-server/include/os.h
xorg-server/include/scrnintstr.h
xorg-server/mi/micmap.c
xorg-server/mi/miinitext.c
xorg-server/mi/mioverlay.c
xorg-server/mi/misprite.c
xorg-server/mi/mivaltree.c
xorg-server/mi/miwindow.c
xorg-server/miext/damage/damage.c
xorg-server/miext/rootless/rootlessGC.c
xorg-server/miext/rootless/rootlessWindow.c
xorg-server/os/WaitFor.c
xorg-server/os/access.c
xorg-server/os/connection.c
xorg-server/os/io.c
xorg-server/os/log.c
xorg-server/os/osinit.c
xorg-server/os/utils.c
xorg-server/os/xdmcp.c
xorg-server/os/xprintf.c
xorg-server/os/xstrans.c
xorg-server/render/mipict.c
xorg-server/xkb/xkbActions.c
xorg-server/xkb/xkbInit.c
xorg-server/xkeyboard-config/compat/default.in
Diffstat (limited to 'xorg-server/hw/xwin/wintrayicon.c')
-rw-r--r-- | xorg-server/hw/xwin/wintrayicon.c | 266 |
1 files changed, 128 insertions, 138 deletions
diff --git a/xorg-server/hw/xwin/wintrayicon.c b/xorg-server/hw/xwin/wintrayicon.c index 01d53bc44..8a3952629 100644 --- a/xorg-server/hw/xwin/wintrayicon.c +++ b/xorg-server/hw/xwin/wintrayicon.c @@ -42,92 +42,88 @@ static NOTIFYICONDATA nid; */ void -winInitNotifyIcon (winPrivScreenPtr pScreenPriv, Bool Modify) +winInitNotifyIcon(winPrivScreenPtr pScreenPriv, Bool Modify) { - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - char HostName[256]; - - if (!Modify) - { - nid.cbSize = sizeof (NOTIFYICONDATA); - nid.hWnd = pScreenPriv->hwndScreen; - nid.uID = pScreenInfo->dwScreen; - nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; - nid.uCallbackMessage = WM_TRAYICON; - nid.hIcon = winTaskbarIcon (); - - /* Save handle to the icon so it can be freed later */ - pScreenPriv->hiconNotifyIcon = nid.hIcon; - } - - gethostname(HostName,256); - - /* Set display and screen-specific tooltip text */ - if (g_pszQueryHost) - { - snprintf (nid.szTip, - sizeof (nid.szTip), - "%s - %s:%s.%d - %d clients", - g_pszQueryHost, - HostName, - display, - (int) pScreenInfo->dwScreen, - pScreenPriv->iConnectedClients); - } - else - { - snprintf (nid.szTip, - sizeof (nid.szTip), - "%s:%s.%d - %d clients", - HostName, - display, - (int) pScreenInfo->dwScreen, - pScreenPriv->iConnectedClients); - } - - /* Add the tray icon */ - if (!Shell_NotifyIcon ((Modify) ? NIM_MODIFY : NIM_ADD, &nid)) - ErrorF ("winInitNotifyIcon - Shell_NotifyIcon Failed\n"); -} + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + char HostName[256]; + + if (!Modify) + { + nid.cbSize = sizeof(NOTIFYICONDATA); + nid.hWnd = pScreenPriv->hwndScreen; + nid.uID = pScreenInfo->dwScreen; + nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; + nid.uCallbackMessage = WM_TRAYICON; + nid.hIcon = winTaskbarIcon(); + + /* Save handle to the icon so it can be freed later */ + pScreenPriv->hiconNotifyIcon = nid.hIcon; + } + gethostname(HostName,256); + + /* Set display and screen-specific tooltip text */ + if (g_pszQueryHost) + { + snprintf(nid.szTip, + sizeof(nid.szTip), + "%s - %s:%s.%d - %d clients", + g_pszQueryHost, + HostName, + display, + (int) pScreenInfo->dwScreen, + pScreenPriv->iConnectedClients); + } + else + { + snprintf (nid.szTip, + sizeof (nid.szTip), + "%s:%s.%d - %d clients", + HostName, + display, + (int) pScreenInfo->dwScreen, + pScreenPriv->iConnectedClients); + } + + /* Add the tray icon */ + if (!Shell_NotifyIcon ((Modify) ? NIM_MODIFY : NIM_ADD, &nid)) + ErrorF("winInitNotifyIcon - Shell_NotifyIcon Failed\n"); +} /* * Delete the tray icon */ void -winDeleteNotifyIcon (winPrivScreenPtr pScreenPriv) +winDeleteNotifyIcon(winPrivScreenPtr pScreenPriv) { - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - - if (!pScreenPriv->hiconNotifyIcon) - return; - - /* Delete the tray icon */ - Shell_NotifyIcon (NIM_DELETE, &nid); - - /* Free the icon that was loaded */ - DestroyIcon (pScreenPriv->hiconNotifyIcon); - - pScreenPriv->hiconNotifyIcon = NULL; -} + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + + if (!pScreenPriv->hiconNotifyIcon) + return; + /* Delete the tray icon */ + Shell_NotifyIcon (NIM_DELETE, &nid); + + /* Free the icon that was loaded */ + DestroyIcon (pScreenPriv->hiconNotifyIcon); + + pScreenPriv->hiconNotifyIcon = NULL; +} /* * Process messages intended for the tray icon */ LRESULT -winHandleIconMessage (HWND hwnd, UINT message, - WPARAM wParam, LPARAM lParam, - winPrivScreenPtr pScreenPriv) +winHandleIconMessage(HWND hwnd, UINT message, + WPARAM wParam, LPARAM lParam, winPrivScreenPtr pScreenPriv) { #if defined(XWIN_MULTIWINDOWEXTWM) || defined(XWIN_MULTIWINDOW) - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; #endif - switch (lParam) - { + switch (lParam) { case WM_MOUSEMOVE: { static int PrevNrClients; @@ -140,91 +136,85 @@ winHandleIconMessage (HWND hwnd, UINT message, } break; case WM_LBUTTONUP: - /* Restack and bring all windows to top */ - SetForegroundWindow (hwnd); + /* Restack and bring all windows to top */ + SetForegroundWindow(hwnd); #ifdef XWIN_MULTIWINDOWEXTWM - if (pScreenInfo->fMWExtWM) - winMWExtWMRestackWindows (pScreenInfo->pScreen); + if (pScreenInfo->fMWExtWM) + winMWExtWMRestackWindows(pScreenInfo->pScreen); #endif - break; + break; case WM_LBUTTONDBLCLK: - /* Display Exit dialog box */ - winDisplayExitDialog (pScreenPriv); - break; + /* Display Exit dialog box */ + winDisplayExitDialog(pScreenPriv); + break; case WM_RBUTTONUP: - { - POINT ptCursor; - HMENU hmenuPopup; - HMENU hmenuTray; + { + POINT ptCursor; + HMENU hmenuPopup; + HMENU hmenuTray; - /* Get cursor position */ - GetCursorPos (&ptCursor); + /* Get cursor position */ + GetCursorPos(&ptCursor); - /* Load tray icon menu resource */ - hmenuPopup = LoadMenu (g_hInstance, - MAKEINTRESOURCE(IDM_TRAYICON_MENU)); - if (!hmenuPopup) - ErrorF ("winHandleIconMessage - LoadMenu failed\n"); + /* Load tray icon menu resource */ + hmenuPopup = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDM_TRAYICON_MENU)); + if (!hmenuPopup) + ErrorF("winHandleIconMessage - LoadMenu failed\n"); - /* Get actual tray icon menu */ - hmenuTray = GetSubMenu (hmenuPopup, 0); + /* Get actual tray icon menu */ + hmenuTray = GetSubMenu(hmenuPopup, 0); #ifdef XWIN_MULTIWINDOW - /* Check for MultiWindow mode */ - if (pScreenInfo->fMultiWindow) - { - MENUITEMINFO mii = {0}; - - /* Root is shown, remove the check box */ - - /* Setup menu item info structure */ - mii.cbSize = sizeof (MENUITEMINFO); - mii.fMask = MIIM_STATE; - mii.fState = MFS_CHECKED; - - /* Unheck box if root is shown */ - if (pScreenPriv->fRootWindowShown) - mii.fState = MFS_UNCHECKED; - - /* Set menu state */ - SetMenuItemInfo (hmenuTray, ID_APP_HIDE_ROOT, FALSE, &mii); - } - else + /* Check for MultiWindow mode */ + if (pScreenInfo->fMultiWindow) { + MENUITEMINFO mii = { 0 }; + + /* Root is shown, remove the check box */ + + /* Setup menu item info structure */ + mii.cbSize = sizeof(MENUITEMINFO); + mii.fMask = MIIM_STATE; + mii.fState = MFS_CHECKED; + + /* Unheck box if root is shown */ + if (pScreenPriv->fRootWindowShown) + mii.fState = MFS_UNCHECKED; + + /* Set menu state */ + SetMenuItemInfo(hmenuTray, ID_APP_HIDE_ROOT, FALSE, &mii); + } + else #endif - { - /* Remove Hide Root Window button */ - RemoveMenu (hmenuTray, - ID_APP_HIDE_ROOT, - MF_BYCOMMAND); - } - - SetupRootMenu ((unsigned long)hmenuTray); - - /* - * NOTE: This three-step procedure is required for - * proper popup menu operation. Without the - * call to SetForegroundWindow the - * popup menu will often not disappear when you click - * outside of it. Without the PostMessage the second - * time you display the popup menu it might immediately - * disappear. - */ - SetForegroundWindow (hwnd); - TrackPopupMenuEx (hmenuTray, - TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RIGHTBUTTON, - ptCursor.x, ptCursor.y, - hwnd, - NULL); - PostMessage (hwnd, WM_NULL, 0, 0); - - /* Free menu */ - DestroyMenu (hmenuPopup); - } - break; + { + /* Remove Hide Root Window button */ + RemoveMenu(hmenuTray, ID_APP_HIDE_ROOT, MF_BYCOMMAND); + } + + SetupRootMenu((unsigned long) hmenuTray); + + /* + * NOTE: This three-step procedure is required for + * proper popup menu operation. Without the + * call to SetForegroundWindow the + * popup menu will often not disappear when you click + * outside of it. Without the PostMessage the second + * time you display the popup menu it might immediately + * disappear. + */ + SetForegroundWindow(hwnd); + TrackPopupMenuEx(hmenuTray, + TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RIGHTBUTTON, + ptCursor.x, ptCursor.y, hwnd, NULL); + PostMessage(hwnd, WM_NULL, 0, 0); + + /* Free menu */ + DestroyMenu(hmenuPopup); + } + break; } - return 0; + return 0; } |