mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-01 01:41:01 -08:00
Backport fix for Bug#2423 from trunk.
* dispextern.h (TRY_WINDOW_CHECK_MARGINS) (TRY_WINDOW_IGNORE_FONTS_CHANGE): New defines. * xdisp.c (try_window): Change arg from CHECK_MARGINS to FLAGS. Don't abort with fonts change if TRY_WINDOW_IGNORE_FONTS_CHANGE is set in FLAGS. Callers with non-zero CHECK_MARGINS changed to use TRY_WINDOW_CHECK_MARGINS. * xfns.c (Fx_show_tip): Undo last change. Call try_window with TRY_WINDOW_IGNORE_FONTS_CHANGE (Bug#2423).
This commit is contained in:
commit
db5cada28d
4 changed files with 26 additions and 7 deletions
|
|
@ -1,3 +1,16 @@
|
|||
2010-11-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* dispextern.h (TRY_WINDOW_CHECK_MARGINS)
|
||||
(TRY_WINDOW_IGNORE_FONTS_CHANGE): New defines.
|
||||
|
||||
* xdisp.c (try_window): Change arg from CHECK_MARGINS to FLAGS.
|
||||
Don't abort with fonts change if TRY_WINDOW_IGNORE_FONTS_CHANGE is
|
||||
set in FLAGS. Callers with non-zero CHECK_MARGINS changed to use
|
||||
TRY_WINDOW_CHECK_MARGINS.
|
||||
|
||||
* xfns.c (Fx_show_tip): Undo last change. Call try_window with
|
||||
TRY_WINDOW_IGNORE_FONTS_CHANGE (Bug#2423).
|
||||
|
||||
2010-11-04 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* xfns.c (x_real_positions): Only use _NET_FRAME_EXTENTS if our
|
||||
|
|
|
|||
|
|
@ -2841,6 +2841,10 @@ extern int x_intersect_rectangles P_ ((XRectangle *, XRectangle *,
|
|||
XRectangle *));
|
||||
#endif
|
||||
|
||||
/* Flags passed to try_window. */
|
||||
#define TRY_WINDOW_CHECK_MARGINS (1 << 0)
|
||||
#define TRY_WINDOW_IGNORE_FONTS_CHANGE (1 << 1)
|
||||
|
||||
/* Defined in fringe.c */
|
||||
|
||||
int lookup_fringe_bitmap (Lisp_Object);
|
||||
|
|
|
|||
14
src/xdisp.c
14
src/xdisp.c
|
|
@ -13577,7 +13577,7 @@ redisplay_window (window, just_this_one_p)
|
|||
= try_window_reusing_current_matrix (w)))
|
||||
{
|
||||
IF_DEBUG (debug_method_add (w, "1"));
|
||||
if (try_window (window, startp, 1) < 0)
|
||||
if (try_window (window, startp, TRY_WINDOW_CHECK_MARGINS) < 0)
|
||||
/* -1 means we need to scroll.
|
||||
0 means we need new matrices, but fonts_changed_p
|
||||
is set in that case, so we will detect it below. */
|
||||
|
|
@ -13936,13 +13936,15 @@ redisplay_window (window, just_this_one_p)
|
|||
Value is 1 if successful. It is zero if fonts were loaded during
|
||||
redisplay which makes re-adjusting glyph matrices necessary, and -1
|
||||
if point would appear in the scroll margins.
|
||||
(We check that only if CHECK_MARGINS is nonzero. */
|
||||
(We check the former only if TRY_WINDOW_IGNORE_FONTS_CHANGE is
|
||||
unset in FLAGS, and the latter only if TRY_WINDOW_CHECK_MARGINS is
|
||||
set in FLAGS.) */
|
||||
|
||||
int
|
||||
try_window (window, pos, check_margins)
|
||||
try_window (window, pos, flags)
|
||||
Lisp_Object window;
|
||||
struct text_pos pos;
|
||||
int check_margins;
|
||||
int flags;
|
||||
{
|
||||
struct window *w = XWINDOW (window);
|
||||
struct it it;
|
||||
|
|
@ -13964,12 +13966,12 @@ try_window (window, pos, check_margins)
|
|||
{
|
||||
if (display_line (&it))
|
||||
last_text_row = it.glyph_row - 1;
|
||||
if (fonts_changed_p)
|
||||
if (fonts_changed_p && !(flags & TRY_WINDOW_IGNORE_FONTS_CHANGE))
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Don't let the cursor end in the scroll margins. */
|
||||
if (check_margins
|
||||
if ((flags & TRY_WINDOW_CHECK_MARGINS)
|
||||
&& !MINI_WINDOW_P (w))
|
||||
{
|
||||
int this_scroll_margin;
|
||||
|
|
|
|||
|
|
@ -5224,7 +5224,7 @@ Text larger than the specified size is clipped. */)
|
|||
clear_glyph_matrix (w->desired_matrix);
|
||||
clear_glyph_matrix (w->current_matrix);
|
||||
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
|
||||
try_window (FRAME_ROOT_WINDOW (f), pos, 0);
|
||||
try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
|
||||
|
||||
/* Compute width and height of the tooltip. */
|
||||
width = height = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue