summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp
Commit message (Collapse)AuthorAgeFilesLines
* platforminputcontexts: future-proof compose pluginGatis Paeglis2019-04-261-1/+9
| | | | | | | | | | If this plugin is loaded at some later point during application run-time, the focus object might be nullptr. We can avoid that by using qApp->focusObject(), when m_focusObject==nullptr; Task-number: QTBUG-74465 Change-Id: I0d82410ed557ea1a8fde28a1807f790854951cda Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* XCB/libxkbcommon input context: Fix crash when invalid local is setFriedemann Kleint2019-03-051-1/+3
| | | | | | | | Fall back to querying the locale. Fixes: QTBUG-74216 Change-Id: Ibd60572454741e64f649ecc3e37f593a8e2b2bda Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* platforminputcontexts: use libxkbcommon compose key APIGatis Paeglis2019-03-011-220/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our implementation of compose table parser was added on Mar, 2013. libxkbcommon added APIs for the same thing in Oct, 2014 (ver: 0.5.0). After removing RHEL 6.6 from the list of supported platforms we were able to move the minimal required libxkbcommon version to 0.5.0. Now we can use the xkbcommon-compose APIs on all supported platforms. With this patch we can drop nearly 1000 lines of maintenance burden. This patch fixes user reported issues with our implementation. Known issues: - Testing revealed that xkbcommon-compose does not support non-utf8 locales, and that is by design - https://github.com/xkbcommon/libxkbcommon/issues/76 Our implementation did work for those locales too, but it is unclear if anyone actually uses non-utf8 locales. It is a corner case (work-arounds existing) and likely a configuration error on the users' system. - Looking at the release notes for versions above 0.6.1, only one issue that stands out. Compose input does not work on system with tr_TR.UTF-8 locale, fixed in 0.7.1. Compose input works fine when using e.g. en_US.UTF-8 locale with Turkish keyboard layout. Note: With Qt 5.13 we have removed Ubuntu 16.04 and openSUSE 42.3 from CI: Ubuntu 16.04 - 0.5.0 openSUSE 42.3 - 0.6.1 CI for Qt 5.13 has: Ubuntu 18.04 - 0.8.0 RHEL-7.4 - 0.7.1 openSUSE 15.0 - 0.8.1 Currently the minimal required libxkbcommon version in src/gui/configure.json is set to 0.5.0, but we could bump it to 0.7.1 to avoid known issues from above, but that is a decision for a separate patch. [ChangeLog][plugins][platforminputcontexts] Now using libxkbcommon-compose APIs for compose key input, instead of Qt's own implementation. Fixes: QTBUG-42181 Fixes: QTBUG-53663 Fixes: QTBUG-48657 Change-Id: I79aafe2bc601293844066e7e5f5eddd3719c6bba Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Add missing dead key symbolsMatt Whitlock2018-01-151-1/+31
| | | | | | | | | | | | | | | Qt was missing symbols for many dead keys defined in <X11/keysymdef.h>. These dead keys were thus ignored by the "compose" input module. This commit adds the missing dead key symbols. [ChangeLog][Linux/XCB] Added missing dead key symbols, enabling their use with the "compose" input module. Task-number: QTBUG-56452 Change-Id: Ib5c37168990c9d9fa99fdd50f63b934c793e8dc4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> Reviewed-by: Matt Whitlock <qt@mattwhitlock.name>
* Fix clazy-strict-iteratorsFriedemann Kleint2017-10-251-1/+1
| | | | | Change-Id: I9276a85f0a8061b2636687cf694b8ed1abaa18b8 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QTableGenerator: give some TLC to the sorting predicateMarc Mutz2016-10-061-6/+3
| | | | | | | | | | | | | | | | | | - Provide op()(uint[], QComposeTableElement) as well, since the standard (does|did) not specify in which order the two are called. - Use std::lexicographical_compare to do the ... lexicographical comparison. - Share code by calling a new op()(uint[], uint[]) overload from all other overloads. - Mark all op() overloads const noexept. - Rename from 'Compare' to 'ByKeys', as in 'sort(vector, ByKeys()))'. - Replace a hand-rolled loop with std::equal. - Replace a #define with a static constexpr variable. Change-Id: I5ed487199916d0ae44ac38741fc95099bd2f8a22 Reviewed-by: Sune Vuorela <sune@vuorela.dk> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-09-161-3/+11
|\ | | | | | | | | | | | | Conflicts: src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp Change-Id: I0af32ee55936d523cbd259b6fe82eb9c409f9074
| * Fix handling of bad compose tableSune Vuorela2016-09-151-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ASAN talk at QtCon was pointing out a out of bound read in a vector. Let's try to do something about it. If the lazy initialization of compose table fails, the first character handling still tries to actually access it. Later characters are properly handled in the caller. Reported-by: Hanno Böck Change-Id: Ieac3e95361abd0fcd06c555bcd00ca1c4d8f1931 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Updated license headersJani Heikkinen2016-01-151-14/+20
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QComposeInputContext: reduce composeBuffer to QT_KEYSEQUENCE_MAX_LENAnton Kudryavtsev2016-01-091-1/+1
|/ | | | | | | | | | The extra length has been used for a sentinel null value. By checking the index before indexing into the array, that extra element can be dropped. Change-Id: I0b309420d8d89f75e2381a8065c8e68a1a33427c Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Speed up application startup on X11Simon Hausmann2015-04-101-14/+18
| | | | | | | | Avoid parsing the composition tables on application startup. Instead let's do that on-demand the first time a composition key is pressed. Change-Id: I52feb36246a091b9a84d46e479ba2ad1f5cd1556 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QPA plugins: Fix const correctness in old style castsThiago Macieira2015-03-091-1/+1
| | | | | | | | Found with GCC's -Wcast-qual. Change-Id: Ia0aac2f09e9245339951ffff13c946899b4ba15b Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* Remove deprecated QtAlgorithms calls from the compose inputcontextGiuseppe D'Angelo2013-09-051-1/+3
| | | | | | | | QtAlgorithms is getting deprecated, see http://www.mail-archive.com/development@qt-project.org/msg01603.html Change-Id: I75ecfb84befd5dcc44f2ffcbef2cb6f1cc39cfd8 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Cut away 2/3 of the startup time on LinuxLars Knoll2013-08-151-3/+3
| | | | | | | | | Optimize the parser of the X11 compose tables. Parsing these was responsible for over 90% of the startup time in Qt 5.1. Change-Id: Ifddc3f30828791e51a755f92791c26ffe43a9cd3 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Introducing QComposeInputContextGatis Paeglis2013-03-211-0/+268
When switching from Xlib to xcb platform plugin it was agreed that XIM is deprecated. Users should be using QT_IM_MODULE to load input context plugin for a more advance input method framework support. The proposed solution is to parse the compose file directly from Qt. This approach removes the overhead of communication protocols used in Xlib and/or IBUS. TableGenerator class follows [1]. The compose file is searched for in the following order: 1) If the environment variable $XCOMPOSEFILE is set, its value is used as the name of the Compose file. 2) If the user’s home directory has a file named .XCompose, it is used as the Compose file. 3) The system provided compose file is used by mapping the locale to a compose file from the list in /usr/share/X11/locale/compose.dir. Regarding step 3 - TableGenerator searches in hard-coded locations for system-provided compose files. Here I have introcuded a new environment variable QTCOMPOSE which can be used to prepend an extra location to be searched. [1] http://www.x.org/archive/X11R7.7/doc/man/man5/Compose.5.xhtml Task-number: QTBUG-28183 Change-Id: I76dcfd454f3acc23db98192a3673c1ab2af4425f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>