[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 912ae5d 1/3: Prevent BadValue errors when creating tiny xwidget v
From: |
Lars Ingebrigtsen |
Subject: |
master 912ae5d 1/3: Prevent BadValue errors when creating tiny xwidget views |
Date: |
Tue, 9 Nov 2021 19:17:32 -0500 (EST) |
branch: master
commit 912ae5de928a5042a8ac77b80d743a6d8f7ed1e8
Author: Po Lu <luangruo@yahoo.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Prevent BadValue errors when creating tiny xwidget views
* src/xwidget.c (x_draw_glph_string): Avoid resizing xwidget views
to an invalid size (bug#51707).
---
src/xwidget.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/xwidget.c b/src/xwidget.c
index d3a8d5e..fc76ce3 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -1439,6 +1439,13 @@ x_draw_xwidget_glyph_string (struct glyph_string *s)
a.event_mask = (ExposureMask | ButtonPressMask | ButtonReleaseMask
| PointerMotionMask | EnterWindowMask | LeaveWindowMask);
+ if (clip_right - clip_left <= 0
+ || clip_bottom - clip_top <= 0)
+ {
+ unblock_input ();
+ return;
+ }
+
xv->wdesc = XCreateWindow (xv->dpy, FRAME_X_WINDOW (s->f),
x + clip_left, y + clip_top,
clip_right - clip_left,
@@ -1484,8 +1491,17 @@ x_draw_xwidget_glyph_string (struct glyph_string *s)
#ifdef USE_GTK
if (!wdesc_was_none && !moved)
{
- XResizeWindow (xv->dpy, xv->wdesc, clip_right - clip_left,
- clip_bottom - clip_top);
+ if (clip_right - clip_left <= 0
+ || clip_bottom - clip_top <= 0)
+ {
+ XUnmapWindow (xv->dpy, xv->wdesc);
+ xv->hidden = true;
+ }
+ else
+ {
+ XResizeWindow (xv->dpy, xv->wdesc, clip_right - clip_left,
+ clip_bottom - clip_top);
+ }
XFlush (xv->dpy);
cairo_xlib_surface_set_size (xv->cr_surface, clip_right - clip_left,
clip_bottom - clip_top);