mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 02:36:13 +00:00
This is a squashed backport of the following commits: 0.4.14-dev-369-g141cf04239
(#2046) NTUSER 0.4.15-dev-1126-g58b0558f94
(#3294) NTUSER 0.4.15-dev-2618-g32b0cf6fc6
(#3697) NTUSER 0.4.15-dev-2621-g59d4c11203
(#3700) NTUSER 0.4.15-dev-5242-ge6fb0e0c25
(#4800) SHELL32 Cleanup SHAppBarMessage() brings us closer to releases/0.4.14 In the older branches it will fix the following bugs (or prevents introducing them): CORE-14380 'Effective File Search 6.8.1 when you open up the app via desktop link there is no pane in taskbar' CORE-15655 'Click-N-Type Virtual Keyboard 3.03.0412 has no taskbar pane' CORE-15669 'DVD Write Now 1.5.12 SP2 setup has no taskbar pane' CORE-15716 'Photofiltr 7.2.1 has no taskbar pane' CORE-15731 'Java JRE 6u45 setup, last page of setup has no taskbar pane' CORE-16030 'Moo0 Audio Recorder - the taskbar icon does not appear' (CORE-17330 Regression, many installers that should have only 1 taskbar pane, now have 2 of them erroneously)
This commit is contained in:
parent
f7d6f25a18
commit
c18414b56b
3 changed files with 29 additions and 84 deletions
|
@ -971,72 +971,6 @@ typedef struct
|
|||
HICON hIcon;
|
||||
} ABOUT_INFO;
|
||||
|
||||
#define DROP_FIELD_TOP (-15)
|
||||
#define DROP_FIELD_HEIGHT 15
|
||||
|
||||
/*************************************************************************
|
||||
* SHAppBarMessage [SHELL32.@]
|
||||
*/
|
||||
UINT_PTR WINAPI OLD_SHAppBarMessage(DWORD msg, PAPPBARDATA data)
|
||||
{
|
||||
int width=data->rc.right - data->rc.left;
|
||||
int height=data->rc.bottom - data->rc.top;
|
||||
RECT rec=data->rc;
|
||||
|
||||
TRACE("msg=%d, data={cb=%d, hwnd=%p, callback=%x, edge=%d, rc=%s, lparam=%lx}\n",
|
||||
msg, data->cbSize, data->hWnd, data->uCallbackMessage, data->uEdge,
|
||||
wine_dbgstr_rect(&data->rc), data->lParam);
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case ABM_GETSTATE:
|
||||
return ABS_ALWAYSONTOP | ABS_AUTOHIDE;
|
||||
|
||||
case ABM_GETTASKBARPOS:
|
||||
GetWindowRect(data->hWnd, &rec);
|
||||
data->rc=rec;
|
||||
return TRUE;
|
||||
|
||||
case ABM_ACTIVATE:
|
||||
SetActiveWindow(data->hWnd);
|
||||
return TRUE;
|
||||
|
||||
case ABM_GETAUTOHIDEBAR:
|
||||
return 0; /* pretend there is no autohide bar */
|
||||
|
||||
case ABM_NEW:
|
||||
/* cbSize, hWnd, and uCallbackMessage are used. All other ignored */
|
||||
SetWindowPos(data->hWnd,HWND_TOP,0,0,0,0,SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
|
||||
return TRUE;
|
||||
|
||||
case ABM_QUERYPOS:
|
||||
GetWindowRect(data->hWnd, &(data->rc));
|
||||
return TRUE;
|
||||
|
||||
case ABM_REMOVE:
|
||||
FIXME("ABM_REMOVE broken\n");
|
||||
/* FIXME: this is wrong; should it be DestroyWindow instead? */
|
||||
/*CloseHandle(data->hWnd);*/
|
||||
return TRUE;
|
||||
|
||||
case ABM_SETAUTOHIDEBAR:
|
||||
SetWindowPos(data->hWnd,HWND_TOP,rec.left+1000,rec.top,
|
||||
width,height,SWP_SHOWWINDOW);
|
||||
return TRUE;
|
||||
|
||||
case ABM_SETPOS:
|
||||
data->uEdge=(ABE_RIGHT | ABE_LEFT);
|
||||
SetWindowPos(data->hWnd,HWND_TOP,data->rc.left,data->rc.top,
|
||||
width,height,SWP_SHOWWINDOW);
|
||||
return TRUE;
|
||||
|
||||
case ABM_WINDOWPOSCHANGED:
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHHelpShortcuts_RunDLLA [SHELL32.@]
|
||||
*
|
||||
|
|
|
@ -2282,13 +2282,17 @@ co_UserCreateWindowEx(CREATESTRUCTW* Cs,
|
|||
IntSendParentNotify(Window, WM_CREATE);
|
||||
|
||||
/* Notify the shell that a new window was created */
|
||||
if (UserIsDesktopWindow(Window->spwndParent) &&
|
||||
Window->spwndOwner == NULL &&
|
||||
(Window->style & WS_VISIBLE) &&
|
||||
(!(Window->ExStyle & WS_EX_TOOLWINDOW) ||
|
||||
(Window->ExStyle & WS_EX_APPWINDOW)))
|
||||
if (Window->spwndOwner == NULL ||
|
||||
!(Window->spwndOwner->style & WS_VISIBLE) ||
|
||||
(Window->spwndOwner->ExStyle & WS_EX_TOOLWINDOW))
|
||||
{
|
||||
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)hWnd, 0);
|
||||
if (UserIsDesktopWindow(Window->spwndParent) &&
|
||||
(Window->style & WS_VISIBLE) &&
|
||||
(!(Window->ExStyle & WS_EX_TOOLWINDOW) ||
|
||||
(Window->ExStyle & WS_EX_APPWINDOW)))
|
||||
{
|
||||
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)hWnd, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize and show the window's scrollbars */
|
||||
|
|
|
@ -1904,15 +1904,23 @@ co_WinPosSetWindowPos(
|
|||
}
|
||||
else if (WinPos.flags & SWP_SHOWWINDOW)
|
||||
{
|
||||
if (UserIsDesktopWindow(Window->spwndParent) &&
|
||||
Window->spwndOwner == NULL &&
|
||||
(!(Window->ExStyle & WS_EX_TOOLWINDOW) ||
|
||||
(Window->ExStyle & WS_EX_APPWINDOW)))
|
||||
{
|
||||
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
|
||||
if (!(WinPos.flags & SWP_NOACTIVATE))
|
||||
UpdateShellHook(Window);
|
||||
}
|
||||
if (Window->style & WS_CHILD)
|
||||
{
|
||||
if ((Window->style & WS_POPUP) && (Window->ExStyle & WS_EX_APPWINDOW))
|
||||
{
|
||||
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
|
||||
if (!(WinPos.flags & SWP_NOACTIVATE))
|
||||
UpdateShellHook(Window);
|
||||
}
|
||||
}
|
||||
else if ((Window->ExStyle & WS_EX_APPWINDOW) ||
|
||||
(!(Window->ExStyle & WS_EX_TOOLWINDOW) && !Window->spwndOwner &&
|
||||
(!Window->spwndParent || UserIsDesktopWindow(Window->spwndParent))))
|
||||
{
|
||||
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
|
||||
if (!(WinPos.flags & SWP_NOACTIVATE))
|
||||
UpdateShellHook(Window);
|
||||
}
|
||||
|
||||
Window->style |= WS_VISIBLE; //IntSetStyle( Window, WS_VISIBLE, 0 );
|
||||
Window->head.pti->cVisWindows++;
|
||||
|
@ -2552,9 +2560,8 @@ co_WinPosShowWindow(PWND Wnd, INT Cmd)
|
|||
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
|
||||
/* Fall through. */
|
||||
case SW_SHOWMINIMIZED:
|
||||
case SW_MINIMIZE: /* CORE-15669: SW_MINIMIZE also shows */
|
||||
Swp |= SWP_SHOWWINDOW;
|
||||
/* Fall through. */
|
||||
case SW_MINIMIZE:
|
||||
{
|
||||
Swp |= SWP_NOACTIVATE;
|
||||
if (!(style & WS_MINIMIZE))
|
||||
|
@ -2649,7 +2656,7 @@ co_WinPosShowWindow(PWND Wnd, INT Cmd)
|
|||
|
||||
default:
|
||||
//ERR("co_WinPosShowWindow Exit Good 4\n");
|
||||
return WasVisible;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ShowFlag = (Cmd != SW_HIDE);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue