#include "wx/toolbar.h"
#ifndef WX_PRECOMP
+ #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
#include "wx/dynarray.h"
#include "wx/frame.h"
#include "wx/log.h"
#include "wx/msw/uxtheme.h"
#endif
-// include <commctrl.h> "properly"
-#include "wx/msw/wrapcctl.h"
-
// this define controls whether the code for button colours remapping (only
// useful for 16 or 256 colour images) is active at all, it's always turned off
// for CE where it doesn't compile (and is probably not needed anyhow) and may
if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
return false;
+ FixupStyle();
+
// MSW-specific initialisation
if ( !MSWCreateToolbar(pos, size) )
return false;
sizeBest.x *= GetToolsCount();
// reverse horz and vertical components if necessary
- if ( HasFlag(wxTB_VERTICAL) )
+ if ( IsVertical() )
{
int t = sizeBest.x;
sizeBest.x = sizeBest.y;
if ( style & wxTB_VERTICAL )
msStyle |= CCS_VERT;
+ if( style & wxTB_BOTTOM )
+ msStyle |= CCS_BOTTOM;
+
+ if ( style & wxTB_RIGHT )
+ msStyle |= CCS_RIGHT;
+
return msStyle;
}
// nothing to do
return true;
- const bool isVertical = HasFlag(wxTB_VERTICAL);
-
#ifdef wxREMAP_BUTTON_COLOURS
// don't change the values of these constants, they can be set from the
// user code via wxSystemOptions
}
}
- if ( m_disabledImgList )
+ // disable image lists are only supported in comctl32.dll 4.70+
+ if ( wxApp::GetComCtl32Version() >= 470 )
{
+ HIMAGELIST hil = m_disabledImgList
+ ? GetHimagelistOf(m_disabledImgList)
+ : 0;
+
+ // notice that we set the image list even if don't have one right
+ // now as we could have it before and need to reset it in this case
HIMAGELIST oldImageList = (HIMAGELIST)
- ::SendMessage(GetHwnd(),
- TB_SETDISABLEDIMAGELIST,
- 0,
- (LPARAM)GetHimagelistOf(m_disabledImgList));
+ ::SendMessage(GetHwnd(), TB_SETDISABLEDIMAGELIST, 0, (LPARAM)hil);
// delete previous image list if any
if ( oldImageList )
- ::DeleteObject( oldImageList );
+ ::DeleteObject(oldImageList);
}
}
// don't add separators to the vertical toolbar with old comctl32.dll
// versions as they didn't handle this properly
- if ( isVertical && tool->IsSeparator() &&
+ if ( IsVertical() && tool->IsSeparator() &&
wxApp::GetComCtl32Version() <= 472 )
{
continue;
// get the items size for all items but for the horizontal ones we
// don't need to deal with the non controls
bool isControl = tool->IsControl();
- if ( !isControl && !isVertical )
+ if ( !isControl && !IsVertical() )
continue;
// note that we use TB_GETITEMRECT and not TB_GETRECT because the
}
int top;
- if ( isVertical )
+ if ( IsVertical() )
{
left = 0;
top = y;
// separators which we added just for aligning the controls
m_nButtons = index;
- if ( !isVertical )
+ if ( !IsVertical() )
{
if ( m_maxRows == 0 )
// if not set yet, only one row
{
int w, h;
- if ( GetWindowStyle() & wxTB_VERTICAL )
+ if ( IsVertical() )
{
w = r.right - r.left;
if ( m_maxRows )