- GetSize (&width2, &height2);
-
- // Correct for randomly resized listbox - bad boy, Motif!
- if (width1 != width2 || height1 != height2)
- SetSize (-1, -1, width1, height1);
-
- m_noItems ++;
-}
-
-void wxListBox::Set(int n, const wxString *choices, void** clientData)
-{
- m_clientDataList.Clear();
- int width1, height1;
- int width2, height2;
-
- Widget listBox = (Widget) m_mainWidget;
- GetSize (&width1, &height1);
-
- bool managed = XtIsManaged(listBox);
-
- if (managed)
- XtUnmanageChild (listBox);
- /***
- for (int i=0; i<n; i++)
- {
- XmString text = XmStringCreateSimple(choices[i]);
- XmListAddItemUnselected(listBox, text, 0);
- XmStringFree(text);
- }
- ***/
- XmString *text = new XmString[n];
- int i;
- for (i = 0; i < n; i++)
- text[i] = XmStringCreateSimple ((char*) (const char*) choices[i]);
-
- if ( clientData )
- for (i = 0; i < n; i++)
- m_clientDataList.Append ((long) i, (wxObject *) clientData[i]);
-
- XmListAddItems (listBox, text, n, 0);
- for (i = 0; i < n; i++)
- XmStringFree (text[i]);
- delete[]text;
-
- // It seems that if the list is cleared, we must re-ask for
- // selection policy!!
- Arg args[3];
- XtSetArg (args[0], XmNlistSizePolicy, XmCONSTANT);
- if (m_windowStyle & wxLB_MULTIPLE)
- XtSetArg (args[1], XmNselectionPolicy, XmMULTIPLE_SELECT);
- else if (m_windowStyle & wxLB_EXTENDED)
- XtSetArg (args[1], XmNselectionPolicy, XmEXTENDED_SELECT);
- else
- XtSetArg (args[1], XmNselectionPolicy, XmBROWSE_SELECT);
- XtSetValues (listBox, args, 2);
-
- if (managed)
- XtManageChild (listBox);