W32: Only override window miximized position for CSDed windows
authorРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 26 Mar 2015 17:01:59 +0000 (17:01 +0000)
committerРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 26 Mar 2015 17:02:38 +0000 (17:02 +0000)
This fixes an issue with non-CSDed windows being improperly positioned
when maximized, which was introduced by the previous commit.

https://bugzilla.gnome.org/show_bug.cgi?id=746821

gdk/win32/gdkevents-win32.c

index d206efa008ce0f5024239e33aa4232472f77c95b..c55cee049e475ac2bf08463e5f65b1037e12fab3 100644 (file)
@@ -1837,6 +1837,7 @@ gdk_event_translate (MSG  *msg,
   RECT rect, *drag, orig_drag;
   POINT point;
   MINMAXINFO *mmi;
+  LONG style;
   HWND hwnd;
   HCURSOR hcursor;
   BYTE key_state[256];
@@ -3044,6 +3045,8 @@ gdk_event_translate (MSG  *msg,
                                 mmi->ptMaxPosition.x, mmi->ptMaxPosition.y,
                                 mmi->ptMaxSize.x, mmi->ptMaxSize.y));
 
+      style = GetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE);
+
       if (impl->hint_flags & GDK_HINT_MIN_SIZE)
        {
          rect.left = rect.top = 0;
@@ -3072,7 +3075,10 @@ gdk_event_translate (MSG  *msg,
          mmi->ptMaxTrackSize.x = maxw > 0 && maxw < G_MAXSHORT ? maxw : G_MAXSHORT;
          mmi->ptMaxTrackSize.y = maxh > 0 && maxh < G_MAXSHORT ? maxh : G_MAXSHORT;
        }
-      else
+      /* Assume that these styles are incompatible with CSD,
+       * so there's no reason for us to override the defaults.
+       */
+      else if ((style & (WS_BORDER | WS_THICKFRAME)) == 0)
        {
          HMONITOR winmon;
          MONITORINFO moninfo;