summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Merge remote-tracking branch 'origin/dev' into wip/scenegraphng"wip/scenegraphngLaszlo Agocs2019-05-28234-3284/+5712
|\
| * Merge remote-tracking branch 'origin/dev' into wip/scenegraphngLaszlo Agocs2019-05-28234-3284/+5712
| |\ |/ / | | | | Change-Id: Ie7dbc5a7d9eccd1613283134a1b47ab597d036d5
| * Don't set childMode on a StateMachineUlf Hermann2019-05-271-14/+18
| | | | | | | | | | | | | | | | | | | | | | This leads to invalid state machines and is rejected since cfdbfcebbda5f26b89c70df6b191b17ef242e9d7 in qtbase. Rather, add a separate state in between to set the ParallelStates mode. Change-Id: Ia08b286da4c60a26d3043179250f81fb4328864f Fixes: QTBUG-75976 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
| * Merge "Merge remote-tracking branch 'origin/5.13' into dev"Qt Forward Merge Bot2019-05-261-0/+4
| |\
| | * Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-05-261-0/+4
| | |\ | |/ / | | | | | | Change-Id: I73d323b65c628166ac2d422f7e8af2062200d53c
| | * Blacklist tst_QQuickListView::currentIndex() on macOS 10.12Ulf Hermann2019-05-221-0/+4
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-75960 Change-Id: I3321bf54a11c1daf8d4e1818c5b860359c34fdec Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * | Remove null pointer checks for "this" from QQmlContextData::resolvedUrl()Pavel Tumakaev2019-05-231-15/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to ISO/IEC 14882 §5.2.5/3 "If E1 has the type “pointer to class X,” then the expression E1->E2 is converted to the equivalent form (*(E1)).E2;". Thus, as QQmlContextData::resolvedUrl() is non-static method, it cannot be called on a null pointer because it leads to undefined behavior, and “this“ in QQmlContextData::resolvedUrl() cannot be a null pointer. According to this document: https://gcc.gnu.org/gcc-6/porting_to.html , starting from version 6, GCC optimizations remove null pointer checks for "this", since "the this pointer can never be null, which is guaranteed by the language rules." Thus, on the one hand the “if (ctxt)“ check in QQmlContextData::resolvedUrl() does nothing, on the other “if (engine“ check leads to undefined behavior if ctxt/this == nullptr. Task-number: QTBUG-75983 Change-Id: Idfb1e26758d83223bb0845139d63e2e8e80dc714 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * | Manual test, TableView: improve test with syncView functionalityRichard Moe Gustavsen2019-05-232-26/+132
| | | | | | | | | | | | | | | | | | | | | | | | Add some more TableViews and buttons that can be used to test the new syncView functionality. Change-Id: I0ad649598ef2ff08487c9a0b450861c27535c62c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | Tooling: Guard use of QRegularExpressionUlf Hermann2019-05-232-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Qt we are using might be compiled without regular expressions. The epxression in qqmldebugserver.cpp is actually not needed as QString::toInt() can do this check for us. The ones in globalinspector.cpp are only for reformatting the name in a nicer way for the selection highlight. We can skip those in case there are no regular expressions. Change-Id: I71e3f0314d8a68a41c3da2568207e311c6b41d1b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Tooling: Use QRegularExpression rather than QRegExpUlf Hermann2019-05-222-6/+4
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-72588 Change-Id: Ib79107ea01de2dee49dc783f1d88807d1852c3ba Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
| * | StateMachine: Warn about invalid childMode changesErik Verbruggen2019-05-212-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In QML there is 1 way to set the childMode property on a state machine, so for invalid values we can generate a nice warning. The fix for the behavior of the underlying QStateMachine is in cfdbfcebbda5f26b89c70df6b191b17ef242e9d7 Task-number: QTBUG-49975 Change-Id: I142bdaed2e5336b95bf659066143ac6c2cadeb62 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * | Remove now dead V4_BOOTSTRAP #if-eryUlf Hermann2019-05-136-29/+0
| | | | | | | | | | | | | | | | | | | | | Change-Id: I04f8f69ed8ee415ca330e2f7beeffc4ee4c38e65 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Remove V4_BOOTSTRAP condition around header verificationUlf Hermann2019-05-091-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's unclear why that was needed. Change-Id: I0b4d4ebe1992cd2252cfc3eb10baa7f1b3ae1a5a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Move valueAsNumber into ExecutableCompilationUnitUlf Hermann2019-05-139-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reduces our dependence on QV4::Value in the devtools. Change-Id: I4b3f937bc08c16f7e2543fdc5cc34c0cfb121f8f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | QQuickTableView: don't recalculate content width while flickingRichard Moe Gustavsen2019-05-152-98/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are now three mechanisms in TableView that works together to ensure that the table ends up edge-to-edge with the content view. They are applied in the following order: 1. Adjust the content size, based on the predicted size of the table. 2. Adjust the origin and endExtend on the fly, if the content size is wrong. 3. Move the table directly to where it should be, in case we don't have time to wait for the origin to change. We could have, strictly speaking, setteled with just one of them, but choose to use them all at the same time for best flicking experience. Still, 1. and 2. sometimes step on each others feet when they both detect that something is a bit off, and adjust. So rather than adjusting the size of the content view every time we load a new row or column, we just keep the first prediction. And then we leave all later ajustments to 2. and 3. This turns out to be a more stable, and will avoid some glitches that occur when flicking using a scrollbar, if several mechanisms kick in at the same time. Change-Id: Ib551a0bf8f6ee59ac9b3556b9462c91adb9cc80b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | Add missing #include, needed for use of QLinkedList<>Edward Welbourne2019-05-201-0/+1
| | | | | | | | | | | | | | | Change-Id: I9ddc66784f986fe0e9de06a8b05844db90eb6802 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Remove QUrl-related special casing in the compilerUlf Hermann2019-05-102-10/+1
| | | | | | | | | | | | | | | | | | | | | QUrl is being added to the bootstrap set. Change-Id: Ia96bbcf6e0ef808435ecddfa114fdcd213361bbf Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Restore value bindings when disabling a Binding elementErik Verbruggen2019-05-177-5/+401
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We previously only restored script bindings that were replaced by a Binding. Now we handle both. [ChangeLog] QML Binding elements now support restoring previous values of the bound property when the binding is disabled. This will be the default behavior in Qt 5.15. Reliance on the old behavior of only restoring binding, not literal values results in a warning now. Fixes: QTBUG-33444 Change-Id: I833403b0645c08eee486fbd4acf5d3c7de2ef73a Reviewed-by: Michael Brasser <michael.brasser@live.com>
| * | Inline dumpConstantTable() into the only place where it's usedUlf Hermann2019-05-173-34/+27
| | | | | | | | | | | | | | | | | | | | | | | | ... and don't copy byte arrays around for each character of padding prepended to a number. Change-Id: I6963d4c9d42aedd780bec9517b4b7a2a83f10185 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Add abstraction for temporarily setting StaticData when savingUlf Hermann2019-05-174-41/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | The StaticData flag needs to be saved to disk, but removed again afterwards so that we can free() the malloc'd data. This also allows us to avoid copying all the data into a byte array before saving. Change-Id: I96513f8d98acf0ea0b4514d96376b487e8444917 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Add snapMode to DragHandlerJan Arve Sæther2019-05-165-2/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes snap behavior slightly. Basically, it does not snap anymore if the target() item is an ancestor of the parentItem(). In addition, we add a property that enables users to change the behavior. (SnapIfPressedOutsideTarget has the old behavior) [ChangeLog][QtQuick][Event Handlers] Added DragHandler.snapMode which can be used to configure under which conditions the dragged item is snapped to be below the cursor. The default mode is SnapAuto. The old behavior can be obtained through the SnapIfPressedOutsideTarget mode. Fixes: QTBUG-75661 Change-Id: Ibc00e8fbe31b779f8e817af1505e76425467d27a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * | Split CompiledData::CompilationUnit in twoUlf Hermann2019-05-1677-1300/+1594
| | | | | | | | | | | | | | | | | | | | | | | | We need a CompilationUnit that only holds the data needed for compilation and another one that is executable by the runtime. Change-Id: I704d859ba028576a18460f5e3a59f210f64535d3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-05-1629-88/+394
| |\ \ | | |/ | | | | | | Change-Id: I192cb06f3b92869699cb3e072f2c6c1e8dbb1ef4
| | * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-05-1617-59/+364
| | |\ | | | | | | | | | | | | Change-Id: Ia93dc734ce25b3134b0f905f473a0c30777ceaf1
| | | * Do not synthesize a double click event if the event point moved too farJan Arve Sæther2019-05-153-16/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to respect QPlatformTheme::TouchDoubleTapDistance Fixes: QTBUG-75770 Change-Id: I2adc7097bb29cb93beb2609a8a806a666856a0c8 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | | * TextEdit: use I-beam cursor by default, pointing cursor for linksShawn Rutledge2019-05-155-1/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | But do not interfere with any custom cursor that user code sets: remember and restore it when the mouse is no longer hovering a link. Task-number: QTBUG-14769 Fixes: QTBUG-50482 Change-Id: Ia4633c22d0ad42d07203d4dc3e330b90a5f94a7c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| | | * Elaborate on the meaning of values held by basic typesSimon Hausmann2019-05-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Explicitly mention the copying semantics as well as how they are called in the JavaScript language. Task-number: QTBUG-75308 Change-Id: I82b8c6324133d3265b66325c6f67b19b344e0470 Reviewed-by: Kavindra Palaraja <kpalaraja@luxoft.com> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
| | | * Add test for cached getter lookupMichal Klocek2019-05-092-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-75335 Change-Id: I14480018f2429eb5ec744a50640642eee09ce3f3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | | * Document TapHandler.tapped and [single|double]Tapped eventPoint argumentShawn Rutledge2019-05-092-6/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Amends b8fd580cb3453b3850c36765c4b2537538d2f4f8 to add documentation. The eventPoint is important to get ephemeral state from the pointing device: which button was released (thus triggering the tap), which device it was, and where the release occurred. Users may expect to use the point property, but QQuickHandlerPoint::reset(QQuickEventPoint *) resets every property of the point at the same time, so the architecture currently does not allow for mixed state, i.e. having correct button state but still holding leftover position information. It may be surprising for users, but the changes to the point property are an atomic transaction that occurs before the signal. Task-number: QTBUG-61749 Task-number: QTBUG-64847 Change-Id: I33e0e232084beba8e10d8b02fa3bf85f36293358 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| | | * Don't overwrite states if role is assigned after a stateJan Arve Sæther2019-05-094-36/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We therefore need to keep track of which states have been explicitly set or not in order to know which ones should get initialized with their defaults. Change-Id: I49fdae82288f04ea4f50d45735a93434ac02abec Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| | * | Avoid illegal downcasts in texture and shader handlingAllan Sandfeld Jensen2019-05-157-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes bad type-cast during destruction when objects no longer has the full type they used to. Detected by UBSAN. Change-Id: I4867091901d70d5a882656834eb97a704def1751 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Compile fixJarek Kobus2019-05-152-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It fixes the following issue: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare] Change-Id: I4b896f49ff753a5cf79cd1e40e76815f712eec89 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| | * | Do not take a reference of nullptrAllan Sandfeld Jensen2019-05-142-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | References are not allowed to be null, but we pass a nullptr as receiver in QQmlContextWrapper::resolveQmlContextPropertyLookupGetter. Detected with UBSAN. Change-Id: Iaa7945fb17e4b0e549e541e47589b2f47d32ea4e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| | * | Fix illegal downcast on QQmlEngine destructionAllan Sandfeld Jensen2019-05-141-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make QQmlEnginePrivate::isEngineThread() legal to call during QQmlEngine destruction. Change-Id: I2bae9d70883cf8013f39f2046ebe83bb8dbcd46b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Fix illegal downcast in QQuickStateGroup destructionAllan Sandfeld Jensen2019-05-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One state hadn't the group unset and ended up with a non-null group pointer that was no longer a group. Change-Id: I916fdab577c90e859a49b97426396c78e7ff426f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | QQuickTableView: change implementation of enforceTableAtOrigin()Richard Moe Gustavsen2019-05-114-39/+365
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We set the size of the content view to be the size of the complete table. The problem is that the exact size will always be just a prediction, since we would otherwise need to iterate over all rows and column up front, to be able calculate the exact size. This is not acceptable when using non-trival table models. A side effect of this, is that is will be possible to flick the viewport further out than the actual end of the table, if the content view turns out to be larger than the table itself. From before we used to just move the whole table back into the viewport when that happened, which could be seen as a sudden jump of the table to a new position. This change will improve this logic so that we can avoid most visual jumps. Instead of moving the table around, QQuickFlickable supports moving the origin instead. So when we see that the table is not in sync with the content view, we simple move the origin to the edge of the table. The effect is that any flicking or ongoing momentum animation in QQuickFlickable will continue as if nothing happened. This is also the same logic used by QQuickListView. Change-Id: I6060b7e84b9489c8fa569e6ff41b958e3871f8e7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | | Don't include qv4enginebase_p.h in qmldevtoolsUlf Hermann2019-05-106-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't need it and we don't need to check for V4_BOOTSTRAP in there. Shuffle some includes around to provide everything we do need. Change-Id: I3e75f1c6f9dc518006aabc9dcee21e5153899ac5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Make sure we don't include qv4stackframe_p.h in qmldevtoolsUlf Hermann2019-05-105-51/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The only thing we need is CallData, which is now provided as separate file. Change-Id: Iccbab67ac30d09077075b200f18d1d694f3ecb2a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Move qv4string{_p.h|.cpp} out of the devtoolsUlf Hermann2019-05-108-47/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The only thing we actually need is toArrayIndex() and that is a static method. We provide it in a separate file. Change-Id: I86b11e3d81a319202a0babacd17d87e7816ac88a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Add Markdown support to TextShawn Rutledge2019-05-096-4/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | "Markers" (only checkboxes so far) are a new feature too. Change-Id: I5a0ea337ec6cf8bdadf3b4729caaa579e8b625b5 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * | | QQuickTableView: sync viewport rect with syncView when rebuildingRichard Moe Gustavsen2019-05-092-5/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When moving contentX/Y, we also need to ensure that the viewport rect reflects the change. Otherwise we'll end up loading rows and columns somewhere else then under the viewport. Change-Id: Ifbd3d66b9b3a822414aefde9b5bd088274dfa2ad Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | | Generate the compilation unit checksum whenever we have MD5Ulf Hermann2019-05-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is actually not dependent on V4_BOOTSTRAP. There are various conditions that might influence QCryptographicHash. Change-Id: Iad0384a2cf8360e6db8ef398bd45f63161c0b70f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-05-0914-38/+150
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qqmlirbuilder.cpp Change-Id: I2cfda470515e2df778ad3c89105c07344af07c6d
| | * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-05-0814-38/+150
| | |\ \ | | | |/ | | | | | | | | Change-Id: I3eb5d1affe64b6ae709d1154cc37de91db3816b6
| | | * Accessibility: Make sure StaticText is marked read-onlyFrederik Gladhorn2019-05-075-4/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Test more of the text properties. This is still very incomplete, but a small step forward. Also make sure that editable text reports the editable state. Fixes: QTBUG-75002 Change-Id: I9e43c980d8fa91671acb4e40e5d9162854884ee7 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| | | * Avoid std::function in qqmlirbuilder.cppUlf Hermann2019-05-072-22/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some compilers seem to miscompile this construction. Furthermore, it doesn't really add to the readability of the code. Inline the code in question at the only place it's used and avoid most of the const_cast by adding a non-const accessor to CompiledData::Unit. Fixes: QTBUG-75392 Change-Id: I015317f28a92817d08d616cc35956745758d7847 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | | * Add Q_TRACE calls to QtQml for QML profiler trace pointsMilian Wolff2019-05-054-7/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds tracepoints for LTTng/ETW at the positions that are also used by the QML profiler within QtQml. I.e. with the tracepoints here, you'll see which QML function is being executed which is already quite helpful. This will allow us to bridge the gap between C++ and QML when tracing with LTTng/ETW. Additionally, you'll also be able to see kernel tracepoints which bridges another gap. Combined, this approach can give much deeper insights into what the (embedded) system is doing compared to just looking at the QML profiler alone. Change-Id: Ia8f71bf6d44b7f51c3c5aaa38f032675604aeca6 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
| | | * Add .qmake.stash to .gitignoreMitch Curtis2019-05-031-0/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I9465c71e870332c275ac7d2476096b348af33b99 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | | * Improve Context2D's line dash-related documentationMitch Curtis2019-05-031-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix spelling errors, punctuation, and links. Change-Id: I79154d0da6acf403903f102655d5dcb64240b137 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | | * QQuickTextControl: Emit cursorPositionChanged() when handling IM eventVova Mshanetskiy2019-05-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickTextControl and consequently QQuickTextEdit did not emit cursorPositionChanged() signal when cursor position was changed by a QInputMethodEvent with a QInputMethodEvent::Selection attribute. This is especially important on Android because QAndroidInputContext uses such events extensively to move the cursor and also relies on cursorPositionChanged() signal being emitted by the focus object. If the signal is not emitted, QAndroidInputContext does not notify the virtual keyboard about cursor position change which results in various glitches. Change-Id: I46bef6185463d11507b1b96435fdc056bbe951f2 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>