X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd304d989b2c5c35ac1a849d508cb21f4d54609e..59a9a6bcc699b5f886f7cdd71d499f85b25f3daa:/src/motif/choice.cpp diff --git a/src/motif/choice.cpp b/src/motif/choice.cpp index a3e57838b9..3407965764 100644 --- a/src/motif/choice.cpp +++ b/src/motif/choice.cpp @@ -36,6 +36,10 @@ #include "wx/motif/private.h" +#define WIDTH_OVERHEAD 48 +#define WIDTH_OVERHEAD_SUBTRACT 40 +#define HEIGHT_OVERHEAD 15 + IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) void wxChoiceCallback (Widget w, XtPointer clientData, @@ -75,6 +79,8 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, XmNmarginWidth, 0, XmNpacking, XmPACK_TIGHT, XmNorientation, XmHORIZONTAL, + XmNresizeWidth, False, + XmNresizeHeight, False, NULL); XtVaSetValues ((Widget) m_formWidget, XmNspacing, 0, NULL); @@ -131,12 +137,11 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); ChangeFont(FALSE); + ChangeBackgroundColour(); AttachWidget (parent, m_buttonWidget, m_formWidget, pos.x, pos.y, bestSize.x, bestSize.y); - ChangeBackgroundColour(); - return TRUE; } @@ -176,14 +181,12 @@ int wxChoice::DoAppend(const wxString& item) DoChangeBackgroundColour((WXWidget) w, m_backgroundColour); - if (m_font.Ok()) - XtVaSetValues (w, - XmNfontList, (XmFontList) m_font.GetFontList(1.0, XtDisplay((Widget) m_formWidget)), - NULL); + if( m_font.Ok() ) + wxDoChangeFont( w, m_font ); m_widgetArray.Add(w); - char mnem = wxFindMnemonic ((char*) (const char*) item); + char mnem = wxFindMnemonic (item); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); @@ -246,33 +249,29 @@ void wxChoice::Clear() int wxChoice::GetSelection() const { XmString text; - char *s; Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); XtVaGetValues (label, XmNlabelString, &text, NULL); + wxXmString freeMe(text); + wxString s = wxXmStringToString( text ); - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) + if (!s.IsEmpty()) { int i = 0; for (wxStringListNode* node = m_stringList.GetFirst (); node; node = node->GetNext ()) { - if (strcmp(node->GetData(), s) == 0) + if (wxStrcmp(node->GetData(), s.c_str()) == 0) { - XmStringFree(text) ; - XtFree (s); return i; } else i++; } // for() - XmStringFree(text) ; - XtFree (s); return -1; } - XmStringFree(text) ; return -1; } @@ -365,7 +364,8 @@ void wxChoice::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (managed) XtUnmanageChild ((Widget) m_formWidget); - int actualWidth = width, actualHeight = height; + int actualWidth = width - WIDTH_OVERHEAD_SUBTRACT, + actualHeight = height - HEIGHT_OVERHEAD; if (width > -1) { @@ -379,11 +379,13 @@ void wxChoice::DoSetSize(int x, int y, int width, int height, int sizeFlags) } if (height > -1) { +#if 0 size_t i; for (i = 0; i < m_noStrings; i++) XtVaSetValues ((Widget) m_widgetArray[i], XmNheight, actualHeight, NULL); +#endif XtVaSetValues ((Widget) m_buttonWidget, XmNheight, actualHeight, NULL); } @@ -435,13 +437,16 @@ void wxChoice::ChangeFont(bool keepOriginalSize) int width, height, width1, height1; GetSize(& width, & height); - XmFontList fontList = (XmFontList) m_font.GetFontList(1.0, XtDisplay((Widget) m_mainWidget)); - XtVaSetValues ((Widget) m_formWidget, XmNfontList, fontList, NULL); - XtVaSetValues ((Widget) m_buttonWidget, XmNfontList, fontList, NULL); + WXFontType fontType = + m_font.GetFontType(XtDisplay((Widget) m_mainWidget)); + WXString fontTag = wxFont::GetFontTag(); + + XtVaSetValues ((Widget) m_formWidget, fontTag, fontType, NULL); + XtVaSetValues ((Widget) m_buttonWidget, fontTag, fontType, NULL); for( size_t i = 0; i < m_noStrings; ++i ) XtVaSetValues( (Widget)m_widgetArray[i], - XmNfontList, fontList, + fontTag, fontType, NULL ); GetSize(& width1, & height1); @@ -526,6 +531,6 @@ wxSize wxChoice::DoGetBestSize() const { wxSize items = GetItemsSize(); // FIXME arbitrary constants - return wxSize( ( items.x ? items.x + 50 : 120 ), - items.y + 15 ); + return wxSize( ( items.x ? items.x + WIDTH_OVERHEAD : 120 ), + items.y + HEIGHT_OVERHEAD ); }