[gnome-system-monitor] Only update tree data if it will be shown. https://bugzilla.gnome.org/show_bug.cgi?id=524830
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-system-monitor] Only update tree data if it will be shown. https://bugzilla.gnome.org/show_bug.cgi?id=524830
- Date: Sun, 9 Dec 2012 22:18:27 +0000 (UTC)
commit 85f73c42eb83594290f181128170a6eaf2cc7fa8
Author: Robert Roth <robert roth off gmail com>
Date: Mon Dec 10 00:12:31 2012 +0200
Only update tree data if it will be shown.
https://bugzilla.gnome.org/show_bug.cgi?id=524830
src/proctable.cpp | 39 ++++++++++++++++++++-------------------
src/util.h | 13 ++++++++-----
2 files changed, 28 insertions(+), 24 deletions(-)
---
diff --git a/src/proctable.cpp b/src/proctable.cpp
index d6c581a..427d9ce 100644
--- a/src/proctable.cpp
+++ b/src/proctable.cpp
@@ -633,28 +633,29 @@ static void
update_info_mutable_cols(ProcInfo *info)
{
GtkTreeModel *model;
- model = gtk_tree_view_get_model(GTK_TREE_VIEW(ProcmanApp::get()->tree));
+ GtkTreeView *tree = GTK_TREE_VIEW(ProcmanApp::get()->tree);
+ model = gtk_tree_view_get_model(tree);
using procman::tree_store_update;
- tree_store_update(model, &info->node, COL_STATUS, info->status);
- tree_store_update(model, &info->node, COL_USER, info->user.c_str());
- tree_store_update(model, &info->node, COL_VMSIZE, info->vmsize);
- tree_store_update(model, &info->node, COL_MEMRES, info->memres);
- tree_store_update(model, &info->node, COL_MEMWRITABLE, info->memwritable);
- tree_store_update(model, &info->node, COL_MEMSHARED, info->memshared);
- tree_store_update(model, &info->node, COL_MEMXSERVER, info->memxserver);
- tree_store_update(model, &info->node, COL_CPU, info->pcpu);
- tree_store_update(model, &info->node, COL_CPU_TIME, info->cpu_time);
- tree_store_update(model, &info->node, COL_START_TIME, info->start_time);
- tree_store_update(model, &info->node, COL_NICE, info->nice);
- tree_store_update(model, &info->node, COL_MEM, info->mem);
- tree_store_update(model, &info->node, COL_WCHAN, info->wchan);
- tree_store_update(model, &info->node, COL_CGROUP, info->cgroup_name);
- tree_store_update(model, &info->node, COL_UNIT, info->unit);
- tree_store_update(model, &info->node, COL_SESSION, info->session);
- tree_store_update(model, &info->node, COL_SEAT, info->seat);
- tree_store_update(model, &info->node, COL_OWNER, info->owner.c_str());
+ tree_store_update(tree, model, &info->node, COL_STATUS, info->status);
+ tree_store_update(tree, model, &info->node, COL_USER, info->user.c_str());
+ tree_store_update(tree, model, &info->node, COL_VMSIZE, info->vmsize);
+ tree_store_update(tree, model, &info->node, COL_MEMRES, info->memres);
+ tree_store_update(tree, model, &info->node, COL_MEMWRITABLE, info->memwritable);
+ tree_store_update(tree, model, &info->node, COL_MEMSHARED, info->memshared);
+ tree_store_update(tree, model, &info->node, COL_MEMXSERVER, info->memxserver);
+ tree_store_update(tree, model, &info->node, COL_CPU, info->pcpu);
+ tree_store_update(tree, model, &info->node, COL_CPU_TIME, info->cpu_time);
+ tree_store_update(tree, model, &info->node, COL_START_TIME, info->start_time);
+ tree_store_update(tree, model, &info->node, COL_NICE, info->nice);
+ tree_store_update(tree, model, &info->node, COL_MEM, info->mem);
+ tree_store_update(tree, model, &info->node, COL_WCHAN, info->wchan);
+ tree_store_update(tree, model, &info->node, COL_CGROUP, info->cgroup_name);
+ tree_store_update(tree, model, &info->node, COL_UNIT, info->unit);
+ tree_store_update(tree, model, &info->node, COL_SESSION, info->session);
+ tree_store_update(tree, model, &info->node, COL_SEAT, info->seat);
+ tree_store_update(tree, model, &info->node, COL_OWNER, info->owner.c_str());
}
diff --git a/src/util.h b/src/util.h
index 9bd4b2c..07074f4 100644
--- a/src/util.h
+++ b/src/util.h
@@ -121,14 +121,17 @@ namespace procman
//
template<typename T>
- void tree_store_update(GtkTreeModel* model, GtkTreeIter* iter, int column, const T& new_value)
+ void tree_store_update(GtkTreeView* tree, GtkTreeModel* model, GtkTreeIter* iter, int column, const T& new_value)
{
- T current_value;
+ GtkTreeViewColumn* tree_column = gtk_tree_view_get_column(tree, column);
+ if (gtk_tree_view_column_get_visible(tree_column)) {
+ T current_value;
- gtk_tree_model_get(model, iter, column, ¤t_value, -1);
+ gtk_tree_model_get(model, iter, column, ¤t_value, -1);
- if (current_value != new_value)
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, column, new_value, -1);
+ if (current_value != new_value)
+ gtk_tree_store_set(GTK_TREE_STORE(model), iter, column, new_value, -1);
+ }
}
// undefined
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]