diff --git a/layout/painting/crashtests/crashtests.list b/layout/painting/crashtests/crashtests.list index 9d6e28530acd..e9b8be7c0630 100644 --- a/layout/painting/crashtests/crashtests.list +++ b/layout/painting/crashtests/crashtests.list @@ -17,7 +17,7 @@ load 1469472.html load 1477831-1.html load 1504033.html load 1514544-1.html -asserts(4-8) load 1547420-1.html +asserts(4-9) load 1547420-1.html load 1549909.html asserts(6) asserts-if(Android,9) load 1551389-1.html # bug 847368 asserts(0-2) load 1555819-1.html diff --git a/widget/gtk/nsNativeThemeGTK.cpp b/widget/gtk/nsNativeThemeGTK.cpp index 14baf89013dd..ab0fa5053002 100644 --- a/widget/gtk/nsNativeThemeGTK.cpp +++ b/widget/gtk/nsNativeThemeGTK.cpp @@ -1267,6 +1267,21 @@ WidgetNodeType nsNativeThemeGTK::NativeThemeToGtkTheme( return gtkWidgetType; } +static void FixupForVerticalWritingMode(WritingMode aWritingMode, + LayoutDeviceIntMargin* aResult) { + if (aWritingMode.IsVertical()) { + bool rtl = aWritingMode.IsBidiRTL(); + LogicalMargin logical(aWritingMode, aResult->top, + rtl ? aResult->left : aResult->right, aResult->bottom, + rtl ? aResult->right : aResult->left); + nsMargin physical = logical.GetPhysicalMargin(aWritingMode); + aResult->top = physical.top; + aResult->right = physical.right; + aResult->bottom = physical.bottom; + aResult->left = physical.left; + } +} + void nsNativeThemeGTK::GetCachedWidgetBorder(nsIFrame* aFrame, StyleAppearance aAppearance, GtkTextDirection aDirection, @@ -1292,6 +1307,7 @@ void nsNativeThemeGTK::GetCachedWidgetBorder(nsIFrame* aFrame, } } } + FixupForVerticalWritingMode(aFrame->GetWritingMode(), aResult); } LayoutDeviceIntMargin nsNativeThemeGTK::GetWidgetBorder( @@ -1644,7 +1660,9 @@ nsNativeThemeGTK::GetMinimumWidgetSize(nsPresContext* aPresContext, case StyleAppearance::MenulistTextfield: case StyleAppearance::NumberInput: case StyleAppearance::Textfield: { - moz_gtk_get_entry_min_height(&aResult->height); + moz_gtk_get_entry_min_height(aFrame->GetWritingMode().IsVertical() + ? &aResult->width + : &aResult->height); } break; #endif case StyleAppearance::Separator: {