From d94c40c1b74bcd10795fa6ea9cc1a8908486b093 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Wed, 11 Dec 2013 11:03:46 +0100 Subject: [PATCH] Various fixes around Bug#16013. * window.c (resize_frame_windows): Don't return immediately when the root window's size doesn't change - the minibuffer window may still have to be repositioned/resized. * xfns.c (Fx_create_frame): Always change the frame size after initializing the frame's faces. * xterm.c (handle_one_xevent): Don't set pixel sizes here, change_frame_size should already have done it. (x_new_font): Assign new tool- and menu-bar heights. (x_set_window_size_1): Account for tool- and menu-bar heights (Bug#16013). Don't set pixel sizes since change_frame_size should already have done it. --- src/ChangeLog | 14 ++++++++++++++ src/window.c | 2 +- src/xfns.c | 9 ++------- src/xterm.c | 25 ++++++++++++++----------- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 58495874b2b..d8bbe5a97be 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,17 @@ +2013-12-11 Martin Rudalics + + * window.c (resize_frame_windows): Don't return immediately when + the root window's size doesn't change - the minibuffer window + may still have to be repositioned/resized. + * xfns.c (Fx_create_frame): Always change the frame size after + initializing the frame's faces. + * xterm.c (handle_one_xevent): Don't set pixel sizes here, + change_frame_size should already have done it. + (x_new_font): Assign new tool- and menu-bar heights. + (x_set_window_size_1): Account for tool- and menu-bar heights + (Bug#16013). Don't set pixel sizes since change_frame_size + should already have done it. + 2013-12-11 Paul Eggert Remove the option of using libcrypto. diff --git a/src/window.c b/src/window.c index 426edc6099c..9bf6ad4b8f3 100644 --- a/src/window.c +++ b/src/window.c @@ -4057,7 +4057,7 @@ resize_frame_windows (struct frame *f, int size, bool horflag, bool pixelwise) r->pixel_top = FRAME_TOP_MARGIN_HEIGHT (f); if (new_pixel_size == old_pixel_size) - return; + ; else if (WINDOW_LEAF_P (r)) /* For a leaf root window just set the size. */ if (horflag) diff --git a/src/xfns.c b/src/xfns.c index 3c8df12f8c5..7200c5fb2e7 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -3069,7 +3069,6 @@ This function is an internal primitive--use `make-frame' instead. */) happen. */ init_frame_faces (f); -#ifdef USE_GTK /* PXW: This is a duplicate from below. We have to do it here since otherwise x_set_tool_bar_lines will work with the character sizes installed by init_frame_faces while the frame's pixel size is still @@ -3078,12 +3077,8 @@ This function is an internal primitive--use `make-frame' instead. */) non-pixelwise code apparently worked around this because it had one frame line vs one toolbar line which left us with a zero root window height which was obviously wrong as well ... */ - width = FRAME_TEXT_WIDTH (f); - height = FRAME_TEXT_HEIGHT (f); - FRAME_TEXT_HEIGHT (f) = 0; - SET_FRAME_WIDTH (f, 0); - change_frame_size (f, width, height, 1, 0, 0, 1); -#endif /* USE_GTK */ + change_frame_size (f, FRAME_COLS (f) * FRAME_COLUMN_WIDTH (f), + FRAME_LINES (f) * FRAME_LINE_HEIGHT (f), 1, 0, 0, 1); /* Set the menu-bar-lines and tool-bar-lines parameters. We don't look up the X resources controlling the menu-bar and tool-bar diff --git a/src/xterm.c b/src/xterm.c index 90c7c36c44f..27d3d4a4bd1 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -6622,8 +6622,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, cancel_mouse_face (f); } - FRAME_PIXEL_WIDTH (f) = event->xconfigure.width; - FRAME_PIXEL_HEIGHT (f) = event->xconfigure.height; +/** FRAME_PIXEL_WIDTH (f) = event->xconfigure.width; **/ +/** FRAME_PIXEL_HEIGHT (f) = event->xconfigure.height; **/ #endif /* not USE_GTK */ #endif @@ -7689,6 +7689,9 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset) FRAME_COLUMN_WIDTH (f) = font->average_width; FRAME_LINE_HEIGHT (f) = FONT_HEIGHT (font); + FRAME_TOOL_BAR_HEIGHT (f) = FRAME_TOOL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f); + FRAME_MENU_BAR_HEIGHT (f) = FRAME_MENU_BAR_LINES (f) * FRAME_LINE_HEIGHT (f); + compute_fringe_widths (f, 1); /* Compute the scroll bar width in character columns. */ @@ -8541,13 +8544,15 @@ x_set_window_size_1 (struct frame *f, int change_gravity, int width, int height, compute_fringe_widths (f, 0); - pixelwidth = - (pixelwise ? width : FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width)) - + FRAME_TOOLBAR_WIDTH (f); - pixelheight = - (pixelwise ? height : FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height)) - + FRAME_MENUBAR_HEIGHT (f) + FRAME_TOOLBAR_HEIGHT (f); - + pixelwidth = ((pixelwise + ? FRAME_TEXT_TO_PIXEL_WIDTH (f, width) + : FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width)) + + FRAME_TOOLBAR_WIDTH (f)); + pixelheight = ((pixelwise + ? FRAME_TEXT_TO_PIXEL_HEIGHT (f, height) + : FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height)) + + FRAME_MENUBAR_HEIGHT (f) + + FRAME_TOOLBAR_HEIGHT (f)); if (change_gravity) f->win_gravity = NorthWestGravity; x_wm_set_size_hint (f, (long) 0, 0); XResizeWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), @@ -8582,8 +8587,6 @@ x_set_window_size_1 (struct frame *f, int change_gravity, int width, int height, else { change_frame_size (f, width, height, 0, 1, 0, 1); - FRAME_PIXEL_WIDTH (f) = pixelwidth; - FRAME_PIXEL_HEIGHT (f) = pixelheight; x_sync (f); } } -- 2.39.2