mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 04:33:32 +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;
|
HICON hIcon;
|
||||||
} ABOUT_INFO;
|
} 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.@]
|
* SHHelpShortcuts_RunDLLA [SHELL32.@]
|
||||||
*
|
*
|
||||||
|
|
|
@ -2282,13 +2282,17 @@ co_UserCreateWindowEx(CREATESTRUCTW* Cs,
|
||||||
IntSendParentNotify(Window, WM_CREATE);
|
IntSendParentNotify(Window, WM_CREATE);
|
||||||
|
|
||||||
/* Notify the shell that a new window was created */
|
/* Notify the shell that a new window was created */
|
||||||
if (UserIsDesktopWindow(Window->spwndParent) &&
|
if (Window->spwndOwner == NULL ||
|
||||||
Window->spwndOwner == NULL &&
|
!(Window->spwndOwner->style & WS_VISIBLE) ||
|
||||||
(Window->style & WS_VISIBLE) &&
|
(Window->spwndOwner->ExStyle & WS_EX_TOOLWINDOW))
|
||||||
(!(Window->ExStyle & WS_EX_TOOLWINDOW) ||
|
|
||||||
(Window->ExStyle & WS_EX_APPWINDOW)))
|
|
||||||
{
|
{
|
||||||
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 */
|
/* Initialize and show the window's scrollbars */
|
||||||
|
|
|
@ -1904,15 +1904,23 @@ co_WinPosSetWindowPos(
|
||||||
}
|
}
|
||||||
else if (WinPos.flags & SWP_SHOWWINDOW)
|
else if (WinPos.flags & SWP_SHOWWINDOW)
|
||||||
{
|
{
|
||||||
if (UserIsDesktopWindow(Window->spwndParent) &&
|
if (Window->style & WS_CHILD)
|
||||||
Window->spwndOwner == NULL &&
|
{
|
||||||
(!(Window->ExStyle & WS_EX_TOOLWINDOW) ||
|
if ((Window->style & WS_POPUP) && (Window->ExStyle & WS_EX_APPWINDOW))
|
||||||
(Window->ExStyle & WS_EX_APPWINDOW)))
|
{
|
||||||
{
|
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
|
||||||
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
|
if (!(WinPos.flags & SWP_NOACTIVATE))
|
||||||
if (!(WinPos.flags & SWP_NOACTIVATE))
|
UpdateShellHook(Window);
|
||||||
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->style |= WS_VISIBLE; //IntSetStyle( Window, WS_VISIBLE, 0 );
|
||||||
Window->head.pti->cVisWindows++;
|
Window->head.pti->cVisWindows++;
|
||||||
|
@ -2552,9 +2560,8 @@ co_WinPosShowWindow(PWND Wnd, INT Cmd)
|
||||||
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
|
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
case SW_SHOWMINIMIZED:
|
case SW_SHOWMINIMIZED:
|
||||||
|
case SW_MINIMIZE: /* CORE-15669: SW_MINIMIZE also shows */
|
||||||
Swp |= SWP_SHOWWINDOW;
|
Swp |= SWP_SHOWWINDOW;
|
||||||
/* Fall through. */
|
|
||||||
case SW_MINIMIZE:
|
|
||||||
{
|
{
|
||||||
Swp |= SWP_NOACTIVATE;
|
Swp |= SWP_NOACTIVATE;
|
||||||
if (!(style & WS_MINIMIZE))
|
if (!(style & WS_MINIMIZE))
|
||||||
|
@ -2649,7 +2656,7 @@ co_WinPosShowWindow(PWND Wnd, INT Cmd)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
//ERR("co_WinPosShowWindow Exit Good 4\n");
|
//ERR("co_WinPosShowWindow Exit Good 4\n");
|
||||||
return WasVisible;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowFlag = (Cmd != SW_HIDE);
|
ShowFlag = (Cmd != SW_HIDE);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue