forked from AuroraMiddleware/gtk
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
This commit is contained in:
parent
6c2b7a9441
commit
cb775a6a6d
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user