From: Mattia Barbon Date: Sun, 2 May 2004 08:14:39 +0000 (+0000) Subject: Make wxMotif buttons smaller (and nicer) by default, X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e04b7e8e715c8ae3d42ed462a7302225f28bf35d?ds=inline Make wxMotif buttons smaller (and nicer) by default, with the option of reverting to the old behaviour. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27059 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index 3fc742c9d7..ea72d3a3f2 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -133,6 +133,9 @@ wxMSW: wxMotif: - removed wxMenuItem::DeleteSubMenu() +- wxButtons use Motif default size, which is smaller than it used to be + and closer to wxMSW/wxGTK look. This can be disabled by setting + motif.largebuttons system option to 1 (see wxSystemOptions). wxUniv/X11: diff --git a/include/wx/motif/button.h b/include/wx/motif/button.h index 8a5044d68b..32958d5753 100644 --- a/include/wx/motif/button.h +++ b/include/wx/motif/button.h @@ -48,6 +48,7 @@ public: // Implementation private: virtual wxSize DoGetBestSize() const; + wxSize OldGetBestSize() const; void SetDefaultShadowThicknessAndResize(); }; diff --git a/src/motif/button.cpp b/src/motif/button.cpp index c8bdc6af89..a1afbd74be 100644 --- a/src/motif/button.cpp +++ b/src/motif/button.cpp @@ -34,11 +34,15 @@ #endif #include "wx/motif/private.h" +#include "wx/sysopt.h" void wxButtonCallback (Widget w, XtPointer clientData, XtPointer ptr); IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) +#define MIN_WIDTH 78 +#define MIN_LARGE_HEIGHT 30 + // Button bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, @@ -87,7 +91,7 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, ChangeBackgroundColour(); - return TRUE; + return true; } void wxButton::SetDefaultShadowThicknessAndResize() @@ -144,15 +148,36 @@ void wxButton::SetDefault() NULL); } +static inline bool wxMotifLargeButtons() +{ + return wxSystemOptions::HasOption("motif.largebuttons") + && wxSystemOptions::GetOptionInt("motif.largebuttons") != 0; +} + /* static */ wxSize wxButton::GetDefaultSize() { // TODO: check font size as in wxMSW ? MB // Note: this is the button size (text + margin + shadow + defaultBorder) - return wxSize(78,30); + return wxSize( MIN_WIDTH, MIN_LARGE_HEIGHT ); } wxSize wxButton::DoGetBestSize() const +{ + if( wxMotifLargeButtons() ) + return OldGetBestSize(); + + wxSize best = wxControl::DoGetBestSize(); + + if( HasFlag( wxBU_EXACTFIT ) ) + return best; + else if( best.x < MIN_WIDTH ) + best.x = MIN_WIDTH; + + return best; +} + +wxSize wxButton::OldGetBestSize() const { Dimension xmargin, ymargin, highlight, shadow, defThickness;