gecko-dev/layout/style/contenteditable.css
Masayuki Nakano ec3fa36450 Bug 1583135 - Disable scroll-anchoring at all editable elements r=emilio
This patch disables scroll-anchoring of all editable elements including editable
and scrollable elements in editing host because users don't want to scroll down
when they insert new line and new line can be in the scrolled area.

Unfortunately, the bug is not reproducible with simple testcase with
synthesized keyboard events.  Therefore, this patch does not include automated
tests.

Differential Revision: https://phabricator.services.mozilla.com/D60098

--HG--
extra : moz-landing-system : lando
2020-01-17 01:31:37 +00:00

329 lines
9.3 KiB
CSS

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
/* Scroll-anchoring shouldn't work in any editable and scrollable elements when
user inserts something.
*/
*|*:-moz-read-write:focus,
*|*:root:-moz-read-write {
overflow-anchor: none;
}
*|*::-moz-canvas {
cursor: text;
}
input:-moz-read-write > .anonymous-div:-moz-read-only,
textarea:-moz-read-write > .anonymous-div:-moz-read-only {
user-select: text;
}
/* Use default arrow over objects with size that
are selected when clicked on.
Override the browser's pointer cursor over links
*/
img:-moz-read-write, img:-moz-read-write[usemap], area:-moz-read-write,
object:-moz-read-write, object:-moz-read-write[usemap],
applet:-moz-read-write, hr:-moz-read-write, button:-moz-read-write,
select:-moz-read-write,
a:-moz-read-write:link img, a:-moz-read-write:visited img,
a:-moz-read-write:active img, a:-moz-read-write:-moz-only-whitespace[name] {
cursor: default;
}
*|*:any-link:-moz-read-write {
cursor: text;
}
/* Prevent clicking on links from going to link */
a:link:-moz-read-write img, a:visited:-moz-read-write img,
a:active:-moz-read-write img {
-moz-user-input: none;
}
/* We suppress user/author's prefs for link underline,
so we must set explicitly. This isn't good!
*/
a:link:-moz-read-write {
color: -moz-hyperlinktext;
}
/* Allow double-clicks on these widgets to open properties dialogs
XXX except when the widget has disabled attribute */
*|*:-moz-read-write > input:-moz-read-only,
*|*:-moz-read-write > button:-moz-read-only,
*|*:-moz-read-write > textarea:-moz-read-only {
user-select: all;
-moz-user-input: auto !important;
-moz-user-focus: none !important;
}
/* XXX Still need a better way of blocking other events to these widgets */
select:-moz-read-write,
*|*:-moz-read-write > input:disabled,
*|*:-moz-read-write > input[type="checkbox"],
*|*:-moz-read-write > input[type="radio"],
*|*:-moz-read-write > input[type="file"],
input[contenteditable="true"]:disabled,
input[contenteditable="true"][type="checkbox"],
input[contenteditable="true"][type="radio"],
input[contenteditable="true"][type="file"] {
user-select: all;
-moz-user-input: none !important;
-moz-user-focus: none !important;
}
*|*:-moz-read-write > input[type="hidden"],
input[contenteditable="true"][type="hidden"] {
border: 1px solid black !important;
visibility: visible !important;
}
*|*::-moz-display-comboboxcontrol-frame {
user-select: text;
}
option:-moz-read-write {
user-select: text;
}
/* the following rules are for Image Resizing */
span[\_moz_anonclass="mozResizer"] {
width: 5px;
height: 5px;
position: absolute;
border: 1px black solid;
background-color: white;
user-select: none;
z-index: 2147483646; /* max value -1 for this property */
}
/* we can't use :active below */
span[\_moz_anonclass="mozResizer"][\_moz_activated],
span[\_moz_anonclass="mozResizer"]:hover {
background-color: black;
}
span[\_moz_anonclass="mozResizer"].hidden,
span[\_moz_anonclass="mozResizingShadow"].hidden,
img[\_moz_anonclass="mozResizingShadow"].hidden,
span[\_moz_anonclass="mozGrabber"].hidden,
span[\_moz_anonclass="mozResizingInfo"].hidden,
a[\_moz_anonclass="mozTableRemoveRow"].hidden,
a[\_moz_anonclass="mozTableRemoveColumn"].hidden {
display: none !important;
}
span[\_moz_anonclass="mozResizer"][anonlocation="nw"] {
cursor: nw-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="n"] {
cursor: n-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="ne"] {
cursor: ne-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="w"] {
cursor: w-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="e"] {
cursor: e-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="sw"] {
cursor: sw-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="s"] {
cursor: s-resize;
}
span[\_moz_anonclass="mozResizer"][anonlocation="se"] {
cursor: se-resize;
}
span[\_moz_anonclass="mozResizingShadow"],
img[\_moz_anonclass="mozResizingShadow"] {
outline: thin dashed black;
user-select: none;
opacity: 0.5;
position: absolute;
z-index: 2147483647; /* max value for this property */
}
span[\_moz_anonclass="mozResizingInfo"] {
font-family: sans-serif;
font-size: x-small;
color: black;
background-color: #d0d0d0;
border: ridge 2px #d0d0d0;
padding: 2px;
position: absolute;
z-index: 2147483647; /* max value for this property */
}
img[\_moz_resizing] {
outline: thin solid black;
}
*[\_moz_abspos] {
outline: silver ridge 2px;
z-index: 2147483645 !important; /* max value -2 for this property */
}
*[\_moz_abspos="white"] {
background-color: white !important;
}
*[\_moz_abspos="black"] {
background-color: black !important;
}
span[\_moz_anonclass="mozGrabber"] {
outline: ridge 2px silver;
padding: 2px;
position: absolute;
width: 12px;
height: 12px;
background-image: url("resource://gre/res/grabber.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
cursor: move;
}
/* INLINE TABLE EDITING */
a[\_moz_anonclass="mozTableAddColumnBefore"] {
position: absolute;
z-index: 2147483647; /* max value for this property */
text-decoration: none !important;
border: none 0px !important;
width: 4px;
height: 8px;
background-image: url("resource://gre/res/table-add-column-before.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
-moz-user-focus: none !important;
}
a[\_moz_anonclass="mozTableAddColumnBefore"]:hover {
background-image: url("resource://gre/res/table-add-column-before-hover.gif");
}
a[\_moz_anonclass="mozTableAddColumnBefore"]:active {
background-image: url("resource://gre/res/table-add-column-before-active.gif");
}
a[\_moz_anonclass="mozTableAddColumnAfter"] {
position: absolute;
z-index: 2147483647; /* max value for this property */
text-decoration: none !important;
border: none 0px !important;
width: 4px;
height: 8px;
background-image: url("resource://gre/res/table-add-column-after.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
-moz-user-focus: none !important;
}
a[\_moz_anonclass="mozTableAddColumnAfter"]:hover {
background-image: url("resource://gre/res/table-add-column-after-hover.gif");
}
a[\_moz_anonclass="mozTableAddColumnAfter"]:active {
background-image: url("resource://gre/res/table-add-column-after-active.gif");
}
a[\_moz_anonclass="mozTableRemoveColumn"] {
position: absolute;
z-index: 2147483647; /* max value for this property */
text-decoration: none !important;
border: none 0px !important;
width: 8px;
height: 8px;
background-image: url("resource://gre/res/table-remove-column.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
-moz-user-focus: none !important;
}
a[\_moz_anonclass="mozTableRemoveColumn"]:hover {
background-image: url("resource://gre/res/table-remove-column-hover.gif");
}
a[\_moz_anonclass="mozTableRemoveColumn"]:active {
background-image: url("resource://gre/res/table-remove-column-active.gif");
}
a[\_moz_anonclass="mozTableAddRowBefore"] {
position: absolute;
z-index: 2147483647; /* max value for this property */
text-decoration: none !important;
border: none 0px !important;
width: 8px;
height: 4px;
background-image: url("resource://gre/res/table-add-row-before.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
-moz-user-focus: none !important;
}
a[\_moz_anonclass="mozTableAddRowBefore"]:hover {
background-image: url("resource://gre/res/table-add-row-before-hover.gif");
}
a[\_moz_anonclass="mozTableAddRowBefore"]:active {
background-image: url("resource://gre/res/table-add-row-before-active.gif");
}
a[\_moz_anonclass="mozTableAddRowAfter"] {
position: absolute;
z-index: 2147483647; /* max value for this property */
text-decoration: none !important;
border: none 0px !important;
width: 8px;
height: 4px;
background-image: url("resource://gre/res/table-add-row-after.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
-moz-user-focus: none !important;
}
a[\_moz_anonclass="mozTableAddRowAfter"]:hover {
background-image: url("resource://gre/res/table-add-row-after-hover.gif");
}
a[\_moz_anonclass="mozTableAddRowAfter"]:active {
background-image: url("resource://gre/res/table-add-row-after-active.gif");
}
a[\_moz_anonclass="mozTableRemoveRow"] {
position: absolute;
z-index: 2147483647; /* max value for this property */
text-decoration: none !important;
border: none 0px !important;
width: 8px;
height: 8px;
background-image: url("resource://gre/res/table-remove-row.gif");
background-repeat: no-repeat;
background-position: center center;
user-select: none;
-moz-user-focus: none !important;
}
a[\_moz_anonclass="mozTableRemoveRow"]:hover {
background-image: url("resource://gre/res/table-remove-row-hover.gif");
}
a[\_moz_anonclass="mozTableRemoveRow"]:active {
background-image: url("resource://gre/res/table-remove-row-active.gif");
}