X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/936f635341e9b92b37db93cc7781d564babbe25f..ade4ae2c51fd5406a8d7bbebc36ccd2c94e48c59:/include/wx/msw/toolbar.h diff --git a/include/wx/msw/toolbar.h b/include/wx/msw/toolbar.h index 92fcfd7bcd..bef24a2ee4 100644 --- a/include/wx/msw/toolbar.h +++ b/include/wx/msw/toolbar.h @@ -17,7 +17,7 @@ #include "wx/dynarray.h" #include "wx/imaglist.h" -class WXDLLEXPORT wxToolBar : public wxToolBarBase +class WXDLLIMPEXP_CORE wxToolBar : public wxToolBarBase { public: // ctors and dtor @@ -67,7 +67,6 @@ public: void OnMouseEvent(wxMouseEvent& event); void OnSysColourChanged(wxSysColourChangedEvent& event); - void OnEraseBackground(wxEraseEvent& event); void SetFocus() {} @@ -81,6 +80,11 @@ public: // 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 + protected: // common part of all ctors void Init(); @@ -116,7 +120,9 @@ protected: // 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 @@ -140,13 +146,34 @@ protected: // 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