summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTingPing <tingping@tingping.se>2012-12-16 12:54:15 -0500
committerTingPing <tingping@tingping.se>2012-12-16 12:54:15 -0500
commit59d3fa47a5e5247b7af1dd2559193126b367d8ad (patch)
treee98f2e7a7568508ee0b11560715bb6524f8f1911
parentc6d955ade738815ec119ae76db32a3fcc1ac5d72 (diff)
fix restoring previously maximized window from tray
-rw-r--r--src/fe-gtk/maingui.c8
-rw-r--r--src/fe-gtk/plugin-tray.c5
2 files changed, 9 insertions, 4 deletions
diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c
index e5f79abd..ff8f6d69 100644
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -498,10 +498,6 @@ fe_set_title (session *sess)
 static gboolean
 mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata)
 {
-	prefs.hex_gui_win_state = 0;
-	if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
-		prefs.hex_gui_win_state = 1;
-
 	if ((event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) &&
 		 (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) &&
 		 prefs.hex_gui_tray_minimize && !hextray_mode ())
@@ -510,6 +506,10 @@ mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata
 		gtk_window_deiconify (wid);
 	}
 
+	prefs.hex_gui_win_state = 0;
+	if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
+		prefs.hex_gui_win_state = 1;
+
 	return FALSE;
 }
 
diff --git a/src/fe-gtk/plugin-tray.c b/src/fe-gtk/plugin-tray.c
index 07207a99..e77bf95c 100644
--- a/src/fe-gtk/plugin-tray.c
+++ b/src/fe-gtk/plugin-tray.c
@@ -372,6 +372,7 @@ tray_toggle_visibility (gboolean force_hide)
 {
 	static int x, y;
 	static GdkScreen *screen;
+	static int maximized;
 	GtkWindow *win;
 
 	if (!sticon)
@@ -396,14 +397,18 @@ tray_toggle_visibility (gboolean force_hide)
 	{
 		gtk_window_get_position (win, &x, &y);
 		screen = gtk_window_get_screen (win);
+		maximized = prefs.hex_gui_win_state;
 		gtk_widget_hide (GTK_WIDGET (win));
 	}
 	else
 	{
 		gtk_window_set_screen (win, screen);
 		gtk_window_move (win, x, y);
+		if (maximized)
+			gtk_window_maximize (win);
 		gtk_widget_show (GTK_WIDGET (win));
 		gtk_window_present (win);
+
 	}
 
 	return TRUE;