I slightly modified the previous patch (debian_fix_466088.patch) and created gui_mch_maximized(), which is useful as a separate entity.

Best regards,
Vitaly
--- a/vim7/src/gui_gtk_x11.c    2009-09-21 04:26:00.000000000 +0400
+++ b/vim7/src/gui_gtk_x11.c    2009-09-21 05:09:54.000000000 +0400
@@ -4370,6 +4370,23 @@
 #endif /* HAVE_GTK2 */
 
 /*
+ * Return TRUE if the GUI window is maximized, filling the whole screen.
+ */
+    int
+gui_mch_maximized()
+{
+#if defined(HAVE_GTK2)
+    if(gui.mainwin != NULL)
+    {
+       GdkWindowState state = gdk_window_get_state(gui.mainwin->window);
+       return (state & (GDK_WINDOW_STATE_MAXIMIZED |
+               GDK_WINDOW_STATE_FULLSCREEN)) != 0;
+    }
+#endif
+    return 0;
+}
+
+/*
  * Set the windows size.
  */
     void
@@ -5237,8 +5254,21 @@
 # endif
 #endif /* !HAVE_GTK2 */
 
-    /* Preserve the logical dimensions of the screen. */
-    update_window_manager_hints(0, 0);
+#ifdef HAVE_GTK2
+    if (gui_mch_maximized())
+    {
+       /* Update shell size in accordance with the new font */
+       int w;
+       int h;
+       gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
+       w -= get_menu_tool_width();
+       h -= get_menu_tool_height();
+       gui_resize_shell(w, h);
+    }
+    else
+#endif /* !HAVE_GTK2 */
+       /* Preserve the logical dimensions of the screen. */
+       update_window_manager_hints(0, 0);
 
     return OK;
 }

Reply via email to