aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard/inputcontext.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Prefix non-namespaced header file names with qvirtualkeyboardJarkko Koivikko2018-08-271-543/+0
| | | | | | Change-Id: Idf2447736ef72fa0fb4dfeacc3386ed7b4fe41c9 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Remove QtVirtualKeyboard namespace from the public APIJarkko Koivikko2018-08-271-90/+89
| | | | | | | | | | | | | | | | | This change removes the QtVirtualKeyboard namespace from the public API. This change was suggested in the API review. Use of namespace is uncommon in a public Qt module. Prefixed names are preferred instead. [ChangeLog] Removed QtVirtualKeyboard namespace from the public C++ API and prefixed class names with QVirtualKeyboard. The new class names are QVirtualKeyboardAbstractInputMethod, QVirtualKeyboardInputContext, QVirtualKeyboardInputEngine, QVirtualKeyboardSelectionListModel and QVirtualKeyboardTrace. Change-Id: I52d35090b544dc7e8c8c8e5632ce24c455730755 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Trim InputContext APIJarkko Koivikko2018-08-271-719/+30
| | | | | | | | | | | | | | | | | The purpose of this change is to reduce the number of public API in the virtual keyboard. This change moves a lot of stuff from InputContext to ShiftHandler and InputContextPrivate and exposes the private API to QML through InputContext.priv property. Almost all the unrelevant APIs were moved away, except some properties and methods needed by selection control. These were left intact because moving them is not trivial. Change-Id: I1f23f5f54bc21c68996cb220a66d16d34b5d14ce Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-08-181-2/+3
|\ | | | | | | Change-Id: I15908fcb9247feb82521faf092f93f0bde546ae0
| * Print the focus window when InputContext::sendKeyClick() failsMitch Curtis2018-08-171-2/+3
| | | | | | | | | | | | | | | | | | | | So far I've been unable to reproduce the flakiness with a Windows CI VM, so let's add some extra context to the warning message that is printed before the test (sometimes) fails. Task-number: QTBUG-62518 Change-Id: Idebaadb93fe2f38a94a9f096bc044b28171afafd Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Allow InputMethod to process pre-edit clickYuntaek Rim2018-08-161-8/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already have InputMethod::reselect, but it is limited to case where the current pre-edit is discarded and new range is made active. However, if an input method wants to move the cursor within pre-edit, it is not possible with the current implementation. This change adds the new API for the InputMethod which allows to handle pre-edit click before reselect happens. If the input method handles the event, reselect will not be done. This change also improves the cursor handling within pre-edit text. Previously if the cursor attribute was added to pre-edit text and the input was committed, the cursor would jump to position after pre-edit text. This is now taken into account when committing text and cursor location will be preserved. Change-Id: I0a32f75eb4e454c86dd8d4f4016ac02fc1bc6c60 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Use module include path instead of local include pathJarkko Koivikko2018-08-071-8/+8
| | | | | | | | | | | | | | | | Include all the virtual keyboard header files using module include path. Change-Id: I93eada70edeb66313b05df6cecf6a9412d7bc0c4 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Fix zero as null pointer constantJarkko Koivikko2018-08-061-5/+5
| | | | | | | | | | Change-Id: If41bd31f1fcec5647197ca6834909f4011fe87fa Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Doc: Add C++ API for the extension pluginsJarkko Koivikko2018-08-061-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | Needed for the new virtualkeyboard module, which will expose C++ interface to the virtual keyboard extension plugins. This change contains also some improvements to the existing documentation, mainly to the Techical Guide. Task-number: QTBUG-57602 Change-Id: I85194e205479deab0535f14867464b4d2ab15b89 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | Modularize virtual keyboard and add an extension interfaceJarkko Koivikko2018-08-061-7/+8
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the extension interface it is possible to add new input method and/or languages without recompiling the Qt Virtual Keyboard plugin itself. The existing input methods are now isolated into plugins. So installing a new input method is a matter of copying the corresponding extension plugin to the plugins/virtualkeyboard directory (and any collateral required by the extension plugin itself). This change also renames the HunspellInputMethod to DefaultInputMethod. This change is necessary because some other extension plugin may want to provide the default input method instead. Implementation plan =================== [x] Create virtualkeyboard-private module [x] Create plugin library [x] Define interface for input method plugin [x] Define interface for keyboard layouts [x] Move existing input methods and layouts to plugins [x] HangulInputMethod [x] HunspellInputMethod [x] Maybe create a private library for sharing between HunspellInputMethod and LipiInputMethod [x] LipiInputMethod [x] OpenWnnInputMethod [x] PinyinInputMethod [x] T9WriteInputMethod [x] TCInputMethod [o] Rename some C++ classes (too generic name?) [x] Think again replacing the QtVirtualKeyboard namespace [x] Update documentation [x] General instructions for creating a plugin [x] For the C++ interfaces too (previously removed) [ChangeLog][Important Behavior Changes] Introduce an extension interface for the virtual keyboard. All the current input methods and some special keyboard layouts (e.g. Hunspell, OpenWnn, etc.) have been moved to extensions. The extension interface allows third party to create a new input method without having to modify or rebuild the virtual keyboard. In addition, this change makes it possible to add features and languages independently by copying the desired extension to the system. [ChangeLog][Important Behavior Changes] Introduce a virtualkeyboard module, which can be linked against an extension plugin. This module provides the C++ API necessary for creating an input method. [ChangeLog][Important Behavior Changes] Wrap the entire virtual keyboard API into Qt namespace (e.g. QT_BEGIN_NAMESPACE/QT_END_NAMESPACE). Task-number: QTBUG-57602 Change-Id: I449f4429109f596a7a1df7517c81f97d4aada27c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Respect Qt::ImhNoTextHandlesJ-P Nurmi2018-02-071-1/+1
| | | | | | | Change-Id: I0f2481b2650a0a43623e8ece21d89e668c348a86 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Remove QtQuickCompiler workaroundsSamuli Piippo2018-02-051-9/+0
| | | | | | | | | QtQuickCompiler workarounds are no longer required with Qt 5.11 and need to be removed to fix build failure where private/qqmlmetatype_p.h was not found, since QT+=qml-private is no longer done by qtquickcompiler.prf. Change-Id: I48f640a5b7196b295de89589d14061011ed920fc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-201-1/+1
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I84cccac7024c1c48b6419838bb424e45cb2557d4
| * Fix "Empty filename passed to function" warningMitch Curtis2018-01-091-1/+1
| | | | | | | | | | | | | | | | Check if the string is empty before calling QFile::exists(). Change-Id: Ib6640e05272ee67dad48bd6874a5064eda4ba3dc Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Cleanup: remove unneeded Q_UNUSED macro usagesPeter Varga2017-09-061-1/+0
|/ | | | | Change-Id: Ie2301f7a7af8323090e2d71fa644e82898bee841 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-06-081-2/+9
|\ | | | | | | | | | | | | | | Conflicts: .qmake.conf src/virtualkeyboard/virtualkeyboard.pro Change-Id: Idf7682b63379b94a1d444d3528472afea77133bc
| * Consistently check qApp and equivalents before using themUlf Hermann2017-05-051-2/+9
| | | | | | | | | | | | | | | | | | | | | | We might run an event loop after destroying qApp and additional events may be generated from that. Therefore we should not access qApp unchecked from event handlers. In most places we did already check qApp for null. Now we do it everywhere. Task-number: QTBUG-60000 Change-Id: Id72bbf133989e4f8127d85ee63cba64f915d3649 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | InputContext: reuse connection to emit signalMitch Curtis2017-05-301-1/+2
|/ | | | | | Change-Id: Ie3f0ad96842910ddd71a32d06bb80a5035e7f82c Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Add full screen input mode for super wide screensJarkko Koivikko2017-01-301-23/+131
| | | | | | | | | | | | | In full screen mode the virtual keyboard replicates the contents of the focused input field to full screen input field located on top of keyboard. This mode can be activated by VirtualKeyboardSettings.fullScreenMode. [ChangeLog] Added full screen input mode for super wide screens. Change-Id: Ib2650c04767fb0945cc2bedc5b1801d254a15a41 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Avoid unnecessary input method queries during input panel animationJarkko Koivikko2017-01-141-0/+5
| | | | | | | | Add an example binding for InputContext.animating property. This is for avoiding unnecessary queries during animation. Change-Id: I654e0152ff7514e92abb7036ba51afd14ee63fc6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Prefer single input method query instead of multipleJarkko Koivikko2017-01-141-8/+11
| | | | | | | | | | | | QInputMethodQueryEvent supports multiple queries. This change uses this feature in InputContext::update() method. Using single combined query is little faster (approx. 35-40%) than 7 separate queries. Change-Id: Ie968f40c91f6b61ad52c051eccf1ca932e8d2cc5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Add new property InputContext.uppercaseJarkko Koivikko2016-12-071-0/+24
| | | | | | | | | | | This property is true when either InputContext.shift or InputContext.capsLock is true. [ChangeLog] Add new property InputContext.uppercase, which is set to true when either InputContext.shift or InputContext.capsLock is true Change-Id: I06ce14c6f626bfe176e6d914e60417ec2009cd5c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-261-16/+7
|\ | | | | | | | | | | | | Conflicts: src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf Change-Id: I2aac70f4bf65794c73096ec575c9f72bc63ec61c
| * Doc: Mark InputContext::setSelectionOnFocusObject() internalLeena Miettinen2016-10-141-0/+3
| | | | | | | | | | | | | | | | ...to suppress a QDoc warning Change-Id: I4a2689a56871566caf0dfb9e0ca66422c7d3a4c0 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Doc: Mark the remaining C++ API \internalLeena Miettinen2016-10-141-0/+2
| | | | | | | | | | | | | | | | | | | | - Hide the C++ classes entry from the help file (.qdocconf) - Remove link to the C++ classes from the module front page - Mark classes and namespace \internal - Mark the C++ module page \internal Change-Id: I07b04af84b45d048c5cbb133bd5d70f8b38f25dd Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
| * Doc: Use standard documentation structure for the moduleLeena Miettinen2016-10-131-16/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Link to separate QML types and C++ classes topics from front page (instead of listing the types there) - Turn the \page topic that lists all QML types into the \qmlmodule topic for the module - Add a \module topic to list C++ classes - Add \ingroup, \title, and \brief commands to \qmlmodule topics to display the docs correctly in tables - Add standard content to \qmlmodule topics - Remove unused \qmlmodule topics - Fix \inmodule commands as necessary Change-Id: I6f6538264fff2ad38994114a2fed7212495a18c2 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | Add InputContext::anchorRectangleJan Arve Saether2016-08-101-1/+29
|/ | | | | | | | | This will be needed for the selection handles for the dedicated vkb [ChangeLog] Added API to support VKB selection handles. Change-Id: I0cde63217c410559fbc1f8ad034c37fe959d8d28 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Hide the selection handles if the handles are clipped awayJan Arve Saether2016-05-251-2/+35
| | | | | | | | This usually happens when there is a selection, and the view is scrolled so that parts of the selection is outside of the visible input area. Change-Id: I26867c7b3db112f6627ddffc5463a9e52af380cd Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Add support for selection handles.Jan Arve Saether2016-05-201-2/+23
| | | | | | | | | [ChangeLog] Added support for selection handles for VKB. Currently, its only supported for the integrated VKB. Support for the dedicated VKB will be a separate commit Change-Id: I1f700fbc641bc68949b4cc81a8fa3aa275f34efa Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Remove 'enterprise' from QML imports and QRC prefixesMitch Curtis2016-04-261-2/+2
| | | | | | | | | [ChangeLog] Renamed QML import from "import QtQuick.Enterprise.VirtualKeyboard" to "import QtQuick.VirtualKeyboard", as the module is now open-source. Change-Id: I240a3c1b598ca4aa41d2aad02b6e548622308833 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Use {QFile,QFileInfo}::exists(f) instead of {QFile,QFileInfo}(f).exists().Anton Kudryavtsev2016-03-171-1/+1
| | | | | | | It's faster. Change-Id: Ic8fba4775a45d0eeb3cfd45eb40e51d14d3dce3f Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* License updateKalle Viironen2016-01-121-9/+17
| | | | | | Change-Id: I0dc6af72a3ae52a0b97b704df84fb1a8197aeeb8 Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com> Reviewed-by: Rainer Keller <rainer.keller@theqtcompany.com>
* Refactor class namesJarkko Koivikko2015-10-281-0/+985
Since the virtual keyboard C++ interface is wrapped inside a namespace, it is possible to get rid of "Declarative" name in the class names, that would otherwise conflict with the QML namespace in the documentation. - Rename DeclarativeSettings to VirtualKeyboardSettings - Remove "Declarative" from class names The rationale for this change is that the name Declarative refers to now obsolete QtQuick1 module. Also, the class names are now the same in C++ and QML name spaces. Change-Id: Ide050d47110443d894d95d35dddf0df5891587be Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>