X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e6be3e7c1b059a74f38f60ba93fe710891cc5456..8f2ee25db4652f96f28bc8f8370bebc974e533ff:/src/motif/toplevel.cpp?ds=inline diff --git a/src/motif/toplevel.cpp b/src/motif/toplevel.cpp index 9ce63d5fd6..419ba40ec3 100644 --- a/src/motif/toplevel.cpp +++ b/src/motif/toplevel.cpp @@ -17,10 +17,13 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #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(); @@ -79,7 +88,7 @@ void wxTopLevelWindowMotif::PreDestroy() XtRemoveEventHandler( (Widget)GetClientWidget(), ButtonPressMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask, - FALSE, + False, wxTLWEventHandler, (XtPointer)this ); } @@ -92,7 +101,7 @@ wxTopLevelWindowMotif::~wxTopLevelWindowMotif() void wxTopLevelWindowMotif::Init() { - m_isShown = FALSE; + m_isShown = false; } bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, @@ -114,7 +123,7 @@ bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, bool retval = DoCreate( parent, id, title, pos, size, style, name ); - if( !retval ) return FALSE; + if( !retval ) return false; // Intercept CLOSE messages from the window manager Widget shell = (Widget)GetShellWidget(); @@ -171,20 +180,43 @@ bool wxTopLevelWindowMotif::Create( wxWindow *parent, wxWindowID id, // no-decorations case. if( ( m_windowStyle & wxCAPTION ) != wxCAPTION ) XtVaSetValues( shell, - XmNoverrideRedirect, TRUE, + XmNoverrideRedirect, True, NULL ); } XtAddEventHandler( (Widget)GetClientWidget(), ButtonPressMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask, - FALSE, + False, wxTLWEventHandler, (XtPointer)this ); 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(); @@ -244,13 +276,13 @@ bool wxTopLevelWindowMotif::ShowFullScreen( bool show, long style ) { // TODO, see wxGTK - return FALSE; + return false; } bool wxTopLevelWindowMotif::IsFullScreen() const { // TODO, see wxGTK - return FALSE; + return false; } void wxTopLevelWindowMotif::Restore() @@ -259,7 +291,7 @@ void wxTopLevelWindowMotif::Restore() if( shell ) XtVaSetValues( shell, - XmNiconic, FALSE, + XmNiconic, False, NULL ); } @@ -269,7 +301,7 @@ void wxTopLevelWindowMotif::Iconize( bool iconize ) if( !shell ) return; if( !iconize ) - Show( TRUE ); + Show( true ); XtVaSetValues( shell, XmNiconic, (Boolean)iconize, @@ -281,7 +313,7 @@ bool wxTopLevelWindowMotif::IsIconized() const Widget shell = GetShell( this ); if( !shell ) - return FALSE; + return false; Boolean iconic; XtVaGetValues( shell, @@ -293,7 +325,7 @@ bool wxTopLevelWindowMotif::IsIconized() const void wxTopLevelWindowMotif::Maximize( bool maximize ) { - Show( TRUE ); + Show( true ); if( maximize ) Restore(); @@ -301,14 +333,14 @@ void wxTopLevelWindowMotif::Maximize( bool maximize ) bool wxTopLevelWindowMotif::IsMaximized() const { - return FALSE; + 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]; @@ -367,7 +399,7 @@ void wxTLWEventHandler( Widget wid, else { // An attempt to implement OnCharHook by calling OnCharHook first; - // if this returns TRUE, set continueToDispatch to False + // if this returns true, set continueToDispatch to False // (don't continue processing). // Otherwise set it to True and call OnChar. wxKeyEvent keyEvent( wxEVT_CHAR );