X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed7fdb860627d516ad32f9f01d14146012220b4a..d9b30c5a6c321a5f19ed3faa1d652b115c9a9a1b:/src/msw/tbar95.cpp diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index 539b71780e..754543b932 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" @@ -242,31 +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. - // However, the separators can look ugly and distracting, especially between controls, - // so I'm restoring the test and removing the separators again - JACS -#if 1 - wxUxThemeEngine *p = wxUxThemeEngine::Get(); - if ( !p || !p->IsThemeActive() ) -#endif - { - DWORD dwToolbarStyle; - - dwToolbarStyle = (DWORD)::SendMessage(GetHwnd(), TB_GETSTYLE, 0, 0L ); + LRESULT style = ::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; } @@ -614,7 +599,8 @@ bool wxToolBar::Realize() sizeBmp.x = m_defaultWidth; sizeBmp.y = m_defaultHeight; - const wxCoord totalBitmapWidth = m_defaultWidth * nTools, + const wxCoord totalBitmapWidth = m_defaultWidth * + wx_truncate_cast(wxCoord, nTools), totalBitmapHeight = m_defaultHeight; // Create a bitmap and copy all the tool bitmaps to it @@ -1082,6 +1068,8 @@ bool wxToolBar::Realize() } InvalidateBestSize(); + SetBestFittingSize(); + return true; } @@ -1246,14 +1234,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 ); }