X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/433aca2d0d6f056ecb1097196d1a2f9e0c3d5e64..64ea838d8f4d1853b7d850db93ee565e901d099a:/include/wx/msw/private/button.h diff --git a/include/wx/msw/private/button.h b/include/wx/msw/private/button.h index f279c3e089..2f344f2d53 100644 --- a/include/wx/msw/private/button.h +++ b/include/wx/msw/private/button.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: msw/private/button.h +// Name: wx/msw/private/button.h // Purpose: helper functions used with native BUTTON control // Author: Vadim Zeitlin // Created: 2008-06-07 @@ -28,30 +28,48 @@ #define BST_INDETERMINATE 0x0002 #endif -#ifndef DT_HIDEPREFIX - #define DT_HIDEPREFIX 0x00100000 -#endif - namespace wxMSWButton { // returns BS_MULTILINE if the label contains new lines or 0 otherwise inline int GetMultilineStyle(const wxString& label) { - return label.find(_T('\n')) == wxString::npos ? 0 : BS_MULTILINE; + return label.find(wxT('\n')) == wxString::npos ? 0 : BS_MULTILINE; } // update the style of the specified HWND to include or exclude BS_MULTILINE // depending on whether the label contains the new lines void UpdateMultilineStyle(HWND hwnd, const wxString& label); -// common implementation of wxButton and wxToggleButton::DoGetBestSize() -// (implemented in src/msw/button.cpp) -wxSize ComputeBestSize(wxControl *btn); +// flags for ComputeBestSize() and GetFittingSize() +enum +{ + Size_AuthNeeded = 1, + Size_ExactFit = 2 +}; -// compute the button size (as if wxBU_EXACTFIT were specified, i.e. without +// NB: All the functions below are implemented in src/msw/button.cpp + +// Compute the button size (as if wxBU_EXACTFIT were specified, i.e. without // adjusting it to be of default size if it's smaller) for the given label size -wxSize GetFittingSize(wxWindow *win, const wxSize& sizeLabel); +WXDLLIMPEXP_CORE wxSize +GetFittingSize(wxWindow *win, const wxSize& sizeLabel, int flags = 0); + +// Compute the button size (as if wxBU_EXACTFIT were specified) by computing +// its label size and then calling GetFittingSize(). +wxSize ComputeBestFittingSize(wxControl *btn, int flags = 0); + +// Increase the size passed as parameter to be at least the standard button +// size if the control doesn't have wxBU_EXACTFIT style and also cache it as +// the best size and return its value -- this is used in DoGetBestSize() +// implementation. +wxSize IncreaseToStdSizeAndCache(wxControl *btn, const wxSize& size); + +// helper of wxToggleButton::DoGetBestSize() +inline wxSize ComputeBestSize(wxControl *btn, int flags = 0) +{ + return IncreaseToStdSizeAndCache(btn, ComputeBestFittingSize(btn, flags)); +} } // namespace wxMSWButton