diff options
author | Matthias Clasen <mclasen@redhat.com> | 2018-10-16 20:52:04 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2018-10-16 20:52:04 +0000 |
commit | c0b5d66069dc5ab8633c5240dbac79b6b145c8d5 (patch) | |
tree | 5756fb97fc08d21d3f78aeaa0fa4a878db45eb16 | |
parent | 2453e71fd3731d27d92f2d5d358bf84704ee8acb (diff) | |
parent | 80a3d7090a3dadef15f9c320373758429226525d (diff) | |
download | gtk+-c0b5d66069dc5ab8633c5240dbac79b6b145c8d5.tar.gz |
Merge branch '1397-gtknotebook-built-in-popup-menu-listing-tabs-doesn-t-use-tab-label-text-for-the-last-tab' into 'gtk-3-24'
Notebook: Ensure menu label updates with tab_label
See merge request GNOME/gtk!385
-rw-r--r-- | gtk/gtknotebook.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index 3c5871e6af..51d9f5b65c 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -562,6 +562,8 @@ static void gtk_notebook_menu_switch_page (GtkWidget *widget, /*** GtkNotebook Menu Functions ***/ static void gtk_notebook_menu_item_create (GtkNotebook *notebook, GList *list); +static void gtk_notebook_menu_item_recreate (GtkNotebook *notebook, + GList *list); static void gtk_notebook_menu_label_unparent (GtkWidget *widget, gpointer data); static void gtk_notebook_menu_detacher (GtkWidget *widget, @@ -6335,6 +6337,7 @@ gtk_notebook_menu_switch_page (GtkWidget *widget, /* Private GtkNotebook Menu Functions: * * gtk_notebook_menu_item_create + * gtk_notebook_menu_item_recreate * gtk_notebook_menu_label_unparent * gtk_notebook_menu_detacher */ @@ -6369,6 +6372,19 @@ gtk_notebook_menu_item_create (GtkNotebook *notebook, } static void +gtk_notebook_menu_item_recreate (GtkNotebook *notebook, + GList *list) +{ + GtkNotebookPrivate *priv = notebook->priv; + GtkNotebookPage *page = list->data; + GtkWidget *menu_item = gtk_widget_get_parent (page->menu_label); + + gtk_container_remove (GTK_CONTAINER (menu_item), page->menu_label); + gtk_container_remove (GTK_CONTAINER (priv->menu), menu_item); + gtk_notebook_menu_item_create (notebook, list); +} + +static void gtk_notebook_menu_label_unparent (GtkWidget *widget, gpointer data) { @@ -7363,7 +7379,6 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, if (page->tab_label == tab_label) return; - gtk_notebook_remove_tab_label (notebook, page); if (tab_label) @@ -7405,6 +7420,9 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, gtk_widget_queue_resize (GTK_WIDGET (notebook)); } + if (priv->menu) + gtk_notebook_menu_item_recreate (notebook, list); + gtk_widget_child_notify (child, "tab-label"); } @@ -7609,14 +7627,7 @@ gtk_notebook_child_reordered (GtkNotebook *notebook, list = g_list_find (priv->children, page); if (priv->menu) - { - GtkWidget *menu_item; - - menu_item = gtk_widget_get_parent (page->menu_label); - gtk_container_remove (GTK_CONTAINER (menu_item), page->menu_label); - gtk_container_remove (GTK_CONTAINER (priv->menu), menu_item); - gtk_notebook_menu_item_create (notebook, list); - } + gtk_notebook_menu_item_recreate (notebook, list); if (list->prev) sibling = gtk_css_gadget_get_node (GTK_NOTEBOOK_PAGE (list->prev)->gadget); |