/////////////////////////////////////////////////////////////////////////////
-// Name: wx/msw/tbar95.h
+// Name: wx/msw/toolbar.h
// Purpose: wxToolBar (Windows 95 toolbar) class
// Author: Julian Smart
// Modified by:
#include "wx/dynarray.h"
#include "wx/imaglist.h"
-class WXDLLEXPORT wxToolBar : public wxToolBarBase
+class WXDLLIMPEXP_CORE wxToolBar : public wxToolBarBase
{
public:
// ctors and dtor
void OnMouseEvent(wxMouseEvent& event);
void OnSysColourChanged(wxSysColourChangedEvent& event);
- void OnEraseBackground(wxEraseEvent& event);
void SetFocus() {}
// returns true if the platform should explicitly apply a theme border
virtual bool CanApplyThemeBorder() const { return false; }
+#ifdef wxHAS_MSW_BACKGROUND_ERASE_HOOK
+ virtual bool MSWEraseBgHook(WXHDC hDC);
+ virtual WXHBRUSH MSWGetBgBrushForChild(WXHDC hDC, wxWindowMSW *child);
+#endif // wxHAS_MSW_BACKGROUND_ERASE_HOOK
+
+ virtual wxToolBarToolBase *CreateTool(int id,
+ const wxString& label,
+ const wxBitmap& bmpNormal,
+ const wxBitmap& bmpDisabled = wxNullBitmap,
+ wxItemKind kind = wxITEM_NORMAL,
+ wxObject *clientData = NULL,
+ const wxString& shortHelp = wxEmptyString,
+ const wxString& longHelp = wxEmptyString);
+
+ virtual wxToolBarToolBase *CreateTool(wxControl *control,
+ const wxString& label);
protected:
// common part of all ctors
void Init();
virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
- virtual wxToolBarToolBase *CreateTool(int id,
- const wxString& label,
- const wxBitmap& bmpNormal,
- const wxBitmap& bmpDisabled,
- wxItemKind kind,
- wxObject *clientData,
- const wxString& shortHelp,
- const wxString& longHelp);
-
- virtual wxToolBarToolBase *CreateTool(wxControl *control,
- const wxString& label);
-
// return the appropriate size and flags for the toolbar control
virtual wxSize DoGetBestSize() const;
// handlers for various events
bool HandleSize(WXWPARAM wParam, WXLPARAM lParam);
+#ifdef wxHAS_MSW_BACKGROUND_ERASE_HOOK
bool HandlePaint(WXWPARAM wParam, WXLPARAM lParam);
+#endif // wxHAS_MSW_BACKGROUND_ERASE_HOOK
void HandleMouseMove(WXWPARAM wParam, WXLPARAM lParam);
// should be called whenever the toolbar size changes
// the total number of toolbar elements
size_t m_nButtons;
+ // the sum of the sizes of the fixed items (i.e. excluding stretchable
+ // spaces) in the toolbar direction
+ int m_totalFixedSize;
+
// the tool the cursor is in
wxToolBarToolBase *m_pInTool;
private:
+ // makes sure tool bitmap size is sufficient for all tools
+ void AdjustToolBitmapSize();
+
+ // update the sizes of stretchable spacers to consume all extra space we
+ // have
+ void UpdateStretchableSpacersSize();
+
+#ifdef wxHAS_MSW_BACKGROUND_ERASE_HOOK
+ // do erase the toolbar background, always do it for the entire control as
+ // the caller sets the clipping region correctly to exclude parts which
+ // should not be erased
+ void MSWDoEraseBackground(WXHDC hDC);
+
+ // return the brush to use for erasing the toolbar background
+ WXHBRUSH MSWGetToolbarBgBrush();
+#endif // wxHAS_MSW_BACKGROUND_ERASE_HOOK
+
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(wxToolBar)
- DECLARE_NO_COPY_CLASS(wxToolBar)
+ wxDECLARE_NO_COPY_CLASS(wxToolBar);
};
#endif // wxUSE_TOOLBAR