X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e289f578471893be518d8f680f3675ebee889c81..48f625bc2ce81132a2a8c2d7c524a03f1b7196e5:/src/msw/tbar95.cpp?ds=sidebyside diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index 3510019626..1fce389dd3 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "tbar95.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -93,9 +89,6 @@ // these values correspond to those used by comctl32.dll #define DEFAULTBITMAPX 16 #define DEFAULTBITMAPY 15 -#define DEFAULTBUTTONX 24 -#define DEFAULTBUTTONY 24 -#define DEFAULTBARHEIGHT 27 // ---------------------------------------------------------------------------- // wxWin macros @@ -245,29 +238,20 @@ bool wxToolBar::Create(wxWindow *parent, SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); - // workaround for flat toolbar on Windows XP classic style + // workaround for flat toolbar on Windows XP classic style: we have to set + // the style after creating the control, doing it at creation time doesn't + // work #if wxUSE_UXTHEME if ( style & wxTB_FLAT ) { - // Testing for an active theme appears to be unnecessary (see comments in patch 1204217). - // Disabling the test brings back separator lines. -#if 0 - wxUxThemeEngine *p = wxUxThemeEngine::Get(); - if ( !p || !p->IsThemeActive() ) -#endif - { - DWORD dwToolbarStyle; + LRESULT style = ::SendMessage(GetHwnd(), TB_GETSTYLE, 0, 0L); - dwToolbarStyle = (DWORD)::SendMessage(GetHwnd(), TB_GETSTYLE, 0, 0L ); - - if ((dwToolbarStyle & TBSTYLE_FLAT) == 0) - { - dwToolbarStyle |= TBSTYLE_FLAT; - ::SendMessage(GetHwnd(), TB_SETSTYLE, 0, (LPARAM)dwToolbarStyle ); - } + if ( !(style & TBSTYLE_FLAT) ) + { + ::SendMessage(GetHwnd(), TB_SETSTYLE, 0, style | TBSTYLE_FLAT); } } -#endif +#endif // wxUSE_UXTHEME return true; } @@ -895,7 +879,7 @@ bool wxToolBar::Realize() wxToolBarToolBase *tool = nodePrev->GetData(); if ( !tool->IsButton() || tool->GetKind() != wxITEM_RADIO ) break; - + if ( tool->Toggle(false) ) { DoToggleTool(tool, false); @@ -903,7 +887,7 @@ bool wxToolBar::Realize() prevButton.fsState = TBSTATE_ENABLED; nodePrev = nodePrev->GetPrevious(); prevIndex--; - } + } } isRadio = true; @@ -1083,6 +1067,8 @@ bool wxToolBar::Realize() } InvalidateBestSize(); + SetBestFittingSize(); + return true; } @@ -1247,14 +1233,15 @@ wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const return (wxToolBarToolBase *)NULL; } - // if comctl32 version < 4.71 wxToolBar95 adds dummy spacers -#if defined(_WIN32_IE) && (_WIN32_IE >= 0x400 ) + // when TB_SETBUTTONINFO is available (both during compile- and run-time), + // we don't use the dummy separators hack +#ifdef TB_SETBUTTONINFO if ( wxApp::GetComCtl32Version() >= 471 ) { return m_tools.Item((size_t)index)->GetData(); } else -#endif +#endif // TB_SETBUTTONINFO { return GetItemSkippingDummySpacers( m_tools, (size_t) index ); }