Author: dquintana Date: Mon May 19 10:44:33 2014 New Revision: 63369 URL: http://svn.reactos.org/svn/reactos?rev=63369&view=rev Log: [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
Modified: branches/shell-experiments/base/shell/explorer-new/traywnd.c Modified: branches/shell-experiments/base/shell/explorer-new/traywnd.c URL: http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/explorer-new/traywnd.c?rev=63369&r1=63368&r2=63369&view=diff ============================================================================== --- branches/shell-experiments/base/shell/explorer-new/traywnd.c [iso-8859-1] (original) +++ branches/shell-experiments/base/shell/explorer-new/traywnd.c [iso-8859-1] Mon May 19 10:44:33 2014 @@ -768,15 +768,6 @@ /* 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 @@ 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 @@ -812,6 +804,15 @@ &rcScreen, 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 @@ -2151,6 +2152,19 @@ 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)