Bug 1507905 - Add -webkit-appearance:textarea and make that the default for <textarea> for compatibility with other UAs. r=jwatt

This commit is contained in:
Mats Palmgren 2018-11-21 22:05:20 +01:00
parent 8009877bd7
commit 91372ff9f3
8 changed files with 33 additions and 30 deletions

View File

@ -296,6 +296,7 @@ exports.CSS_PROPERTIES = {
"tab-scroll-arrow-forward",
"tabpanel",
"tabpanels",
"textarea",
"textfield",
"textfield-multiline",
"toolbar",
@ -1743,6 +1744,7 @@ exports.CSS_PROPERTIES = {
"tab-scroll-arrow-forward",
"tabpanel",
"tabpanels",
"textarea",
"textfield",
"textfield-multiline",
"toolbar",

View File

@ -116,6 +116,7 @@ input::placeholder {
}
textarea {
-moz-appearance: textarea;
margin-block-start: 1px;
margin-block-end: 1px;
border: 2px inset ThreeDLightShadow;
@ -133,7 +134,6 @@ textarea {
vertical-align: text-bottom;
cursor: text;
resize: both;
-moz-appearance: textfield-multiline;
text-indent: 0;
-moz-user-select: text;
text-shadow: none;

View File

@ -1155,10 +1155,11 @@ pub enum Appearance {
TabScrollArrowBack,
#[parse(condition = "in_ua_or_chrome_sheet")]
TabScrollArrowForward,
/// A textfield or text area.
/// A multi-line text field, e.g. HTML <textarea>.
#[parse(aliases = "textfield-multiline")]
Textarea,
/// A single-line text field, e.g. HTML <input type=text>.
Textfield,
/// A multiline text field.
TextfieldMultiline,
/// A toolbar in an application window.
#[parse(condition = "in_ua_or_chrome_sheet")]
Toolbar,

View File

@ -3461,7 +3461,7 @@ nsNativeThemeCocoa::ComputeWidgetInfo(nsIFrame* aFrame,
return Some(WidgetInfo::ScrollCorner(
ComputeScrollbarParams(aFrame, false)));
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
return Some(WidgetInfo::MultilineTextField(
eventState.HasState(NS_EVENT_STATE_FOCUS)));
@ -3913,7 +3913,7 @@ nsNativeThemeCocoa::CreateWebRenderCommandsForWidget(mozilla::wr::DisplayListBui
return false;
}
case StyleAppearance::TextfieldMultiline: {
case StyleAppearance::Textarea: {
if (eventState.HasState(NS_EVENT_STATE_FOCUS)) {
// We can't draw the focus ring using webrender, so fall back to regular
// drawing if we're focused.
@ -4069,7 +4069,7 @@ nsNativeThemeCocoa::GetWidgetBorder(nsDeviceContext* aContext,
break;
}
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
result.SizeTo(1, 1, 1, 1);
break;
@ -4171,7 +4171,7 @@ nsNativeThemeCocoa::GetWidgetOverflow(nsDeviceContext* aContext,
case StyleAppearance::Toolbarbutton:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Searchfield:
case StyleAppearance::Listbox:
// NOTE: if you change Menulist and MenulistButton to behave differently,
@ -4322,7 +4322,7 @@ nsNativeThemeCocoa::GetMinimumWidgetSize(nsPresContext* aPresContext,
case StyleAppearance::MenulistTextfield:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Searchfield:
{
// at minimum, we should be tall enough for 9pt text.
@ -4659,7 +4659,7 @@ nsNativeThemeCocoa::ThemeSupportsWidget(nsPresContext* aPresContext, nsIFrame* a
case StyleAppearance::Statusbar:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Searchfield:
case StyleAppearance::Toolbox:
//case StyleAppearance::Toolbarbutton:
@ -4820,7 +4820,7 @@ nsNativeThemeCocoa::WidgetAppearanceDependsOnWindowFocus(StyleAppearance aAppear
case StyleAppearance::Textfield:
case StyleAppearance::Treeview:
case StyleAppearance::Treeline:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Listbox:
case StyleAppearance::Resizer:
return false;

View File

@ -340,7 +340,7 @@ nsNativeThemeGTK::GetGtkWidgetAndState(StyleAppearance aAppearance,
// to see whether to draw in the focused state.
if (aAppearance == StyleAppearance::NumberInput ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline ||
aAppearance == StyleAppearance::Textarea ||
aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::SpinnerTextfield ||
aAppearance == StyleAppearance::RadioContainer ||
@ -602,7 +602,7 @@ nsNativeThemeGTK::GetGtkWidgetAndState(StyleAppearance aAppearance,
case StyleAppearance::Textfield:
aGtkWidgetType = MOZ_GTK_ENTRY;
break;
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
#ifdef MOZ_WIDGET_GTK
aGtkWidgetType = MOZ_GTK_TEXT_VIEW;
#else
@ -1978,7 +1978,7 @@ nsNativeThemeGTK::ThemeSupportsWidget(nsPresContext* aPresContext,
case StyleAppearance::MenulistTextfield:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Range:
case StyleAppearance::RangeThumb:
case StyleAppearance::ScaleHorizontal:

View File

@ -63,7 +63,7 @@ HeadlessThemeGTK::GetWidgetBorder(nsDeviceContext* aContext, nsIFrame* aFrame,
case StyleAppearance::SpinnerUpbutton:
case StyleAppearance::SpinnerDownbutton:
case StyleAppearance::SpinnerTextfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Menupopup:
case StyleAppearance::MozGtkInfoBar:
result.top = 1;
@ -402,7 +402,7 @@ HeadlessThemeGTK::ThemeSupportsWidget(nsPresContext* aPresContext,
case StyleAppearance::ScrollbarthumbHorizontal:
case StyleAppearance::ScrollbarthumbVertical:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Menulist:
case StyleAppearance::MenulistText:
case StyleAppearance::MenulistTextfield:

View File

@ -108,7 +108,7 @@ nsNativeTheme::GetContentState(nsIFrame* aFrame, StyleAppearance aAppearance)
if (aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::NumberInput ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline ||
aAppearance == StyleAppearance::Textarea ||
aAppearance == StyleAppearance::Searchfield ||
aAppearance == StyleAppearance::Listbox) {
return flags;
@ -348,7 +348,7 @@ nsNativeTheme::IsWidgetStyled(nsPresContext* aPresContext, nsIFrame* aFrame,
aAppearance == StyleAppearance::Button ||
aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline ||
aAppearance == StyleAppearance::Textarea ||
aAppearance == StyleAppearance::Listbox ||
aAppearance == StyleAppearance::Menulist ||
(aAppearance == StyleAppearance::MenulistButton &&

View File

@ -743,7 +743,7 @@ mozilla::Maybe<nsUXThemeClass> nsNativeThemeWin::GetThemeClass(StyleAppearance a
case StyleAppearance::MenulistTextfield:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::FocusOutline:
return Some(eUXEdit);
case StyleAppearance::Tooltip:
@ -967,7 +967,7 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame,
case StyleAppearance::MenulistTextfield:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline: {
case StyleAppearance::Textarea: {
EventStates eventState = GetContentState(aFrame, aAppearance);
/* Note: the NOSCROLL type has a rounded corner in each corner. The more
@ -1886,7 +1886,7 @@ RENDER_AGAIN:
else if (aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::NumberInput ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline) {
aAppearance == StyleAppearance::Textarea) {
if (aAppearance == StyleAppearance::MenulistTextfield &&
state != TFS_EDITBORDER_FOCUSED) {
// We want 'menulist-textfield' to behave like 'textfield', except we
@ -2099,7 +2099,7 @@ nsNativeThemeWin::GetWidgetBorder(nsDeviceContext* aContext,
if (aFrame && (aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::NumberInput ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline)) {
aAppearance == StyleAppearance::Textarea)) {
nsIContent* content = aFrame->GetContent();
if (content && content->IsHTMLElement()) {
// We need to pad textfields by 1 pixel, since the caret will draw
@ -2200,7 +2200,7 @@ nsNativeThemeWin::GetWidgetPadding(nsDeviceContext* aContext,
if (aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::NumberInput ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline ||
aAppearance == StyleAppearance::Textarea ||
aAppearance == StyleAppearance::Menulist)
{
// If we have author-specified padding for these elements, don't do the
@ -2218,7 +2218,7 @@ nsNativeThemeWin::GetWidgetPadding(nsDeviceContext* aContext,
if (aAppearance == StyleAppearance::MenulistTextfield ||
aAppearance == StyleAppearance::NumberInput ||
aAppearance == StyleAppearance::Textfield ||
aAppearance == StyleAppearance::TextfieldMultiline) {
aAppearance == StyleAppearance::Textarea) {
aResult->top = aResult->bottom = 2;
aResult->left = aResult->right = 2;
ScaleForFrameDPI(aResult, aFrame);
@ -2866,7 +2866,7 @@ nsNativeThemeWin::ClassicThemeSupportsWidget(nsIFrame* aFrame,
case StyleAppearance::Button:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Checkbox:
case StyleAppearance::Radio:
case StyleAppearance::Range:
@ -2959,7 +2959,7 @@ nsNativeThemeWin::ClassicGetWidgetBorder(nsDeviceContext* aContext,
case StyleAppearance::Tab:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::FocusOutline:
result.top = result.left = result.bottom = result.right = 2;
break;
@ -3127,7 +3127,7 @@ nsNativeThemeWin::ClassicGetMinimumWidgetSize(nsIFrame* aFrame,
case StyleAppearance::Treeview:
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::MenulistTextfield:
case StyleAppearance::Statusbar:
case StyleAppearance::Statusbarpanel:
@ -3387,7 +3387,7 @@ nsresult nsNativeThemeWin::ClassicGetThemePartAndState(nsIFrame* aFrame,
case StyleAppearance::NumberInput:
case StyleAppearance::FocusOutline:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Menulist:
case StyleAppearance::MenulistTextfield:
case StyleAppearance::Range:
@ -3819,7 +3819,7 @@ RENDER_AGAIN:
// Draw controls with 2px 3D inset border
case StyleAppearance::NumberInput:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Listbox:
case StyleAppearance::Menulist:
case StyleAppearance::MenulistTextfield: {
@ -4187,7 +4187,7 @@ nsNativeThemeWin::GetWidgetNativeDrawingFlags(StyleAppearance aAppearance)
case StyleAppearance::NumberInput:
case StyleAppearance::FocusOutline:
case StyleAppearance::Textfield:
case StyleAppearance::TextfieldMultiline:
case StyleAppearance::Textarea:
case StyleAppearance::Menulist:
case StyleAppearance::MenulistTextfield: