aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/lispref/keymaps.texi20
-rw-r--r--doc/lispref/modes.texi11
-rw-r--r--doc/misc/tramp.texi3
-rw-r--r--etc/NEWS.274
-rw-r--r--lisp/cedet/pulse.el3
-rw-r--r--lisp/jit-lock.el22
-rw-r--r--src/dispnew.c4
-rw-r--r--src/frame.c1
-rw-r--r--src/gtkutil.c41
-rw-r--r--src/intervals.c2
-rw-r--r--src/xfns.c56
-rw-r--r--src/xterm.c43
12 files changed, 158 insertions, 52 deletions
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 4d513132e9f..2c90d208c02 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -2227,22 +2227,14 @@ set the variable so that the button you clicked on becomes selected.
2227 2227
2228@item :key-sequence @var{key-sequence} 2228@item :key-sequence @var{key-sequence}
2229This property specifies which key sequence is likely to be bound to the 2229This property specifies which key sequence is likely to be bound to the
2230same command invoked by this menu item. If you specify the right key 2230same command invoked by this menu item. If you specify a correct key
2231sequence, that makes preparing the menu for display run much faster. 2231sequence, that sequence will be preferred over others.
2232 2232
2233If you specify the wrong key sequence, it has no effect; before Emacs 2233If you specify an incorrect key sequence, it has no effect; before Emacs
2234displays @var{key-sequence} in the menu, it verifies that 2234displays @var{key-sequence} in the menu, it verifies that
2235@var{key-sequence} is really equivalent to this menu item. 2235@var{key-sequence} is really equivalent to this menu item. Specifying
2236 2236@code{nil} for @var{key-sequence} is equivalent to the
2237@item :key-sequence nil 2237@code{:key-sequence} attribute being absent.
2238This property indicates that there is normally no key binding which is
2239equivalent to this menu item. Using this property saves time in
2240preparing the menu for display, because Emacs does not need to search
2241the keymaps for a keyboard equivalent for this menu item.
2242
2243However, if the user has rebound this item's definition to a key
2244sequence, Emacs ignores the @code{:keys} property and finds the keyboard
2245equivalent anyway.
2246 2238
2247@item :keys @var{string} 2239@item :keys @var{string}
2248This property specifies that @var{string} is the string to display 2240This property specifies that @var{string} is the string to display
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index f8cf4578fc2..fc68ee1b322 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -3215,6 +3215,11 @@ The optional argument @var{contextual}, if non-@code{nil}, forces Font
3215Lock mode to always refontify a syntactically relevant part of the 3215Lock mode to always refontify a syntactically relevant part of the
3216buffer, and not just the modified lines. This argument can usually be 3216buffer, and not just the modified lines. This argument can usually be
3217omitted. 3217omitted.
3218
3219When Font Lock is activated in a buffer, it calls this function with a
3220non-@code{nil} value of @var{contextual} if the value of
3221@code{font-lock-keywords-only} (@pxref{Syntactic Font Lock}) is
3222@code{nil}.
3218@end defun 3223@end defun
3219 3224
3220@defun jit-lock-unregister function 3225@defun jit-lock-unregister function
@@ -3381,7 +3386,11 @@ table in special cases. @xref{Syntax Properties}.
3381If the value of this variable is non-@code{nil}, Font Lock does not do 3386If the value of this variable is non-@code{nil}, Font Lock does not do
3382syntactic fontification, only search-based fontification based on 3387syntactic fontification, only search-based fontification based on
3383@code{font-lock-keywords}. It is normally set by Font Lock mode based 3388@code{font-lock-keywords}. It is normally set by Font Lock mode based
3384on the @var{keywords-only} element in @code{font-lock-defaults}. 3389on the @var{keywords-only} element in @code{font-lock-defaults}. If
3390the value is @code{nil}, Font Lock will call @code{jit-lock-register}
3391(@pxref{Other Font Lock Variables}) to set up for automatic
3392refontification of buffer text following a modified line to reflect
3393the new syntactic context due to the change.
3385@end defvar 3394@end defvar
3386 3395
3387@defvar font-lock-syntax-table 3396@defvar font-lock-syntax-table
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 75d2fd11bb4..4e39728a146 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -3842,7 +3842,8 @@ the verbosity level to 6 (@pxref{Traces and Profiles, Traces}) in the
3842contents of the @file{*tramp/foo*} and @file{*debug tramp/foo*} 3842contents of the @file{*tramp/foo*} and @file{*debug tramp/foo*}
3843buffers with the bug report. Both buffers could contain 3843buffers with the bug report. Both buffers could contain
3844non-@acronym{ASCII} characters which are relevant for analysis, append 3844non-@acronym{ASCII} characters which are relevant for analysis, append
3845the buffers as attachments to the bug report. 3845the buffers as attachments to the bug report. This is also needed in
3846order to avoid line breaks during mail transfer.
3846 3847
3847@strong{Note} that a verbosity level greater than 6 is not necessary 3848@strong{Note} that a verbosity level greater than 6 is not necessary
3848at this stage. Also note that a verbosity level of 6 or greater, the 3849at this stage. Also note that a verbosity level of 6 or greater, the
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index d3f27e328e7..44a92ecbdd6 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -2892,8 +2892,8 @@ fixnum for such arguments.
2892'desktop-buffer-misc-functions', 'desktop-buffer-modes-to-save', 2892'desktop-buffer-misc-functions', 'desktop-buffer-modes-to-save',
2893'desktop-enable', 'desktop-load-default', 'dired-omit-files-p', 2893'desktop-enable', 'desktop-load-default', 'dired-omit-files-p',
2894'disabled-command-hook', 'dungeon-mode-map', 'electric-nroff-mode', 2894'disabled-command-hook', 'dungeon-mode-map', 'electric-nroff-mode',
2895'electric-nroff-newline', 'electric-perl-terminator', 'focus-frame', 2895'electric-nroff-newline', 'electric-perl-terminator', 'executing-macro',
2896'forward-text-line', 'generic-define-mswindows-modes', 2896'focus-frame', 'forward-text-line', 'generic-define-mswindows-modes',
2897'generic-define-unix-modes', 'generic-font-lock-defaults', 2897'generic-define-unix-modes', 'generic-font-lock-defaults',
2898'goto-address-at-mouse', 'highlight-changes-colours', 2898'goto-address-at-mouse', 'highlight-changes-colours',
2899'ibuffer-elide-long-columns', 'ibuffer-hooks', 'ibuffer-mode-hooks', 2899'ibuffer-elide-long-columns', 'ibuffer-hooks', 'ibuffer-mode-hooks',
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index 16243e16b45..8649254aedd 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -161,6 +161,9 @@ Return t if there is more drift to do, nil if completed."
161 (face-background face nil t) 161 (face-background face nil t)
162 (face-background 'pulse-highlight-start-face) 162 (face-background 'pulse-highlight-start-face)
163 )) 163 ))
164 (and face
165 (set-face-extend 'pulse-highlight-face
166 (face-extend-p face nil t)))
164 (put 'pulse-highlight-face :startface (or face 167 (put 'pulse-highlight-face :startface (or face
165 'pulse-highlight-start-face)) 168 'pulse-highlight-start-face))
166 (put 'pulse-highlight-face :iteration 0)) 169 (put 'pulse-highlight-face :iteration 0))
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index 9cdb108be03..c0c9cac23e7 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -96,16 +96,22 @@ See also `jit-lock-stealth-nice'."
96 96
97(defvaralias 'jit-lock-defer-contextually 'jit-lock-contextually) 97(defvaralias 'jit-lock-defer-contextually 'jit-lock-contextually)
98(defcustom jit-lock-contextually 'syntax-driven 98(defcustom jit-lock-contextually 'syntax-driven
99 "If non-nil, means fontification should be syntactically true. 99 "If non-nil, fontification should be syntactically true.
100If nil, means fontification occurs only on those lines modified. This 100If nil, refontification occurs only on lines that were modified. This
101means where modification on a line causes syntactic change on subsequent lines, 101means where modification on a line causes syntactic change on subsequent lines,
102those subsequent lines are not refontified to reflect their new context. 102those subsequent lines are not refontified to reflect their new context.
103If t, means fontification occurs on those lines modified and all 103If t, fontification occurs on those lines modified and all subsequent lines.
104subsequent lines. This means those subsequent lines are refontified to reflect 104This means those subsequent lines are refontified to reflect their new
105their new syntactic context, after `jit-lock-context-time' seconds. 105syntactic context, after `jit-lock-context-time' seconds.
106If any other value, e.g., `syntax-driven', means syntactically true 106If any other value, e.g., `syntax-driven', it means refontification of
107fontification occurs only if syntactic fontification is performed using the 107subsequent lines to reflect their new syntactic context may or may not
108buffer mode's syntax table, i.e., only if `font-lock-keywords-only' is nil. 108occur after `jit-lock-context-time', depending on the the font-lock
109definitions of the buffer. Specifically, if `font-lock-keywords-only'
110is nil in a buffer, which generally means the syntactic fontification
111is done using the buffer mode's syntax table, the syntactic
112refontification will be triggered (because in that case font-lock
113calls `jit-lock-register' to set up for syntactic refontification,
114and sets the buffer-local value of `jit-lock-contextually' to t).
109 115
110The value of this variable is used when JIT Lock mode is turned on." 116The value of this variable is used when JIT Lock mode is turned on."
111 :type '(choice (const :tag "never" nil) 117 :type '(choice (const :tag "never" nil)
diff --git a/src/dispnew.c b/src/dispnew.c
index d79ae836c56..5b6fa51a563 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -3683,6 +3683,10 @@ update_window (struct window *w, bool force_p)
3683 W->output_cursor doesn't contain the cursor location. */ 3683 W->output_cursor doesn't contain the cursor location. */
3684 gui_update_window_end (w, !paused_p, mouse_face_overwritten_p); 3684 gui_update_window_end (w, !paused_p, mouse_face_overwritten_p);
3685#endif 3685#endif
3686 /* If the update wasn't interrupted, this window has been
3687 completely updated. */
3688 if (!paused_p)
3689 w->must_be_updated_p = false;
3686 } 3690 }
3687 else 3691 else
3688 paused_p = 1; 3692 paused_p = 1;
diff --git a/src/frame.c b/src/frame.c
index 884de2f5349..c871e4fd994 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -5930,6 +5930,7 @@ syms_of_frame (void)
5930 DEFSYM (Qxg_frame_set_char_size_1, "xg-frame-set-char-size-1"); 5930 DEFSYM (Qxg_frame_set_char_size_1, "xg-frame-set-char-size-1");
5931 DEFSYM (Qxg_frame_set_char_size_2, "xg-frame-set-char-size-2"); 5931 DEFSYM (Qxg_frame_set_char_size_2, "xg-frame-set-char-size-2");
5932 DEFSYM (Qxg_frame_set_char_size_3, "xg-frame-set-char-size-3"); 5932 DEFSYM (Qxg_frame_set_char_size_3, "xg-frame-set-char-size-3");
5933 DEFSYM (Qxg_frame_set_char_size_4, "xg-frame-set-char-size-4");
5933 DEFSYM (Qx_set_window_size_1, "x-set-window-size-1"); 5934 DEFSYM (Qx_set_window_size_1, "x-set-window-size-1");
5934 DEFSYM (Qx_set_window_size_2, "x-set-window-size-2"); 5935 DEFSYM (Qx_set_window_size_2, "x-set-window-size-2");
5935 DEFSYM (Qx_set_window_size_3, "x-set-window-size-3"); 5936 DEFSYM (Qx_set_window_size_3, "x-set-window-size-3");
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 338c6036c2c..681f86f51ba 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -941,9 +941,8 @@ xg_frame_resized (struct frame *f, int pixelwidth, int pixelheight)
941 } 941 }
942} 942}
943 943
944/* Resize the outer window of frame F after changing the height. 944/** Resize the outer window of frame F. WIDTH and HEIGHT are the new
945 COLUMNS/ROWS is the size the edit area shall have after the resize. */ 945 pixel sizes of F's text area. */
946
947void 946void
948xg_frame_set_char_size (struct frame *f, int width, int height) 947xg_frame_set_char_size (struct frame *f, int width, int height)
949{ 948{
@@ -954,6 +953,8 @@ xg_frame_set_char_size (struct frame *f, int width, int height)
954 int totalheight 953 int totalheight
955 = pixelheight + FRAME_TOOLBAR_HEIGHT (f) + FRAME_MENUBAR_HEIGHT (f); 954 = pixelheight + FRAME_TOOLBAR_HEIGHT (f) + FRAME_MENUBAR_HEIGHT (f);
956 int totalwidth = pixelwidth + FRAME_TOOLBAR_WIDTH (f); 955 int totalwidth = pixelwidth + FRAME_TOOLBAR_WIDTH (f);
956 bool was_visible = false;
957 bool hide_child_frame;
957 958
958 if (FRAME_PIXEL_HEIGHT (f) == 0) 959 if (FRAME_PIXEL_HEIGHT (f) == 0)
959 return; 960 return;
@@ -996,12 +997,42 @@ xg_frame_set_char_size (struct frame *f, int width, int height)
996 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 997 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
997 totalwidth, gheight); 998 totalwidth, gheight);
998 } 999 }
1000 else if (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f))
1001 {
1002 was_visible = true;
1003 hide_child_frame = EQ (x_gtk_resize_child_frames, Qhide);
1004
1005 if (totalwidth != gwidth || totalheight != gheight)
1006 {
1007 frame_size_history_add
1008 (f, Qxg_frame_set_char_size_4, width, height,
1009 list2i (totalwidth, totalheight));
1010
1011 if (hide_child_frame)
1012 {
1013 block_input ();
1014 gtk_widget_hide (FRAME_GTK_OUTER_WIDGET (f));
1015 unblock_input ();
1016 }
1017
1018 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1019 totalwidth, totalheight);
1020
1021 if (hide_child_frame)
1022 {
1023 block_input ();
1024 gtk_widget_show_all (FRAME_GTK_OUTER_WIDGET (f));
1025 unblock_input ();
1026 }
1027
1028 fullscreen = Qnil;
1029 }
1030 }
999 else 1031 else
1000 { 1032 {
1001 frame_size_history_add 1033 frame_size_history_add
1002 (f, Qxg_frame_set_char_size_3, width, height, 1034 (f, Qxg_frame_set_char_size_3, width, height,
1003 list2i (totalwidth, totalheight)); 1035 list2i (totalwidth, totalheight));
1004
1005 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 1036 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1006 totalwidth, totalheight); 1037 totalwidth, totalheight);
1007 fullscreen = Qnil; 1038 fullscreen = Qnil;
@@ -1017,7 +1048,7 @@ xg_frame_set_char_size (struct frame *f, int width, int height)
1017 size as fast as possible. 1048 size as fast as possible.
1018 For unmapped windows, we can set rows/cols. When 1049 For unmapped windows, we can set rows/cols. When
1019 the frame is mapped again we will (hopefully) get the correct size. */ 1050 the frame is mapped again we will (hopefully) get the correct size. */
1020 if (FRAME_VISIBLE_P (f)) 1051 if (FRAME_VISIBLE_P (f) && !was_visible)
1021 { 1052 {
1022 /* Must call this to flush out events */ 1053 /* Must call this to flush out events */
1023 (void)gtk_events_pending (); 1054 (void)gtk_events_pending ();
diff --git a/src/intervals.c b/src/intervals.c
index 594d8924ebc..d4a734c923c 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1187,7 +1187,7 @@ delete_interval (register INTERVAL i)
1187 register INTERVAL parent; 1187 register INTERVAL parent;
1188 ptrdiff_t amt = LENGTH (i); 1188 ptrdiff_t amt = LENGTH (i);
1189 1189
1190 eassert (amt == 0); /* Only used on zero-length intervals now. */ 1190 eassert (amt <= 0); /* Only used on zero total-length intervals now. */
1191 1191
1192 if (ROOT_INTERVAL_P (i)) 1192 if (ROOT_INTERVAL_P (i))
1193 { 1193 {
diff --git a/src/xfns.c b/src/xfns.c
index ebe51b70a56..10e1b5e58c2 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -861,6 +861,12 @@ x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
861 (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), 861 (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
862 p ? FRAME_X_WINDOW (p) : DefaultRootWindow (FRAME_X_DISPLAY (f)), 862 p ? FRAME_X_WINDOW (p) : DefaultRootWindow (FRAME_X_DISPLAY (f)),
863 f->left_pos, f->top_pos); 863 f->left_pos, f->top_pos);
864#ifdef USE_GTK
865 if (EQ (x_gtk_resize_child_frames, Qresize_mode))
866 gtk_container_set_resize_mode
867 (GTK_CONTAINER (FRAME_GTK_OUTER_WIDGET (f)),
868 p ? GTK_RESIZE_IMMEDIATE : GTK_RESIZE_QUEUE);
869#endif
864 unblock_input (); 870 unblock_input ();
865 871
866 fset_parent_frame (f, new_value); 872 fset_parent_frame (f, new_value);
@@ -4078,6 +4084,11 @@ This function is an internal primitive--use `make-frame' instead. */)
4078 block_input (); 4084 block_input ();
4079 XReparentWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), 4085 XReparentWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
4080 FRAME_X_WINDOW (p), f->left_pos, f->top_pos); 4086 FRAME_X_WINDOW (p), f->left_pos, f->top_pos);
4087#ifdef USE_GTK
4088 if (EQ (x_gtk_resize_child_frames, Qresize_mode))
4089 gtk_container_set_resize_mode
4090 (GTK_CONTAINER (FRAME_GTK_OUTER_WIDGET (f)), GTK_RESIZE_IMMEDIATE);
4091#endif
4081 unblock_input (); 4092 unblock_input ();
4082 } 4093 }
4083 4094
@@ -7734,6 +7745,22 @@ Note: Text drawn with the `x' font backend is shown with hollow boxes. */)
7734#endif /* USE_GTK */ 7745#endif /* USE_GTK */
7735#endif /* USE_CAIRO */ 7746#endif /* USE_CAIRO */
7736 7747
7748#ifdef USE_GTK
7749#ifdef HAVE_GTK3
7750DEFUN ("x-gtk-debug", Fx_gtk_debug, Sx_gtk_debug, 1, 1, 0,
7751 doc: /* Toggle interactive GTK debugging. */)
7752 (Lisp_Object enable)
7753{
7754 gboolean enable_debug = !NILP (enable);
7755
7756 block_input ();
7757 gtk_window_set_interactive_debugging (enable_debug);
7758 unblock_input ();
7759
7760 return NILP (enable) ? Qnil : Qt;
7761}
7762#endif /* HAVE_GTK3 */
7763#endif /* USE_GTK */
7737 7764
7738/*********************************************************************** 7765/***********************************************************************
7739 Initialization 7766 Initialization
@@ -7802,6 +7829,8 @@ syms_of_xfns (void)
7802 DEFSYM (Qfont_parameter, "font-parameter"); 7829 DEFSYM (Qfont_parameter, "font-parameter");
7803 DEFSYM (Qmono, "mono"); 7830 DEFSYM (Qmono, "mono");
7804 DEFSYM (Qassq_delete_all, "assq-delete-all"); 7831 DEFSYM (Qassq_delete_all, "assq-delete-all");
7832 DEFSYM (Qhide, "hide");
7833 DEFSYM (Qresize_mode, "resize-mode");
7805 7834
7806#ifdef USE_CAIRO 7835#ifdef USE_CAIRO
7807 DEFSYM (Qpdf, "pdf"); 7836 DEFSYM (Qpdf, "pdf");
@@ -7978,6 +8007,28 @@ Otherwise use Emacs own tooltip implementation.
7978When using Gtk+ tooltips, the tooltip face is not used. */); 8007When using Gtk+ tooltips, the tooltip face is not used. */);
7979 x_gtk_use_system_tooltips = true; 8008 x_gtk_use_system_tooltips = true;
7980 8009
8010 DEFVAR_LISP ("x-gtk-resize-child-frames", x_gtk_resize_child_frames,
8011 doc: /* If non-nil, resize child frames specially with GTK builds.
8012If this is nil, resize child frames like any other frames. This is the
8013default and usually works with most desktops. Some desktop environments
8014(GNOME shell in particular when using the mutter window manager),
8015however, may refuse to resize a child frame when Emacs is built with
8016GTK3. For those environments, the two settings below are provided.
8017
8018If this equals the symbol 'hide', Emacs temporarily hides the child
8019frame during resizing. This approach seems to work reliably, may
8020however induce some flicker when the frame is made visible again.
8021
8022If this equals the symbol 'resize-mode', Emacs uses GTK's resize mode to
8023always trigger an immediate resize of the child frame. This method is
8024deprecated by GTK and may not work in future versions of that toolkit.
8025It also may freeze Emacs when used with other desktop environments. It
8026avoids, however, the unpleasent flicker induced by the hiding approach.
8027
8028This variable is considered a temporary workaround and will be hopefully
8029eliminated in future versions of Emacs. */);
8030 x_gtk_resize_child_frames = Qnil;
8031
7981 /* Tell Emacs about this window system. */ 8032 /* Tell Emacs about this window system. */
7982 Fprovide (Qx, Qnil); 8033 Fprovide (Qx, Qnil);
7983 8034
@@ -8093,4 +8144,9 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
8093 defsubr (&Sx_print_frames_dialog); 8144 defsubr (&Sx_print_frames_dialog);
8094#endif 8145#endif
8095#endif 8146#endif
8147#ifdef USE_GTK
8148#ifdef HAVE_GTK3
8149 defsubr (&Sx_gtk_debug);
8150#endif
8151#endif
8096} 8152}
diff --git a/src/xterm.c b/src/xterm.c
index bd9688fda81..ae5dad92897 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10613,26 +10613,29 @@ x_set_offset (struct frame *f, register int xoff, register int yoff, int change_
10613 modified_left, modified_top); 10613 modified_left, modified_top);
10614#endif 10614#endif
10615 10615
10616 x_sync_with_move (f, f->left_pos, f->top_pos, 10616 /* 'x_sync_with_move' is too costly for dragging child frames. */
10617 FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN); 10617 if (!FRAME_PARENT_FRAME (f))
10618 10618 {
10619 /* change_gravity is non-zero when this function is called from Lisp to 10619 x_sync_with_move (f, f->left_pos, f->top_pos,
10620 programmatically move a frame. In that case, we call 10620 FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN);
10621 x_check_expected_move to discover if we have a "Type A" or "Type B" 10621
10622 window manager, and, for a "Type A" window manager, adjust the position 10622 /* change_gravity is non-zero when this function is called from Lisp to
10623 of the frame. 10623 programmatically move a frame. In that case, we call
10624 10624 x_check_expected_move to discover if we have a "Type A" or "Type B"
10625 We call x_check_expected_move if a programmatic move occurred, and 10625 window manager, and, for a "Type A" window manager, adjust the position
10626 either the window manager type (A/B) is unknown or it is Type A but we 10626 of the frame.
10627 need to compute the top/left offset adjustment for this frame. */ 10627
10628 10628 We call x_check_expected_move if a programmatic move occurred, and
10629 if (change_gravity != 0 10629 either the window manager type (A/B) is unknown or it is Type A but we
10630 && !FRAME_PARENT_FRAME (f) 10630 need to compute the top/left offset adjustment for this frame. */
10631 && (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN 10631
10632 || (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A 10632 if (change_gravity != 0
10633 && (FRAME_X_OUTPUT (f)->move_offset_left == 0 10633 && (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
10634 && FRAME_X_OUTPUT (f)->move_offset_top == 0)))) 10634 || (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A
10635 x_check_expected_move (f, modified_left, modified_top); 10635 && (FRAME_X_OUTPUT (f)->move_offset_left == 0
10636 && FRAME_X_OUTPUT (f)->move_offset_top == 0))))
10637 x_check_expected_move (f, modified_left, modified_top);
10638 }
10636 10639
10637 unblock_input (); 10640 unblock_input ();
10638} 10641}