diff options
| author | Po Lu <luangruo@yahoo.com> | 2022-07-21 16:26:34 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2022-07-21 16:26:50 +0800 |
| commit | a29a3ad55d650af6230e2cfe8ef1ef45b5feb133 (patch) | |
| tree | e7e41121f33c6e592c406f81f4f8cb5c094f33e2 /src/pgtkfns.c | |
| parent | 5f1023a2ffe7c96027c3eaf23c1cf93cd5c78dfa (diff) | |
Apply tooltip assertions to all instances of x-show-tip
* src/haikufns.c (Fx_show_tip):
(syms_of_haikufns):
* src/nsfns.m (Fx_show_tip):
(syms_of_nsfns):
* src/pgtkfns.c (Fx_show_tip):
(syms_of_pgtkfns):
* src/xfns.c (Fx_show_tip):
(syms_of_xfns): Add assertion and adjust default values.
Diffstat (limited to 'src/pgtkfns.c')
| -rw-r--r-- | src/pgtkfns.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/pgtkfns.c b/src/pgtkfns.c index 5c43e5f3607..d998c3d938c 100644 --- a/src/pgtkfns.c +++ b/src/pgtkfns.c @@ -3130,6 +3130,10 @@ Text larger than the specified size is clipped. */) int old_windows_or_buffers_changed = windows_or_buffers_changed; specpdl_ref count = SPECPDL_INDEX (); Lisp_Object window, size, tip_buf; + bool displayed; +#ifdef ENABLE_CHECKING + struct glyph_row *row, *end; +#endif AUTO_STRING (tip, " *tip*"); specbind (Qinhibit_redisplay, Qt); @@ -3334,7 +3338,26 @@ 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 (window, pos, TRY_WINDOW_IGNORE_FONTS_CHANGE); + displayed = try_window (window, pos, TRY_WINDOW_IGNORE_FONTS_CHANGE); + + if (!displayed && NILP (Vx_max_tooltip_size)) + { +#ifdef ENABLE_CHECKING + row = w->desired_matrix->rows; + end = w->desired_matrix->rows + w->desired_matrix->nrows; + + while (row < end) + { + if (!row->displays_text_p + || row->ends_at_zv_p) + break; + ++row; + } + + eassert (row < end && row->ends_at_zv_p); +#endif + } + /* Calculate size of tooltip window. */ size = Fwindow_text_pixel_size (window, Qnil, Qnil, Qnil, make_fixnum (w->pixel_height), Qnil, @@ -3924,7 +3947,7 @@ syms_of_pgtkfns (void) DEFVAR_LISP ("x-max-tooltip-size", Vx_max_tooltip_size, doc: /* SKIP: real doc in xfns.c. */); - Vx_max_tooltip_size = Fcons (make_fixnum (80), make_fixnum (40)); + Vx_max_tooltip_size = Qnil; DEFSYM (Qmono, "mono"); DEFSYM (Qassq_delete_all, "assq-delete-all"); |
