[EXPLORER] -Implement the minimum taskbar size for the vertical position.
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Sat, 22 Jul 2017 09:13:33 +0000 (09:13 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Sat, 22 Jul 2017 09:13:33 +0000 (09:13 +0000)
svn path=/trunk/; revision=75386

reactos/base/shell/explorer/taskband.cpp
reactos/base/shell/explorer/traywnd.cpp

index b079478..b7bc133 100644 (file)
@@ -40,15 +40,11 @@ class CTaskBand :
     CComPtr<IUnknown> m_Site;
 
     HWND m_hWnd;
-    HWND m_hWndStartButton;
-    DWORD m_BandID;
 
 public:
     CTaskBand() :
-        m_hWnd(NULL),
-        m_BandID(0)
+        m_hWnd(NULL)
     {
-
     }
 
     virtual ~CTaskBand() { }
@@ -117,32 +113,30 @@ public:
             /* FIXME: What about DBIMF_NOGRIPPER and DBIMF_ALWAYSGRIPPER */
             pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
 
+            /* Obtain the button size, to be used as the minimum size */
+            DWORD size = SendMessageW(hwndToolbar, TB_GETBUTTONSIZE, 0, 0);
+            pdbi->ptMinSize.x = 0;
+            pdbi->ptMinSize.y = GET_Y_LPARAM(size);
+
             if (dwViewMode & DBIF_VIEWMODE_VERTICAL)
             {
+                pdbi->ptIntegral.x = 0;
                 pdbi->ptIntegral.y = 1;
-                pdbi->ptMinSize.y = 1;
-                /* FIXME: Get the button metrics from the task bar object!!! */
-                pdbi->ptMinSize.x = (3 * GetSystemMetrics(SM_CXEDGE) / 2) + /* FIXME: Might be wrong if only one column! */
-                    GetSystemMetrics(SM_CXSIZE) + (2 * GetSystemMetrics(SM_CXEDGE)); /* FIXME: Min button size, query!!! */
             }
             else
             {
-                /* Obtain the button size, to be used as the integral size */
-                DWORD size = SendMessageW(hwndToolbar, TB_GETBUTTONSIZE, 0, 0);
                 pdbi->ptIntegral.x = 0;
                 pdbi->ptIntegral.y = GET_Y_LPARAM(size);
-                pdbi->ptMinSize = pdbi->ptIntegral;
             }
 
             /* Ignored: pdbi->ptMaxSize.x */
             pdbi->ptMaxSize.y = -1;
 
+            RECT rcToolbar;
+            ::GetWindowRect(hwndToolbar, &rcToolbar);
             /* FIXME: We should query the height from the task bar object!!! */
-            pdbi->ptActual.y = GetSystemMetrics(SM_CYSIZE) + (2 * GetSystemMetrics(SM_CYEDGE));
-
-            /* Save the band ID for future use in case we need to check whether a given band
-               is the task band */
-            m_BandID = dwBandID;
+            pdbi->ptActual.x = rcToolbar.right - rcToolbar.left;
+            pdbi->ptActual.y = rcToolbar.bottom - rcToolbar.top;
 
             TRACE("H: %d, Min: %d,%d, Integral.y: %d Actual: %d,%d\n", (dwViewMode & DBIF_VIEWMODE_VERTICAL) == 0,
                 pdbi->ptMinSize.x, pdbi->ptMinSize.y, pdbi->ptIntegral.y,
@@ -334,8 +328,6 @@ public:
     HRESULT STDMETHODCALLTYPE Initialize(IN OUT ITrayWindow *tray, HWND hWndStartButton)
     {
         m_Tray = tray;
-        m_BandID = (DWORD) -1;
-        m_hWndStartButton = hWndStartButton;
         return S_OK;
     }
 
index 36a09e5..bb2b6ae 100644 (file)
@@ -1688,8 +1688,14 @@ ChangePos:
             pRect->top = pRect->bottom - (rebarRect.bottom - rebarRect.top + margins.cy);
             break;
         case ABE_LEFT:
+            rebarRect.right = rebarRect.left + (pRect->right - pRect->left - margins.cx);
+            ::SendMessageW(m_Rebar, RB_SIZETORECT, RBSTR_CHANGERECT,  (LPARAM)&rebarRect);
+            pRect->right = pRect->left + (rebarRect.right - rebarRect.left + margins.cx);
+            break;
         case ABE_RIGHT:
-            /* FIXME: what to do here? */
+            rebarRect.left = rebarRect.right - (pRect->right - pRect->left - margins.cx);
+            ::SendMessageW(m_Rebar, RB_SIZETORECT, RBSTR_CHANGERECT,  (LPARAM)&rebarRect);
+            pRect->left = pRect->right - (rebarRect.right - rebarRect.left + margins.cx);
             break;
         }