diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-09-03 09:38:07 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-09-03 09:38:07 +0000 |
commit | dca8f6d8b87d6f92ff21344ec80b64c7a3b7de7f (patch) | |
tree | 6c68870720273373decf63e56ea122e8246ee12d /src | |
parent | 49beef1defd12ed621bb712fb81cd78248da44f2 (diff) |
issue 76 - as stated in the documentation gtk_window_get_size() isn't always up to date. I'm sure it worked when I implemented this on GNOME, so as the docs suggest I think behavior could vary on other window managers. I'm on XFCE now and it doesn't work. use the configure-event to save the size instead.
Diffstat (limited to 'src')
-rw-r--r-- | src/trg-client.c | 6 | ||||
-rw-r--r-- | src/trg-main-window.c | 21 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/trg-client.c b/src/trg-client.c index 244361e..fb57a93 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -176,8 +176,12 @@ int trg_client_populate_with_settings(TrgClient * tc) trg_prefs_get_int(prefs, TRG_PREFS_KEY_PORT, TRG_PREFS_PROFILE); host = trg_prefs_get_string(prefs, TRG_PREFS_KEY_HOSTNAME, TRG_PREFS_PROFILE); - if (!host || strlen(host) < 1) + if (!host) { return TRG_NO_HOSTNAME_SET; + } else if (strlen(host) < 1) { + free(host); + return TRG_NO_HOSTNAME_SET; + } priv->ssl = trg_prefs_get_bool(prefs, TRG_PREFS_KEY_SSL, TRG_PREFS_PROFILE); diff --git a/src/trg-main-window.c b/src/trg-main-window.c index bf9d3f5..2b85339 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -208,6 +208,8 @@ struct _TrgMainWindowPrivate { GtkWidget *hpaned, *vpaned; GtkWidget *filterEntry, *filterEntryClearButton; + + gint width, height; }; enum { @@ -316,12 +318,10 @@ static gboolean delete_event(GtkWidget * w, GdkEvent * event G_GNUC_UNUSED, gpoi static void destroy_window(GtkWidget * w, gpointer data G_GNUC_UNUSED) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(w); TrgPrefs *prefs = trg_client_get_prefs(priv->client); - int width, height; - gtk_window_get_size(GTK_WINDOW(w), &width, &height); - trg_prefs_set_int(prefs, TRG_PREFS_KEY_WINDOW_HEIGHT, height, + trg_prefs_set_int(prefs, TRG_PREFS_KEY_WINDOW_HEIGHT, priv->height, TRG_PREFS_GLOBAL); - trg_prefs_set_int(prefs, TRG_PREFS_KEY_WINDOW_WIDTH, width, + trg_prefs_set_int(prefs, TRG_PREFS_KEY_WINDOW_WIDTH, priv->width, TRG_PREFS_GLOBAL); trg_tree_view_persist(TRG_TREE_VIEW(priv->peersTreeView)); trg_tree_view_persist(TRG_TREE_VIEW(priv->filesTreeView)); @@ -1553,6 +1553,16 @@ TrgStateSelector *trg_main_window_get_state_selector(TrgMainWindow * win) { return priv->stateSelector; } +static gboolean trg_main_window_config_event(GtkWidget *widget, + GdkEvent *event, + gpointer user_data G_GNUC_UNUSED) +{ + TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(widget); + priv->width = event->configure.width; + priv->height = event->configure.height; + return FALSE; +} + static GObject *trg_main_window_constructor(GType type, guint n_construct_properties, GObjectConstructParam * construct_params) { TrgMainWindow *self; @@ -1581,7 +1591,6 @@ static GObject *trg_main_window_constructor(GType type, if (priv->icon) gtk_window_set_default_icon(priv->icon); - notify_init(PACKAGE_NAME); gtk_window_set_title(GTK_WINDOW(self), PACKAGE_NAME); gtk_window_set_default_size(GTK_WINDOW(self), 1000, 600); g_signal_connect(G_OBJECT(self), "delete-event", @@ -1590,6 +1599,8 @@ static GObject *trg_main_window_constructor(GType type, NULL); g_signal_connect(G_OBJECT(self), "window-state-event", G_CALLBACK(window_state_event), NULL); + g_signal_connect(G_OBJECT(self), "configure-event", + G_CALLBACK(trg_main_window_config_event), NULL); priv->torrentModel = trg_torrent_model_new(); trg_client_set_torrent_table(priv->client, |