X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4b5ac600de03bec2a73610f7fa566aa2cf2ce9f8..f0eebb39bc6bb54441e695b3c1b1e0bea6ab5c01:/src/msw/tbar95.cpp diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index b653a821d8..b12dd40b5f 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -961,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--; } @@ -1185,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; @@ -1209,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);