]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tbar95.cpp
flags moved to chkconf
[wxWidgets.git] / src / msw / tbar95.cpp
index f6de304212b2832c6b210f7aa0a7407c4eaa5502..b12dd40b5f599a77fc069769e10338872ea227e1 100644 (file)
@@ -308,6 +308,13 @@ bool wxToolBar::MSWCreateToolbar(const wxPoint& pos, const wxSize& size)
         ::SendMessage(GetHwnd(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS);
 #endif
 
+    // Fix a bug on e.g. the Silver theme on WinXP where control backgrounds
+    // are incorrectly drawn, by forcing the background to a specific colour.
+    int majorVersion, minorVersion;
+    wxGetOsVersion(& majorVersion, & minorVersion);
+    if (majorVersion < 6)
+        SetBackgroundColour(GetBackgroundColour());
+
     return true;
 }
 
@@ -954,7 +961,7 @@ bool wxToolBar::Realize()
                                 if ( tool->Toggle(false) )
                                     DoToggleTool(tool, false);
 
-                                prevButton.fsState &= TBSTATE_CHECKED;
+                                prevButton.fsState &= ~TBSTATE_CHECKED;
                                 nodePrev = nodePrev->GetPrevious();
                                 prevIndex--;
                             }
@@ -1000,8 +1007,6 @@ bool wxToolBar::Realize()
     // Deal with the controls finally
     // ------------------------------
 
-    bool hasControls = false;
-
     // adjust the controls size to fit nicely in the toolbar
     int y = 0;
     size_t index = 0;
@@ -1033,8 +1038,6 @@ bool wxToolBar::Realize()
             continue;
         }
 
-        hasControls = true;
-
         wxControl *control = tool->GetControl();
         wxStaticText * const staticText = tool->GetStaticText();
 
@@ -1175,13 +1178,6 @@ bool wxToolBar::Realize()
     InvalidateBestSize();
     UpdateSize();
 
-    // Fix a bug on e.g. the Silver theme on WinXP where control backgrounds
-    // are incorrectly drawn, by forcing the background to a specific colour.
-    int majorVersion, minorVersion;
-    wxGetOsVersion(& majorVersion, & minorVersion);
-    if (majorVersion < 6 && hasControls && !!UseBgCol())
-        SetBackgroundColour(GetBackgroundColour());
-
     return true;
 }
 
@@ -1189,9 +1185,14 @@ bool wxToolBar::Realize()
 // message handlers
 // ----------------------------------------------------------------------------
 
-bool wxToolBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id)
+bool wxToolBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id_)
 {
-    wxToolBarToolBase *tool = FindById((int)id);
+    // cast to signed is important as we compare this id with (signed) ints in
+    // FindById() and without the cast we'd get a positive int from a
+    // "negative" (i.e. > 32767) WORD
+    const int id = (signed short)id_;
+
+    wxToolBarToolBase *tool = FindById(id);
     if ( !tool )
         return false;
 
@@ -1213,7 +1214,7 @@ bool wxToolBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id)
 
     // OnLeftClick() can veto the button state change - for buttons which
     // may be toggled only, of couse
-    if ( !OnLeftClick((int)id, toggled) && tool->CanBeToggled() )
+    if ( !OnLeftClick(id, toggled) && tool->CanBeToggled() )
     {
         // revert back
         tool->Toggle(!toggled);