X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/921dd444fe87c122ec1559cccc10d248f92cfb6d..198be845897a79ba350ae7f93db536ddb2eccfb2:/src/msw/tbar95.cpp diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index 2a9a61007e..7966a6cd19 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -303,8 +303,10 @@ bool wxToolBar::MSWCreateToolbar(const wxPoint& pos, const wxSize& size) // toolbar-specific post initialisation ::SendMessage(GetHwnd(), TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); +#ifdef TB_SETEXTENDEDSTYLE if ( wxApp::GetComCtl32Version() >= 471 ) ::SendMessage(GetHwnd(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS); +#endif return true; } @@ -403,8 +405,16 @@ wxSize wxToolBar::DoGetBestSize() const sizeBest.y = size.cy; } - if (!IsVertical() && !(GetWindowStyle() & wxTB_NODIVIDER)) - sizeBest.y += 1; + if (!IsVertical()) + { + // Without the extra height, DoGetBestSize can report a size that's + // smaller than the actual window, causing windows to overlap slightly + // in some circumstances, leading to missing borders (especially noticeable + // in AUI layouts). + if (!(GetWindowStyle() & wxTB_NODIVIDER)) + sizeBest.y += 2; + sizeBest.y ++; + } CacheBestSize(sizeBest); @@ -930,7 +940,7 @@ bool wxToolBar::Realize() DoToggleTool(tool, true); } } - else if (tool->IsToggled()) + else if ( tool->IsToggled() ) { wxToolBarToolsList::compatibility_iterator nodePrev = node->GetPrevious(); int prevIndex = i - 1; @@ -944,7 +954,7 @@ bool wxToolBar::Realize() if ( tool->Toggle(false) ) DoToggleTool(tool, false); - prevButton.fsState = TBSTATE_ENABLED; + prevButton.fsState &= TBSTATE_CHECKED; nodePrev = nodePrev->GetPrevious(); prevIndex--; }