From 9dfce7b41864e11c1cd1d77d9acab961911d3bb0 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Fri, 30 Mar 2018 07:12:18 +0200 Subject: [PATCH 1/5] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- scripts/minimizeall/metadata.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/minimizeall/metadata.desktop b/scripts/minimizeall/metadata.desktop index 37f1919184..635e61e8fa 100644 --- a/scripts/minimizeall/metadata.desktop +++ b/scripts/minimizeall/metadata.desktop @@ -42,6 +42,7 @@ Name[zh_TW]=全部最小化 Comment=Adds a shortcut to minimize and restore all windows Comment[ca]=Afegeix una drecera per a minimitzar i restaurar totes les finestres Comment[ca@valencia]=Afig una drecera per a minimitzar i restaurar totes les finestres +Comment[cs]=Přidá zkratku k minimalizaci a obnovení všech oken. Comment[da]=Tilføjer en genvej til at minimere og gendanne alle vinduer Comment[de]=Fügt einen Kurzbefehl hinzu, um alle Fenster zu minimieren oder wieder anzuzeigen Comment[en_GB]=Adds a shortcut to minimise and restore all windows From de8e2517e212caa80ff129432087e9c9c519f695 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 31 Mar 2018 07:09:34 +0200 Subject: [PATCH 2/5] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- effects/blur/blur_config.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/effects/blur/blur_config.desktop b/effects/blur/blur_config.desktop index 133f399e76..ba93d5cd6b 100644 --- a/effects/blur/blur_config.desktop +++ b/effects/blur/blur_config.desktop @@ -39,7 +39,7 @@ Name[hr]=Mrlja Name[hsb]=Młowojty Name[hu]=Elmosódás Name[ia]=Obscura (Blur) -Name[id]=Samar +Name[id]=Buram Name[is]=Móða Name[it]=Sfocatura Name[ja]=ぼかし From 0ccecbc4275783e217d3c1ab1d3acd6988368757 Mon Sep 17 00:00:00 2001 From: Alexey Min Date: Fri, 6 Apr 2018 00:17:08 +0300 Subject: [PATCH 3/5] drm backend: choose correct EGL config with mesa-18 Do not blindly select first EGL config from returned list, but choose the one that matches GBM surfaces, that will be created later. GBM surfaces are created with GBM_FORMAT_XRGB8888 format, so choose the config that matches it. With wrong format EglGbmBackend::resetOutput() will later fail with error EGL_BAD_MATCH. Test Plan: Compile, run startplasmacompositor. Verify that OpenGL compositing is used, either by kwin debug console, or by kwin support information. Reviewers: graesslin, davidedmundson, #kwin, #plasma_on_wayland, bshah Reviewed By: davidedmundson Subscribers: zzag, kwin, #kwin Tags: #kwin, #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D11758 --- plugins/platforms/drm/egl_gbm_backend.cpp | 38 ++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/plugins/platforms/drm/egl_gbm_backend.cpp b/plugins/platforms/drm/egl_gbm_backend.cpp index 092cee3774..73755d8334 100644 --- a/plugins/platforms/drm/egl_gbm_backend.cpp +++ b/plugins/platforms/drm/egl_gbm_backend.cpp @@ -243,17 +243,41 @@ bool EglGbmBackend::initBufferConfigs() EGLint count; EGLConfig configs[1024]; - if (eglChooseConfig(eglDisplay(), config_attribs, configs, 1, &count) == EGL_FALSE) { + if (!eglChooseConfig(eglDisplay(), config_attribs, configs, sizeof(configs)/sizeof(EGLConfig), &count)) { qCCritical(KWIN_DRM) << "choose config failed"; return false; } - if (count != 1) { - qCCritical(KWIN_DRM) << "choose config did not return a config" << count; - return false; - } - setConfig(configs[0]); - return true; + qCDebug(KWIN_DRM) << "EGL buffer configs count:" << count; + + // loop through all configs, chosing the first one that has suitable format + for (EGLint i = 0; i < count; i++) { + EGLint gbmFormat; + // query some configuration parameters, to show in debug log + eglGetConfigAttrib(eglDisplay(), configs[i], EGL_NATIVE_VISUAL_ID, &gbmFormat); + + if (KWIN_DRM().isDebugEnabled()) { + // GBM formats are declared as FOURCC code (integer from ASCII chars, so use this fact) + char gbmFormatStr[sizeof(EGLint) + 1] = {0}; + memcpy(gbmFormatStr, &gbmFormat, sizeof(EGLint)); + // query number of bits for color channel + EGLint blueSize, redSize, greenSize, alphaSize; + eglGetConfigAttrib(eglDisplay(), configs[i], EGL_RED_SIZE, &redSize); + eglGetConfigAttrib(eglDisplay(), configs[i], EGL_GREEN_SIZE, &greenSize); + eglGetConfigAttrib(eglDisplay(), configs[i], EGL_BLUE_SIZE, &blueSize); + eglGetConfigAttrib(eglDisplay(), configs[i], EGL_ALPHA_SIZE, &alphaSize); + qCDebug(KWIN_DRM) << " EGL config #" << i << " has GBM FOURCC format:" << gbmFormatStr + << "; color sizes (RGBA order):" << redSize << greenSize << blueSize << alphaSize; + } + + if ((gbmFormat == GBM_FORMAT_XRGB8888) || (gbmFormat == GBM_FORMAT_ARGB8888)) { + setConfig(configs[i]); + return true; + } + } + + qCCritical(KWIN_DRM) << "choose EGL config did not return a suitable config" << count; + return false; } void EglGbmBackend::present() From 67acb21ab89fb2f0621ef7c1675a6e7e974e30df Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 22 Apr 2018 07:33:45 +0200 Subject: [PATCH 4/5] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/platforms/hwcomposer/hwcomposer.json | 1 + plugins/platforms/wayland/wayland.json | 1 + plugins/platforms/x11/standalone/x11.json | 1 + plugins/scenes/opengl/opengl.json | 1 + plugins/scenes/qpainter/qpainter.json | 1 + plugins/scenes/xrender/xrender.json | 1 + 6 files changed, 6 insertions(+) diff --git a/plugins/platforms/hwcomposer/hwcomposer.json b/plugins/platforms/hwcomposer/hwcomposer.json index 61cb0fc082..bca712c116 100644 --- a/plugins/platforms/hwcomposer/hwcomposer.json +++ b/plugins/platforms/hwcomposer/hwcomposer.json @@ -20,6 +20,7 @@ "Description[pl]": "Wyświetlaj przez sprzętowy kompozytor przez libhybris.", "Description[pt]": "Desenhar através do Hwcomposer, usando a libhybris.", "Description[pt_BR]": "Renderizar através do hwcomposer e libhybris.", + "Description[ru]": "Отрисовка через hwcomposer с использованием libhybris.", "Description[sk]": "Renderovať cez hwcomposer cez libhybris.", "Description[sl]": "Izriši preko hwcomposer-ja in libhybris.", "Description[sr@ijekavian]": "Рендеровање кроз ХВ‑композер кроз libhybris.", diff --git a/plugins/platforms/wayland/wayland.json b/plugins/platforms/wayland/wayland.json index 03c1f2affd..0dd8a0537b 100644 --- a/plugins/platforms/wayland/wayland.json +++ b/plugins/platforms/wayland/wayland.json @@ -20,6 +20,7 @@ "Description[pl]": "Wyświetlaj w zagnieżdżonym oknie w kompozytorze Wayland.", "Description[pt]": "Desenhar numa janela encadeada no compositor de Wayland em execução.", "Description[pt_BR]": "Renderizar uma janela encadeada no compositor Wayland em execução.", + "Description[ru]": "Отрисовка во вложенное окно компоновщика Wayland.", "Description[sk]": "Renderovať na vnorené okno na bežiaci kompozítor Wayland.", "Description[sl]": "Izriši v gnezdeno okno na upravljalniku skladnje Wayland.", "Description[sr@ijekavian]": "Рендеровање у угнежђени прозор на вејланд слагачу.", diff --git a/plugins/platforms/x11/standalone/x11.json b/plugins/platforms/x11/standalone/x11.json index 785bd61c1c..fd09cbc6ad 100644 --- a/plugins/platforms/x11/standalone/x11.json +++ b/plugins/platforms/x11/standalone/x11.json @@ -20,6 +20,7 @@ "Description[pl]": "Wtyczka platformy dla wolnostojącego x11 w kwin_x11.", "Description[pt]": "'Plugin' de plataformas para um X11 autónomo no X11 do KWin.", "Description[pt_BR]": "Plugin de plataforma para um x11 independente no kwin_x11.", + "Description[ru]": "Подключаемый модуль выделенного х11 в kwin_x11.", "Description[sk]": "Platformový plugin pre standalone x11 v kwin_x11.", "Description[sl]": "Okoljski vstavek za samostojni x11 v kwin_x11.", "Description[sr@ijekavian]": "Платформски прикључак за самостални Икс11 у К‑вину.", diff --git a/plugins/scenes/opengl/opengl.json b/plugins/scenes/opengl/opengl.json index e6a452376d..9ae3dc9b0e 100644 --- a/plugins/scenes/opengl/opengl.json +++ b/plugins/scenes/opengl/opengl.json @@ -17,6 +17,7 @@ "Description[pl]": "Wtyczka kompozytora KWin wyświetlająca przez OpenGL", "Description[pt]": "'Plugin' de Composição do KWin com desenho via OpenGL", "Description[pt_BR]": "Plugin do compositor KWin renderizando pelo OpenGL", + "Description[ru]": "Отрисовка подключаемым модулем компоновщика KWin через OpenGL", "Description[sk]": "Renderovací plugin kompozítora KWin cez OpenGL", "Description[sl]": "Izrisovanje vstavka upravljalnika skladnje KWin preko OpenGL-ja", "Description[sr@ijekavian]": "К‑винов прикључак слагача за рендеровање кроз опенГЛ", diff --git a/plugins/scenes/qpainter/qpainter.json b/plugins/scenes/qpainter/qpainter.json index 998cd6df22..6f12295ff1 100644 --- a/plugins/scenes/qpainter/qpainter.json +++ b/plugins/scenes/qpainter/qpainter.json @@ -19,6 +19,7 @@ "Description[pl]": "Wtyczka kompozytora KWin wyświetlająca przez QPainter", "Description[pt]": "'Plugin' de Composição do KWin com desenho via QPainter", "Description[pt_BR]": "Plugin do compositor KWin renderizando pelo QPainter", + "Description[ru]": "Отрисовка подключаемым модулем компоновщика KWin через QPainter", "Description[sk]": "Renderovací plugin kompozítora KWin cez QPainter", "Description[sl]": "Izrisovanje vstavka upravljalnika skladnje KWin preko QPainter-ja", "Description[sr@ijekavian]": "К‑винов прикључак слагача за рендеровање кроз QPainter", diff --git a/plugins/scenes/xrender/xrender.json b/plugins/scenes/xrender/xrender.json index d2e1101877..818323b55a 100644 --- a/plugins/scenes/xrender/xrender.json +++ b/plugins/scenes/xrender/xrender.json @@ -19,6 +19,7 @@ "Description[pl]": "Wtyczka kompozytora KWin wyświetlająca przez XRender", "Description[pt]": "'Plugin' de Composição do KWin com desenho via XRender", "Description[pt_BR]": "Plugin do compositor KWin renderizando pelo XRender", + "Description[ru]": "Отрисовка подключаемым модулем компоновщика KWin через XRender", "Description[sk]": "Renderovací plugin kompozítora KWin cez XRender", "Description[sl]": "Izrisovanje vstavka upravljalnika skladnje KWin preko XRender-ja", "Description[sr@ijekavian]": "К‑винов прикључак слагача за рендеровање кроз Икс‑рендер", From bec8493459d5e15272a4fd07a84b35896b47ce69 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Sat, 21 Apr 2018 18:35:22 +0200 Subject: [PATCH 5/5] 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 --- .../integration/globalshortcuts_test.cpp | 20 +++++++++++++++++++ globalshortcuts.cpp | 3 +++ 2 files changed, 23 insertions(+) diff --git a/autotests/integration/globalshortcuts_test.cpp b/autotests/integration/globalshortcuts_test.cpp index 6a4024f00b..c17721bd12 100644 --- a/autotests/integration/globalshortcuts_test.cpp +++ b/autotests/integration/globalshortcuts_test.cpp @@ -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 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{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) diff --git a/globalshortcuts.cpp b/globalshortcuts.cpp index 89fc63235a..970c79fbf3 100644 --- a/globalshortcuts.cpp +++ b/globalshortcuts.cpp @@ -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,