X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14f355c2b5c71fc7c3d680aea366582d2ac60f7b..a83ea9c15a7ac7bbdc6686164cfcbbc21ae5031a:/src/motif/toplevel.cpp diff --git a/src/motif/toplevel.cpp b/src/motif/toplevel.cpp index 5f2891a4e5..40b9fc446b 100644 --- a/src/motif/toplevel.cpp +++ b/src/motif/toplevel.cpp @@ -21,6 +21,9 @@ #pragma implementation "toplevel.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #include "wx/toplevel.h" #include "wx/app.h" @@ -66,8 +69,14 @@ static void wxTLWEventHandler( Widget wid, void wxTopLevelWindowMotif::PreDestroy() { - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) +#ifdef __VMS +#pragma message disable codcauunr +#endif + if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) wxModelessWindows.DeleteObject(this); +#ifdef __VMS +#pragma message enable codcauunr +#endif m_icons.m_icons.Empty(); @@ -185,6 +194,29 @@ bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, return retval; } +void wxTopLevelWindowMotif::DoGetPosition(int *x, int *y) const +{ + Widget top = (Widget) GetTopWidget(); + Window parent_window = XtWindow((Widget) top), + next_parent = XtWindow((Widget) top), + root = RootWindowOfScreen(XtScreen((Widget) top)); + + // 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) top), parent_window, &root, + &next_parent, &theChildren, &n); + XFree(theChildren); // not needed + } + int xx, yy; unsigned int dummy; + XGetGeometry(XtDisplay((Widget) top), parent_window, &root, + &xx, &yy, &dummy, &dummy, &dummy, &dummy); + if (x) *x = xx; + if (y) *y = yy; +} + void wxTopLevelWindowMotif::Raise() { Widget top = (Widget) GetTopWidget(); @@ -304,11 +336,11 @@ bool wxTopLevelWindowMotif::IsMaximized() const return FALSE; } -void wxTopLevelWindowMotif::SetSizeHints( int minW, int minH, - int maxW, int maxH, - int incW, int incH ) +void wxTopLevelWindowMotif::DoSetSizeHints( int minW, int minH, + int maxW, int maxH, + int incW, int incH ) { - wxTopLevelWindowBase::SetSizeHints( minW, minH, maxW, maxH, incW, incH ); + wxTopLevelWindowBase::DoSetSizeHints( minW, minH, maxW, maxH, incW, incH ); int count = 0; Arg args[6];