--- a/widget/gtk/gtk3drawing.cpp
+++ b/widget/gtk/gtk3drawing.cpp
@@ -42,16 +42,77 @@ moz_gtk_menu_item_paint(WidgetNodeType w
GtkWidgetState* state, GtkTextDirection direction);
static GtkBorder
GetMarginBorderPadding(GtkStyleContext* aStyle);
static void
InsetByMargin(GdkRectangle* rect, GtkStyleContext* style);
+static void
+moz_gtk_add_style_margin(GtkStyleContext* style,
+ gint* left, gint* top, gint* right, gint* bottom)
+{
+ GtkBorder margin;
+
+ gtk_style_context_get_margin(style, GTK_STATE_FLAG_NORMAL, &margin);
+
+ *left += margin.left;
+ *right += margin.right;
+ *top += margin.top;
+ *bottom += margin.bottom;
+}
+
+static void
+moz_gtk_add_style_border(GtkStyleContext* style,
+ gint* left, gint* top, gint* right, gint* bottom)
+{
+ GtkBorder border;
+
+ gtk_style_context_get_border(style, GTK_STATE_FLAG_NORMAL, &border);
+
+ *left += border.left;
+ *right += border.right;
+ *top += border.top;
+ *bottom += border.bottom;
+}
+
+static void
+moz_gtk_add_style_padding(GtkStyleContext* style,
+ gint* left, gint* top, gint* right, gint* bottom)
+{
+ GtkBorder padding;
+
+ gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
+
+ *left += padding.left;
+ *right += padding.right;
+ *top += padding.top;
+ *bottom += padding.bottom;
+}
+
+static void
+moz_gtk_add_margin_border_padding(GtkStyleContext *style,
+ gint* left, gint* top,
+ gint* right, gint* bottom)
+{
+ moz_gtk_add_style_margin(style, left, top, right, bottom);
+ moz_gtk_add_style_border(style, left, top, right, bottom);
+ moz_gtk_add_style_padding(style, left, top, right, bottom);
+}
+
+static void
+moz_gtk_add_border_padding(GtkStyleContext *style,
+ gint* left, gint* top,
+ gint* right, gint* bottom)
+{
+ moz_gtk_add_style_border(style, left, top, right, bottom);
+ moz_gtk_add_style_padding(style, left, top, right, bottom);
+}
+
// GetStateFlagsFromGtkWidgetState() can be safely used for the specific
// GtkWidgets that set both prelight and active flags. For other widgets,
// either the GtkStateFlags or Gecko's GtkWidgetState need to be carefully
// adjusted to match GTK behavior. Although GTK sets insensitive and focus
// flags in the generic GtkWidget base class, GTK adds prelight and active
// flags only to widgets that are expected to demonstrate prelight or active
// states. This contrasts with HTML where any element may have :active and
// :hover states, and so Gecko's GtkStateFlags do not necessarily map to GTK
@@ -1968,66 +2029,17 @@ moz_gtk_header_bar_paint(WidgetNodeType
InsetByMargin(rect, style);
gtk_render_background(style, cr, rect->x, rect->y, rect->width,
rect->height);
gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
return MOZ_GTK_SUCCESS;
}
-static void
-moz_gtk_add_style_margin(GtkStyleContext* style,
- gint* left, gint* top, gint* right, gint* bottom)
-{
- GtkBorder margin;
-
- gtk_style_context_get_margin(style, GTK_STATE_FLAG_NORMAL, &margin);
-
- *left += margin.left;
- *right += margin.right;
- *top += margin.top;
- *bottom += margin.bottom;
-}
-
-static void
-moz_gtk_add_style_border(GtkStyleContext* style,
- gint* left, gint* top, gint* right, gint* bottom)
-{
- GtkBorder border;
-
- gtk_style_context_get_border(style, GTK_STATE_FLAG_NORMAL, &border);
-
- *left += border.left;
- *right += border.right;
- *top += border.top;
- *bottom += border.bottom;
-}
-
-static void
-moz_gtk_add_style_padding(GtkStyleContext* style,
- gint* left, gint* top, gint* right, gint* bottom)
-{
- GtkBorder padding;
-
- gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
-
- *left += padding.left;
- *right += padding.right;
- *top += padding.top;
- *bottom += padding.bottom;
-}
-
-static void moz_gtk_add_margin_border_padding(GtkStyleContext *style,
- gint* left, gint* top,
- gint* right, gint* bottom)
-{
- moz_gtk_add_style_margin(style, left, top, right, bottom);
- moz_gtk_add_style_border(style, left, top, right, bottom);
- moz_gtk_add_style_padding(style, left, top, right, bottom);
-}
+
static GtkBorder
GetMarginBorderPadding(GtkStyleContext* aStyle)
{
gint left = 0, top = 0, right = 0, bottom = 0;
moz_gtk_add_margin_border_padding(aStyle, &left, &top, &right, &bottom);
// narrowing conversions to gint16:
GtkBorder result;
@@ -2074,18 +2086,17 @@ moz_gtk_get_widget_border(WidgetNodeType
}
case MOZ_GTK_ENTRY:
{
style = GetStyleContext(MOZ_GTK_ENTRY);
// XXX: Subtract 1 pixel from the padding to account for the default
// padding in forms.css. See bug 1187385.
*left = *top = *right = *bottom = -1;
- moz_gtk_add_style_padding(style, left, top, right, bottom);
- moz_gtk_add_style_border(style, left, top, right, bottom);
+ moz_gtk_add_border_padding(style, left, top, right, bottom);
return MOZ_GTK_SUCCESS;
}
case MOZ_GTK_TEXT_VIEW:
case MOZ_GTK_TREEVIEW:
{
style = GetStyleContext(MOZ_GTK_SCROLLED_WINDOW);
moz_gtk_add_style_border(style, left, top, right, bottom);
@@ -2096,20 +2107,18 @@ moz_gtk_get_widget_border(WidgetNodeType
/* A Tree Header in GTK is just a different styled button
* It must be placed in a TreeView for getting the correct style
* assigned.
* That is why the following code is the same as for MOZ_GTK_BUTTON.
* */
*left = *top = *right = *bottom =
gtk_container_get_border_width(GTK_CONTAINER(
GetWidget(MOZ_GTK_TREE_HEADER_CELL)));
-
style = GetStyleContext(MOZ_GTK_TREE_HEADER_CELL);
- moz_gtk_add_style_border(style, left, top, right, bottom);
- moz_gtk_add_style_padding(style, left, top, right, bottom);
+ moz_gtk_add_border_padding(style, left, top, right, bottom);
return MOZ_GTK_SUCCESS;
}
case MOZ_GTK_TREE_HEADER_SORTARROW:
w = GetWidget(MOZ_GTK_TREE_HEADER_SORTARROW);
break;
case MOZ_GTK_DROPDOWN_ENTRY:
w = GetWidget(MOZ_GTK_COMBOBOX_ENTRY_TEXTAREA);
break;
@@ -2125,18 +2134,17 @@ moz_gtk_get_widget_border(WidgetNodeType
gint separator_width;
GtkRequisition arrow_req;
GtkBorder border;
*left = *top = *right = *bottom =
gtk_container_get_border_width(GTK_CONTAINER(
GetWidget(MOZ_GTK_COMBOBOX_BUTTON)));
style = GetStyleContext(MOZ_GTK_COMBOBOX_BUTTON);
- moz_gtk_add_style_padding(style, left, top, right, bottom);
- moz_gtk_add_style_border(style, left, top, right, bottom);
+ moz_gtk_add_border_padding(style, left, top, right, bottom);
/* If there is no separator, don't try to count its width. */
separator_width = 0;
GtkWidget* comboBoxSeparator = GetWidget(MOZ_GTK_COMBOBOX_SEPARATOR);
if (comboBoxSeparator) {
style = gtk_widget_get_style_context(comboBoxSeparator);
gtk_style_context_get_style(style,
"wide-separators", &wide_separators,
@@ -2180,20 +2188,18 @@ moz_gtk_get_widget_border(WidgetNodeType
break;
case MOZ_GTK_CHECKBUTTON_CONTAINER:
case MOZ_GTK_RADIOBUTTON_CONTAINER:
{
w = GetWidget(widget);
style = gtk_widget_get_style_context(w);
*left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w));
- moz_gtk_add_style_border(style,
- left, top, right, bottom);
- moz_gtk_add_style_padding(style,
- left, top, right, bottom);
+ moz_gtk_add_border_padding(style,
+ left, top, right, bottom);
return MOZ_GTK_SUCCESS;
}
case MOZ_GTK_MENUPOPUP:
w = GetWidget(MOZ_GTK_MENUPOPUP);
break;
case MOZ_GTK_MENUBARITEM:
case MOZ_GTK_MENUITEM:
case MOZ_GTK_CHECKMENUITEM:
@@ -2234,18 +2240,17 @@ moz_gtk_get_widget_border(WidgetNodeType
left, top, right, bottom);
return MOZ_GTK_SUCCESS;
}
case MOZ_GTK_HEADER_BAR:
case MOZ_GTK_HEADER_BAR_MAXIMIZED:
{
style = GetStyleContext(widget);
- moz_gtk_add_style_border(style, left, top, right, bottom);
- moz_gtk_add_style_padding(style, left, top, right, bottom);
+ moz_gtk_add_border_padding(style, left, top, right, bottom);
return MOZ_GTK_SUCCESS;
}
case MOZ_GTK_HEADER_BAR_BUTTON_CLOSE:
case MOZ_GTK_HEADER_BAR_BUTTON_MINIMIZE:
case MOZ_GTK_HEADER_BAR_BUTTON_MAXIMIZE:
{
style = GetStyleContext(widget);
moz_gtk_add_margin_border_padding(style, left, top, right, bottom);