[gtk+/gtk-3-2] GtkNotebook: emit child-notify::position on page add/removal
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-2] GtkNotebook: emit child-notify::position on page add/removal
- Date: Mon, 12 Mar 2012 02:57:41 +0000 (UTC)
commit 4743dcd619b63cb12549b22618f9ba0d66d19c11
Author: Claudio Saavedra <csaavedra igalia com>
Date: Fri Feb 10 16:46:57 2012 +0200
GtkNotebook: emit child-notify::position on page add/removal
For each page added/removed, notify all the other children changing
position.
https://bugzilla.gnome.org/show_bug.cgi?id=669116
gtk/gtknotebook.c | 19 +++++++++++++++++--
1 files changed, 17 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index 56a7d46..ecdf3f1 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -4056,7 +4056,7 @@ gtk_notebook_remove (GtkContainer *container,
GtkNotebook *notebook = GTK_NOTEBOOK (container);
GtkNotebookPrivate *priv = notebook->priv;
GtkNotebookPage *page;
- GList *children;
+ GList *children, *list;
gint page_num = 0;
children = priv->children;
@@ -4076,8 +4076,15 @@ gtk_notebook_remove (GtkContainer *container,
g_object_ref (widget);
+ list = children->next;
gtk_notebook_real_remove (notebook, children);
+ while (list)
+ {
+ gtk_widget_child_notify (((GtkNotebookPage *)list->data)->child, "position");
+ list = list->next;
+ }
+
g_signal_emit (notebook,
notebook_signals[PAGE_REMOVED],
0,
@@ -4525,6 +4532,7 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook,
GtkNotebookPrivate *priv = notebook->priv;
GtkNotebookPage *page;
gint nchildren;
+ GList *list;
gtk_widget_freeze_child_notify (child);
@@ -4607,7 +4615,14 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook,
gtk_widget_child_notify (child, "tab-fill");
gtk_widget_child_notify (child, "tab-label");
gtk_widget_child_notify (child, "menu-label");
- gtk_widget_child_notify (child, "position");
+
+ list = g_list_nth (priv->children, position);
+ while (list)
+ {
+ gtk_widget_child_notify (((GtkNotebookPage *)list->data)->child, "position");
+ list = list->next;
+ }
+
gtk_widget_thaw_child_notify (child);
/* The page-added handler might have reordered the pages, re-get the position */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]