Don't try to filter null key combinations
Summary: When using composite key combinations, kwin would do random weird actions when the first key was pressed (e.g. ` key). This makes sure we are not trying to match. BUG: 390110 Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: graesslin, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D12416
This commit is contained in:
parent
67acb21ab8
commit
bec8493459
2 changed files with 23 additions and 0 deletions
|
@ -55,6 +55,7 @@ private Q_SLOTS:
|
|||
void testRepeatedTrigger();
|
||||
void testUserActionsMenu();
|
||||
void testMetaShiftW();
|
||||
void testComponseKey();
|
||||
void testX11ClientShortcut();
|
||||
void testWaylandClientShortcut();
|
||||
void testSetupWindowShortcut();
|
||||
|
@ -203,6 +204,25 @@ void GlobalShortcutsTest::testMetaShiftW()
|
|||
kwinApp()->platform()->keyboardKeyReleased(KEY_LEFTMETA, timestamp++);
|
||||
}
|
||||
|
||||
void GlobalShortcutsTest::testComponseKey()
|
||||
{
|
||||
// BUG 390110
|
||||
QScopedPointer<QAction> action(new QAction(nullptr));
|
||||
action->setProperty("componentName", QStringLiteral(KWIN_NAME));
|
||||
action->setObjectName(QStringLiteral("globalshortcuts-accent"));
|
||||
QSignalSpy triggeredSpy(action.data(), &QAction::triggered);
|
||||
QVERIFY(triggeredSpy.isValid());
|
||||
KGlobalAccel::self()->setShortcut(action.data(), QList<QKeySequence>{Qt::UNICODE_ACCEL}, KGlobalAccel::NoAutoloading);
|
||||
input()->registerShortcut(Qt::UNICODE_ACCEL, action.data());
|
||||
|
||||
// press & release `
|
||||
quint32 timestamp = 0;
|
||||
kwinApp()->platform()->keyboardKeyPressed(KEY_RESERVED, timestamp++);
|
||||
kwinApp()->platform()->keyboardKeyReleased(KEY_RESERVED, timestamp++);
|
||||
|
||||
QTRY_COMPARE(triggeredSpy.count(), 0);
|
||||
}
|
||||
|
||||
struct XcbConnectionDeleter
|
||||
{
|
||||
static inline void cleanup(xcb_connection_t *pointer)
|
||||
|
|
|
@ -245,6 +245,9 @@ bool processShortcut(Qt::KeyboardModifiers mods, T key, U &shortcuts)
|
|||
bool GlobalShortcutsManager::processKey(Qt::KeyboardModifiers mods, int keyQt)
|
||||
{
|
||||
if (m_kglobalAccelInterface) {
|
||||
if (!keyQt && !mods) {
|
||||
return false;
|
||||
}
|
||||
auto check = [this] (Qt::KeyboardModifiers mods, int keyQt) {
|
||||
bool retVal = false;
|
||||
QMetaObject::invokeMethod(m_kglobalAccelInterface,
|
||||
|
|
Loading…
Reference in a new issue