diff options
| author | Eli Zaretskii <eliz@gnu.org> | 2013-03-14 19:37:51 +0200 |
|---|---|---|
| committer | Eli Zaretskii <eliz@gnu.org> | 2013-03-14 19:37:51 +0200 |
| commit | a5cc4ddeb84fbdceff31af8d8df7036edebbc58d (patch) | |
| tree | 397d22a1f14aabfbf53c67f488963691abdc359c /src | |
| parent | d35f586402bb8545871f488b07032805310b8de2 (diff) | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/w32term.c | 27 |
2 files changed, 22 insertions, 15 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 8f379e25b49..84a0cdcf6ec 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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 diff --git a/src/w32term.c b/src/w32term.c index 680ad668ab3..6b51777839f 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -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. |
