From 85ea9530466b252c6cd49177eb91d2dd5521b70c Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 12 Sep 2012 19:46:34 +0000 Subject: [PATCH] Corrigindo save/restore da janela principal --- src/include/pw3270.h | 4 ++-- src/pw3270/common/common.h | 5 ++++- src/pw3270/common/config.c | 46 ++++++++++++++++++++++++++++++++++------------ src/pw3270/main.c | 4 +--- src/pw3270/tools.c | 7 ++++--- src/pw3270/uiparser/parser.c | 2 +- src/pw3270/window.c | 11 ++++++++++- 7 files changed, 56 insertions(+), 23 deletions(-) diff --git a/src/include/pw3270.h b/src/include/pw3270.h index e6f6bb7..f1074ba 100644 --- a/src/include/pw3270.h +++ b/src/include/pw3270.h @@ -58,8 +58,8 @@ LIB3270_EXPORT GtkWidget * pw3270_get_terminal_widget(GtkWidget *widget); LIB3270_EXPORT gchar * pw3270_build_filename(GtkWidget *widget, const gchar *first_element, ...); - LIB3270_EXPORT void pw3270_save_window_state(GtkWidget *widget, const gchar *name); - LIB3270_EXPORT void pw3270_restore_window_state(GtkWidget *widget, const gchar *name); + LIB3270_EXPORT void pw3270_save_window_size(GtkWidget *widget, const gchar *name); + LIB3270_EXPORT void pw3270_restore_window(GtkWidget *widget, const gchar *name); #ifdef HAVE_GTKMAC #include diff --git a/src/pw3270/common/common.h b/src/pw3270/common/common.h index 8f9f248..d1d6629 100644 --- a/src/pw3270/common/common.h +++ b/src/pw3270/common/common.h @@ -82,7 +82,10 @@ gchar * build_data_filename(const gchar *first_element, ...); gchar * filename_from_va(const gchar *first_element, va_list args); - void save_window_to_config(const gchar *group, const gchar *key, GtkWidget *hwnd); + + void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindowState CurrentState); + void save_window_size_to_config(const gchar *group, const gchar *key, GtkWidget *hwnd); + void restore_window_from_config(const gchar *group, const gchar *key, GtkWidget *hwnd); #ifdef WIN_REGISTRY_ENABLED diff --git a/src/pw3270/common/config.c b/src/pw3270/common/config.c index 9d718ae..06b4acc 100644 --- a/src/pw3270/common/config.c +++ b/src/pw3270/common/config.c @@ -680,12 +680,8 @@ GKeyFile * get_application_keyfile(void) { "Sticky", GDK_WINDOW_STATE_STICKY, gtk_window_stick } }; -void save_window_to_config(const gchar *group, const gchar *key, GtkWidget *hwnd) +void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindowState CurrentState) { - GdkWindowState CurrentState = gdk_window_get_state(gtk_widget_get_window(hwnd)); - - if( !(CurrentState & (GDK_WINDOW_STATE_FULLSCREEN|GDK_WINDOW_STATE_MAXIMIZED|GDK_WINDOW_STATE_ICONIFIED)) ) - { #if defined( WIN_REGISTRY_ENABLED ) gchar * path = g_strdup_printf("%s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key); @@ -696,17 +692,13 @@ void save_window_to_config(const gchar *group, const gchar *key, GtkWidget *hwnd if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) { int f; - int pos[2]; - for(f=0;ftoplevel),"action_groups",a_info.group,(GDestroyNotify) release_action_group); g_object_set_data_full(G_OBJECT(p->toplevel),"string_chunk",p->strings,(GDestroyNotify) g_string_chunk_free); - g_signal_connect(p->toplevel, "destroy", G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect(p->toplevel, "destroy", G_CALLBACK(gtk_main_quit), NULL); // Has "view" menu? Update it. parent = GTK_WIDGET(g_hash_table_lookup(p->element_list[UI_ELEMENT_MENU],"view")); diff --git a/src/pw3270/window.c b/src/pw3270/window.c index 302180f..5f2dc63 100644 --- a/src/pw3270/window.c +++ b/src/pw3270/window.c @@ -110,7 +110,7 @@ } - static gboolean window_state_event(GtkWidget *window, GdkEventWindowState *event, GtkWidget *widget) + static gboolean window_state_event(GtkWidget *window, GdkEventWindowState *event, GtkWidget *widget) { gboolean fullscreen = event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN ? TRUE : FALSE; GtkAction **action = (GtkAction **) g_object_get_data(G_OBJECT(widget),"named_actions"); @@ -124,6 +124,14 @@ lib3270_set_toggle(v3270_get_session(widget),LIB3270_TOGGLE_FULL_SCREEN,fullscreen); + save_window_state_to_config("window", "toplevel", event->new_window_state); + + return 0; + } + + static gboolean configure_event(GtkWidget *widget, GdkEvent *event, gpointer user_data) + { + save_window_size_to_config("window","toplevel",widget); return 0; } @@ -484,6 +492,7 @@ // Connect window signals g_signal_connect(widget,"window_state_event",G_CALLBACK(window_state_event),widget->terminal); + g_signal_connect(widget,"configure_event",G_CALLBACK(configure_event),widget->terminal); // Finish setup -- libgit2 0.21.2