1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-26 07:11:34 -08:00

Fix bug #13953 with spontaneous frame resizes on MS-Windows.

src/w32term.c (w32_read_socket) <WM_WINDOWPOSCHANGED>: Remove old
 and incorrect code.  Treat WM_WINDOWPOSCHANGED like WM_ACTIVATE
 and WM_ACTIVATEAPP.
 (w32fullscreen_hook): If the frame is visible, reset
 f->want_fullscreen flag after changing the frame size.  If the
 frame is not visible, set f->want_fullscreen to FULLSCREEN_WAIT.
This commit is contained in:
Eli Zaretskii 2013-03-14 19:37:51 +02:00
parent d35f586402
commit a5cc4ddeb8
2 changed files with 22 additions and 15 deletions

View file

@ -1,3 +1,13 @@
2013-03-14 Eli Zaretskii <eliz@gnu.org>
* w32term.c (w32_read_socket) <WM_WINDOWPOSCHANGED>: Remove old
and incorrect code. Treat WM_WINDOWPOSCHANGED like WM_ACTIVATE
and WM_ACTIVATEAPP.
(w32fullscreen_hook): If the frame is visible, reset
f->want_fullscreen flag after changing the frame size. If the
frame is not visible, set f->want_fullscreen to FULLSCREEN_WAIT.
(Bug#13953)
2013-03-13 Daniel Colascione <dancol@dancol.org>
* emacs.c (main): Call syms_of_cygw32 on CYGWIN non-NTGUI builds

View file

@ -4705,26 +4705,20 @@ w32_read_socket (struct terminal *terminal,
}
case WM_WINDOWPOSCHANGED:
f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
if (f)
{
if (f->want_fullscreen & FULLSCREEN_WAIT)
f->want_fullscreen &= ~(FULLSCREEN_WAIT|FULLSCREEN_BOTH);
}
check_visibility = 1;
break;
case WM_ACTIVATE:
case WM_ACTIVATEAPP:
f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
if (f)
{
/* If we are being activated, run the full-screen hook
function, to actually install the required size in
effect. This is because when the hook is run from
x_set_fullscreen, the frame might not yet be visible,
if that call is a result of make-frame. */
if (msg.msg.wParam)
/* Run the full-screen hook function also when we are
being activated, to actually install the required
size in effect, if the WAIT flag is set. This is
because when the hook is run from x_set_fullscreen,
the frame might not yet be visible, if that call is a
result of make-frame, and in that case the hook just
sets the WAIT flag. */
if ((msg.msg.message == WM_WINDOWPOSCHANGED || msg.msg.wParam)
&& (f->want_fullscreen & FULLSCREEN_WAIT))
w32fullscreen_hook (f);
x_check_fullscreen (f);
}
@ -5739,8 +5733,11 @@ w32fullscreen_hook (FRAME_PTR f)
x_set_window_size (f, 1, width, height);
do_pending_window_change (0);
}
f->want_fullscreen = FULLSCREEN_NONE;
unblock_input ();
}
else
f->want_fullscreen |= FULLSCREEN_WAIT;
}
/* Call this to change the size of frame F's x-window.