summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinfirit <[email protected]>2014-12-18 19:44:39 +0100
committerinfirit <[email protected]>2014-12-18 19:44:39 +0100
commit01735cf7050926fb1c1de8adecb391c657ad2204 (patch)
treebc0dc5a3575654219b8f7727cac028ff52fe2970
parent89c2ba95156b8ccd9d7493121f4a691ffbe927c1 (diff)
downloadmate-system-monitor-01735cf7050926fb1c1de8adecb391c657ad2204.tar.bz2
mate-system-monitor-01735cf7050926fb1c1de8adecb391c657ad2204.tar.xz
Save column info on change instead of quit
Taken from GSM commit: bc2a8c221604fe335b690ba7d180022bf0430fff From: Robert Roth <[email protected]> Gnome bug: http://bugzilla.gnome.org/show_bug.cgi?id=649398
-rw-r--r--src/procdialogs.cpp9
-rw-r--r--src/procman.cpp29
-rw-r--r--src/proctable.cpp24
3 files changed, 36 insertions, 26 deletions
diff --git a/src/procdialogs.cpp b/src/procdialogs.cpp
index e44fd20..449679d 100644
--- a/src/procdialogs.cpp
+++ b/src/procdialogs.cpp
@@ -382,6 +382,9 @@ field_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
GtkTreeIter iter;
GtkTreeViewColumn *column;
gboolean toggled;
+ GSettings *settings = g_settings_get_child (ProcData::get_instance()->settings, "proctree");
+ gchar *key;
+ int id;
if (!path)
return;
@@ -394,6 +397,12 @@ field_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, !toggled, -1);
gtk_tree_view_column_set_visible (column, !toggled);
+ id = gtk_tree_view_column_get_sort_column_id (column);
+
+ key = g_strdup_printf ("col-%d-visible", id);
+ g_settings_set_boolean (settings, key, !toggled);
+ g_free (key);
+
gtk_tree_path_free (path);
}
diff --git a/src/procman.cpp b/src/procman.cpp
index c19edb7..4e8d2ce 100644
--- a/src/procman.cpp
+++ b/src/procman.cpp
@@ -470,7 +470,7 @@ void
procman_save_tree_state (GSettings *settings, GtkWidget *tree, const gchar *child_schema)
{
GtkTreeModel *model;
- GList *it, *columns;
+ GList *columns;
gint sort_col;
GtkSortType order;
@@ -488,31 +488,6 @@ procman_save_tree_state (GSettings *settings, GtkWidget *tree, const gchar *chil
columns = gtk_tree_view_get_columns (GTK_TREE_VIEW (tree));
- if(!g_strcmp0(child_schema, "proctree"))
- {
- for(it = columns; it; it = it->next)
- {
- GtkTreeViewColumn *column;
- gboolean visible;
- gint width;
- gchar *key;
- int id;
-
- column = static_cast<GtkTreeViewColumn*>(it->data);
- id = gtk_tree_view_column_get_sort_column_id (column);
- visible = gtk_tree_view_column_get_visible (column);
- width = gtk_tree_view_column_get_width (column);
-
- key = g_strdup_printf ("col-%d-width", id);
- g_settings_set_int (pt_settings, key, width);
- g_free (key);
-
- key = g_strdup_printf ("col-%d-visible", id);
- g_settings_set_boolean (pt_settings, key, visible);
- g_free (key);
- }
- }
-
if(!g_strcmp0(child_schema, "proctree") || !g_strcmp0(child_schema, "disktreenew"))
{
GSList *order;
@@ -557,6 +532,8 @@ procman_save_config (ProcData *data)
g_settings_set_int (settings, "y-position", data->config.ypos);
g_settings_set_int (settings, "current-tab", data->config.current_tab);
+
+ g_settings_sync ();
}
static guint32
diff --git a/src/proctable.cpp b/src/proctable.cpp
index 1304077..686ca45 100644
--- a/src/proctable.cpp
+++ b/src/proctable.cpp
@@ -169,6 +169,28 @@ proctable_get_columns_order(GtkTreeView *treeview)
return order;
}
+void
+cb_proctable_column_resized(GtkWidget *widget)
+{
+ GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN(widget);
+ gint width;
+ gchar *key;
+ int id;
+ GSettings *settings;
+ gint saved_width;
+
+ settings = g_settings_get_child (ProcData::get_instance()->settings, "proctree");
+ id = gtk_tree_view_column_get_sort_column_id (column);
+ width = gtk_tree_view_column_get_width (column);
+ key = g_strdup_printf ("col-%d-width", id);
+
+ g_settings_get (settings, key, "i", &saved_width);
+ if (saved_width!=width)
+ {
+ g_settings_set_int(settings, key, width);
+ }
+ g_free (key);
+}
static gboolean
search_equal_func(GtkTreeModel *model,
@@ -293,6 +315,7 @@ proctable_new (ProcData * const procdata)
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_min_width (column, 1);
+ g_signal_connect(G_OBJECT(column), "notify::width", G_CALLBACK(cb_proctable_column_resized), NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (proctree), column);
gtk_tree_view_set_expander_column (GTK_TREE_VIEW (proctree), column);
@@ -308,6 +331,7 @@ proctable_new (ProcData * const procdata)
gtk_tree_view_column_set_title(col, _(titles[i]));
gtk_tree_view_column_set_resizable(col, TRUE);
gtk_tree_view_column_set_sort_column_id(col, i);
+ g_signal_connect(G_OBJECT(col), "notify::width", G_CALLBACK(cb_proctable_column_resized), NULL);
gtk_tree_view_column_set_reorderable(col, TRUE);
gtk_tree_view_append_column(GTK_TREE_VIEW(proctree), col);