textview: Ensure popup menu is properly inserted

In the presence of attached children, the css tree and the
widget tree are not in sync, so we need to explicitly set
the parent of the css node before inserting the widget, or
else we end up with critical warnings and a non-working
menu.

This can be seen in testtextview.
This commit is contained in:
Matthias Clasen 2020-05-10 09:16:32 -04:00
parent 3f548327b5
commit 10921aa237

View File

@ -8638,6 +8638,9 @@ gtk_text_view_do_popup (GtkTextView *text_view,
model = gtk_text_view_get_menu_model (text_view); model = gtk_text_view_get_menu_model (text_view);
priv->popup_menu = gtk_popover_menu_new_from_model (model); priv->popup_menu = gtk_popover_menu_new_from_model (model);
gtk_css_node_insert_after (gtk_widget_get_css_node (GTK_WIDGET (text_view)),
gtk_widget_get_css_node (priv->popup_menu),
priv->text_window->css_node);
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (text_view)); gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (text_view));
gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM); gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);