popover: Do not validate the css node on show()
authorBenjamin Otte <otte@redhat.com>
Tue, 28 Jan 2020 16:15:04 +0000 (17:15 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 28 Jan 2020 16:19:28 +0000 (17:19 +0100)
This was a good idea back in GTK3 when popovers were toplevels, but now
they're regular child widgets, so they should behave that way.

Also, with the introduction of the bloom filter, gtk_css_node_validate()
now assumes it's only called on root nodes, so assert that that is the
case.

gtk/gtkcssnode.c
gtk/gtkpopover.c

index ab52c2bcd30f06c019c1b20dd938c210da3be16e..ebc65a8d43d8d0c4ace508716b290a787db8ac14 100644 (file)
@@ -1353,6 +1353,8 @@ gtk_css_node_validate (GtkCssNode *cssnode)
   gint64 timestamp;
   gint64 before = g_get_monotonic_time ();
 
+  g_assert (cssnode->parent == NULL);
+
   timestamp = gtk_css_node_get_timestamp (cssnode);
 
   gtk_css_node_validate_internal (cssnode, &filter, timestamp);
index 168a51a8923efb5f22c72bbe0c2455b8a0f98836..752c8b977762a67eb41c73106ba7643b56c5892c 100644 (file)
@@ -647,7 +647,6 @@ gtk_popover_show (GtkWidget *widget)
   GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
 
   _gtk_widget_set_visible_flag (widget, TRUE);
-  gtk_css_node_validate (gtk_widget_get_css_node (widget));
   gtk_widget_realize (widget);
   gtk_popover_native_check_resize (GTK_NATIVE (widget));
   gtk_widget_map (widget);