From a2db24fb140dc6bccf0303bbd7137f558971adaf Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Fri, 1 Apr 2016 04:43:00 +0200 Subject: [PATCH] Bug 1257811 - set min-height for input widgets. r=karlt --- widget/gtk/gtk3drawing.cpp | 21 +++++++++++++++++++++ widget/gtk/gtkdrawing.h | 7 +++++++ widget/gtk/nsNativeThemeGTK.cpp | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/widget/gtk/gtk3drawing.cpp b/widget/gtk/gtk3drawing.cpp index 656586791e50..f68a2dfb4c39 100644 --- a/widget/gtk/gtk3drawing.cpp +++ b/widget/gtk/gtk3drawing.cpp @@ -3098,6 +3098,27 @@ moz_gtk_get_menu_separator_height(gint *size) return MOZ_GTK_SUCCESS; } +void +moz_gtk_get_entry_min_height(gint* height) +{ + ensure_entry_widget(); + GtkStyleContext* style = gtk_widget_get_style_context(gEntryWidget); + if (!gtk_check_version(3, 20, 0)) { + gtk_style_context_get(style, gtk_style_context_get_state(style), + "min-height", height, + nullptr); + } else { + *height = 0; + } + + GtkBorder border; + GtkBorder padding; + gtk_style_context_get_border(style, GTK_STATE_FLAG_NORMAL, &border); + gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding); + + *height += (border.top + border.bottom + padding.top + padding.bottom); +} + void moz_gtk_get_scale_metrics(GtkOrientation orient, gint* scale_width, gint* scale_height) diff --git a/widget/gtk/gtkdrawing.h b/widget/gtk/gtkdrawing.h index 259a700f512f..5bd8878c8db6 100644 --- a/widget/gtk/gtkdrawing.h +++ b/widget/gtk/gtkdrawing.h @@ -398,6 +398,13 @@ void moz_gtk_get_arrow_size(GtkThemeWidgetType widgetType, gint* width, gint* height); +/** + * Get the minimum height of a entry widget + * size: [OUT] the minimum height + * + */ +void moz_gtk_get_entry_min_height(gint* height); + /** * Get the desired size of a toolbar separator * size: [OUT] the desired width diff --git a/widget/gtk/nsNativeThemeGTK.cpp b/widget/gtk/nsNativeThemeGTK.cpp index 76519779a788..77ac94a802a5 100644 --- a/widget/gtk/nsNativeThemeGTK.cpp +++ b/widget/gtk/nsNativeThemeGTK.cpp @@ -1591,6 +1591,12 @@ nsNativeThemeGTK::GetMinimumWidgetSize(nsPresContext* aPresContext, aResult->height += border.top + border.bottom; } break; + case NS_THEME_NUMBER_INPUT: + case NS_THEME_TEXTFIELD: + { + moz_gtk_get_entry_min_height(&aResult->height); + } + break; case NS_THEME_TOOLBAR_SEPARATOR: { gint separator_width;