X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4d194d6368477b8bd1d15d261aff7a8c63ed5064..205b0c9c6aa69c02a7774846e677910bf1609a53:/src/motif/button.cpp diff --git a/src/motif/button.cpp b/src/motif/button.cpp index 144cb92156..de02890cb2 100644 --- a/src/motif/button.cpp +++ b/src/motif/button.cpp @@ -13,20 +13,30 @@ #pragma implementation "button.h" #endif +#ifdef __VMS +#define XtDisplay XTDISPLAY +#endif + +#include "wx/defs.h" + #include "wx/button.h" #include "wx/utils.h" #include "wx/panel.h" +#ifdef __VMS__ +#pragma message disable nosimpint +#endif #include #include +#ifdef __VMS__ +#pragma message enable nosimpint +#endif #include "wx/motif/private.h" void wxButtonCallback (Widget w, XtPointer clientData, XtPointer ptr); -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif // Button @@ -80,7 +90,17 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, (XtPointer) this); SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); + + int x = 0; int y = 0; + wxFont new_font( parent->GetFont() ); + GetTextExtent( label1, &x, &y, (int*)NULL, (int*)NULL, &new_font ); + + wxSize newSize = size; + if (newSize.x == -1) newSize.x = 30+x; + if (newSize.y == -1) newSize.y = 27+y; + SetSize( newSize.x, newSize.y ); + + AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, newSize.x, newSize.y); ChangeBackgroundColour(); @@ -90,9 +110,8 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, void wxButton::SetDefault() { wxWindow *parent = GetParent(); - wxPanel *panel = wxDynamicCast(panel, wxPanel); - if ( panel ) - panel->SetDefaultItem(this); + if ( parent ) + parent->SetDefaultItem(this); // We initially do not set XmNdefaultShadowThickness, to have small buttons. // Unfortunately, buttons are now mis-aligned. We try to correct this @@ -100,10 +119,12 @@ void wxButton::SetDefault() // Because it's very hard to find wxButton in the same row, // correction is straighforward: we set resource for all wxButton // in this parent (but not sub panels) - for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ()) + for (wxWindowList::Node * node = parent->GetChildren().GetFirst (); + node; node = node->GetNext ()) { - wxButton *item = (wxButton *) node->Data (); - if (item->IsKindOf(CLASSINFO(wxButton))) + wxWindow *win = node->GetData (); + wxButton *item = wxDynamicCast(win, wxButton); + if (item) { bool managed = XtIsManaged((Widget) item->GetMainWidget()); if (managed)