summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog14
-rw-r--r--src/window.c2
-rw-r--r--src/xfns.c9
-rw-r--r--src/xterm.c25
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 <rudalics@gmx.at>
+
+ * 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 <eggert@cs.ucla.edu>
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);
}
}