Lower xwidget views owned by parent when lowering frame

* src/xterm.c (x_lower_frame): Lower parent frame's xwidget
views as well.

* src/xwidget.h (lower_frame_xwidget_views):
* src/xwidget.c (lower_frame_xwidget_views): New function.
This commit is contained in:
Po Lu 2021-11-16 17:51:07 +08:00
parent 1657e0fb17
commit 8d0c19fb0c
3 changed files with 22 additions and 0 deletions

View file

@ -11723,6 +11723,13 @@ x_lower_frame (struct frame *f)
XFlush (FRAME_X_DISPLAY (f));
unblock_input ();
}
#ifdef HAVE_XWIDGETS
/* Make sure any X windows owned by xwidget views of the parent
still display below the lowered frame. */
if (FRAME_PARENT_FRAME (f))
lower_frame_xwidget_views (FRAME_PARENT_FRAME (f));
#endif
}
static void

View file

@ -2810,6 +2810,20 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix)
}
#ifdef USE_GTK
void
lower_frame_xwidget_views (struct frame *f)
{
struct xwidget_view *xv;
for (Lisp_Object tail = internal_xwidget_view_list; CONSP (tail);
tail = XCDR (tail))
{
xv = XXWIDGET_VIEW (XCAR (tail));
if (xv->frame == f && xv->wdesc != None)
XLowerWindow (xv->dpy, xv->wdesc);
}
}
void
kill_frame_xwidget_views (struct frame *f)
{

View file

@ -188,6 +188,7 @@ extern struct xwidget *xwidget_from_id (uint32_t id);
#ifdef HAVE_X_WINDOWS
struct xwidget_view *xwidget_view_from_window (Window wdesc);
void xwidget_expose (struct xwidget_view *xv);
extern void lower_frame_xwidget_views (struct frame *f);
extern void kill_frame_xwidget_views (struct frame *f);
extern void xwidget_button (struct xwidget_view *, bool, int,
int, int, int, Time);