* Source/x11/XGServerWindow.m (-_checkStyle:): Ignore invalid

border information.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@40286 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2017-01-08 21:01:01 +00:00
parent 84db7e1e78
commit 168e6f1347
2 changed files with 48 additions and 37 deletions

View file

@ -1,3 +1,8 @@
2017-01-08 Fred Kiefer <FredKiefer@gmx.de>
* Source/x11/XGServerWindow.m (-_checkStyle:): Ignore invalid
border information.
2016-08-02 Fred Kiefer <FredKiefer@gmx.de> 2016-08-02 Fred Kiefer <FredKiefer@gmx.de>
* Source/opal/OpalFontInfo.m * Source/opal/OpalFontInfo.m

View file

@ -612,16 +612,16 @@ static void setWindowHintsForStyle (Display *dpy, Window window,
XEvent event; XEvent event;
memset(&event, 0, sizeof(event)); memset(&event, 0, sizeof(event));
event.xclient.type = ClientMessage; event.xclient.type = ClientMessage;
event.xclient.message_type = type; event.xclient.message_type = type;
event.xclient.format = 32; event.xclient.format = 32;
event.xclient.display = dpy; event.xclient.display = dpy;
event.xclient.window = window; event.xclient.window = window;
event.xclient.data.l[0] = data0; event.xclient.data.l[0] = data0;
event.xclient.data.l[1] = data1; event.xclient.data.l[1] = data1;
event.xclient.data.l[2] = data2; event.xclient.data.l[2] = data2;
event.xclient.data.l[3] = data3; event.xclient.data.l[3] = data3;
XSendEvent(dpy, root, False, XSendEvent(dpy, root, False,
(SubstructureNotifyMask|SubstructureRedirectMask), &event); (SubstructureNotifyMask|SubstructureRedirectMask), &event);
XFlush(dpy); XFlush(dpy);
} }
@ -706,26 +706,26 @@ select_input(Display *display, Window w, BOOL ignoreMouse)
Bool Bool
_get_next_prop_new_event(Display *display, XEvent *event, char *arg) _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
{ {
XID *data = (XID*)arg; XID *data = (XID*)arg;
if (event->type == PropertyNotify && if (event->type == PropertyNotify &&
event->xproperty.window == data[0] && event->xproperty.window == data[0] &&
event->xproperty.atom == data[1] && event->xproperty.atom == data[1] &&
event->xproperty.state == PropertyNewValue) event->xproperty.state == PropertyNewValue)
{ {
return True; return True;
} }
else else
{ {
return False; return False;
} }
} }
- (BOOL) _tryRequestFrameExtents: (gswindow_device_t *)window - (BOOL) _tryRequestFrameExtents: (gswindow_device_t *)window
{ {
static Atom _net_request_frame_extents = None; static Atom _net_request_frame_extents = None;
XEvent xEvent; XEvent xEvent;
XID event_data[2]; XID event_data[2];
NSDate *limit; NSDate *limit;
if (_net_frame_extents == None) if (_net_frame_extents == None)
@ -756,15 +756,15 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
data3: 0]; data3: 0];
limit = [NSDate dateWithTimeIntervalSinceNow: 1.0]; limit = [NSDate dateWithTimeIntervalSinceNow: 1.0];
while ([limit timeIntervalSinceNow] > 0.0) while ([limit timeIntervalSinceNow] > 0.0)
{ {
if (XCheckTypedWindowEvent(dpy, window->ident, DestroyNotify, &xEvent)) if (XCheckTypedWindowEvent(dpy, window->ident, DestroyNotify, &xEvent))
{ {
return NO; return NO;
} }
else if (XCheckIfEvent(dpy, &xEvent, _get_next_prop_new_event, else if (XCheckIfEvent(dpy, &xEvent, _get_next_prop_new_event,
(char*)(&event_data))) (char*)(&event_data)))
{ {
return YES; return YES;
} }
else else
@ -775,8 +775,7 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
[NSDate dateWithTimeIntervalSinceNow: 0.01]]; [NSDate dateWithTimeIntervalSinceNow: 0.01]];
IF_NO_GC([pool release]); IF_NO_GC([pool release]);
} }
} }
return NO; return NO;
} }
@ -1062,10 +1061,10 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
{ {
Window parent = repp; Window parent = repp;
XWindowAttributes wattr; XWindowAttributes wattr;
float l; int l;
float r; int r;
float t; int t;
float b; int b;
/* Get the WM offset info which we hope is the same /* Get the WM offset info which we hope is the same
* for all parented windows with the same style. * for all parented windows with the same style.
@ -1138,14 +1137,21 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
b = wattr.height + wattr.border_width * 2; b = wattr.height + wattr.border_width * 2;
b -= (window->xframe.size.height + t); b -= (window->xframe.size.height + t);
o->l = l; if ((l >= 0) && (r >= 0) && (t >= 0) && (b >= 0))
o->r = r; {
o->t = t; o->l = (float)l;
o->b = b; o->r = (float)r;
o->known = YES; o->t = (float)t;
NSDebugLLog(@"Offset", o->b = (float)b;
@"Style %d lrtb set to %d,%d,%d,%d\n", o->known = YES;
style, (int)o->l, (int)o->r, (int)o->t, (int)o->b); 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);
}
} }
} }