Return correct values for GetFieldRect() when using themes.
authorJamie Gadd <jrgadd2@cs.latrobe.edu.au>
Sun, 8 Jan 2006 15:33:30 +0000 (15:33 +0000)
committerJamie Gadd <jrgadd2@cs.latrobe.edu.au>
Sun, 8 Jan 2006 15:33:30 +0000 (15:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/msw/statbr95.cpp

index 81898ce7fc2f36bb9aff836a343be87fc113fa36..61cae2c555f29639ad7977b0981d0dc79514e7c5 100644 (file)
@@ -68,6 +68,7 @@ wxMSW:
 - New TARGET_CPU=amd64 (or 'ia64') option for the makefile.vc files which
   puts 64-bit builds in their own directory and adds /machine:amd64 or ia64
   to the link command.
+- wxStatusBar::GetFieldRect now returns correct values under XP.
 
 wxGTK:
 
index 64078bf0db927942325ff288e3ee0d3516328fa5..21dd058290ab7a0aa5833c8e1c6c17fc566b2456 100644 (file)
 // include <commctrl.h> "properly"
 #include "wx/msw/wrapcctl.h"
 
+#if wxUSE_UXTHEME
+    #include "wx/msw/uxtheme.h"
+#endif
+
 // ----------------------------------------------------------------------------
 // macros
 // ----------------------------------------------------------------------------
@@ -267,6 +271,23 @@ bool wxStatusBar95::GetFieldRect(int i, wxRect& rect) const
         wxLogLastError(wxT("SendMessage(SB_GETRECT)"));
     }
 
+#if wxUSE_UXTHEME
+    wxUxThemeHandle theme((wxStatusBar95 *)this, L"Status"); // const_cast
+    if ( theme )
+    {
+        // by default Windows has a 2 pixel border to the right of the left
+        // divider (or it could be a bug) but it looks wrong so remove it
+        if ( i != 0 )
+        {
+            r.left -= 2;
+        }
+
+        wxUxThemeEngine::Get()->GetThemeBackgroundContentRect(theme, NULL,
+                                                              1 /* SP_PANE */, 0,
+                                                              &r, &r);
+    }
+#endif
+
     wxCopyRECTToRect(r, rect);
 
     return true;