Ignore:
Timestamp:
Mar 23, 2011, 11:44:45 PM (14 years ago)
Author:
dmik
Message:

shell32: systray: Added support for the "TaskbarCreated" system notificaiton message that Windows broadcasts to all top-level windows when the taskbar (xcenter in case of OS/2) is (re)started. This allows applications supporting this message (including Java applications) recreate their taskbar icons.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/shell32/systray_os2ex.c

    r21600 r21602  
    2626
    2727static ULONG WM_XST_CREATED = 0;
     28static ULONG WM_TASKBARCREATED_W = 0;
    2829
    2930static HWND hwndProxy = NULLHANDLE;
     
    6869            if (winMsg)
    6970            {
    70                 DoWin32PostMessage(ptrayItem->notifyIcon.hWnd,
    71                                    ptrayItem->notifyIcon.uCallbackMessage,
    72                                    (MPARAM)ptrayItem->notifyIcon.uID,
    73                                    (MPARAM)winMsg);
     71                PostMessageA(ptrayItem->notifyIcon.hWnd,
     72                             ptrayItem->notifyIcon.uCallbackMessage,
     73                             (WPARAM)ptrayItem->notifyIcon.uID,
     74                             (LPARAM)winMsg);
    7475                return (MRESULT)TRUE;
    7576            }
     
    7879        case XST_IN_CONTEXT:
    7980        {
    80             DoWin32PostMessage(ptrayItem->notifyIcon.hWnd,
    81                                ptrayItem->notifyIcon.uCallbackMessage,
    82                                (MPARAM)ptrayItem->notifyIcon.uID,
    83                                (MPARAM)WM_CONTEXTMENU_W);
     81            PostMessageA(ptrayItem->notifyIcon.hWnd,
     82                         ptrayItem->notifyIcon.uCallbackMessage,
     83                         (WPARAM)ptrayItem->notifyIcon.uID,
     84                         (LPARAM)WM_CONTEXTMENU_W);
    8485            return (MRESULT)TRUE;
    8586        }
     
    9495        if (msg == WM_XST_CREATED)
    9596        {
     97            // xCenter was restarted, no icons are shown; remove all items
     98            // and broadcast TaskbarCreated to let applications recreate them
     99            SYSTRAY_PruneAllItems();
     100
     101            dprintf(("SHELL32: SYSTRAY: Broadcasting \"TaskbarCreated\" (%x)",
     102                     WM_TASKBARCREATED_W));
     103            PostMessageA(HWND_BROADCAST_W, WM_TASKBARCREATED_W,
     104                         (WPARAM)0, (LPARAM)0);
    96105            return (MRESULT)TRUE;
    97106        }
     
    204213    WM_XST_CREATED = xstGetSysTrayCreatedMsgId();
    205214
     215    WM_TASKBARCREATED_W = RegisterWindowMessageA("TaskbarCreated");
     216
    206217    SYSTRAY_ItemInit = SYSTRAY_Ex_ItemInit;
    207218    SYSTRAY_ItemTerm = SYSTRAY_Ex_ItemTerm;
Note: See TracChangeset for help on using the changeset viewer.