aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2021-11-16 17:51:07 +0800
committerPo Lu2021-11-16 17:51:07 +0800
commit8d0c19fb0c368692f4b17728c0eaf3e16e0c70f7 (patch)
tree69c15be64cd7cb9b55b28faad6b4644035845864 /src
parent1657e0fb177d6a107479306e17ffbb9016a9a40c (diff)
downloademacs-8d0c19fb0c368692f4b17728c0eaf3e16e0c70f7.tar.gz
emacs-8d0c19fb0c368692f4b17728c0eaf3e16e0c70f7.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c7
-rw-r--r--src/xwidget.c14
-rw-r--r--src/xwidget.h1
3 files changed, 22 insertions, 0 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 5988d3a15fb..816b6dc5a8b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -11723,6 +11723,13 @@ x_lower_frame (struct frame *f)
11723 XFlush (FRAME_X_DISPLAY (f)); 11723 XFlush (FRAME_X_DISPLAY (f));
11724 unblock_input (); 11724 unblock_input ();
11725 } 11725 }
11726#ifdef HAVE_XWIDGETS
11727 /* Make sure any X windows owned by xwidget views of the parent
11728 still display below the lowered frame. */
11729
11730 if (FRAME_PARENT_FRAME (f))
11731 lower_frame_xwidget_views (FRAME_PARENT_FRAME (f));
11732#endif
11726} 11733}
11727 11734
11728static void 11735static void
diff --git a/src/xwidget.c b/src/xwidget.c
index 008eb07bcae..650572a8896 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -2811,6 +2811,20 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix)
2811 2811
2812#ifdef USE_GTK 2812#ifdef USE_GTK
2813void 2813void
2814lower_frame_xwidget_views (struct frame *f)
2815{
2816 struct xwidget_view *xv;
2817
2818 for (Lisp_Object tail = internal_xwidget_view_list; CONSP (tail);
2819 tail = XCDR (tail))
2820 {
2821 xv = XXWIDGET_VIEW (XCAR (tail));
2822 if (xv->frame == f && xv->wdesc != None)
2823 XLowerWindow (xv->dpy, xv->wdesc);
2824 }
2825}
2826
2827void
2814kill_frame_xwidget_views (struct frame *f) 2828kill_frame_xwidget_views (struct frame *f)
2815{ 2829{
2816 Lisp_Object rem = Qnil; 2830 Lisp_Object rem = Qnil;
diff --git a/src/xwidget.h b/src/xwidget.h
index df55dacffef..2f6d0442e20 100644
--- a/src/xwidget.h
+++ b/src/xwidget.h
@@ -188,6 +188,7 @@ extern struct xwidget *xwidget_from_id (uint32_t id);
188#ifdef HAVE_X_WINDOWS 188#ifdef HAVE_X_WINDOWS
189struct xwidget_view *xwidget_view_from_window (Window wdesc); 189struct xwidget_view *xwidget_view_from_window (Window wdesc);
190void xwidget_expose (struct xwidget_view *xv); 190void xwidget_expose (struct xwidget_view *xv);
191extern void lower_frame_xwidget_views (struct frame *f);
191extern void kill_frame_xwidget_views (struct frame *f); 192extern void kill_frame_xwidget_views (struct frame *f);
192extern void xwidget_button (struct xwidget_view *, bool, int, 193extern void xwidget_button (struct xwidget_view *, bool, int,
193 int, int, int, Time); 194 int, int, int, Time);