From c58e905d11c299147fb9ee09857c317df5978a9b Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 29 Jan 2008 16:54:59 +0000 Subject: [PATCH] (gtk) #661: Window position is not restored when unhiding from the systray --- gtk/main.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/gtk/main.c b/gtk/main.c index 5a5778085..2c9cbf6d2 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -914,6 +914,25 @@ msgwinclosed() return FALSE; } +static void +toggleMainWindow( struct cbdata * data ) +{ + static int x=0, y=0; + GtkWidget * w = GTK_WIDGET( data->wind ); + GtkWindow * window = GTK_WINDOW( w ); + + if( GTK_WIDGET_VISIBLE( w ) ) + { + gtk_window_get_position( window, &x, &y ); + gtk_widget_hide( w ); + } + else + { + gtk_window_move( window, x, y ); + gtk_window_present( window ); + } +} + void doAction ( const char * action_name, gpointer user_data ) { @@ -1033,11 +1052,7 @@ doAction ( const char * action_name, gpointer user_data ) } else if (!strcmp (action_name, "toggle-main-window")) { - GtkWidget * w = GTK_WIDGET (data->wind); - if (GTK_WIDGET_VISIBLE(w)) - gtk_widget_hide (w); - else - gtk_window_present (GTK_WINDOW(w)); + toggleMainWindow( data ); } else g_error ("Unhandled action: %s", action_name );