]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-264 v7.2.264
authorBram Moolenaar <Bram@vim.org>
Wed, 23 Sep 2009 16:14:49 +0000 (16:14 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 23 Sep 2009 16:14:49 +0000 (16:14 +0000)
src/gui.c
src/gui_gtk_x11.c
src/proto/gui_gtk_x11.pro
src/version.c

index c25f760ea77c3d6ca4fa6ba988efe7ac2f38124c..48e7b0fb08615e73b0b28e01100b2357dcec8de5 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -1386,6 +1386,10 @@ gui_set_shellsize(mustset, fit_to_display, direction)
     int                min_height;
     int                screen_w;
     int                screen_h;
+#ifdef HAVE_GTK2
+    int                un_maximize = mustset;
+    int         did_adjust = 0;
+#endif
 
     if (!gui.shell_created)
        return;
@@ -1425,22 +1429,47 @@ gui_set_shellsize(mustset, fit_to_display, direction)
            if (Columns < MIN_COLUMNS)
                Columns = MIN_COLUMNS;
            width = Columns * gui.char_width + base_width;
+#ifdef HAVE_GTK2
+           ++did_adjust;
+#endif
        }
        if ((direction & RESIZE_VERT) && height > screen_h)
        {
            Rows = (screen_h - base_height) / gui.char_height;
            check_shellsize();
            height = Rows * gui.char_height + base_height;
+#ifdef HAVE_GTK2
+           ++did_adjust;
+#endif
        }
+#ifdef HAVE_GTK2
+       if (did_adjust == 2 || (width + gui.char_width >= screen_w
+                                    && height + gui.char_height >= screen_h))
+           /* don't unmaximize if at maximum size */
+           un_maximize = FALSE;
+#endif
     }
     gui.num_cols = Columns;
     gui.num_rows = Rows;
 
     min_width = base_width + MIN_COLUMNS * gui.char_width;
     min_height = base_height + MIN_LINES * gui.char_height;
-# ifdef FEAT_WINDOWS
+#ifdef FEAT_WINDOWS
     min_height += tabline_height() * gui.char_height;
-# endif
+#endif
+
+#ifdef HAVE_GTK2
+    if (un_maximize)
+    {
+       /* If the window size is smaller than the screen unmaximize the
+        * window, otherwise resizing won't work. */
+       gui_mch_get_screen_dimensions(&screen_w, &screen_h);
+       if ((width + gui.char_width < screen_w
+                                  || height + gui.char_height * 2 < screen_h)
+               && gui_mch_maximized())
+           gui_mch_unmaximize();
+    }
+#endif
 
     gui_mch_set_shellsize(width, height, min_width, min_height,
                                          base_width, base_height, direction);
index cb50d030f3f3fb528885227ab887a42402430844..ad6fc25e1d865d6e7077ba6f37116715c70b4962 100644 (file)
@@ -4376,6 +4376,29 @@ force_shell_resize_idle(gpointer data)
 #endif
 #endif /* HAVE_GTK2 */
 
+#if defined(HAVE_GTK2) || defined(PROTO)
+/*
+ * Return TRUE if the main window is maximized.
+ */
+    int
+gui_mch_maximized()
+{
+    return (gui.mainwin != NULL && gui.mainwin->window != NULL
+           && (gdk_window_get_state(gui.mainwin->window)
+                                              & GDK_WINDOW_STATE_MAXIMIZED));
+}
+
+/*
+ * Unmaximize the main window
+ */
+    void
+gui_mch_unmaximize()
+{
+    if (gui.mainwin != NULL)
+       gtk_window_unmaximize(GTK_WINDOW(gui.mainwin));
+}
+#endif
+
 /*
  * Set the windows size.
  */
index 87ff6da40798686892c00edb0ffb59013d816f92..93b65bf726d7de869410977d661e7410b85eb82d 100644 (file)
@@ -16,6 +16,8 @@ int gui_mch_open __ARGS((void));
 void gui_mch_exit __ARGS((int rc));
 int gui_mch_get_winpos __ARGS((int *x, int *y));
 void gui_mch_set_winpos __ARGS((int x, int y));
+int gui_mch_maximized __ARGS((void));
+void gui_mch_unmaximize __ARGS((void));
 void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
 void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
 void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
index 1f3f201dbc429d8f060dac7454748083489eb95d..3633057d3ce4d9656a31b1649913cf9b108d21c0 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    264,
 /**/
     263,
 /**/