-void wxFrame::CaptureMouse()
-{
- if (m_winCaptured)
- return;
-
- if (GetMainWidget())
- XtAddGrab((Widget) m_frameShell, TRUE, FALSE);
- m_winCaptured = TRUE;
-}
-
-void wxFrame::ReleaseMouse()
-{
- if (!m_winCaptured)
- return;
-
- if (GetMainWidget())
- XtRemoveGrab((Widget) m_frameShell);
- m_winCaptured = FALSE;
-}
-
-void wxFrame::Raise(void)
-{
- Window parent_window = XtWindow((Widget) m_frameShell),
- next_parent = XtWindow((Widget) m_frameShell),
- root = RootWindowOfScreen(XtScreen((Widget) m_frameShell));
- // search for the parent that is child of ROOT, because the WM may
- // reparent twice and notify only the next parent (like FVWM)
- while (next_parent != root) {
- Window *theChildren; unsigned int n;
- parent_window = next_parent;
- XQueryTree(XtDisplay((Widget) m_frameShell), parent_window, &root,
- &next_parent, &theChildren, &n);
- XFree(theChildren); // not needed
- }
- XRaiseWindow(XtDisplay((Widget) m_frameShell), parent_window);
-}
-
-void wxFrame::Lower(void)
-{
- Window parent_window = XtWindow((Widget) m_frameShell),
- next_parent = XtWindow((Widget) m_frameShell),
- root = RootWindowOfScreen(XtScreen((Widget) m_frameShell));
- // search for the parent that is child of ROOT, because the WM may
- // reparent twice and notify only the next parent (like FVWM)
- while (next_parent != root) {
- Window *theChildren; unsigned int n;
- parent_window = next_parent;
- XQueryTree(XtDisplay((Widget) m_frameShell), parent_window, &root,
- &next_parent, &theChildren, &n);
- XFree(theChildren); // not needed
- }
- XLowerWindow(XtDisplay((Widget) m_frameShell), parent_window);
-}
-
-void wxFrameFocusProc(Widget WXUNUSED(workArea), XtPointer WXUNUSED(clientData),
- XmAnyCallbackStruct *WXUNUSED(cbs))
-{
- // wxDebugMsg("focus proc from frame %ld\n",(long)frame);
- // TODO
- // wxFrame *frame = (wxFrame *)clientData;
- // frame->GetEventHandler()->OnSetFocus();
-}
-
-/* MATTEW: Used to insure that hide-&-show within an event cycle works */
-static void wxFrameMapProc(Widget frameShell, XtPointer clientData,
- XCrossingEvent * event)
-{
- wxFrame *frame = (wxFrame *)wxGetWindowFromTable((Widget)clientData);
-
- if (frame) {
- XEvent *e = (XEvent *)event;
-
- if (e->xany.type == MapNotify)
- {
- // Iconize fix
- XtVaSetValues(frameShell, XmNiconic, (Boolean)False, NULL);
- if (!frame->GetVisibleStatus())
- {
- /* We really wanted this to be hidden! */
- XtUnmapWidget((Widget) frame->GetShellWidget());
- }
- }
- else if (e->xany.type == UnmapNotify)
- // Iconize fix
- XtVaSetValues(frameShell, XmNiconic, (Boolean)True, NULL);