diff options
author | Claudio Saavedra <csaavedra@igalia.com> | 2012-02-10 16:46:57 +0200 |
---|---|---|
committer | Claudio Saavedra <csaavedra@igalia.com> | 2012-02-15 01:05:12 +0200 |
commit | cb775a6a6d4d7f81f939e423908f3bd2d117e03f (patch) | |
tree | 077bc425b3be69342adec94327448a52cc0cfdb2 /gtk | |
parent | 6c2b7a9441d44fcf41cbffaed2101d9fe298a34b (diff) | |
download | gtk+-cb775a6a6d4d7f81f939e423908f3bd2d117e03f.tar.gz |
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
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtknotebook.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index 5be5b7a3b8..bd5a3c1756 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -4097,7 +4097,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; @@ -4117,8 +4117,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, @@ -4566,6 +4573,7 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook, GtkNotebookPrivate *priv = notebook->priv; GtkNotebookPage *page; gint nchildren; + GList *list; gtk_widget_freeze_child_notify (child); @@ -4648,7 +4656,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 */ |