From 8960529e6b1edf67c720cf167220459325734470 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Wed, 12 Mar 2014 08:28:23 +0100 Subject: [PATCH] Two adjustments in window/frame resizing. * frame.c (x_set_frame_parameters): Always calculate new sizes pixelwise to avoid potential loss when rounding. * window.el (fit-frame-to-buffer): Get maximum width from display's width instead of height. --- lisp/ChangeLog | 5 +++++ lisp/window.el | 2 +- src/ChangeLog | 5 +++++ src/frame.c | 24 ++++++++++++------------ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index acc0f016caa..7452455efec 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-03-12 Martin Rudalics + + * window.el (fit-frame-to-buffer): Get maximum width from + display's width instead of height. + 2014-03-12 Glenn Morris * desktop.el (desktop-restore-frames) diff --git a/lisp/window.el b/lisp/window.el index afd814839d9..fc2accebba8 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7043,7 +7043,7 @@ FRAME." (- (* (nth 2 sizes) char-width) window-extra-width)) ((numberp max-width) (- (* max-width char-width) window-extra-width)) - (t display-height))) + (t display-width))) (min-width (cond ((numberp (nth 3 sizes)) diff --git a/src/ChangeLog b/src/ChangeLog index 2475fd5a1d0..013409ff406 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-03-12 Martin Rudalics + + * frame.c (x_set_frame_parameters): Always calculate new sizes + pixelwise to avoid potential loss when rounding. + 2014-03-11 Dmitry Antipov * xfns.c (x_set_mouse_color): Recolor vertical_drag_cursor. diff --git a/src/frame.c b/src/frame.c index 2d01c6fecaa..3d0c9d057c6 100644 --- a/src/frame.c +++ b/src/frame.c @@ -2848,14 +2848,14 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist) /* Provide default values for HEIGHT and WIDTH. */ width = (f->new_width ? (f->new_pixelwise - ? (f->new_width / FRAME_COLUMN_WIDTH (f)) - : f->new_width) - : FRAME_COLS (f)); + ? f->new_width + : (f->new_width * FRAME_COLUMN_WIDTH (f))) + : FRAME_TEXT_WIDTH (f)); height = (f->new_height ? (f->new_pixelwise - ? (f->new_height / FRAME_LINE_HEIGHT (f)) - : f->new_height) - : FRAME_LINES (f)); + ? f->new_height + : (f->new_height * FRAME_LINE_HEIGHT (f))) + : FRAME_TEXT_HEIGHT (f)); /* Process foreground_color and background_color before anything else. They are independent of other properties, but other properties (e.g., @@ -2899,12 +2899,12 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist) if (EQ (prop, Qwidth) && RANGED_INTEGERP (0, val, INT_MAX)) { size_changed = 1; - width = XFASTINT (val); + width = XFASTINT (val) * FRAME_COLUMN_WIDTH (f) ; } else if (EQ (prop, Qheight) && RANGED_INTEGERP (0, val, INT_MAX)) { size_changed = 1; - height = XFASTINT (val); + height = XFASTINT (val) * FRAME_LINE_HEIGHT (f); } else if (EQ (prop, Qtop)) top = val; @@ -2986,15 +2986,15 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist) Lisp_Object frame; /* Make this 1, eventually. */ - check_frame_size (f, &width, &height, 0); + check_frame_size (f, &width, &height, 1); XSETFRAME (frame, f); if (size_changed - && (width != FRAME_COLS (f) - || height != FRAME_LINES (f) + && (width != FRAME_TEXT_WIDTH (f) + || height != FRAME_TEXT_HEIGHT (f) || f->new_height || f->new_width)) - Fset_frame_size (frame, make_number (width), make_number (height), Qnil); + Fset_frame_size (frame, make_number (width), make_number (height), Qt); if ((!NILP (left) || !NILP (top)) && ! (left_no_change && top_no_change) -- 2.39.5