diff --git a/lib/web_ui/lib/src/engine/text_editing.dart b/lib/web_ui/lib/src/engine/text_editing.dart index 957087eccccfa..3491fcc7d4bc4 100644 --- a/lib/web_ui/lib/src/engine/text_editing.dart +++ b/lib/web_ui/lib/src/engine/text_editing.dart @@ -341,6 +341,10 @@ class TextEditingElement { _subscriptions.add(domElement.onKeyUp.listen((event) { _handleChange(event); })); + /// In Firefox the context menu item "Select All" does not work without + /// listening to onSelect. On the other browsers onSelectionChange is + /// enough for covering "Select All" functionality. + _subscriptions.add(domElement.onSelect.listen(_handleChange)); } else { _subscriptions.add(html.document.onSelectionChange.listen(_handleChange)); } @@ -379,7 +383,7 @@ class TextEditingElement { throw UnsupportedError( 'Unsupported input type: ${inputConfig.inputType}'); } - html.document.body.append(domElement); + domRenderer.glassPaneElement.append(domElement); } void _removeDomElement() { diff --git a/lib/web_ui/test/text_editing_test.dart b/lib/web_ui/test/text_editing_test.dart index 9f41dd320919b..78c584189575e 100644 --- a/lib/web_ui/test/text_editing_test.dart +++ b/lib/web_ui/test/text_editing_test.dart @@ -75,6 +75,10 @@ void main() { expect(document.activeElement, input); expect(editingElement.domElement, input); + // Input is appended to the glass pane. + expect(domRenderer.glassPaneElement.contains(editingElement.domElement), + isTrue); + editingElement.disable(); expect( document.getElementsByTagName('input'),