X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/eab3f9e76b8188b5f99139b220a272fe3f2debaf..4ce68f8f0f1dd1aa518e6e682b2c2cef1f49d953:/src/frame.c diff --git a/src/frame.c b/src/frame.c index fd9f3ce020..1c5c12c7e2 100644 --- a/src/frame.c +++ b/src/frame.c @@ -6,8 +6,8 @@ This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +the Free Software Foundation, either version 3 of the License, or (at +your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -509,10 +509,13 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit, block_input (); #ifdef MSDOS - /* We only can set screen dimensions to certain values supported - by our video hardware. Try to find the smallest size greater - or equal to the requested dimensions. */ - dos_set_window_size (&new_lines, &new_cols); + /* We only can set screen dimensions to certain values supported by + our video hardware. Try to find the smallest size greater or + equal to the requested dimensions, while accounting for the fact + that the menu-bar lines are not counted in the frame height. */ + int dos_new_lines = new_lines + FRAME_TOP_MARGIN (f); + dos_set_window_size (&dos_new_lines, &new_cols); + new_lines = dos_new_lines - FRAME_TOP_MARGIN (f); #endif if (new_windows_width != old_windows_width) @@ -534,7 +537,7 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit, #endif } else if (new_cols != old_cols) - call2 (Qwindow_pixel_to_total, frame, Qt); + call2 (Qwindow__pixel_to_total, frame, Qt); if (new_windows_height != old_windows_height /* When the top margin has changed we have to recalculate the top @@ -550,7 +553,7 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit, FrameRows (FRAME_TTY (f)) = new_lines + FRAME_TOP_MARGIN (f); } else if (new_lines != old_lines) - call2 (Qwindow_pixel_to_total, frame, Qnil); + call2 (Qwindow__pixel_to_total, frame, Qnil); frame_size_history_add (f, Qadjust_frame_size_3, new_text_width, new_text_height, @@ -3641,7 +3644,7 @@ x_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval) x_new_font (f, font_object, fontset); store_frame_param (f, Qfont, arg); #ifdef HAVE_X_WINDOWS - store_frame_param (f, Qfont_param, font_param); + store_frame_param (f, Qfont_parameter, font_param); #endif /* Recalculate toolbar height. */ f->n_tool_bar_rows = 0; @@ -4563,7 +4566,7 @@ On Nextstep, this just calls `ns-parse-geometry'. */) This function does not make the coordinates positive. */ -#define DEFAULT_ROWS 35 +#define DEFAULT_ROWS 36 #define DEFAULT_COLS 80 long @@ -4884,7 +4887,7 @@ syms_of_frame (void) DEFSYM (Qframep, "framep"); DEFSYM (Qframe_live_p, "frame-live-p"); DEFSYM (Qframe_windows_min_size, "frame-windows-min-size"); - DEFSYM (Qwindow_pixel_to_total, "window--pixel-to-total"); + DEFSYM (Qwindow__pixel_to_total, "window--pixel-to-total"); DEFSYM (Qexplicit_name, "explicit-name"); DEFSYM (Qheight, "height"); DEFSYM (Qicon, "icon"); @@ -5226,7 +5229,7 @@ keep it unchanged if this option is either t or a list containing `vertical-scroll-bars'. The default value is \\='(tool-bar-lines) on Lucid, Motif and Windows -(which means that adding/removing a tool bar does not change the frame +\(which means that adding/removing a tool bar does not change the frame height), nil on all other window systems including GTK+ (which means that changing any of the parameters listed above may change the size of the frame), and t otherwise (which means the frame size never changes @@ -5262,6 +5265,21 @@ The function `frame--size-history' displays the value of this variable in a more readable form. */); frame_size_history = Qnil; + DEFVAR_BOOL ("tooltip-reuse-hidden-frame", tooltip_reuse_hidden_frame, + doc: /* Non-nil means reuse hidden tooltip frames. +When this is nil, delete a tooltip frame when hiding the associated +tooltip. When this is non-nil, make the tooltip frame invisible only, +so it can be reused when the next tooltip is shown. + +Setting this to non-nil may drastically reduce the consing overhead +incurred by creating new tooltip frames. However, a value of non-nil +means also that intermittent changes of faces or `default-frame-alist' +are not applied when showing a tooltip in a reused frame. + +This variable is effective only with the X toolkit (and there only when +Gtk+ tooltips are not used) and on Windows. */); + tooltip_reuse_hidden_frame = false; + staticpro (&Vframe_list); defsubr (&Sframep);