414 Commits

Author SHA1 Message Date
Greg Spencer
a60bf8e23a
Spell check of Flutter docs (#45200)
No code changes, just comments: I spell-checked all the comments in the repo.
2019-11-22 08:43:55 -08:00
Gary Qian
6b66d79436
Track and use fallback TextAffinity for null affinity platform TextSelections. (#44622) 2019-11-20 16:37:10 -08:00
Greg Spencer
d026f2d948
Properly interpret modifiers on GLFW key events (#44844)
GLFW key events set modifier flags based on what the modifier state was before the event, unlike every other platform. This modifies the GLFW key support to take that into account.

As a small cleanup, I fixed a documentation macro reference for the modifier flags that was duplicate
2019-11-18 14:07:08 -08:00
Ian Hickson
62e4ab87b3
Update our deprecation style. (#44618) 2019-11-15 19:21:53 -08:00
Greg Spencer
dd90ff429d
Remove TextRange, export it from dart:ui (#44422)
This removes TextRange from the framework and moves it to the engine, in preparation for using it to return text ranges from the text extent APIs, and updates the APIs that use Paragraph.getWordBoundary (there was only one) to expect a TextRange or  a pair of ints temporarily until the engine side returns TextRanges, so that I can convert over without breaking the builds.
2019-11-08 18:57:44 -08:00
Greg Spencer
c921c5ae67
Add macOS fn key support. (#44410)
This adds support for the fn key on macOS. It adds it to the key mappings as a supplemental mapping that overwrites the one from the Chrome headers, since the chrome headers have a TODO, but no implementation of the key.

Also, ignore the fn key entirely on macOS. This is because On macOS laptop keyboards, the fn key is used to generate home/end and f1-f12, but it ALSO generates a separate down/up event for the fn key itself. Other platforms hide the fn key, and just produce the key that it is combined with, so to keep it possible to write cross platform code that looks at which keys are pressed, the fn key is ignored.
2019-11-08 16:30:38 -08:00
Greg Spencer
028ed7122a
Synchronize modifier keys in RawKeyboard.keysPressed with modifier flags on events. (#43948)
Currently, we listen to keyboard events to find out which keys should be represented in RawKeyboard.instance.keysPressed, but that's not sufficient to represent the physical state of the keys, since modifier keys could have been pressed when the overall app did not have keyboard focus (especially on desktop platforms).

This PR synchronizes the list of modifier keys in keysPressed with the modifier key flags that are present in the raw key event so that they can be relied upon to represent the current state of the keyboard. When synchronizing these states, we don't send any new key events, since they didn't happen when the app had keyboard focus, but if you ask "is this key down", we'll give the right answer
2019-11-06 14:52:55 -08:00
Dan Field
7957c56997
Respond to TextInputClient.reattach messages. (#43959) 2019-11-04 16:28:03 -08:00
Nurhan Turgut
97cf355b9d
Adding handling of TextInputClient.onConnectionClosed messages handli… (#43466)
* Adding handling of TextInputClient.onConnectionClosed messages handling to Framework

* Adding more test cases for closing connection to editable_text_test

* fixing analyze error.

* Fixing analyze error in the test file

* Fixing comments on the new method

* Adding more closing connection examples.

* Indentation change

* Remove auto-add white space

* Changing the oncloseconnection behaviour to stop editing. Updating the tests

* Addressing PR comments. Added explicit log for method channnels to the tests. Added comments to the interfaces.

* add more documentation
2019-11-04 13:35:18 -08:00
gaaclarke
53dcf92f7d
Fixed bug where we could accidently call a callback twice. (#43467) 2019-10-29 16:04:38 -07:00
Justin McCandless
6e888dac24
Add enableSuggestions flag to TextField and TextFormField (#42550)
This flag controls Android's keyboard suggestions on/off
2019-10-28 15:31:52 -07:00
Albertus Angga Raharja
b31ca1aaca
Add more structure to errors (continuation of #34684) (#42640)
* Add structured errors in Animations, TabView, ChangeNotifier

* Add structured error on MaterialPageRoute, BoxBorder, DecorationImagePainter, TextSpan

* Add structured errors in Debug

* Fix test errors

* Add structured errors in Scaffold and Stepper

* Add structured errors in part of Rendering Layer

* Fix failing test due to FloatingPoint precision

* Fix failing tests due to precision error and not using final

* Fix failing test due to floating precision error with RegEx instead

* Add structured error in CustomLayout and increase test coverage

* Add structured error & its test in ListBody

* Add structured error in ProxyBox and increase test coverage

* Add structured error message in Viewport

* Fix styles and add more assertions on ErrorHint and DiagnosticProperty

* Add structured error in scheduler/binding and scheduler/ticker

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Add structured error in AssetBundle and TextInput

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Add structured errors in several widgets #1

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Remove unused import

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Add assertions on hint messages

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Fix catch spacing

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Add structured error in several widgets part 2 and increase code coverage

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Add structured error in flutter_test/widget_tester

* Fix floating precision accuracy by using RegExp

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Remove todo to add tests in Scaffold showBottomSheet

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Fix reviews by indenting lines and fixing the assertion orders

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Fix failing tests due to renaming class

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Try skipping the NetworkBundleTest

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>

* Remove leading space in material/debug error hint

Signed-off-by: Albertus Angga Raharja <albertusangga@google.com>
2019-10-28 11:00:49 -07:00
Jacek Fedoryński
e458fd08d9 Add repeatCount to RawKeyEventDataAndroid (#42861)
* Add repeatCount to RawKeyEventDataAndroid

Adds a new field to RawKeyEventDataAndroid and sets it to the value
passed from the engine. It is the value returned by
KeyEvent.getRepeatCount(). This allows us to differentiate between
events generated by a new keypress and repeated events when a key is
held down.

* Add test for RawKeyEventDataAndroid.repeatCount
2019-10-24 11:06:03 -07:00
Erick (CptBlackPixel)
12b7b08da5 Reading deviceId for RawKeyEventDataAndroid event (#42235)
This PR adds a new property on RawKeyEventDataAndroid to hold the deviceId from which that event was generated. The deviceId is been sent from the engine on the changes from this PR: flutter/engine#12958

With this, we will be able to identify from where the event came from, adding the ability to support local multiplayer games, with multiple gamepads.
2019-10-18 12:32:21 -07:00
Greg Spencer
a7aa66164e
Re-implement hardware keyboard text selection. (#42879)
This re-implements keyboard text selection so that it will work on platforms other than Android (e.g. macOS, Linux, etc.).

Also, fixed a number of bugs in editing selection via a hardware keyboard (unable to select backwards, incorrect conversion to ASCII when cutting to clipboard, lack of support for CTRL-SHIFT-ARROW word selection, etc.).

Did not address the keyboard locale issues that remain, or add platform specific switches for the bindings. All that will need some more design work before implementing them.

Related Issues
Fixes #31951
2019-10-17 15:11:44 -07:00
gaaclarke
ed1d5a8f1c
Added SystemNavigator.pop "animated" argument. (#41820) 2019-10-08 10:05:30 -07:00
gaaclarke
75c07ef1a6
Updated the docstring for SystemNavigator.pop.
It had an Android bias and was incorrect for iOS.
2019-10-02 15:36:07 -07:00
Josh
8b9e144e6a Added notice to docs that setPreferredOrientations does not always work on iPad (#40743) 2019-10-02 15:32:52 -07:00
Mouad Debbar
e045ef2969
Keymap for Web (#41397) 2019-10-01 14:10:53 -07:00
chunhtai
0ca5e71f28
Implement system fonts system channel listener (#38930)
* Implement system fonts system channel listener
2019-09-24 12:29:03 -07:00
Alexandre Ardhuin
b873162194
fix some bad indentations (#41172) 2019-09-24 21:03:37 +02:00
Nurhan Turgut
f6e77a9ee5
Fixing a text editing bug happening when text field changes. (#41108)
* Carrying last size and transform information to TextInputConnection. Doing this we are making sure that the size/transform information from the previous connection will be removed, when connection changes.

* remove unused lastsize and lasttransform values

* Adding unit tests. Adressing comments.
2019-09-24 09:25:39 -07:00
Greg Spencer
0e6cb28dbe
Add fake keyboard key generation to the testing framework (#40706)
There were four or five different implementations in various tests for sendFakeKeyEvent, which roughly all did the same thing. I was going to add yet another one, and decided that it needed to be generalized and centralized. This replaces those instances with something that just takes a LogicalKeyboardKey so that it's self-documenting, and can be used with multiple platforms.

This adds two functions to widget tester: sendKeyDownEvent and sendKeyUpEvent which simulate key up/down from a physical keyboard. It also adds global functions simulateKeyDownEvent and simulateKeyUpEvent that can be called without a widget tester. All are async functions protected by the async guard.
2019-09-24 08:14:38 -07:00
Alexandre Ardhuin
e9965f5636
add missing trailing commas in packages/flutter (#41076) 2019-09-24 08:05:41 +02:00
Alexander Aprelev
bd929c4a52 Revert "Use separate isolate for image loading. (#34188)" (#40984)
This reverts commit b12bdd0ea13619903b9a56164c69e7e62410b723 as it
breaks existing tests that expect image loaded after certaing number of
pupms. With image loading done on separate isolate pumping is not
guaranteed to get image loaded.
2019-09-20 10:23:51 -07:00
gaaclarke
71d75e3e0a
Channel buffers (#40165)
Started reading stored channel messages from ui.channelBuffers when handlers get set.
2019-09-19 16:58:54 -07:00
Alexander Aprelev
b12bdd0ea1
Use separate isolate for image loading. (#34188)
* Use separate isolate for image loading. Use TransferableTypedData to const-cost receive bytes from that isolate.
2019-09-18 20:38:54 -07:00
Greg Spencer
63e096b4ac
Update keyboard maps (#40697)
This updates the keyboard maps to use updated HID codes for game controller buttons (from Chrome), and to encode that GLFW "super" keys are what we call "meta" keys (i.e. Windows key or Command key).
2019-09-17 13:24:54 -07:00
Alexandre Ardhuin
df4bf453ab
more UI-as-code (#35516) 2019-09-17 16:23:44 +02:00
Francisco Magdaleno
deb155e89a
[macos] Check for special keys before creating a logical key (#37901) 2019-09-03 09:13:01 -07:00
Mouad Debbar
a2957c571e
Upstream changes necessary for text editing in flutter web (#39344) 2019-08-30 10:00:03 -07:00
Matt Carroll
d5c5ac62ad
Revert "Add handling of 'TextInput.clearClient' message from platform to framework (#35054). (#35100)" (#39523)
This reverts commit 324fe201b0231fcc39fff8c99fee1b22425c4bc0.
2019-08-29 21:52:33 -07:00
Chris Yang
7f5540faac
PlatformViewLink handles focus (#38643)
In the build of PlatformViewLink, Added a FocusNode wrapping around the surface widget.
The focus node will ask platform view to clear its focus when necessary through [PlatformViewController.clearFocus].
The platform view can notify the framework it wants to gain focus by calling [PlatformViewCreationParams.onFocusChanged]
2019-08-26 12:04:17 -07:00
adazh
93c32c4ff6
Moved the default BinaryMessenger instance to ServicesBinding (#38464)
* Moved the default BinaryMessenger instance to ServicesBinding

This reverts commit 821602aef36983d416836e5d6fcc78fe9d3facb1.

* Added assertion in defaultBinaryMessenger. Also fixed the devicelab tests.
2019-08-21 16:47:42 -07:00
Matt Carroll
324fe201b0
Add handling of 'TextInput.clearClient' message from platform to framework (#35054). (#35100) 2019-08-19 15:49:32 -07:00
Nurhan Turgut
c2e2f093ec
Navigator change backup (#38494)
* Broadcasting popRoute and pushRoute methods via SystemChannels.navigation. These messages will be used in flutter_web to detect the route

* Broadcasting popRoute and pushRoute methods via SystemChannels.navigation. These messages will be used in flutter_web to detect the route

* Reverting all unrelated formatting changes.

* Adding unit tests. Adding more comments.

* Changing string method names with constant strings.

* Fixing a constant strings.

* Fixing analyzer error.

* Fixing more white space.

* Changing the method names. Adding comments to the SystemChannels

* Comment and code name fixes

* replacing the comment with reviewer suggestion.

* addinf systemchannels.navigation mock to test bindings

* Adding a new class for sending route change notrifications. The nottifications are only sent on web. This should fix breaking android/ios

* using new class RouteNotificationMessages in navigator

* Fixing analyzer issues.

* fixing cycle dependency

* fixing github analyze error

* dartfmt two new classes. trying to fix anayze errors

* Update route_notification_messages.dart

* trying to fix white space errors
2019-08-16 13:17:45 -07:00
Chris Yang
5acf63d35a
PlatformViewLink, handling creation of the PlatformViewSurface and dispose PlatformViewController (#37703)
* link

* review fixes

* review fixes

* remove extra line
2019-08-15 12:16:38 -07:00
Francisco Magdaleno
760635e6db
[linux] Receives the unmodified characters obtained from GLFW (#34752) 2019-08-13 18:14:36 -07:00
Michael Klimushyn
821602aef3
Revert "Moved the default BinaryMessenger instance to ServicesBinding (#37489)" (#37983)
This reverts commit 92ef2b9ce1d4e54d5efb3e6a962e9e724dc7efeb.

This requires either runApp() or
WidgetsFlutterBinding.ensureInitialized() to have been called before
using any MethodChannels. Plugins broadly rely on MethodChannels and
right now there's no general requirements that they be constructed
within the runApp call, so the ecosystem breakages from this are broader
than originally thought. Reverting for now.
2019-08-09 16:30:30 -07:00
adazh
92ef2b9ce1
Moved the default BinaryMessenger instance to ServicesBinding (#37489) 2019-08-09 10:13:40 -07:00
Chris Yang
333c961884
Extract common PlatformView functionality: Gesture and PointerEvent (#37497) 2019-08-06 09:05:29 -07:00
Chris Yang
9553f8daa7
Extract common PlatformView functionality: Painting and Semantics (#36955)
* painting and semantics

* more comments

* fixing ci

* review fixes

* add assert for id

* rename custom layer factory to layer builder

* review updates

* partial review fixes

* some doc updates

* more doc updates

* only expose getter for id in PlatformViewController

* doc updates/removing all the  references

* remove extra

* more doc updates

* some doc updates

* more doc fixes

* review fixes
2019-08-02 10:07:59 -07:00
Justin McCandless
b2497822e8
Android visible password input type support (#36695)
Android devices can now use the VisibleText input keyboard type.
2019-07-29 15:15:57 -07:00
Yegor
ecd89fb7ad
fix message codecs for the Web (#36549) 2019-07-19 13:49:15 -07:00
Alexandre Ardhuin
c7408be181
prepare for lint update of prefer_final_fields (#35059) 2019-06-25 19:39:34 +02:00
Alexandre Ardhuin
fecf99ff1e
enable lint avoid_bool_literals_in_conditional_expressions (#35055) 2019-06-25 17:40:05 +02:00
Jonah Williams
9d724d4c44
Compatibility pass on flutter/widgets tests for JavaScript compilation. (8) (#33377) 2019-06-11 14:51:03 -07:00
Amir Hardon
7d27550f6f
Respond to AndroidView focus events. (#33901)
When an AndroidView gains focus we invoke the(newly introduced)
'TextInput.setPlatformViewClient' text_input system channel method
which sets the platform view as the text input target.

When the AndroidView loses focus we send a clearFocus message to
platform views system channel(so the engine can clear the focus from
the platform view).

This PR is going to land before the engine implementation is rolled to
the framework, we swallow MissingPluginException for the newly
introduced method channel methods so this is a no-op before the engine
is ready(after the engine is rolled with the corresponding change I'll
remove the logic to swallow the exceptions).

The engine counterpart is in: flutter/engine#9203
2019-06-06 14:49:31 -07:00
Greg Spencer
f0978c225a
Game controller button support (#33868)
This adds support for game controller buttons. It adds some supplemental USB HID codes that aren't available from the Chromium source code, and maps those on Android to the game pad buttons that Android supports. Other platforms are not supported yet.
2019-06-05 16:23:17 -07:00
Greg Spencer
387e2b0602
Add actions and keyboard shortcut map support (#33298)
This implements the keyboard shortcut handling and action invocation in order to provide a place in the infrastructure for keyboard events to trigger actions. This will allow binding of key events to actions like "move the focus to the next widget" and "activate button".
2019-06-04 11:30:24 -07:00