Bug 1335705 - For Gtk > 3.20 determine scale trough size from trough CSS node and also add border/padding/margin, r?karlt
MozReview-Commit-ID: BhS9xkagvMp
--- a/widget/gtk/gtk3drawing.cpp
+++ b/widget/gtk/gtk3drawing.cpp
@@ -2501,42 +2501,40 @@ moz_gtk_get_entry_min_height(gint* heigh
*height += (border.top + border.bottom + padding.top + padding.bottom);
ReleaseStyleContext(style);
}
void
moz_gtk_get_scale_metrics(GtkOrientation orient, gint* scale_width,
gint* scale_height)
{
- WidgetNodeType widget = (orient == GTK_ORIENTATION_HORIZONTAL) ?
- MOZ_GTK_SCALE_HORIZONTAL :
- MOZ_GTK_SCALE_VERTICAL;
+ if (gtk_check_version(3, 20, 0) != nullptr) {
+ WidgetNodeType widget = (orient == GTK_ORIENTATION_HORIZONTAL) ?
+ MOZ_GTK_SCALE_HORIZONTAL :
+ MOZ_GTK_SCALE_VERTICAL;
- if (gtk_check_version(3, 20, 0) != nullptr) {
gint thumb_length, thumb_height, trough_border;
moz_gtk_get_scalethumb_metrics(orient, &thumb_length, &thumb_height);
GtkStyleContext* style = ClaimStyleContext(widget);
gtk_style_context_get_style(style, "trough-border", &trough_border, NULL);
if (orient == GTK_ORIENTATION_HORIZONTAL) {
*scale_width = thumb_length + trough_border * 2;
*scale_height = thumb_height + trough_border * 2;
} else {
*scale_width = thumb_height + trough_border * 2;
*scale_height = thumb_length + trough_border * 2;
}
ReleaseStyleContext(style);
} else {
- GtkStyleContext* style = ClaimStyleContext(widget);
- gtk_style_context_get(style, gtk_style_context_get_state(style),
- "min-width", scale_width,
- "min-height", scale_height,
- nullptr);
- ReleaseStyleContext(style);
+ WidgetNodeType widget = (orient == GTK_ORIENTATION_HORIZONTAL) ?
+ MOZ_GTK_SCALE_TROUGH_HORIZONTAL :
+ MOZ_GTK_SCALE_TROUGH_VERTICAL;
+ moz_gtk_get_widget_min_size(widget, scale_width, scale_height);
}
}
gint
moz_gtk_get_scalethumb_metrics(GtkOrientation orient, gint* thumb_length, gint* thumb_height)
{
if (gtk_check_version(3, 20, 0) != nullptr) {