Commit a3ac3b61 authored by Matthias Clasen's avatar Matthias Clasen

Merge branch...

Merge branch '1397-gtknotebook-built-in-popup-menu-listing-tabs-doesn-t-use-tab-label-text-for-the-last-tab-4' into 'master'

Notebook: Ensure menu label updates with tab_label

Closes #1397

See merge request !386
parents 532a48aa 4e884b60
Pipeline #36171 failed with stages
in 6 minutes and 39 seconds
...@@ -497,6 +497,8 @@ static void gtk_notebook_menu_switch_page (GtkWidget *widget, ...@@ -497,6 +497,8 @@ static void gtk_notebook_menu_switch_page (GtkWidget *widget,
/*** GtkNotebook Menu Functions ***/ /*** GtkNotebook Menu Functions ***/
static void gtk_notebook_menu_item_create (GtkNotebook *notebook, static void gtk_notebook_menu_item_create (GtkNotebook *notebook,
GList *list); GList *list);
static void gtk_notebook_menu_item_recreate (GtkNotebook *notebook,
GList *list);
static void gtk_notebook_menu_label_unparent (GtkWidget *widget, static void gtk_notebook_menu_label_unparent (GtkWidget *widget,
gpointer data); gpointer data);
static void gtk_notebook_menu_detacher (GtkWidget *widget, static void gtk_notebook_menu_detacher (GtkWidget *widget,
...@@ -5481,6 +5483,7 @@ gtk_notebook_menu_switch_page (GtkWidget *widget, ...@@ -5481,6 +5483,7 @@ gtk_notebook_menu_switch_page (GtkWidget *widget,
/* Private GtkNotebook Menu Functions: /* Private GtkNotebook Menu Functions:
* *
* gtk_notebook_menu_item_create * gtk_notebook_menu_item_create
* gtk_notebook_menu_item_recreate
* gtk_notebook_menu_label_unparent * gtk_notebook_menu_label_unparent
* gtk_notebook_menu_detacher * gtk_notebook_menu_detacher
*/ */
...@@ -5514,6 +5517,19 @@ gtk_notebook_menu_item_create (GtkNotebook *notebook, ...@@ -5514,6 +5517,19 @@ gtk_notebook_menu_item_create (GtkNotebook *notebook,
gtk_widget_show (menu_item); gtk_widget_show (menu_item);
} }
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 static void
gtk_notebook_menu_label_unparent (GtkWidget *widget, gtk_notebook_menu_label_unparent (GtkWidget *widget,
gpointer data) gpointer data)
...@@ -6476,7 +6492,6 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, ...@@ -6476,7 +6492,6 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook,
if (page->tab_label == tab_label) if (page->tab_label == tab_label)
return; return;
gtk_notebook_remove_tab_label (notebook, page); gtk_notebook_remove_tab_label (notebook, page);
if (tab_label) if (tab_label)
...@@ -6516,6 +6531,9 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, ...@@ -6516,6 +6531,9 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook,
gtk_widget_queue_resize (GTK_WIDGET (notebook)); gtk_widget_queue_resize (GTK_WIDGET (notebook));
} }
if (priv->menu)
gtk_notebook_menu_item_recreate (notebook, list);
child_notify (notebook, child, "tab-label"); child_notify (notebook, child, "tab-label");
} }
...@@ -6720,14 +6738,7 @@ gtk_notebook_child_reordered (GtkNotebook *notebook, ...@@ -6720,14 +6738,7 @@ gtk_notebook_child_reordered (GtkNotebook *notebook,
list = g_list_find (priv->children, page); list = g_list_find (priv->children, page);
if (priv->menu) if (priv->menu)
{ gtk_notebook_menu_item_recreate (notebook, list);
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);
}
if (list->prev) if (list->prev)
sibling = gtk_widget_get_css_node (GTK_NOTEBOOK_PAGE (list->prev)->tab_widget); sibling = gtk_widget_get_css_node (GTK_NOTEBOOK_PAGE (list->prev)->tab_widget);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment