[EXPLORER-NEW]

* Default to always-on-top if the registry setting is not found.
* Reload and apply settings on display change. Fixes taskbar not repositioning on resolution changes.
CORE-7330

svn path=/branches/shell-experiments/; revision=63369
This commit is contained in:
David Quintana 2014-05-19 10:44:33 +00:00
parent a8667b0ffe
commit 14c68ccd3f

View file

@ -768,15 +768,6 @@ ITrayWindowImpl_RegLoadSettings(IN OUT ITrayWindowImpl *This)
/* FIXME: Are there more flags? */
if (This->hWnd != NULL)
SetWindowPos (This->hWnd,
This->AlwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,
0,
0,
0,
0,
SWP_NOMOVE | SWP_NOSIZE);
if (sr.Position > ABE_BOTTOM)
This->Position = ABE_BOTTOM;
else
@ -794,6 +785,7 @@ ITrayWindowImpl_RegLoadSettings(IN OUT ITrayWindowImpl *This)
else
{
This->Position = ABE_BOTTOM;
This->AlwaysOnTop = TRUE;
/* Use the minimum size of the taskbar, we'll use the start
button as a minimum for now. Make sure we calculate the
@ -813,6 +805,15 @@ ITrayWindowImpl_RegLoadSettings(IN OUT ITrayWindowImpl *This)
MONITOR_DEFAULTTOPRIMARY);
}
if (This->hWnd != NULL)
SetWindowPos(This->hWnd,
This->AlwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,
0,
0,
0,
0,
SWP_NOMOVE | SWP_NOSIZE);
/* Determine a minimum tray window rectangle. The "client" height is
zero here since we cannot determine an optimal minimum width when
loaded as a vertical tray window. We just need to make sure the values
@ -2151,6 +2152,19 @@ TrayWndProc(IN HWND hwnd,
switch (uMsg)
{
case WM_DISPLAYCHANGE:
/* Load the saved tray window settings */
ITrayWindowImpl_RegLoadSettings(This);
/* Move the tray window to the right position and resize it if neccessary */
ITrayWindowImpl_CheckTrayWndPosition(This);
/* Align all controls on the tray window */
ITrayWindowImpl_AlignControls(This, NULL);
break;
case WM_COPYDATA:
{
if (This->hwndTrayNotify)