]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tbar95.cpp
reverted relative include path
[wxWidgets.git] / src / msw / tbar95.cpp
index 263ff804adfcd5ae6700c8697287c21bb96d006f..304a16175640739dd1bf23386bf569586ab9b279 100644 (file)
@@ -915,28 +915,30 @@ bool wxToolBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id)
     if ( !tool )
         return FALSE;
 
+    bool toggled = false; // just to suppress warnings
+
     if ( tool->CanBeToggled() )
     {
         LRESULT state = ::SendMessage(GetHwnd(), TB_GETSTATE, id, 0);
-        tool->Toggle((state & TBSTATE_CHECKED) != 0);
-    }
+        toggled = (state & TBSTATE_CHECKED) != 0;
+
+        // ignore the event when a radio button is released, as this doesn't seem to
+        // happen at all, and is handled otherwise
+        if ( tool->GetKind() == wxITEM_RADIO && !toggled )
+            return TRUE;
 
-    bool toggled = tool->IsToggled();
+        tool->Toggle(toggled);
+        UnToggleRadioGroup(tool);
+    }
 
-    // avoid sending the event when a radio button is released, this is not
-    // interesting
-    if ( !tool->CanBeToggled() || tool->GetKind() != wxITEM_RADIO || toggled )
+    // OnLeftClick() can veto the button state change - for buttons which
+    // may be toggled only, of couse
+    if ( !OnLeftClick((int)id, toggled) && tool->CanBeToggled() )
     {
-        // OnLeftClick() can veto the button state change - for buttons which
-        // may be toggled only, of couse
-        if ( !OnLeftClick((int)id, toggled) && tool->CanBeToggled() )
-        {
-            // revert back
-            toggled = !toggled;
-            tool->SetToggle(toggled);
+        // revert back
+        tool->Toggle(!toggled);
 
-            ::SendMessage(GetHwnd(), TB_CHECKBUTTON, id, MAKELONG(toggled, 0));
-        }
+        ::SendMessage(GetHwnd(), TB_CHECKBUTTON, id, MAKELONG(toggled, 0));
     }
 
     return TRUE;