X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5f4250ede098c1359fe0efd2a02e6ce4c199aaae..c12822fec7f87e7734cabbfcf23b99685fc371ce:/src/msw/toolbar.cpp diff --git a/src/msw/toolbar.cpp b/src/msw/toolbar.cpp index 6399465223..c02310686d 100644 --- a/src/msw/toolbar.cpp +++ b/src/msw/toolbar.cpp @@ -43,6 +43,7 @@ #include "wx/stattext.h" #endif +#include "wx/artprov.h" #include "wx/sysopt.h" #include "wx/dcclient.h" @@ -96,10 +97,6 @@ #define TB_GETMAXSIZE (WM_USER + 83) #endif -// these values correspond to those used by comctl32.dll -#define DEFAULTBITMAPX 16 -#define DEFAULTBITMAPY 15 - // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- @@ -284,8 +281,9 @@ void wxToolBar::Init() m_nButtons = 0; - m_defaultWidth = DEFAULTBITMAPX; - m_defaultHeight = DEFAULTBITMAPY; + const wxSize size = wxArtProvider::GetNativeSizeHint(wxART_TOOLBAR); + m_defaultWidth = size.x; + m_defaultHeight = size.y; m_pInTool = NULL; } @@ -631,6 +629,23 @@ void wxToolBar::CreateDisabledImageList() } } +void wxToolBar::AdjustToolBitmapSize() +{ + wxSize s(m_defaultWidth, m_defaultHeight); + const wxSize orig_s(s); + + for ( wxToolBarToolsList::const_iterator i = m_tools.begin(); + i != m_tools.end(); + ++i ) + { + const wxBitmap& bmp = (*i)->GetNormalBitmap(); + s.IncTo(bmp.GetSize()); + } + + if ( s != orig_s ) + SetToolBitmapSize(s); +} + bool wxToolBar::Realize() { const size_t nTools = GetToolsCount(); @@ -638,6 +653,10 @@ bool wxToolBar::Realize() // nothing to do return true; + // make sure tool size is larger enough for all all bitmaps to fit in + // (this is consistent with what other ports do): + AdjustToolBitmapSize(); + #ifdef wxREMAP_BUTTON_COLOURS // don't change the values of these constants, they can be set from the // user code via wxSystemOptions @@ -1422,7 +1441,7 @@ wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const // TB_HITTEST returns m_nButtons ( not -1 ) if ( index < 0 || (size_t)index >= m_nButtons ) // it's a separator or there is no tool at all there - return (wxToolBarToolBase *)NULL; + return NULL; // when TB_SETBUTTONINFO is available (both during compile- and run-time), // we don't use the dummy separators hack