summaryrefslogtreecommitdiff
path: root/src/proctable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/proctable.cpp')
-rw-r--r--src/proctable.cpp24
1 files changed, 24 insertions, 0 deletions
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);