X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/16d865f756b8bc251467139b3b75752219ab97bd..a766986f6d443ba1d50e3af25f3306fa56e4518e:/src/x11/nanox.c?ds=sidebyside diff --git a/src/x11/nanox.c b/src/x11/nanox.c index ee7dda4098..5c2c8b27ab 100644 --- a/src/x11/nanox.c +++ b/src/x11/nanox.c @@ -2,16 +2,13 @@ * nanox.c * * Replacements for some comomon Xlib functions + * Licence: The wxWidgets licence */ #include "wx/setup.h" #if wxUSE_NANOX -#ifdef __GNUG__ -#pragma implementation "Xlib.h" -#endif - #include #include #include @@ -155,6 +152,8 @@ Status XGetWindowAttributes(Display* display, Window w, XWindowAttributes* window_attributes) { GR_WINDOW_INFO info; + Window parent = 0; + GrFlush(); GrGetWindowInfo(w, & info); window_attributes->x = info.x; @@ -180,12 +179,25 @@ Status XGetWindowAttributes(Display* display, Window w, window_attributes->override_redirect = FALSE; window_attributes->screen = NULL; + /* We need to check if any parents are unmapped, + * or we will report a window as mapped when it is not. + */ + parent = info.parent; + while (parent) + { + GrGetWindowInfo(parent, & info); + if (info.mapped == 0) + window_attributes->map_state = IsUnmapped; + + parent = info.parent; + } + return 1; } static XErrorHandler* g_ErrorHandler = NULL; -static void DefaultNanoXErrorHandler(GR_EVENT_ERROR* ep) +void DefaultNanoXErrorHandler(GR_EVENT_ERROR* ep) { if (g_ErrorHandler) {