Author: fredkiefer Date: Sun Jan 8 22:01:01 2017 New Revision: 40286 URL: http://svn.gna.org/viewcvs/gnustep?rev=40286&view=rev Log: * Source/x11/XGServerWindow.m (-_checkStyle:): Ignore invalid border information.
Modified: libs/back/trunk/ChangeLog libs/back/trunk/Source/x11/XGServerWindow.m Modified: libs/back/trunk/ChangeLog URL: http://svn.gna.org/viewcvs/gnustep/libs/back/trunk/ChangeLog?rev=40286&r1=40285&r2=40286&view=diff ============================================================================== --- libs/back/trunk/ChangeLog (original) +++ libs/back/trunk/ChangeLog Sun Jan 8 22:01:01 2017 @@ -1,3 +1,8 @@ +2017-01-08 Fred Kiefer <fredkie...@gmx.de> + + * Source/x11/XGServerWindow.m (-_checkStyle:): Ignore invalid + border information. + 2016-08-02 Fred Kiefer <fredkie...@gmx.de> * Source/opal/OpalFontInfo.m Modified: libs/back/trunk/Source/x11/XGServerWindow.m URL: http://svn.gna.org/viewcvs/gnustep/libs/back/trunk/Source/x11/XGServerWindow.m?rev=40286&r1=40285&r2=40286&view=diff ============================================================================== --- libs/back/trunk/Source/x11/XGServerWindow.m (original) +++ libs/back/trunk/Source/x11/XGServerWindow.m Sun Jan 8 22:01:01 2017 @@ -612,16 +612,16 @@ XEvent event; memset(&event, 0, sizeof(event)); - event.xclient.type = ClientMessage; - event.xclient.message_type = type; - event.xclient.format = 32; - event.xclient.display = dpy; - event.xclient.window = window; - event.xclient.data.l[0] = data0; - event.xclient.data.l[1] = data1; - event.xclient.data.l[2] = data2; - event.xclient.data.l[3] = data3; - XSendEvent(dpy, root, False, + event.xclient.type = ClientMessage; + event.xclient.message_type = type; + event.xclient.format = 32; + event.xclient.display = dpy; + event.xclient.window = window; + event.xclient.data.l[0] = data0; + event.xclient.data.l[1] = data1; + event.xclient.data.l[2] = data2; + event.xclient.data.l[3] = data3; + XSendEvent(dpy, root, False, (SubstructureNotifyMask|SubstructureRedirectMask), &event); XFlush(dpy); } @@ -706,26 +706,26 @@ Bool _get_next_prop_new_event(Display *display, XEvent *event, char *arg) { - XID *data = (XID*)arg; - - if (event->type == PropertyNotify && + XID *data = (XID*)arg; + + if (event->type == PropertyNotify && event->xproperty.window == data[0] && event->xproperty.atom == data[1] && event->xproperty.state == PropertyNewValue) - { + { return True; - } - else - { + } + else + { return False; - } + } } - (BOOL) _tryRequestFrameExtents: (gswindow_device_t *)window { static Atom _net_request_frame_extents = None; - XEvent xEvent; - XID event_data[2]; + XEvent xEvent; + XID event_data[2]; NSDate *limit; if (_net_frame_extents == None) @@ -756,15 +756,15 @@ data3: 0]; limit = [NSDate dateWithTimeIntervalSinceNow: 1.0]; - while ([limit timeIntervalSinceNow] > 0.0) - { + while ([limit timeIntervalSinceNow] > 0.0) + { if (XCheckTypedWindowEvent(dpy, window->ident, DestroyNotify, &xEvent)) - { + { return NO; } else if (XCheckIfEvent(dpy, &xEvent, _get_next_prop_new_event, (char*)(&event_data))) - { + { return YES; } else @@ -775,8 +775,7 @@ [NSDate dateWithTimeIntervalSinceNow: 0.01]]; IF_NO_GC([pool release]); } - } - + } return NO; } @@ -1062,10 +1061,10 @@ { Window parent = repp; XWindowAttributes wattr; - float l; - float r; - float t; - float b; + int l; + int r; + int t; + int b; /* Get the WM offset info which we hope is the same * for all parented windows with the same style. @@ -1138,14 +1137,21 @@ b = wattr.height + wattr.border_width * 2; b -= (window->xframe.size.height + t); - o->l = l; - o->r = r; - o->t = t; - o->b = b; - o->known = YES; - NSDebugLLog(@"Offset", - @"Style %d lrtb set to %d,%d,%d,%d\n", - style, (int)o->l, (int)o->r, (int)o->t, (int)o->b); + if ((l >= 0) && (r >= 0) && (t >= 0) && (b >= 0)) + { + o->l = (float)l; + o->r = (float)r; + o->t = (float)t; + o->b = (float)b; + o->known = YES; + NSDebugLLog(@"Offset", + @"Style %d lrtb set to %d,%d,%d,%d\n", + style, l, r, t, b); + } + else + { + NSLog(@"Reparenting resulted in negative border %d, %d, %d, %d", l, r, t, b); + } } } _______________________________________________ Gnustep-cvs mailing list Gnustep-cvs@gna.org https://mail.gna.org/listinfo/gnustep-cvs