Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package plasma5-integration for
openSUSE:Factory checked in at 2021-06-07 22:42:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma5-integration (Old)
and /work/SRC/openSUSE:Factory/.plasma5-integration.new.32437 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plasma5-integration"
Mon Jun 7 22:42:42 2021 rev:97 rq:897496 version:5.22.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma5-integration/plasma5-integration.changes
2021-05-06 22:52:42.450729648 +0200
+++
/work/SRC/openSUSE:Factory/.plasma5-integration.new.32437/plasma5-integration.changes
2021-06-07 22:43:02.184438107 +0200
@@ -1,0 +2,27 @@
+Thu Jun 3 13:06:16 UTC 2021 - Fabian Vogt <[email protected]>
+
+- Update to 5.22.0
+ * New bugfix release
+ * For more details please see:
+ * https://kde.org/announcements/plasma/5/5.22.0
+- No code changes since 5.21.90
+
+-------------------------------------------------------------------
+Thu May 13 18:15:45 UTC 2021 - Fabian Vogt <[email protected]>
+
+- Update to 5.21.90
+ * New feature release
+ * For more details please see:
+ * https://kde.org/announcements/plasma/5/5.21.90
+- Changes since 5.21.5:
+ * Migrate to KDECompilerSettings
+ * Port away from WId-based KWindowEffects API
+ * Do not set default font style names, and just rely on weights
+ * Use QFont::Normal (50) instead of -1 constant for default font weight
+ * platforminputcontextplugin: Make F1-F10 valid for selecting keys
(kde#430162)
+ * Raise minimum CMake version to 3.16
+ * Remove unused cmake code
+ * Use versionless Qt cmake target
+ * Revert held-key behaviour
+
+-------------------------------------------------------------------
Old:
----
plasma-integration-5.21.5.tar.xz
plasma-integration-5.21.5.tar.xz.sig
New:
----
plasma-integration-5.22.0.tar.xz
plasma-integration-5.22.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ plasma5-integration.spec ++++++
--- /var/tmp/diff_new_pack.MQjr4N/_old 2021-06-07 22:43:02.700438979 +0200
+++ /var/tmp/diff_new_pack.MQjr4N/_new 2021-06-07 22:43:02.700438979 +0200
@@ -18,7 +18,7 @@
%bcond_without lang
Name: plasma5-integration
-Version: 5.21.5
+Version: 5.22.0
Release: 0
# Full Plasma 5 version (e.g. 5.8.95)
%{!?_plasma5_bugfix: %define _plasma5_bugfix %{version}}
@@ -28,9 +28,9 @@
License: GPL-2.0+
Group: System/GUI/KDE
Url: http://www.kde.org
-Source:
https://download.kde.org/stable/plasma/%{version}/plasma-integration-%{version}.tar.xz
+Source: plasma-integration-%{version}.tar.xz
%if %{with lang}
-Source1:
https://download.kde.org/stable/plasma/%{version}/plasma-integration-%{version}.tar.xz.sig
+Source1: plasma-integration-%{version}.tar.xz.sig
Source2: plasma.keyring
%endif
BuildRequires: extra-cmake-modules >= 5.17.0
@@ -76,6 +76,16 @@
Applications do not need to link to this directly.
+%package devel
+Summary: plasma5-integration development headers
+Group: System/GUI/KDE
+Requires: plasma5-integration-plugin
+
+%description devel
+This package provides development headers for plasma5-integration. They
+are not meant to be used standalone, but are required for building other
+Plasma components.
+
%lang_package -n plasma5-integration-plugin
%prep
@@ -97,6 +107,12 @@
%{_kf5_plugindir}/
%{_kf5_sharedir}/kconf_update/
+%files devel
+%license COPYING*
+%dir %{_includedir}/PlasmaKeyData/
+%{_includedir}/PlasmaKeyData/plasmakeydata.h
+%{_kf5_libdir}/pkgconfig/plasma-key-data.pc
+
%if %{with lang}
%files -n plasma5-integration-plugin-lang -f plasmaintegration5.lang
%endif
++++++ plasma-integration-5.21.5.tar.xz -> plasma-integration-5.22.0.tar.xz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/plasma-integration-5.21.5/.gitignore
new/plasma-integration-5.22.0/.gitignore
--- old/plasma-integration-5.21.5/.gitignore 2021-05-04 14:34:11.000000000
+0200
+++ new/plasma-integration-5.22.0/.gitignore 2021-06-03 16:14:33.000000000
+0200
@@ -21,3 +21,8 @@
*.unc-backup*
.clang-format
/build*/
+/compile_commands.json
+.clangd
+.idea
+/cmake-build*
+.cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/plasma-integration-5.21.5/CMakeLists.txt
new/plasma-integration-5.22.0/CMakeLists.txt
--- old/plasma-integration-5.21.5/CMakeLists.txt 2021-05-04
14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/CMakeLists.txt 2021-06-03
16:14:33.000000000 +0200
@@ -1,18 +1,18 @@
-cmake_minimum_required(VERSION 3.0)
+cmake_minimum_required(VERSION 3.16)
project(PlasmaIntegration)
-set(PROJECT_VERSION "5.21.5")
+set(PROJECT_VERSION "5.22.0")
set(PROJECT_VERSION_MAJOR 5)
set(QT_MIN_VERSION "5.15.0")
-set(KF5_MIN_VERSION "5.78")
+set(KF5_MIN_VERSION "5.82")
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules
${ECM_MODULE_PATH} )
include(KDEInstallDirs)
include(KDECMakeSettings)
-include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
+include(KDECompilerSettings NO_POLICY_SCOPE)
include(FeatureSummary)
include(GenerateExportHeader)
include(KDEClangFormat)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/plasma-integration-5.21.5/autotests/CMakeLists.txt
new/plasma-integration-5.22.0/autotests/CMakeLists.txt
--- old/plasma-integration-5.21.5/autotests/CMakeLists.txt 2021-05-04
14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/autotests/CMakeLists.txt 2021-06-03
16:14:33.000000000 +0200
@@ -28,7 +28,7 @@
ecm_mark_as_test(${_testname})
ecm_mark_nongui_executable(${_testname})
target_include_directories(${_testname} PRIVATE
${CMAKE_BINARY_DIR}/src/platformtheme)
- target_link_libraries(${_testname} Qt5::GuiPrivate Qt5::Test Qt5::DBus
Qt5::X11Extras Qt5::QuickControls2 ${QT5PLATFORMSUPPORT_LIBS}
KF5::ConfigWidgets KF5::ConfigCore KF5::IconThemes KF5::KIOFileWidgets
KF5::I18n KF5::Notifications KF5::WindowSystem KF5::WaylandClient XCB::XCB)
+ target_link_libraries(${_testname} Qt::GuiPrivate Qt::Test Qt::DBus
Qt::X11Extras Qt::QuickControls2 ${QT5PLATFORMSUPPORT_LIBS} KF5::ConfigWidgets
KF5::ConfigCore KF5::IconThemes KF5::KIOFileWidgets KF5::I18n
KF5::Notifications KF5::WindowSystem KF5::WaylandClient XCB::XCB)
endmacro()
set(dbus_interface)
@@ -90,5 +90,5 @@
add_test(NAME qmltests COMMAND qmltestrunner WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR})
frameworkintegration_tests(kfiledialogqml_unittest)
- target_link_libraries(kfiledialogqml_unittest Qt5::Qml)
+ target_link_libraries(kfiledialogqml_unittest Qt::Qml)
endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/po/zh_CN/plasmaintegration5.po
new/plasma-integration-5.22.0/po/zh_CN/plasmaintegration5.po
--- old/plasma-integration-5.21.5/po/zh_CN/plasmaintegration5.po
2021-05-04 14:35:27.000000000 +0200
+++ new/plasma-integration-5.22.0/po/zh_CN/plasmaintegration5.po
2021-06-03 16:14:54.000000000 +0200
@@ -7,7 +7,7 @@
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2020-10-25 02:32+0200\n"
-"PO-Revision-Date: 2021-04-24 15:44\n"
+"PO-Revision-Date: 2021-05-25 16:23\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/plasma-integration-5.21.5/src/CMakeLists.txt
new/plasma-integration-5.22.0/src/CMakeLists.txt
--- old/plasma-integration-5.21.5/src/CMakeLists.txt 2021-05-04
14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/src/CMakeLists.txt 2021-06-03
16:14:33.000000000 +0200
@@ -1 +1,2 @@
add_subdirectory(platformtheme)
+add_subdirectory(platforminputcontextplugin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/CMakeLists.txt
new/plasma-integration-5.22.0/src/platforminputcontextplugin/CMakeLists.txt
--- old/plasma-integration-5.21.5/src/platforminputcontextplugin/CMakeLists.txt
1970-01-01 01:00:00.000000000 +0100
+++ new/plasma-integration-5.22.0/src/platforminputcontextplugin/CMakeLists.txt
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,26 @@
+# keyholdmanager has a ton of definitions where
+# needing explicit qstringliteral would negatively affect
+# code readability
+remove_definitions(-DQT_NO_CAST_FROM_ASCII)
+
+add_library(input_plugin MODULE
+ main.cpp
+ plasmaimcontext.cpp
+)
+
+target_link_libraries(input_plugin
+ Qt::Core
+ Qt::Gui
+ Qt::Quick
+ Qt::Widgets
+ Qt::GuiPrivate
+ KF5::ConfigCore
+)
+set_target_properties(input_plugin PROPERTIES OUTPUT_NAME
plasmaimplatforminputcontextplugin)
+
+install(TARGETS input_plugin LIBRARY DESTINATION
${KDE_INSTALL_QTPLUGINDIR}/platforminputcontexts)
+
+# we want to share this data with some other parts of Plasma; this isn't an
API for anyone to use but us
+install(DIRECTORY data/ DESTINATION ${KDE_INSTALL_INCLUDEDIR}/PlasmaKeyData)
+configure_file(plasma-key-data.pc.in plasma-key-data.pc @ONLY)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plasma-key-data.pc DESTINATION
${KDE_INSTALL_LIBDIR}/pkgconfig)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/data/plasmakeydata.h
new/plasma-integration-5.22.0/src/platforminputcontextplugin/data/plasmakeydata.h
---
old/plasma-integration-5.21.5/src/platforminputcontextplugin/data/plasmakeydata.h
1970-01-01 01:00:00.000000000 +0100
+++
new/plasma-integration-5.22.0/src/platforminputcontextplugin/data/plasmakeydata.h
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2020 Carson Black <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License or ( at
+ * your option ) version 3 or, at the discretion of KDE e.V. ( which shall
+ * act as a proxy as in section 14 of the GPLv3 ), any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <QString>
+#include <QMap>
+#include <QList>
+
+// Curating key data
+// =================
+//
+// There are two main goals with key data here:
+// - to allow users to input letters related to but not in their keyboard
language (e.g. Persian glyphs on top of the Arabic set)
+// - to allow users to input useful symbols, such as proper arithmetic symbols
and various dashes
+//
+// The former generally is used for letters, while the latter is generally
used for punctuation and numbers
+//
+// Latin Letters:
+//
+// Generally, these are going to be diacritics (a + ` = ??) or diagraphs (a +
e = ??).
+// Letters should be roughly ordered first by amount of speakers of languages
that use them,
+// and then by commonality in languages as a secondary factor. For example,
the character ?? is
+// found mostly in northern Germanic languages, which don't have nearly as
many speakers as
+// romance languages such as Spanish, which has ??. For this reason, ?? should
be ordered before ??.
+// Rinse and repeat this process until all the variants you want to offer are
well placed.
+//
+// Cyrilic Letters:
+//
+// The same principles as Latin letters apply here. For example, the character
?? (Ka with a vertical stroke; Azerbaijani)
+// is found in a much less common language than ?? (Ka with a descender; many
languages found in former Soviet Union territories)
+// so it should be placed after ?? in the list of options for ?? (Ka; lot of
languages)
+//
+// Arabic characters:
+//
+// Same deal as Latin and Cyrilic, except now it's going to render poorly in
your text editors.
+// Most of these characters only have one alternate form, mostly to add some
extra diacritics
+// in order to use a less common form or a form not found in Arabic, e.g.
Persian ?? from Arabic ??.
+// Alef is a special case here, as it has a lot of "variants" in common use.
For example, there's the
+// alef with a hamza sitting on it (?? + ?? = ??) or a hamza sitting below it
(??). These can be inputted
+// as diagraphs on keyboards, but can also be represented as a held-key
variant of alef for input purposes.
+//
+// Hebrew characters:
+//
+// The characters here are the iffiest of the selection, since most don't add
anything new to input, just a
+// "convenience" way for inputting characters with a ?? added, when you can
already type it without extra modifiers.
+// However, we're still having them there since they're a logical "variant" of
the characters they're for.
+//
+// On the other hand, the ???? ?? ?? ?? work as held keys to offer a
meaningful alternative to other methods of inputting
+// them, since these typically require the usage of AltGr to input on most
Hebrew keyboards.
+//
+// Numbers:
+//
+// These are mostly exponents and fractions. Their ordering should be self
explanatory.
+//
+// Symbols:
+//
+// These are mostly things that look like the key being held, with the
exception
+// of ^ being used for directional arrows.
+//
+
+namespace KeyData {
+
+const QMap<QString,QList<QString>> KeyMappings = {
+ //
+ // Latin
+ //
+ {"a", {"??", "??", "??", "??", "??", "??", "??", "??"}},
+ {"c", {"??", "??", "??"}},
+ {"d", {"??"}},
+ {"e", {"??", "??", "??", "??", "??", "??", "??", "??"}},
+ {"g", {"??"}},
+ {"i", {"??", "??", "??", "??", "??", "??", "??"}},
+ {"l", {"??"}},
+ {"n", {"??", "??"}},
+ {"o", {"??", "??", "??", "??", "??", "??", "??", "??"}},
+ {"s", {"??", "??", "??", "??"}},
+ {"u", {"??", "??", "??", "??", "??"}},
+ {"x", {"??"}},
+ {"y", {"??", "??", "??", "??", "??"}},
+ {"z", {"??", "??", "??"}},
+ //
+ // Cyrilic
+ //
+ {"??", {"??"}},
+ {"??", {"??"}}, // this in fact NOT the same E as before
+ {"??", {"??", "??"}}, // ?? is not i
+ {"??", {"??"}}, // ?? is not j
+ {"??", {"??", "??",}},
+ {"??", {"??", "??"}}, // ?? is not h
+ {"??", {"??", "??"}},
+ {"??", {"??", "??"}},
+ {"??", {"??"}},
+ //
+ // Arabic
+ //
+ // This renders weirdly in text editors, but is valid code.
+ {"??", {"??", "??", "??", "??"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ {"??", {"????"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ //
+ // Hebrew
+ //
+ // Likewise, this will render oddly, but is still valid code.
+ {"??",{"????"}},
+ {"??",{"????"}},
+ {"??",{"????"}},
+ {"????",{"????"}},
+ {"??",{"????"}},
+ {"??",{"????"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ {"??", {"??"}},
+ //
+ // Numbers
+ //
+ {"0", {"???", "???", "???"}},
+ {"1", {"??", "??", "???", "??", "???", "???", "???", "???", "???", "???"}},
+ {"2", {"??", "???", "???"}},
+ {"3", {"??", "???", "??", "???"}},
+ {"4", {"???", "???", "???", "???", "???"}},
+ {"5", {"???", "???", "???"}},
+ {"6", {"???"}},
+ {"7", {"???", "???"}},
+ {"8", {"???"}},
+ {"9", {"???"}},
+ //
+ // Punctuation
+ //
+ {R"(-)", {"???", "???", "??"}},
+ {R"(?)", {"??", "???"}},
+ {R"(')", {"???", "???", "???", "???", "???"}},
+ {R"(!)", {"??"}},
+ {R"(")", {"???", "???", "???", "??", "??"}},
+ {R"(/)", {"??"}},
+ {R"(#)", {"???"}},
+ {R"(%)", {"???", "???"}},
+ {R"(^)", {"???", "???", "???", "???"}},
+ {R"(+)", {"??"}},
+ {R"(<)", {"??", "???", "???", "???"}},
+ {R"(=)", {"???", "???", "???"}},
+ {R"(>)", {"???", "??", "???", "???"}},
+ //
+ // Currency
+ //
+ {"$", {"??", "???", "??", "??", "???", "???", "???", "???", "???", "???"}},
+};
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/main.cpp
new/plasma-integration-5.22.0/src/platforminputcontextplugin/main.cpp
--- old/plasma-integration-5.21.5/src/platforminputcontextplugin/main.cpp
1970-01-01 01:00:00.000000000 +0100
+++ new/plasma-integration-5.22.0/src/platforminputcontextplugin/main.cpp
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2020 Carson Black <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License or ( at
+ * your option ) version 3 or, at the discretion of KDE e.V. ( which shall
+ * act as a proxy as in section 14 of the GPLv3 ), any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <QObject>
+#include <QtPlugin>
+#include <qpa/qplatforminputcontextplugin_p.h>
+
+#include "plasmaimcontext.h"
+
+QT_BEGIN_NAMESPACE
+
+class PlasmaIM : public QPlatformInputContextPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID QPlatformInputContextFactoryInterface_iid FILE
"plasmaim.json")
+
+public:
+ QPlatformInputContext *create(const QString&, const QStringList&)
Q_DECL_OVERRIDE;
+};
+
+QPlatformInputContext *PlasmaIM::create(const QString& system, const
QStringList&)
+{
+ if (system == "plasmaim") {
+ return new PlasmaIMContext;
+ }
+
+ return nullptr;
+}
+
+QT_END_NAMESPACE
+
+#include "main.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasma-key-data.pc.in
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasma-key-data.pc.in
---
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasma-key-data.pc.in
1970-01-01 01:00:00.000000000 +0100
+++
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasma-key-data.pc.in
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,8 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+includedir=${prefix}/include
+
+Name: PlasmaKeyData
+Description: Plasma's key data used for key-holding behaviour
+Version: 1.0
+Cflags: -I${includedir}/PlasmaKeyData
+Libs:
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasmaim.json
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasmaim.json
--- old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasmaim.json
1970-01-01 01:00:00.000000000 +0100
+++ new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasmaim.json
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,3 @@
+{
+ "Keys": [ "plasmaim" ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasmaimcontext.cpp
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasmaimcontext.cpp
---
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasmaimcontext.cpp
1970-01-01 01:00:00.000000000 +0100
+++
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasmaimcontext.cpp
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2020 Carson Black <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License or ( at
+ * your option ) version 3 or, at the discretion of KDE e.V. ( which shall
+ * act as a proxy as in section 14 of the GPLv3 ), any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/// Qt Utilities
+#include <QGuiApplication>
+#include <QInputMethod>
+#include <QInputMethodEvent>
+#include <QKeyEvent>
+#include <QQuickWindow>
+#include <QStringBuilder>
+#include <QToolTip>
+
+// Widgets for the popup
+#include <QGridLayout>
+#include <QLabel>
+#include <QPushButton>
+
+#include "data/plasmakeydata.h"
+
+#include "plasmaimcontext.h"
+
+static QList<TooltipData> dataForIndex(const QString &ch, bool upperCase)
+{
+ QList<TooltipData> ret;
+ int i = 0;
+ for (auto item : KeyData::KeyMappings[ch]) {
+ ret << TooltipData {upperCase ? item.toUpper() : item,
QString::number((i + 1) < 10 ? (i + 1) : 0, 10), i};
+ i++;
+ }
+ return ret;
+}
+
+PlasmaIMContext::PlasmaIMContext()
+{
+ connect(watcher.data(), &KConfigWatcher::configChanged, this,
&PlasmaIMContext::configChangedHandler);
+}
+
+PlasmaIMContext::~PlasmaIMContext()
+{
+ if (!popup.isNull()) {
+ popup->hide();
+ popup->deleteLater();
+ }
+}
+
+bool PlasmaIMContext::isValid() const
+{
+ return true;
+}
+
+void PlasmaIMContext::cleanUpState()
+{
+ if (!popup.isNull()) {
+ popup->hide();
+ popup->deleteLater();
+ }
+
+ isPreHold = false;
+ preHoldText = QString();
+}
+
+void PlasmaIMContext::setFocusObject(QObject *object)
+{
+ m_focusObject = object;
+}
+
+void PlasmaIMContext::configChangedHandler(const KConfigGroup&, const
QByteArrayList&)
+{
+ config->reparseConfiguration();
+}
+
+void PlasmaIMContext::showPopup(const QList<TooltipData> &text)
+{
+ QPoint position;
+ QWindow *parentWin = nullptr;
+
+ auto im = QGuiApplication::inputMethod();
+ if (im != nullptr && im->cursorRectangle().isValid()) {
+ position = im->cursorRectangle().topRight().toPoint();
+ parentWin = QGuiApplication::focusWindow();
+ }
+
+ auto isRtl =
+ text[0].character[0].script() == QChar::Script_Arabic ||
text[0].character[0].script() == QChar::Script_Hebrew;
+
+ popup = new QWidget;
+ auto grid = new QGridLayout(popup.data());
+ popup->setLayoutDirection(isRtl ? Qt::RightToLeft : Qt::LeftToRight);
+ popup->setLayout(grid);
+ int col = 0;
+ for (auto item : text) {
+ auto label = new QLabel(item.character, popup.data());
+ auto button = new QPushButton(item.number, popup.data());
+
+ button->setMaximumWidth(button->height());
+
+ grid->addWidget(label, 0, col, Qt::AlignCenter);
+ grid->addWidget(button, 1, col, Qt::AlignHCenter);
+
+ connect(button, &QPushButton::clicked, [=]() {
+ applyReplacement(item.character);
+ popup->hide();
+ popup->deleteLater();
+ });
+
+ col++;
+ }
+
+ connect(parentWin, &QWindow::activeChanged, this,
&PlasmaIMContext::cleanUpState, Qt::UniqueConnection);
+
+ if (parentWin != nullptr) {
+ popup->setWindowFlags(Qt::WindowDoesNotAcceptFocus | Qt::ToolTip);
+ popup->adjustSize();
+ popup->move(position + parentWin->framePosition() - QPoint((isRtl ?
popup->width() : 0), 0));
+ popup->show();
+ }
+}
+
+void PlasmaIMContext::applyReplacement(const QString &data)
+{
+ if (m_focusObject != nullptr) {
+ QInputMethodEvent ev;
+ ev.setCommitString(data, -1, 1);
+ QCoreApplication::sendEvent(m_focusObject, &ev);
+ }
+}
+
+inline bool between(int min, int val, int max) {
+ qDebug() << min << val << max << !(val < min || max < val);
+ return !(val < min || max < val);
+}
+
+bool PlasmaIMContext::filterEvent(const QEvent *event)
+{
+ bool isAccent = keyboard.readEntry("KeyRepeat", "accent") ==
QLatin1String("accent");
+ bool isNothing = keyboard.readEntry("KeyRepeat", "accent") ==
QLatin1String("nothing");
+
+ if (!isAccent && !isNothing) {
+ return false;
+ }
+
+ if (event->type() == QEvent::KeyPress) {
+ auto ev = static_cast<const QKeyEvent *>(event);
+
+ // this is the state when we have a held key
+ if (isPreHold) {
+ if (ev->isAutoRepeat() && ev->text() == preHoldText)
+ return true;
+
+ if (!between(Qt::Key_0, ev->key(), Qt::Key_9) &&
!between(Qt::Key_F1, ev->key(), Qt::Key_F10)) {
+ cleanUpState();
+ return false;
+ }
+
+ auto str = preHoldText;
+ bool isUpper = str.isUpper();
+ str = str.toLower();
+
+ int keyDataIndex;
+ if (ev->key() > Qt::Key_9) {
+ keyDataIndex = ev->key() - Qt::Key_F1;
+ keyDataIndex++;
+ } else {
+ keyDataIndex = ev->key() - Qt::Key_0;
+ if (keyDataIndex == 0) {
+ keyDataIndex = 10;
+ }
+ }
+
+ if (KeyData::KeyMappings[str].count() < keyDataIndex) {
+ cleanUpState();
+ return false;
+ }
+
+ auto data = KeyData::KeyMappings[str][keyDataIndex - 1];
+ applyReplacement(isUpper ? data.toUpper() : data);
+ isPreHold = false;
+ preHoldText = QString();
+ popup->hide();
+ return true;
+ }
+
+ // this is the state before we have a held key
+ if (ev->isAutoRepeat()) {
+ if (isNothing)
+ return true;
+
+ if (!isPreHold) {
+ if (ev->text().isEmpty())
+ return false;
+ if (!KeyData::KeyMappings.contains(ev->text().toLower()))
+ return false;
+
+ auto tooltipText = dataForIndex(ev->text().toLower(),
ev->text().isUpper());
+ showPopup(tooltipText);
+
+ isPreHold = true;
+ preHoldText = ev->text();
+ }
+
+ return true;
+ }
+
+ cleanUpState();
+ }
+
+ return false;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasmaimcontext.h
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasmaimcontext.h
---
old/plasma-integration-5.21.5/src/platforminputcontextplugin/plasmaimcontext.h
1970-01-01 01:00:00.000000000 +0100
+++
new/plasma-integration-5.22.0/src/platforminputcontextplugin/plasmaimcontext.h
2021-06-03 16:14:33.000000000 +0200
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2020 Carson Black <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License or ( at
+ * your option ) version 3 or, at the discretion of KDE e.V. ( which shall
+ * act as a proxy as in section 14 of the GPLv3 ), any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef PLASMAIMCONTEXT_H
+#define PLASMAIMCONTEXT_H
+
+#include <QPointer>
+#include <QWidget>
+
+#include <KConfigGroup>
+#include <KSharedConfig>
+#include <KConfigWatcher>
+
+#include <qpa/qplatforminputcontext.h>
+
+QT_BEGIN_NAMESPACE
+
+struct TooltipData {
+ QString character;
+ QString number;
+ int idx;
+};
+
+class PlasmaIMContext : public QPlatformInputContext
+{
+ Q_OBJECT
+
+public:
+ PlasmaIMContext();
+ ~PlasmaIMContext();
+
+ bool isValid() const Q_DECL_OVERRIDE;
+ void setFocusObject(QObject *object) Q_DECL_OVERRIDE;
+ bool filterEvent(const QEvent* event) Q_DECL_OVERRIDE;
+
+private:
+
+ void cleanUpState();
+ void applyReplacement(const QString& data);
+ void showPopup(const QList<TooltipData>& text);
+ void configChangedHandler(const KConfigGroup& grp, const QByteArrayList&
names);
+
+ QPointer<QWidget> popup;
+ QPointer<QObject> m_focusObject = nullptr;
+
+ bool isPreHold = false;
+ QString preHoldText = QString();
+ KSharedConfig::Ptr config = KSharedConfig::openConfig(
QStringLiteral("kcminputrc") );
+ KConfigGroup keyboard = KConfigGroup(config, "Keyboard");
+ KConfigWatcher::Ptr watcher = KConfigWatcher::create(config);
+
+};
+
+QT_END_NAMESPACE
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platformtheme/CMakeLists.txt
new/plasma-integration-5.22.0/src/platformtheme/CMakeLists.txt
--- old/plasma-integration-5.21.5/src/platformtheme/CMakeLists.txt
2021-05-04 14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/src/platformtheme/CMakeLists.txt
2021-06-03 16:14:33.000000000 +0200
@@ -39,10 +39,10 @@
target_link_libraries(KDEPlasmaPlatformTheme
PRIVATE
- Qt5::GuiPrivate
- Qt5::DBus
- Qt5::X11Extras
- Qt5::QuickControls2
+ Qt::GuiPrivate
+ Qt::DBus
+ Qt::X11Extras
+ Qt::QuickControls2
KF5::ConfigWidgets
KF5::ConfigCore
KF5::IconThemes
@@ -58,7 +58,7 @@
)
if(HAVE_X11)
- target_link_libraries(KDEPlasmaPlatformTheme PRIVATE Qt5::X11Extras
${X11_Xcursor_LIB} ${XCB_XCB_LIBRARY})
+ target_link_libraries(KDEPlasmaPlatformTheme PRIVATE Qt::X11Extras
${X11_Xcursor_LIB} ${XCB_XCB_LIBRARY})
endif()
set_target_properties(KDEPlasmaPlatformTheme PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/platformthemes/")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platformtheme/kfontsettingsdata.cpp
new/plasma-integration-5.22.0/src/platformtheme/kfontsettingsdata.cpp
--- old/plasma-integration-5.21.5/src/platformtheme/kfontsettingsdata.cpp
2021-05-04 14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/src/platformtheme/kfontsettingsdata.cpp
2021-06-03 16:14:33.000000000 +0200
@@ -60,13 +60,13 @@
static const char DefaultFont[] = "Noto Sans";
static const KFontData DefaultFontData[KFontSettingsData::FontTypesCount] = {
- { GeneralId, "font", DefaultFont, 10, -1,
QFont::SansSerif, "Regular" },
- { GeneralId, "fixed", "Hack", 10, -1,
QFont::Monospace, "Regular" },
- { GeneralId, "toolBarFont", DefaultFont, 10, -1,
QFont::SansSerif, "Regular" },
- { GeneralId, "menuFont", DefaultFont, 10, -1,
QFont::SansSerif, "Regular" },
- { "WM", "activeFont", DefaultFont, 10, -1,
QFont::SansSerif, "Regular" },
- { GeneralId, "taskbarFont", DefaultFont, 10, -1,
QFont::SansSerif, "Regular" },
- { GeneralId, "smallestReadableFont", DefaultFont, 8, -1,
QFont::SansSerif, "Regular" }
+ { GeneralId, "font", DefaultFont, 10, QFont::Normal,
QFont::SansSerif, "Regular" },
+ { GeneralId, "fixed", "Hack", 10, QFont::Normal,
QFont::Monospace, "Regular" },
+ { GeneralId, "toolBarFont", DefaultFont, 10, QFont::Normal,
QFont::SansSerif, "Regular" },
+ { GeneralId, "menuFont", DefaultFont, 10, QFont::Normal,
QFont::SansSerif, "Regular" },
+ { "WM", "activeFont", DefaultFont, 10, QFont::Normal,
QFont::SansSerif, "Regular" },
+ { GeneralId, "taskbarFont", DefaultFont, 10, QFont::Normal,
QFont::SansSerif, "Regular" },
+ { GeneralId, "smallestReadableFont", DefaultFont, 8, QFont::Normal,
QFont::SansSerif, "Regular" }
};
QFont *KFontSettingsData::font(FontTypes fontType)
@@ -84,11 +84,8 @@
//NOTE: We are not using KConfig directly because we can't call
QFont::QFont from here
if (!fontInfo.isEmpty()) {
cachedFont->fromString(fontInfo);
- } else {
- // set the canonical stylename here, where it cannot override
- // user-specific font attributes if those do not include a
stylename.
- cachedFont->setStyleName(QLatin1String(fontData.StyleName));
}
+ // Don't set default font style names, as it prevents different font
weights from being used (the QFont::Normal weight should work)
mFonts[fontType] = cachedFont;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platformtheme/kwaylandintegration.cpp
new/plasma-integration-5.22.0/src/platformtheme/kwaylandintegration.cpp
--- old/plasma-integration-5.21.5/src/platformtheme/kwaylandintegration.cpp
2021-05-04 14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/src/platformtheme/kwaylandintegration.cpp
2021-06-03 16:14:33.000000000 +0200
@@ -103,7 +103,7 @@
}
const auto blurBehindProperty =
w->property(s_blurBehindPropertyName.constData());
if (blurBehindProperty.isValid()) {
- KWindowEffects::enableBlurBehind(w->winId(),
blurBehindProperty.toBool());
+ KWindowEffects::enableBlurBehind(w, blurBehindProperty.toBool());
}
// create deco
Surface *s = Surface::fromWindow(w);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/plasma-integration-5.21.5/src/platformtheme/x11integration.cpp
new/plasma-integration-5.22.0/src/platformtheme/x11integration.cpp
--- old/plasma-integration-5.21.5/src/platformtheme/x11integration.cpp
2021-05-04 14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/src/platformtheme/x11integration.cpp
2021-06-03 16:14:33.000000000 +0200
@@ -88,7 +88,7 @@
}
const auto blurBehindProperty =
w->property(s_blurBehindPropertyName.constData());
if (blurBehindProperty.isValid()) {
- KWindowEffects::enableBlurBehind(w->winId(),
blurBehindProperty.toBool());
+ KWindowEffects::enableBlurBehind(w,
blurBehindProperty.toBool());
}
installDesktopFileName(w);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/plasma-integration-5.21.5/tests/CMakeLists.txt
new/plasma-integration-5.22.0/tests/CMakeLists.txt
--- old/plasma-integration-5.21.5/tests/CMakeLists.txt 2021-05-04
14:34:11.000000000 +0200
+++ new/plasma-integration-5.22.0/tests/CMakeLists.txt 2021-06-03
16:14:33.000000000 +0200
@@ -1,8 +1,8 @@
add_executable(qfiledialogtest qfiledialogtest.cpp)
-target_link_libraries(qfiledialogtest Qt5::Core Qt5::Widgets)
+target_link_libraries(qfiledialogtest Qt::Core Qt::Widgets)
add_executable(windowdecotest windowdecotest.cpp)
-target_link_libraries(windowdecotest Qt5::Core Qt5::Widgets KF5::ConfigWidgets)
+target_link_libraries(windowdecotest Qt::Core Qt::Widgets KF5::ConfigWidgets)
add_executable(systraymenuexclusiveactionstest
systraymenuexclusiveactionstest.cpp)
-target_link_libraries(systraymenuexclusiveactionstest Qt5::Core Qt5::Widgets)
+target_link_libraries(systraymenuexclusiveactionstest Qt::Core Qt::Widgets)