]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bit rot in the XEmbed code
authorPo Lu <luangruo@yahoo.com>
Wed, 13 Apr 2022 02:07:00 +0000 (10:07 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 13 Apr 2022 02:08:18 +0000 (10:08 +0800)
* src/xterm.c (x_term_init): Delete unused atom.
(handle_one_xevent):
(x_make_frame_visible): Handle embedded frame visibility
correctly.
* src/xterm.h (struct x_display_info): Delete unused atom.

src/xterm.c
src/xterm.h

index 2999480659b9d9fba4daf06fd569f7254678a769..c1c9ebde5cb0bb885b15aa2655c82c12a9718d86 100644 (file)
@@ -14060,7 +14060,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
        }
 
       f = x_top_window_to_frame (dpyinfo, event->xproperty.window);
-      if (f && event->xproperty.atom == dpyinfo->Xatom_net_wm_state)
+      if (f && event->xproperty.atom == dpyinfo->Xatom_net_wm_state
+         /* This should never happen with embedded windows.  */
+         && !FRAME_X_EMBEDDED_P (f))
        {
           bool not_hidden = x_handle_net_wm_state (f, &event->xproperty);
 
@@ -14417,7 +14419,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                x_set_z_group (f, Qbelow, Qnil);
            }
 
-         if (not_hidden)
+         /* Embedded frames might have NET_WM_STATE left over, but
+            are always visible once mapped.  */
+         if (not_hidden || FRAME_X_EMBEDDED_P (f))
            {
              SET_FRAME_VISIBLE (f, 1);
              SET_FRAME_ICONIFIED (f, false);
@@ -14436,7 +14440,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 
          x_update_opaque_region (f, NULL);
 
-          if (not_hidden && iconified)
+          if ((not_hidden || FRAME_X_EMBEDDED_P (f)) && iconified)
             {
               inev.ie.kind = DEICONIFY_EVENT;
               XSETFRAME (inev.ie.frame_or_window, f);
@@ -15543,6 +15547,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
           /* Even if the number of character rows and columns has
              not changed, the font size may have changed, so we need
              to check the pixel dimensions as well.  */
+
           if (width != FRAME_PIXEL_WIDTH (f)
               || height != FRAME_PIXEL_HEIGHT (f)
              || (f->new_size_p
@@ -21217,6 +21222,12 @@ x_make_frame_visible (struct frame *f)
        XMapRaised (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f));
 #endif /* not USE_GTK */
 #endif /* not USE_X_TOOLKIT */
+
+      if (FRAME_X_EMBEDDED_P (f))
+       {
+         SET_FRAME_VISIBLE (f, true);
+         SET_FRAME_ICONIFIED (f, false);
+       }
     }
 
   XFlush (FRAME_X_DISPLAY (f));
@@ -22949,7 +22960,6 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
       ATOM_REFS_INIT ("ATOM", Xatom_ATOM)
       ATOM_REFS_INIT ("ATOM_PAIR", Xatom_ATOM_PAIR)
       ATOM_REFS_INIT ("CLIPBOARD_MANAGER", Xatom_CLIPBOARD_MANAGER)
-      ATOM_REFS_INIT ("XATOM_COUNTER", Xatom_XEMBED_INFO)
       ATOM_REFS_INIT ("_XEMBED_INFO", Xatom_XEMBED_INFO)
       ATOM_REFS_INIT ("_MOTIF_WM_HINTS", Xatom_MOTIF_WM_HINTS)
       /* For properties of font.  */
index 69313166db9cac93977636d085cdfd5664920dff..75094082683fc7c213bbd5be03b16f7a128c9aa4 100644 (file)
@@ -414,7 +414,7 @@ struct x_display_info
   Atom Xatom_CLIPBOARD, Xatom_TIMESTAMP, Xatom_TEXT, Xatom_DELETE,
     Xatom_COMPOUND_TEXT, Xatom_UTF8_STRING,
     Xatom_MULTIPLE, Xatom_INCR, Xatom_EMACS_TMP, Xatom_TARGETS, Xatom_NULL,
-    Xatom_ATOM, Xatom_ATOM_PAIR, Xatom_CLIPBOARD_MANAGER, Xatom_COUNTER,
+    Xatom_ATOM, Xatom_ATOM_PAIR, Xatom_CLIPBOARD_MANAGER,
     Xatom_EMACS_SERVER_TIME_PROP;
 
   /* More atoms for font properties.  The last three are private