emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r115865: Fix maximization behavior on Windows (Bug#1


From: Martin Rudalics
Subject: [Emacs-diffs] trunk r115865: Fix maximization behavior on Windows (Bug#16300).
Date: Sat, 04 Jan 2014 09:31:44 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 115865
revision-id: address@hidden
parent: address@hidden
committer: martin rudalics <address@hidden>
branch nick: trunk
timestamp: Sat 2014-01-04 10:31:30 +0100
message:
  Fix maximization behavior on Windows (Bug#16300).
  
  Fix maximization behavior on Windows (Bug#16300).
  * w32fns.c (w32_fullscreen_rect): Don't handle
  FULLSCREEN_MAXIMIZED and FULLSCREEN_NONE specially.
  * w32term.c (w32fullscreen_hook): Use SetWindowPlacement instead
  of SetWindowPos.  Restore last placement also when leaving
  FULLSCREEN_HEIGHT and FULLSCREEN_WIDTH.  Call ShowWindow in all
  but the FULLSCREEN_BOTH case.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/w32fns.c                   w32fns.c-20091113204419-o5vbwnq5f7feedwu-945
  src/w32term.c                  w32term.c-20091113204419-o5vbwnq5f7feedwu-950
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-01-03 06:47:27 +0000
+++ b/src/ChangeLog     2014-01-04 09:31:30 +0000
@@ -1,3 +1,13 @@
+2014-01-04  Martin Rudalics  <address@hidden>
+
+       Fix maximization behavior on Windows (Bug#16300).
+       * w32fns.c (w32_fullscreen_rect): Don't handle
+       FULLSCREEN_MAXIMIZED and FULLSCREEN_NONE specially.
+       * w32term.c (w32fullscreen_hook): Use SetWindowPlacement instead
+       of SetWindowPos.  Restore last placement also when leaving
+       FULLSCREEN_HEIGHT and FULLSCREEN_WIDTH.  Call ShowWindow in all
+       but the FULLSCREEN_BOTH case.
+
 2014-01-03  Paul Eggert  <address@hidden>
 
        Port to C89.

=== modified file 'src/w32fns.c'
--- a/src/w32fns.c      2014-01-02 15:58:48 +0000
+++ b/src/w32fns.c      2014-01-04 09:31:30 +0000
@@ -402,12 +402,6 @@
       rect->right = mi.rcMonitor.right;
       rect->bottom = mi.rcMonitor.bottom;
       break;
-    case FULLSCREEN_MAXIMIZED:
-      rect->left = mi.rcWork.left;
-      rect->top = mi.rcWork.top;
-      rect->right = mi.rcWork.right;
-      rect->bottom = mi.rcWork.bottom;
-      break;
     case FULLSCREEN_WIDTH:
       rect->left = mi.rcWork.left;
       rect->top = normal.top;
@@ -420,7 +414,6 @@
       rect->right = normal.right;
       rect->bottom = mi.rcWork.bottom;
       break;
-    case FULLSCREEN_NONE:
     default:
       *rect = normal;
       break;

=== modified file 'src/w32term.c'
--- a/src/w32term.c     2014-01-02 15:58:48 +0000
+++ b/src/w32term.c     2014-01-04 09:31:30 +0000
@@ -5564,18 +5564,22 @@
       if (FRAME_PREV_FSMODE (f) == FULLSCREEN_BOTH)
         {
           SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_OVERLAPPEDWINDOW);
-          SetWindowPos (hwnd, NULL, 0, 0, 0, 0,
-                        SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
-                        SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
-        }
+         SetWindowPlacement (hwnd, &FRAME_NORMAL_PLACEMENT (f));
+       }
+      else if (FRAME_PREV_FSMODE (f) == FULLSCREEN_HEIGHT
+              || FRAME_PREV_FSMODE (f) == FULLSCREEN_WIDTH)
+       SetWindowPlacement (hwnd, &FRAME_NORMAL_PLACEMENT (f));
 
-      w32_fullscreen_rect (hwnd, f->want_fullscreen,
-                           FRAME_NORMAL_PLACEMENT (f).rcNormalPosition, &rect);
       FRAME_PREV_FSMODE (f) = f->want_fullscreen;
-      if (f->want_fullscreen == FULLSCREEN_MAXIMIZED)
-       PostMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, 0xf030, 0);
+
+      if (f->want_fullscreen == FULLSCREEN_NONE)
+       ShowWindow (hwnd, SW_SHOWNORMAL);
+      else if (f->want_fullscreen == FULLSCREEN_MAXIMIZED)
+       ShowWindow (hwnd, SW_MAXIMIZE);
       else if (f->want_fullscreen == FULLSCREEN_BOTH)
         {
+         w32_fullscreen_rect (hwnd, f->want_fullscreen,
+                              FRAME_NORMAL_PLACEMENT (f).rcNormalPosition, 
&rect);
           SetWindowLong (hwnd, GWL_STYLE, dwStyle & ~WS_OVERLAPPEDWINDOW);
           SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
                         rect.right - rect.left, rect.bottom - rect.top,
@@ -5583,6 +5587,9 @@
         }
       else
         {
+         ShowWindow (hwnd, SW_SHOWNORMAL);
+         w32_fullscreen_rect (hwnd, f->want_fullscreen,
+                              FRAME_NORMAL_PLACEMENT (f).rcNormalPosition, 
&rect);
           SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
                         rect.right - rect.left, rect.bottom - rect.top, 0);
         }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]