X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b5c0e1ac19ac7520dea4477c581dd538e1815b6..f239a20092359e3c914adb79bd39f3f5d2b2e06f:/src/x11/nanox.c diff --git a/src/x11/nanox.c b/src/x11/nanox.c index c080455ff5..a9619fb547 100644 --- a/src/x11/nanox.c +++ b/src/x11/nanox.c @@ -2,19 +2,17 @@ * nanox.c * * Replacements for some comomon Xlib functions + * Licence: The wxWindows licence */ #include "wx/setup.h" #if wxUSE_NANOX -#ifdef __GNUG__ -#pragma implementation "Xlib.h" -#endif - #include #include #include +#include #include "wx/defs.h" #include "wx/x11/nanox/X11/Xlib.h" @@ -154,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; @@ -179,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) { @@ -351,6 +364,7 @@ XFontStruct* XLoadQueryFont(Display* display, const char* fontSpec) XFontStruct* fontInfo = malloc(sizeof(XFontStruct)); fontInfo->fid = GrCreateFont(fontName, 0, 0); GrGetFontInfo(fontInfo->fid, & fontInfo->info); + printf("Warning: should not call XLoadQueryFont since font spec is not used in Nano-X.\n"); return fontInfo; }