[devhelp] Preferences: bookshelf: disconnect model from view during populate
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp] Preferences: bookshelf: disconnect model from view during populate
- Date: Sat, 7 Apr 2018 09:43:07 +0000 (UTC)
commit c119c5957f996423f121c8efee2816a33016bc89
Author: Sébastien Wilmet <swilmet gnome org>
Date: Sat Apr 7 11:34:08 2018 +0200
Preferences: bookshelf: disconnect model from view during populate
src/dh-preferences.c | 29 +++++++++++++++++++++--------
1 files changed, 21 insertions(+), 8 deletions(-)
---
diff --git a/src/dh-preferences.c b/src/dh-preferences.c
index 8f21891..25e51b3 100644
--- a/src/dh-preferences.c
+++ b/src/dh-preferences.c
@@ -267,11 +267,27 @@ bookshelf_populate_store (DhPreferences *prefs)
}
static void
+bookshelf_populate (DhPreferences *prefs)
+{
+ DhPreferencesPrivate *priv = dh_preferences_get_instance_private (prefs);
+
+ /* Disconnect the model from the view, it has better performances
+ * because the view doesn't listen to all the GtkTreeModel signals.
+ */
+ gtk_tree_view_set_model (priv->bookshelf_view, NULL);
+
+ bookshelf_populate_store (prefs);
+
+ gtk_tree_view_set_model (priv->bookshelf_view,
+ GTK_TREE_MODEL (priv->bookshelf_store));
+}
+
+static void
bookshelf_group_books_by_language_notify_cb (DhSettings *settings,
GParamSpec *pspec,
DhPreferences *prefs)
{
- bookshelf_populate_store (prefs);
+ bookshelf_populate (prefs);
}
static void
@@ -279,7 +295,7 @@ bookshelf_book_created_cb (DhBookManager *book_manager,
DhBook *book,
DhPreferences *prefs)
{
- bookshelf_populate_store (prefs);
+ bookshelf_populate (prefs);
}
static void
@@ -287,7 +303,7 @@ bookshelf_book_deleted_cb (DhBookManager *book_manager,
DhBook *book,
DhPreferences *prefs)
{
- bookshelf_populate_store (prefs);
+ bookshelf_populate (prefs);
}
static void
@@ -434,8 +450,6 @@ init_bookshelf_store (DhPreferences *prefs)
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->bookshelf_store),
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
GTK_SORT_ASCENDING);
-
- bookshelf_populate_store (prefs);
}
static void
@@ -483,9 +497,6 @@ init_bookshelf_view (DhPreferences *prefs)
GtkCellRenderer *cell_renderer_text;
GtkTreeViewColumn *column;
- gtk_tree_view_set_model (priv->bookshelf_view,
- GTK_TREE_MODEL (priv->bookshelf_store));
-
/* Enabled column */
cell_renderer_toggle = gtk_cell_renderer_toggle_new ();
gtk_tree_view_insert_column_with_data_func (priv->bookshelf_view,
@@ -546,6 +557,8 @@ init_bookshelf_tab (DhPreferences *prefs)
G_CALLBACK (bookshelf_book_deleted_cb),
prefs,
0);
+
+ bookshelf_populate (prefs);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]