From 0307c7d29f872e8e2262ba7461729b493b1f4da1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Tue, 15 Sep 2009 18:49:56 +0000 Subject: [PATCH] * xterm.c (x_new_font): Call change_frame_size before calling x_set_window_size, in case frame size won't change. * frame.c (x_set_font): Remove dead code. --- src/ChangeLog | 7 +++++++ src/frame.c | 3 --- src/xterm.c | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index bdbb03e389..22fc6507cc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2009-09-15 Jan Djärv + + * xterm.c (x_new_font): Call change_frame_size before calling + x_set_window_size, in case frame size won't change. + + * frame.c (x_set_font): Remove dead code. + 2009-09-15 Stefan Monnier * lread.c (Fload): Also run do-after-load-evaluation while dumping. diff --git a/src/frame.c b/src/frame.c index 166a9a9db3..dbcd67f060 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3407,9 +3407,6 @@ x_set_font (f, arg, oldval) return; - lval = Fassq (Qfullscreen, f->param_alist); - if (CONSP (lval)) lval = CDR (lval); - x_new_font (f, font_object, fontset); store_frame_param (f, Qfont, arg); /* Recalculate toolbar height. */ diff --git a/src/xterm.c b/src/xterm.c index a2af7894cc..72aea94e8b 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -8026,7 +8026,20 @@ x_new_font (f, font_object, fontset) doing it because it's done in Fx_show_tip, and it leads to problems because the tip frame has no widget. */ if (NILP (tip_frame) || XFRAME (tip_frame) != f) - x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f)); + { + /* When the frame is maximized/fullscreen or running under for + example Xmonad, x_set_window_size will be a no-op. + In that case, the right thing to do is extend rows/cols to + the current frame size. We do that first if x_set_window_size + turns out to not be a no-op (there is no way to know). + The size will be adjusted again if the frame gets a + ConfigureNotify event as a result of x_set_window_size. */ + int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, + FRAME_PIXEL_HEIGHT (f)); + int cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, FRAME_PIXEL_WIDTH (f)); + change_frame_size (f, rows, cols, 0, 1, 0); + x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f)); + } } #ifdef HAVE_X_I18N -- 2.39.2