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)


Reply via email to