restore the default bitmap icons size to 16*15, making them larger if necessary is enough and doesn't result in having ugly 16*16 bitmaps in a 24*24 button rectangle
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58646 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -88,9 +88,6 @@ protected:
|
|||||||
// create the native toolbar control
|
// create the native toolbar control
|
||||||
bool MSWCreateToolbar(const wxPoint& pos, const wxSize& size);
|
bool MSWCreateToolbar(const wxPoint& pos, const wxSize& size);
|
||||||
|
|
||||||
// just a wrapper for TB_SETBITMAPSIZE
|
|
||||||
void MSWSetBitmapSize(const wxSize& size);
|
|
||||||
|
|
||||||
// recreate the control completely
|
// recreate the control completely
|
||||||
void Recreate();
|
void Recreate();
|
||||||
|
|
||||||
|
@@ -403,8 +403,15 @@ public:
|
|||||||
wxSize GetMargins() const;
|
wxSize GetMargins() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the size of bitmap that the toolbar expects to have. The default
|
Returns the size of bitmap that the toolbar expects to have.
|
||||||
bitmap size is 16 by 15 pixels.
|
|
||||||
|
The default bitmap size is platform-dependent: for example, it is 16*15
|
||||||
|
for MSW and 24*24 for GTK. This size does @em not necessarily indicate
|
||||||
|
the best size to use for the toolbars on the given platform, for this
|
||||||
|
you should use @c wxArtProvider::GetNativeSizeHint(wxART_TOOLBAR) but
|
||||||
|
in any case, as the bitmap size is deduced automatically from the size
|
||||||
|
of the bitmaps associated with the tools added to the toolbar, it is
|
||||||
|
usually unnecessary to call SetToolBitmapSize() explicitly.
|
||||||
|
|
||||||
@remarks Note that this is the size of the bitmap you pass to AddTool(),
|
@remarks Note that this is the size of the bitmap you pass to AddTool(),
|
||||||
and not the eventual size of the tool button.
|
and not the eventual size of the tool button.
|
||||||
|
@@ -424,6 +424,8 @@ void MyFrame::PopulateToolbar(wxToolBarBase* toolBar)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this call is actually unnecessary as the toolbar will adjust its tools
|
||||||
|
// size to fit the biggest icon used anyhow but it doesn't hurt neither
|
||||||
toolBar->SetToolBitmapSize(wxSize(w, h));
|
toolBar->SetToolBitmapSize(wxSize(w, h));
|
||||||
|
|
||||||
toolBar->AddTool(wxID_NEW, _T("New"),
|
toolBar->AddTool(wxID_NEW, _T("New"),
|
||||||
|
@@ -282,9 +282,13 @@ void wxToolBar::Init()
|
|||||||
|
|
||||||
m_nButtons = 0;
|
m_nButtons = 0;
|
||||||
|
|
||||||
const wxSize size = wxArtProvider::GetNativeSizeHint(wxART_TOOLBAR);
|
// even though modern Windows applications typically use 24*24 (or even
|
||||||
m_defaultWidth = size.x;
|
// 32*32) size for their bitmaps, the native control itself still uses the
|
||||||
m_defaultHeight = size.y;
|
// old 16*15 default size (see TB_SETBITMAPSIZE documentation in MSDN), so
|
||||||
|
// default to it so that we don't call SetToolBitmapSize() unnecessarily in
|
||||||
|
// AdjustToolBitmapSize()
|
||||||
|
m_defaultWidth = 16;
|
||||||
|
m_defaultHeight = 15;
|
||||||
|
|
||||||
m_pInTool = NULL;
|
m_pInTool = NULL;
|
||||||
}
|
}
|
||||||
@@ -630,29 +634,22 @@ void wxToolBar::CreateDisabledImageList()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxToolBar::MSWSetBitmapSize(const wxSize& size)
|
|
||||||
{
|
|
||||||
::SendMessage(GetHwnd(), TB_SETBITMAPSIZE, 0, MAKELONG(size.x, size.y));
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxToolBar::AdjustToolBitmapSize()
|
void wxToolBar::AdjustToolBitmapSize()
|
||||||
{
|
{
|
||||||
// this is the default bitmap size, we only need to call TB_SETBITMAPSIZE
|
const wxSize sizeOrig(m_defaultWidth, m_defaultHeight);
|
||||||
// if we use something different
|
|
||||||
static const wxSize sizeStd(16, 15);
|
|
||||||
|
|
||||||
wxSize s(m_defaultWidth, m_defaultHeight);
|
wxSize sizeActual(sizeOrig);
|
||||||
|
|
||||||
for ( wxToolBarToolsList::const_iterator i = m_tools.begin();
|
for ( wxToolBarToolsList::const_iterator i = m_tools.begin();
|
||||||
i != m_tools.end();
|
i != m_tools.end();
|
||||||
++i )
|
++i )
|
||||||
{
|
{
|
||||||
const wxBitmap& bmp = (*i)->GetNormalBitmap();
|
const wxBitmap& bmp = (*i)->GetNormalBitmap();
|
||||||
s.IncTo(bmp.GetSize());
|
sizeActual.IncTo(bmp.GetSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( s != sizeStd )
|
if ( sizeActual != sizeOrig )
|
||||||
MSWSetBitmapSize(s);
|
SetToolBitmapSize(sizeActual);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxToolBar::Realize()
|
bool wxToolBar::Realize()
|
||||||
@@ -1354,7 +1351,7 @@ void wxToolBar::SetToolBitmapSize(const wxSize& size)
|
|||||||
{
|
{
|
||||||
wxToolBarBase::SetToolBitmapSize(size);
|
wxToolBarBase::SetToolBitmapSize(size);
|
||||||
|
|
||||||
MSWSetBitmapSize(size);
|
::SendMessage(GetHwnd(), TB_SETBITMAPSIZE, 0, MAKELONG(size.x, size.y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxToolBar::SetRows(int nRows)
|
void wxToolBar::SetRows(int nRows)
|
||||||
|
Reference in New Issue
Block a user