[gtk+/wip/listbox] GtkListBox: Make reseparate a no-op for hidden lists
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/listbox] GtkListBox: Make reseparate a no-op for hidden lists
- Date: Tue, 11 Jun 2013 15:02:43 +0000 (UTC)
commit bad814deb003c9a22c41cba42d8cbd831c081de1
Author: Alexander Larsson <alexl redhat com>
Date: Tue Jun 11 16:04:58 2013 +0200
GtkListBox: Make reseparate a no-op for hidden lists
We already take care to not track headers when the listbox is hidden,
because that can be very expensive during creation, so we might as
well skip reseparate() too. The only time we don't want to skip it
is when we're about to show the list.
gtk/gtklistbox.c | 28 +++++++++++++++++++---------
1 files changed, 19 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtklistbox.c b/gtk/gtklistbox.c
index 20e8d98..8292977 100644
--- a/gtk/gtklistbox.c
+++ b/gtk/gtklistbox.c
@@ -815,6 +815,21 @@ gtk_list_box_resort (GtkListBox *list_box)
gtk_widget_queue_resize (GTK_WIDGET (list_box));
}
+static void
+gtk_list_box_do_reseparate (GtkListBox *list_box)
+{
+ GtkListBoxPrivate *priv = list_box->priv;
+ GSequenceIter *iter;
+
+ for (iter = g_sequence_get_begin_iter (priv->children);
+ !g_sequence_iter_is_end (iter);
+ iter = g_sequence_iter_next (iter))
+ gtk_list_box_update_header (list_box, iter);
+
+ gtk_widget_queue_resize (GTK_WIDGET (list_box));
+}
+
+
/**
* gtk_list_box_reseparate:
* @list_box: a #GtkListBox
@@ -828,17 +843,12 @@ gtk_list_box_resort (GtkListBox *list_box)
void
gtk_list_box_reseparate (GtkListBox *list_box)
{
- GtkListBoxPrivate *priv = list_box->priv;
- GSequenceIter *iter;
-
g_return_if_fail (list_box != NULL);
- for (iter = g_sequence_get_begin_iter (priv->children);
- !g_sequence_iter_is_end (iter);
- iter = g_sequence_iter_next (iter))
- gtk_list_box_update_header (list_box, iter);
+ if (!gtk_widget_get_visible (GTK_WIDGET (list_box)))
+ return;
- gtk_widget_queue_resize (GTK_WIDGET (list_box));
+ gtk_list_box_do_reseparate (list_box);
}
/**
@@ -1186,7 +1196,7 @@ gtk_list_box_real_show (GtkWidget *widget)
{
GtkListBox * list_box = GTK_LIST_BOX (widget);
- gtk_list_box_reseparate (list_box);
+ gtk_list_box_do_reseparate (list_box);
GTK_WIDGET_CLASS (gtk_list_box_parent_class)->show (widget);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]