bug 1319957 don't realize widgets for their style r?stransky draft
authorKarl Tomlinson <karlt+@karlt.net>
Tue, 21 Jun 2016 19:07:45 +1200
changeset 443222 f071f626fe33140d9bd69d8635cd7e3877c4aed7
parent 443220 34fce7c12173bdd6dda54c2ebf6d344252f1ac48
child 537984 dc1fb383af44ece98b989db64f207c562f73a2da
push id36919
push userktomlinson@mozilla.com
push dateThu, 24 Nov 2016 00:45:31 +0000
reviewersstransky
bugs1319957
milestone53.0a1
bug 1319957 don't realize widgets for their style r?stransky This was needed in GTK2 to get the style of the widget, but styles are almost independent of widgets with GTK3, where realizing is not necessary to get the style context. MozReview-Commit-ID: GtL2FLDl9uA
widget/gtk/WidgetStyleCache.cpp
--- a/widget/gtk/WidgetStyleCache.cpp
+++ b/widget/gtk/WidgetStyleCache.cpp
@@ -28,34 +28,32 @@ static GtkStyleContext*
 GetWidgetRootStyle(WidgetNodeType aNodeType);
 static GtkStyleContext*
 GetCssNodeStyleInternal(WidgetNodeType aNodeType);
 
 static GtkWidget*
 CreateWindowWidget()
 {
   GtkWidget *widget = gtk_window_new(GTK_WINDOW_POPUP);
-  gtk_widget_realize(widget);
   gtk_widget_set_name(widget, "MozillaGtkWidget");
   return widget;
 }
 
 static GtkWidget*
 CreateWindowContainerWidget()
 {
   GtkWidget *widget = gtk_fixed_new();
   gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_WINDOW)), widget);
   return widget;
 }
 
 static void
 AddToWindowContainer(GtkWidget* widget)
 {
   gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_WINDOW_CONTAINER)), widget);
-  gtk_widget_realize(widget);
 }
 
 static GtkWidget*
 CreateScrollbarWidget(WidgetNodeType aWidgetType, GtkOrientation aOrientation)
 {
   GtkWidget* widget = gtk_scrollbar_new(aOrientation, nullptr);
   AddToWindowContainer(widget);
   return widget;
@@ -137,17 +135,16 @@ CreateGripperWidget()
   return widget;
 }
 
 static GtkWidget*
 CreateToolbarWidget()
 {
   GtkWidget* widget = gtk_toolbar_new();
   gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_GRIPPER)), widget);
-  gtk_widget_realize(widget);
   return widget;
 }
 
 static GtkWidget*
 CreateToolbarSeparatorWidget()
 {
   GtkWidget* widget = GTK_WIDGET(gtk_separator_tool_item_new());
   AddToWindowContainer(widget);
@@ -178,17 +175,16 @@ CreateToggleButtonWidget()
   return widget;
 }
 
 static GtkWidget*
 CreateButtonArrowWidget()
 {
   GtkWidget* widget = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
   gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_TOGGLE_BUTTON)), widget);
-  gtk_widget_realize(widget);
   gtk_widget_show(widget);
   return widget;
 }
 
 static GtkWidget*
 CreateSpinWidget()
 {
   GtkWidget* widget = gtk_spin_button_new(nullptr, 1, 0);
@@ -221,18 +217,16 @@ typedef struct
 static void
 GetInnerWidget(GtkWidget* widget, gpointer client_data)
 {
   auto info = static_cast<GtkInnerWidgetInfo*>(client_data);
 
   if (G_TYPE_CHECK_INSTANCE_TYPE(widget, info->type)) {
     *info->widget = widget;
   }
-
-  gtk_widget_realize(widget);
 }
 
 static GtkWidget*
 CreateComboBoxButtonWidget()
 {
   GtkWidget* comboBox = GetWidget(MOZ_GTK_COMBOBOX);
   GtkWidget* comboBoxButton = nullptr;
 
@@ -282,17 +276,16 @@ CreateComboBoxArrowWidget()
     GtkInnerWidgetInfo info = { GTK_TYPE_ARROW,
                                 &comboBoxArrow };
     gtk_container_forall(GTK_CONTAINER(buttonChild),
                          GetInnerWidget, &info);
   } else if (GTK_IS_ARROW(buttonChild)) {
     /* appears-as-list = TRUE, or cell-view = FALSE;
      * the button only contains an arrow */
     comboBoxArrow = buttonChild;
-    gtk_widget_realize(comboBoxArrow);
   }
 
   if (!comboBoxArrow) {
     /* Shouldn't be reached with current internal gtk implementation;
      * we gButtonArrowWidget as last resort fallback to avoid
      * crashing. */
     comboBoxArrow = GetWidget(MOZ_GTK_BUTTON_ARROW);
   } else {
@@ -411,17 +404,16 @@ CreateComboBoxEntryArrowWidget()
     GtkInnerWidgetInfo info = { GTK_TYPE_ARROW,
                                 &comboBoxArrow };
     gtk_container_forall(GTK_CONTAINER(buttonChild),
                          GetInnerWidget, &info);
   } else if (GTK_IS_ARROW(buttonChild)) {
     /* appears-as-list = TRUE, or cell-view = FALSE;
      * the button only contains an arrow */
     comboBoxArrow = buttonChild;
-    gtk_widget_realize(comboBoxArrow);
   }
 
   if (!comboBoxArrow) {
     /* Shouldn't be reached with current internal gtk implementation;
      * we gButtonArrowWidget as last resort fallback to avoid
      * crashing. */
     comboBoxArrow = GetWidget(MOZ_GTK_BUTTON_ARROW);
   } else {
@@ -451,17 +443,16 @@ CreateTextViewWidget()
 }
 
 static GtkWidget*
 CreateMenuSeparatorWidget()
 {
   GtkWidget* widget = gtk_separator_menu_item_new();
   gtk_menu_shell_append(GTK_MENU_SHELL(GetWidget(MOZ_GTK_MENUPOPUP)),
                         widget);
-  gtk_widget_realize(widget);
   return widget;
 }
 
 static GtkWidget*
 CreateTreeViewWidget()
 {
   GtkWidget* widget = gtk_tree_view_new();
   AddToWindowContainer(widget);