[Glade-devel] [patch, glade3] glade_utils_hide_window

paolo borelli pborelli@katamail.com
18 Mar 2003 16:10:29 +0100


--=-DMvZxdF5rGpyAAkoca/j
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi!

The attached patch introduces glade_utils_hide_window(), a function
which wraps gtk_widget_hide so that when a window is closed and then
reshown it reappears in the same place where it was before;
implemantation is taken from glade-2 utils.c.
Then the patches use this function for the palette, widget tree, editor
and clipboard.

ciao
	paolo



--=-DMvZxdF5rGpyAAkoca/j
Content-Disposition: attachment; filename=util-hide-window.patch
Content-Type: text/x-patch; name=util-hide-window.patch; charset=UTF-8
Content-Transfer-Encoding: 7bit

diff -pur gnome2/glade3/ChangeLog glade3/ChangeLog
--- gnome2/glade3/ChangeLog	2003-03-15 15:36:41.000000000 +0100
+++ glade3/ChangeLog	2003-03-18 15:58:42.000000000 +0100
@@ -1,3 +1,8 @@
+2003-03-18 Paolo Borelli <pborelli@katamail.com>
+
+	* src/glade-utils.[ch]: intrduce glade_utils_hide_window()
+	* src/glade-project-window.c: use it for the palette, editor etc.
+
 2003-03-15 Paolo Borelli <pborelli@katamail.com>
 
 	* src/glade-project.c: don't warn on save file selector "cancel"
diff -pur gnome2/glade3/src/glade-project-window.c glade3/src/glade-project-window.c
--- gnome2/glade3/src/glade-project-window.c	2003-03-14 20:44:28.000000000 +0100
+++ glade3/src/glade-project-window.c	2003-03-18 15:56:21.000000000 +0100
@@ -39,6 +39,7 @@
 #include "glade-project-window.h"
 #include "glade-command.h"
 #include "glade-debug.h"
+#include "glade-utils.h"
 #include <gdk/gdkkeysyms.h>
 #include <gtk/gtkstock.h>
 
@@ -298,7 +299,7 @@ gpw_hide_palette_on_delete (GtkWidget *p
 {
 	GtkWidget *palette_item;
 
-	gtk_widget_hide (GTK_WIDGET (palette));
+	glade_util_hide_window (GTK_WIDGET (palette));
 
 	palette_item = gtk_item_factory_get_item (item_factory, "<main>/View/Palette");
 	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (palette_item), FALSE);
@@ -357,7 +358,7 @@ gpw_hide_palette (GladeProjectWindow *gp
 
 	g_return_if_fail (gpw != NULL);
 
-	gtk_widget_hide (GTK_WIDGET (gpw->palette_window));
+	glade_util_hide_window (GTK_WIDGET (gpw->palette_window));
 
 	palette_item = gtk_item_factory_get_item (gpw->item_factory,
 						  "<main>/View/Palette");
@@ -370,7 +371,7 @@ gpw_hide_editor_on_delete (GtkWidget *ed
 {
 	GtkWidget *editor_item;
 
-	gtk_widget_hide (GTK_WIDGET (editor));
+	glade_util_hide_window (GTK_WIDGET (editor));
 
 	editor_item = gtk_item_factory_get_item (item_factory, "<main>/View/Property Editor");
 	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (editor_item), FALSE);
@@ -431,7 +432,7 @@ gpw_hide_editor (GladeProjectWindow *gpw
 
 	g_return_if_fail (gpw != NULL);
 
-	gtk_widget_hide (GTK_WIDGET (gpw->editor_window));
+	glade_util_hide_window (GTK_WIDGET (gpw->editor_window));
 
 	editor_item = gtk_item_factory_get_item (gpw->item_factory,
 						 "<main>/View/Property Editor");
@@ -444,7 +445,7 @@ gpw_hide_widget_tree_on_delete (GtkWidge
 {
 	GtkWidget *widget_tree_item;
 
-	gtk_widget_hide (widget_tree);
+	glade_util_hide_window (widget_tree);
 
 	widget_tree_item = gtk_item_factory_get_item (item_factory,
 						      "<main>/View/Widget Tree");
@@ -502,7 +503,7 @@ gpw_hide_widget_tree (GladeProjectWindow
 
 	g_return_if_fail (gpw != NULL);
 
-	gtk_widget_hide (GTK_WIDGET (gpw->widget_tree));
+	glade_util_hide_window (GTK_WIDGET (gpw->widget_tree));
 
 	widget_tree_item = gtk_item_factory_get_item (gpw->item_factory,
 						      "<main>/View/Widget Tree");
@@ -529,7 +530,7 @@ gpw_hide_clipboard_view_on_delete (GtkWi
 {
 	GtkWidget *clipboard_item;
 
-	gtk_widget_hide (clipboard_view);
+	glade_util_hide_window (clipboard_view);
 
 	clipboard_item = gtk_item_factory_get_item (item_factory,
 						    "<main>/View/Clipboard");
@@ -586,7 +587,7 @@ gpw_hide_clipboard_view (GladeProjectWin
 
 	g_return_if_fail (gpw != NULL);
 
-	gtk_widget_hide (GTK_WIDGET (gpw->clipboard->view));
+	glade_util_hide_window (GTK_WIDGET (gpw->clipboard->view));
 
 	clipboard_item = gtk_item_factory_get_item (gpw->item_factory,
 						    "<main>/View/Clipboard");
diff -pur gnome2/glade3/src/glade-utils.c glade3/src/glade-utils.c
--- gnome2/glade3/src/glade-utils.c	2003-03-11 21:20:17.000000000 +0100
+++ glade3/src/glade-utils.c	2003-03-18 15:56:21.000000000 +0100
@@ -92,3 +92,27 @@ glade_util_ui_warn (const gchar *warning
 	gtk_dialog_run (GTK_DIALOG (dialog));
 	gtk_widget_destroy (dialog);
 }
+
+/*
+ * This allows the window to appear in the same place when it's shown again.
+ */
+gboolean
+glade_util_hide_window (GtkWidget *widget)
+{
+	gint x, y;
+	gboolean set_position = FALSE;
+
+	/* remember position of window */
+	if (widget->window) {
+		gdk_window_get_root_origin (widget->window, &x, &y);
+		set_position = TRUE;
+	}
+
+	gtk_widget_hide (widget);
+
+	if (set_position)
+		gtk_widget_set_uposition (widget, x, y);
+
+	return TRUE;
+}
+
diff -pur gnome2/glade3/src/glade-utils.h glade3/src/glade-utils.h
--- gnome2/glade3/src/glade-utils.h	2003-03-11 21:20:17.000000000 +0100
+++ glade3/src/glade-utils.h	2003-03-18 15:56:21.000000000 +0100
@@ -14,6 +14,7 @@ G_BEGIN_DECLS
 void     glade_util_widget_set_tooltip (GtkWidget *widget, const gchar *str);
 GType    glade_util_get_type_from_name (const gchar *name);
 void     glade_util_ui_warn            (const gchar *warning);
+gboolean glade_util_hide_window        (GtkWidget *widget);
 
 G_END_DECLS
 

--=-DMvZxdF5rGpyAAkoca/j--