Widget scrollBar = (Widget)GetScrollbar((wxOrientation)orient);
wxCHECK_MSG( scrollBar, 0, "no such scrollbar" );
- int range;
- XtVaGetValues(scrollBar, XmNmaximum, &range, NULL);
+ int range = 0;
+ if (scrollBar)
+ XtVaGetValues(scrollBar, XmNmaximum, &range, NULL);
return range;
}
XmMenuPosition (menuWidget, &event);
XtManageChild (menuWidget);
+ XEvent x_event;
+ // The ID of a pop-up menu is 1 when active, and is set to 0 by the
+ // idle-time destroy routine.
+ // Waiting until this ID changes causes this function to block until
+ // the menu has been dismissed and the widgets cleaned up.
+ // In other words, once this routine returns, it is safe to delete
+ // the menu object.
+ // Ian Brown <ian.brown@printsoft.de>
+ while (menu->GetId() == 1)
+ {
+ XtAppNextEvent( (XtAppContext) wxTheApp->GetAppContext(), &x_event);
+
+ wxTheApp->ProcessXEvent((WXEvent*) & x_event);
+
+ if (XtAppPending( (XtAppContext) wxTheApp->GetAppContext() ) == 0)
+ {
+ if (!wxTheApp->ProcessIdle())
+ {
+#if wxUSE_THREADS
+ // leave the main loop to give other threads a chance to
+ // perform their GUI work
+ wxMutexGuiLeave();
+ wxUsleep(20);
+ wxMutexGuiEnter();
+#endif
+ }
+ }
+ }
return TRUE;
}
return wxPoint(0, 0);
}
-// Makes an adjustment to the window position (for example, a frame that has
-// a toolbar that it manages itself).
-void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
-{
- if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent())
- {
- wxPoint pt(GetParent()->GetClientAreaOrigin());
- x += pt.x; y += pt.y;
- }
-}
-
void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH)
{
m_minWidth = minW;
case KeyPress:
{
KeySym keySym;
+ static char buf[100];
#if 0
XComposeStatus compose;
- (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, &compose);
+ (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, &compose);
#endif // 0
- (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, NULL);
+ (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, NULL);
int id = wxCharCodeXToWX (keySym);
wxEventType eventType = wxEVT_CHAR;
}
case KeyRelease:
{
+ static char buf[100];
KeySym keySym;
- (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, NULL);
+ (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, NULL);
int id = wxCharCodeXToWX (keySym);
wxKeyEvent event (wxEVT_KEY_UP);