// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "button.h"
#endif
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
#ifdef __VMS
#define XtDisplay XTDISPLAY
#endif
#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,
XmNactivateCallback, (XtCallbackProc) wxButtonCallback,
(XtPointer) this);
- SetCanAddEventHandler(TRUE);
-
wxSize best = GetBestSize();
if( size.x != -1 ) best.x = size.x;
if( size.y != -1 ) best.y = size.y;
ChangeBackgroundColour();
- return TRUE;
+ return true;
}
void wxButton::SetDefaultShadowThicknessAndResize()
// wxButton in the same row, correction is straighforward: we set
// resource for all wxButton in this parent (but not sub panels)
- for (wxWindowList::Node * node = parent->GetChildren().GetFirst ();
+ for (wxWindowList::compatibility_iterator node = parent->GetChildren().GetFirst ();
node; node = node->GetNext ())
{
wxWindow *win = node->GetData ();
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;