#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,
XmNmarginWidth, 0,
XmNpacking, XmPACK_TIGHT,
XmNorientation, XmHORIZONTAL,
+ XmNresizeWidth, False,
+ XmNresizeHeight, False,
NULL);
XtVaSetValues ((Widget) m_formWidget, XmNspacing, 0, NULL);
m_menuWidget = (WXWidget) XmCreatePulldownMenu ((Widget) m_formWidget,
"choiceMenu", NULL, 0);
- // int i;
if (n > 0)
{
int i;
#endif
#endif
+ wxSize bestSize = GetBestSize();
+ if( size.x > 0 ) bestSize.x = size.x;
+ if( size.y > 0 ) bestSize.y = size.y;
+
XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL);
ChangeFont(FALSE);
+ ChangeBackgroundColour();
AttachWidget (parent, m_buttonWidget, m_formWidget,
- pos.x, pos.y, size.x, size.y);
-
- ChangeBackgroundColour();
+ pos.x, pos.y, bestSize.x, bestSize.y);
return TRUE;
}
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);
void wxChoice::Clear()
{
m_stringList.Clear ();
- int i;
+ size_t i;
for (i = 0; i < m_noStrings; i++)
{
XtRemoveCallback((Widget) m_widgetArray[i],
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;
}
#if 0
Dimension selectionWidth, selectionHeight;
#endif
- wxXmString text( (char*)node->Data() );
+ wxXmString text( node->GetData() );
// MBN: this seems silly, at best, and causes wxChoices to be clipped:
// will remove "soon"
#if 0
if (managed)
XtUnmanageChild ((Widget) m_formWidget);
- int actualWidth = width, actualHeight = height;
+ int actualWidth = width - WIDTH_OVERHEAD_SUBTRACT,
+ actualHeight = height - HEIGHT_OVERHEAD;
if (width > -1)
{
- int i;
+ size_t i;
for (i = 0; i < m_noStrings; i++)
XtVaSetValues ((Widget) m_widgetArray[i],
XmNwidth, actualWidth,
}
if (height > -1)
{
- int i;
+#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);
}
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);
DoChangeBackgroundColour(m_formWidget, m_backgroundColour);
DoChangeBackgroundColour(m_buttonWidget, m_backgroundColour);
DoChangeBackgroundColour(m_menuWidget, m_backgroundColour);
- int i;
+ size_t i;
for (i = 0; i < m_noStrings; i++)
DoChangeBackgroundColour(m_widgetArray[i], m_backgroundColour);
}
DoChangeForegroundColour(m_formWidget, m_foregroundColour);
DoChangeForegroundColour(m_buttonWidget, m_foregroundColour);
DoChangeForegroundColour(m_menuWidget, m_foregroundColour);
- int i;
+ size_t i;
for (i = 0; i < m_noStrings; i++)
DoChangeForegroundColour(m_widgetArray[i], m_foregroundColour);
}
{
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 );
}