aboutsummaryrefslogtreecommitdiffstats
path: root/src/w32term.c
diff options
context:
space:
mode:
authorJuanma Barranquero2014-03-26 16:57:13 +0100
committerJuanma Barranquero2014-03-26 16:57:13 +0100
commit16adf2e6eb1ddf0b32ebea2d5ce8fa1e4c226614 (patch)
tree29b782fd6e7c44a834dd09442a551520e30bcbd6 /src/w32term.c
parent5af73b0fe8975eeb47fb270819b4143c18d71caa (diff)
parent196716cf35f81bea108c3b75362e92c86ed1c016 (diff)
downloademacs-16adf2e6eb1ddf0b32ebea2d5ce8fa1e4c226614.tar.gz
emacs-16adf2e6eb1ddf0b32ebea2d5ce8fa1e4c226614.zip
Merge from emacs-24; up to 2014-03-23T23:14:52Z!yamaoka@jpl.org
Diffstat (limited to 'src/w32term.c')
-rw-r--r--src/w32term.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/src/w32term.c b/src/w32term.c
index 52eccc27e81..e8ec99e762d 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -5653,30 +5653,41 @@ x_set_window_size (struct frame *f, int change_gravity, int width, int height, b
5653 5653
5654 compute_fringe_widths (f, 0); 5654 compute_fringe_widths (f, 0);
5655 5655
5656 if (pixelwise) 5656 if (frame_resize_pixelwise)
5657 { 5657 {
5658 pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width); 5658 if (pixelwise)
5659 pixelheight = FRAME_TEXT_TO_PIXEL_HEIGHT (f, height); 5659 {
5660 pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width);
5661 pixelheight = FRAME_TEXT_TO_PIXEL_HEIGHT (f, height);
5662 }
5663 else
5664 {
5665 pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width);
5666 pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height);
5667 }
5660 } 5668 }
5661 else 5669 else
5662 { 5670 {
5663 pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width);
5664 pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height);
5665 }
5666
5667 if (!frame_resize_pixelwise)
5668 {
5669 /* If we don't resize frames pixelwise, round sizes to multiples 5671 /* If we don't resize frames pixelwise, round sizes to multiples
5670 of character sizes here. Otherwise, when enforcing size hints 5672 of character sizes here. Otherwise, when enforcing size hints
5671 while processing WM_WINDOWPOSCHANGING in w32_wnd_proc, we might 5673 while processing WM_WINDOWPOSCHANGING in w32_wnd_proc, we might
5672 clip our frame rectangle to a multiple of the frame's character 5674 clip our frame rectangle to a multiple of the frame's character
5673 size and subsequently lose our mode line or scroll bar. 5675 size and subsequently lose our mode line or scroll bar.
5674 Bug#16923 could be one possible consequence of this. */ 5676 Bug#16923 could be one possible consequence of this. Carefully
5677 reverse-engineer what WM_WINDOWPOSCHANGING does here since
5678 otherwise we might make our frame too small, see Bug#17077. */
5675 int unit_width = FRAME_COLUMN_WIDTH (f); 5679 int unit_width = FRAME_COLUMN_WIDTH (f);
5676 int unit_height = FRAME_LINE_HEIGHT (f); 5680 int unit_height = FRAME_LINE_HEIGHT (f);
5677 5681
5678 pixelwidth = (pixelwidth / unit_width) * unit_width; 5682 pixelwidth = (((((pixelwise ? width : (width * FRAME_COLUMN_WIDTH (f)))
5679 pixelheight = (pixelheight / unit_height) * unit_height; 5683 + FRAME_TOTAL_FRINGE_WIDTH (f))
5684 / unit_width) * unit_width)
5685 + FRAME_SCROLL_BAR_AREA_WIDTH (f)
5686 + 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
5687
5688 pixelheight = ((((pixelwise ? height : (height * FRAME_LINE_HEIGHT (f)))
5689 / unit_height) * unit_height)
5690 + 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
5680 } 5691 }
5681 5692
5682 f->win_gravity = NorthWestGravity; 5693 f->win_gravity = NorthWestGravity;