Hello community, here is the log from the commit of package kwin5 for openSUSE:Factory checked in at 2017-07-02 13:34:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwin5 (Old) and /work/SRC/openSUSE:Factory/.kwin5.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwin5" Sun Jul 2 13:34:52 2017 rev:58 rq:506547 version:5.10.3 Changes: -------- --- /work/SRC/openSUSE:Factory/kwin5/kwin5.changes 2017-06-19 13:23:16.553405548 +0200 +++ /work/SRC/openSUSE:Factory/.kwin5.new/kwin5.changes 2017-07-02 13:34:55.322611522 +0200 @@ -1,0 +2,21 @@ +Tue Jun 27 17:50:18 CEST 2017 - [email protected] + +- Update to 5.10.3 + * New bugfix release + * For more details please see: + * https://www.kde.org/announcements/plasma-5.10.3.php +- Changes since 5.10.2: + * Properly block the edge also for touch screen edges (kde#380476) + * [platforms/x11] Add support for GLX_NV_robustness_video_memory_purge (kde#344326) + * Fix double click on window deco if tripple clicked (kde#361241) + * Make shadows work for windows 100% width or height (kde#380825) + * [tabbox] Fix casts to Client where it should be AbstractClient + * Fix switch desktop on screenedge while resizing a Wayland window + * Fix switch desktop through edge when moving window (kde#380440) + * Workaround Qt regression of no longer delivering events for the root window (kde#360841) + * Better handle cases when the xkb keymap fails to be created (kde#381210) +- Remove patches, now upstream: + * 0001-Force-creation-of-platform-window-for-the-desktop.patch + * 0001-Revert-Make-WindowSwitching-Alt-Tab-the-default-left.patch + +------------------------------------------------------------------- Old: ---- 0001-Force-creation-of-platform-window-for-the-desktop.patch 0001-Revert-Make-WindowSwitching-Alt-Tab-the-default-left.patch kwin-5.10.2.tar.xz New: ---- kwin-5.10.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwin5.spec ++++++ --- /var/tmp/diff_new_pack.njbY8V/_old 2017-07-02 13:34:56.130497600 +0200 +++ /var/tmp/diff_new_pack.njbY8V/_new 2017-07-02 13:34:56.134497036 +0200 @@ -21,7 +21,7 @@ %define wayland 0%{?suse_version} >= 1330 %bcond_without lang Name: kwin5 -Version: 5.10.2 +Version: 5.10.3 Release: 0 # Full Plasma 5 version (e.g. 5.8.95) %{!?_plasma5_bugfix: %global _plasma5_bugfix %{version}} @@ -32,10 +32,6 @@ Group: System/GUI/KDE Url: http://www.kde.org Source: http://download.kde.org/stable/plasma/%{version}/kwin-%{version}.tar.xz -# PATCH-FIX-OPENSUSE (?) -Patch1: 0001-Revert-Make-WindowSwitching-Alt-Tab-the-default-left.patch -# PATCH-FIX-OPENSUSE (?) -Patch100: 0001-Force-creation-of-platform-window-for-the-desktop.patch BuildRequires: extra-cmake-modules >= 0.0.11 BuildRequires: fdupes BuildRequires: kf5-filesystem @@ -145,8 +141,6 @@ %prep %setup -q -n kwin-%{version} -%patch1 -p1 -%patch100 -p1 %build %cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir} ++++++ kwin-5.10.2.tar.xz -> kwin-5.10.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/CMakeLists.txt new/kwin-5.10.3/CMakeLists.txt --- old/kwin-5.10.2/CMakeLists.txt 2017-06-13 20:22:03.000000000 +0200 +++ new/kwin-5.10.3/CMakeLists.txt 2017-06-27 11:53:06.000000000 +0200 @@ -1,5 +1,5 @@ project(KWIN) -set(PROJECT_VERSION "5.10.2") +set(PROJECT_VERSION "5.10.3") set(PROJECT_VERSION_MAJOR 5) cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/abstract_client.cpp new/kwin-5.10.3/abstract_client.cpp --- old/kwin-5.10.2/abstract_client.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/abstract_client.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -1495,7 +1495,7 @@ const qint64 interval = m_decoration.doubleClickTimer.elapsed(); m_decoration.doubleClickTimer.invalidate(); if (interval > QGuiApplication::styleHints()->mouseDoubleClickInterval()) { - m_decoration.doubleClickTimer.invalidate(); // expired -> new first click and pot. init + m_decoration.doubleClickTimer.start(); // expired -> new first click and pot. init } else { Workspace::self()->performWindowOperation(this, options->operationTitlebarDblClick()); dontMoveResize(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/integration/CMakeLists.txt new/kwin-5.10.3/autotests/integration/CMakeLists.txt --- old/kwin-5.10.2/autotests/integration/CMakeLists.txt 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/autotests/integration/CMakeLists.txt 2017-06-27 11:52:14.000000000 +0200 @@ -43,6 +43,7 @@ integrationTest(NAME testWindowSelection SRCS window_selection_test.cpp) integrationTest(NAME testPointerConstraints SRCS pointer_constraints_test.cpp) integrationTest(NAME testKeyboardLayout SRCS keyboard_layout_test.cpp) +integrationTest(NAME testKeymapCreationFailure SRCS keymap_creation_failure_test.cpp) if (XCB_ICCCM_FOUND) integrationTest(NAME testMoveResize SRCS move_resize_window_test.cpp LIBS XCB::ICCCM) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/integration/keymap_creation_failure_test.cpp new/kwin-5.10.3/autotests/integration/keymap_creation_failure_test.cpp --- old/kwin-5.10.2/autotests/integration/keymap_creation_failure_test.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kwin-5.10.3/autotests/integration/keymap_creation_failure_test.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -0,0 +1,102 @@ +/******************************************************************** +KWin - the KDE window manager +This file is part of the KDE project. + +Copyright (C) 2017 Martin Flöser <[email protected]> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*********************************************************************/ +#include "kwin_wayland_test.h" +#include "keyboard_input.h" +#include "keyboard_layout.h" +#include "platform.h" +#include "shell_client.h" +#include "virtualdesktops.h" +#include "wayland_server.h" +#include "workspace.h" + +#include <KConfigGroup> +#include <KGlobalAccel> + +#include <linux/input.h> + +using namespace KWin; +using namespace KWayland::Client; + +static const QString s_socketName = QStringLiteral("wayland_test_kwin_keymap_creation_failure-0"); + +class KeymapCreationFailureTest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void initTestCase(); + void init(); + void cleanup(); + + void testPointerButton(); +}; + +void KeymapCreationFailureTest::initTestCase() +{ + // situation for for BUG 381210 + // this will fail to create keymap + qputenv("XKB_DEFAULT_RULES", "no"); + qputenv("XKB_DEFAULT_MODEL", "no"); + qputenv("XKB_DEFAULT_LAYOUT", "no"); + qputenv("XKB_DEFAULT_VARIANT", "no"); + qputenv("XKB_DEFAULT_OPTIONS", "no"); + + qRegisterMetaType<KWin::ShellClient*>(); + qRegisterMetaType<KWin::AbstractClient*>(); + QSignalSpy workspaceCreatedSpy(kwinApp(), &Application::workspaceCreated); + QVERIFY(workspaceCreatedSpy.isValid()); + kwinApp()->platform()->setInitialWindowSize(QSize(1280, 1024)); + QVERIFY(waylandServer()->init(s_socketName.toLocal8Bit())); + + kwinApp()->setConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig)); + kwinApp()->setKxkbConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig)); + KConfigGroup layoutGroup = kwinApp()->kxkbConfig()->group("Layout"); + layoutGroup.writeEntry("LayoutList", QStringLiteral("no")); + layoutGroup.writeEntry("Model", "no"); + layoutGroup.writeEntry("Options", "no"); + layoutGroup.sync(); + + kwinApp()->start(); + QVERIFY(workspaceCreatedSpy.wait()); + waylandServer()->initWorkspace(); +} + +void KeymapCreationFailureTest::init() +{ + QVERIFY(Test::setupWaylandConnection()); +} + +void KeymapCreationFailureTest::cleanup() +{ + Test::destroyWaylandConnection(); +} + +void KeymapCreationFailureTest::testPointerButton() +{ + // test case for BUG 381210 + // pressing a pointer button results in crash + + // now create the crashing condition + // which is sending in a pointer event + kwinApp()->platform()->pointerButtonPressed(BTN_LEFT, 0); + kwinApp()->platform()->pointerButtonReleased(BTN_LEFT, 1); +} + +WAYLANDTEST_MAIN(KeymapCreationFailureTest) +#include "keymap_creation_failure_test.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/mock_abstract_client.cpp new/kwin-5.10.3/autotests/mock_abstract_client.cpp --- old/kwin-5.10.2/autotests/mock_abstract_client.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/autotests/mock_abstract_client.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -30,6 +30,7 @@ , m_hiddenInternal(false) , m_keepBelow(false) , m_geometry() + , m_resize(false) { } @@ -103,4 +104,14 @@ emit keepBelowChanged(); } +bool AbstractClient::isResize() const +{ + return m_resize; +} + +void AbstractClient::setResize(bool set) +{ + m_resize = set; +} + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/mock_abstract_client.h new/kwin-5.10.3/autotests/mock_abstract_client.h --- old/kwin-5.10.2/autotests/mock_abstract_client.h 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/autotests/mock_abstract_client.h 2017-06-27 11:52:14.000000000 +0200 @@ -47,6 +47,8 @@ void setHiddenInternal(bool set); void setGeometry(const QRect &rect); void setKeepBelow(bool); + bool isResize() const; + void setResize(bool set); virtual void showOnScreenEdge() = 0; Q_SIGNALS: @@ -60,6 +62,7 @@ bool m_hiddenInternal; bool m_keepBelow; QRect m_geometry; + bool m_resize; }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/mock_client.cpp new/kwin-5.10.3/autotests/mock_client.cpp --- old/kwin-5.10.2/autotests/mock_client.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/autotests/mock_client.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -35,9 +35,4 @@ setHiddenInternal(false); } -bool Client::isResize() const -{ - return false; -} - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/mock_client.h new/kwin-5.10.3/autotests/mock_client.h --- old/kwin-5.10.2/autotests/mock_client.h 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/autotests/mock_client.h 2017-06-27 11:52:14.000000000 +0200 @@ -34,8 +34,6 @@ public: explicit Client(QObject *parent); virtual ~Client(); - - bool isResize() const; void showOnScreenEdge() override; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/autotests/test_screen_edges.cpp new/kwin-5.10.3/autotests/test_screen_edges.cpp --- old/kwin-5.10.2/autotests/test_screen_edges.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/autotests/test_screen_edges.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -392,6 +392,27 @@ QCOMPARE(e->activatesForTouchGesture(), false); QCOMPARE(e->approachGeometry(), expectedGeometries.at(i*2+1)); } + + // let's start a move of window. + Client client(workspace()); + workspace()->setMovingClient(&client); + for (int i = 0; i < 8; ++i) { + auto e = edges.at(i); + QVERIFY(!e->isReserved()); + QCOMPARE(e->activatesForPointer(), true); + QCOMPARE(e->activatesForTouchGesture(), false); + QCOMPARE(e->approachGeometry(), expectedGeometries.at(i*2+1)); + } + // not for resize + client.setResize(true); + for (int i = 0; i < 8; ++i) { + auto e = edges.at(i); + QVERIFY(!e->isReserved()); + QCOMPARE(e->activatesForPointer(), false); + QCOMPARE(e->activatesForTouchGesture(), false); + QCOMPARE(e->approachGeometry(), expectedGeometries.at(i*2+1)); + } + workspace()->setMovingClient(nullptr); } void TestScreenEdges::testCallback() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/effects/frozenapp/package/metadata.desktop new/kwin-5.10.3/effects/frozenapp/package/metadata.desktop --- old/kwin-5.10.2/effects/frozenapp/package/metadata.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/effects/frozenapp/package/metadata.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -5,6 +5,7 @@ Name[el]=Αποκορεσμός χρωμάτων μη αποκρινόμενων εφαρμογών Name[en_GB]=Desaturate Unresponsive Applications Name[es]=Desaturar las aplicaciones que no responden +Name[eu]=Desasetu erantzuten ez duten aplikazioak Name[fi]=Vähennä värikylläisyyttä sovelluksilta, jotka eivät vastaa Name[he]=מחשיך יישומים שאינם מגיבים Name[it]=Desatura le applicazioni che non rispondono @@ -30,6 +31,7 @@ Comment[el]=Αποκορεσμός χρωμάτων παραθύρων μη αποκρινόμενων (κολλημένων) εφαρμογών Comment[en_GB]=Desaturate windows of unresponsive (frozen) applications Comment[es]=Desaturar las ventanas de las aplicaciones que no responden (congeladas) +Comment[eu]=Desasetu erantzuten ez duten aplikazioen leihoak (izoztuak) Comment[fi]=Vähennä värikylläisyyttä sovelluksilta, jotka eivät vastaa (ovat jumittuneet) Comment[he]=מחשיך חלונות של יישומים שאינם מגיבים (תקועים) Comment[it]=Desatura le finestre delle applicazione che non rispondono (bloccate) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/effects/logout/package/metadata.desktop new/kwin-5.10.3/effects/logout/package/metadata.desktop --- old/kwin-5.10.2/effects/logout/package/metadata.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/effects/logout/package/metadata.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -7,6 +7,7 @@ Name[el]=αποσύνδεση Name[en_GB]=logout Name[es]=cerrar la sesión +Name[eu]=itxi saioa Name[fi]=kirjaudu ulos Name[he]=התנתקות Name[hu]=Kijelentkezés diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/effects.cpp new/kwin-5.10.3/effects.cpp --- old/kwin-5.10.2/effects.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/effects.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -48,6 +48,7 @@ #include "kwinglutils.h" #include <QDebug> +#include <QDesktopWidget> #include <Plasma/Theme> @@ -599,6 +600,11 @@ bool ret = grabXKeyboard(); if (!ret) return false; + // Workaround for Qt 5.9 regression introduced with 2b34aefcf02f09253473b096eb4faffd3e62b5f4 + // we no longer get any events for the root window, one needs to call winId() on the desktop window + // TODO: change effects event handling to create the appropriate QKeyEvent without relying on Qt + // as it's done already in the Wayland case. + qApp->desktop()->winId(); } keyboard_grab_effect = effect; return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/kcmkwin/kwincompositing/kwineffect.knsrc new/kwin-5.10.3/kcmkwin/kwincompositing/kwineffect.knsrc --- old/kwin-5.10.2/kcmkwin/kwincompositing/kwineffect.knsrc 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/kcmkwin/kwincompositing/kwineffect.knsrc 2017-06-27 11:52:14.000000000 +0200 @@ -8,6 +8,7 @@ Name[el]=Εφέ διαχειριστή παραθύρων Name[en_GB]=Window Manager Effects Name[es]=Efectos del gestor de ventanas +Name[eu]=Leiho kudeatzailearen efektua Name[fi]=Ikkunaohjelman tehosteet Name[fr]=Effets du gestionnaire de fenêtres Name[he]=אפקטי מנהל חלונות diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/kcmkwin/kwinscreenedges/kwintouchscreen.desktop new/kwin-5.10.3/kcmkwin/kwinscreenedges/kwintouchscreen.desktop --- old/kwin-5.10.2/kcmkwin/kwinscreenedges/kwintouchscreen.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/kcmkwin/kwinscreenedges/kwintouchscreen.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -18,9 +18,11 @@ Name[el]=Οθόνη αφής Name[en_GB]=Touch Screen Name[es]=Pantalla táctil +Name[eu]=Ukimen-pantaila Name[fi]=Kosketusnäyttö Name[he]=מסך מגע Name[it]=Schermo a sfioramento +Name[lt]=Jutiklinis ekranas Name[nl]=Aanraakscherm Name[pl]=Ekran dotykowy Name[pt]=Ecrã Táctil @@ -41,6 +43,7 @@ Comment[ca@valencia]=Gestos de lliscament en la pantalla tàctil Comment[en_GB]=Touch screen swipe gestures Comment[es]=Gestos de deslizamiento en pantalla táctil +Comment[eu]=Ukipen-pantailan irrist-keinuak Comment[fi]=Kosketusnäytön pyyhkäisyeleet Comment[he]=מחוות החלקה של מסכי מגע Comment[it]=Gesti dello schermo a sfioramento @@ -65,6 +68,7 @@ X-KDE-Keywords[ca@valencia]=kwin,finestra,gestor,efecte,vora,borde,acció,canvi,escriptori,vores d'escriptori,vores de pantalla,costat de pantalla,comportament de la pantalla,pantalla tàctil X-KDE-Keywords[en_GB]=kwin,window,manager,effect,edge,border,action,switch,desktop,desktop edges,screen edges,side of screen,screen behaviour,touch screen X-KDE-Keywords[es]=kwin,ventana,gestor,efecto,esquina,borde,acción,cambiar,escritorio,bordes del escritorio,bordes de la pantalla,lado de la pantalla,comportamiento de la pantalla,pantalla táctil +X-KDE-Keywords[eu]=kwin,leiho,kudeatzaile,efektu,izkin,ertz,ekintza,aldatu,mahaigain,mahaigainaren ertzak,pantailen ertzak,pantailaren aldea,pantailaren portaera,ukipen-pantaila X-KDE-Keywords[fi]=kwin,ikkuna,hallinta,tehoste,kulma,laita,reuna,toiminto,vaihda,työpöytä,työpöydän reunat,näytön reunat,näytön laita,näytön käyttäytyminen,kosketusnäyttö X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,angolo,bordo,azione,scambiatore,desktop,bordi desktop,bordi schermo,lato dello schermo,comportamento schermo,schermo a sfioramento X-KDE-Keywords[nl]=kwin,venster,beheerder,effect,kant,rand,actie,omschakelen,bureaublad,bureaubladkanten,schermkanten,zijkant van het scherm,schermgedrag,aanraakscherm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/kcmkwin/kwinscripts/kwinscripts.knsrc new/kwin-5.10.3/kcmkwin/kwinscripts/kwinscripts.knsrc --- old/kwin-5.10.2/kcmkwin/kwinscripts/kwinscripts.knsrc 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/kcmkwin/kwinscripts/kwinscripts.knsrc 2017-06-27 11:52:14.000000000 +0200 @@ -8,6 +8,7 @@ Name[el]=Σενάρια διαχειριστή παραθύρων Name[en_GB]=Window Manager Scripts Name[es]=Guiones del gestor de ventanas +Name[eu]=Leiho kudeatzailearen scriptak Name[fi]=Ikkunaohjelman skriptit Name[fr]=Scripts du gestionnaire de fenêtres Name[hu]=Ablakkezelő szkriptek diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/kcmkwin/kwintabbox/kwinswitcher.knsrc new/kwin-5.10.3/kcmkwin/kwintabbox/kwinswitcher.knsrc --- old/kwin-5.10.2/kcmkwin/kwintabbox/kwinswitcher.knsrc 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/kcmkwin/kwintabbox/kwinswitcher.knsrc 2017-06-27 11:52:14.000000000 +0200 @@ -8,6 +8,7 @@ Name[el]=Διατάξεις εναλλαγής διαχειριστή παραθύρων Name[en_GB]=Window Manager Switching Layouts Name[es]=Esquemas de cambio del gestor de ventanas +Name[eu]=Leiho kudeatzailearen aldatzeko-antolamenduak Name[fi]=Ikkunaohjelman vaihdon asettelut Name[fr]=Changement de disposition du gestionnaire de fenêtres Name[he]=מחליף פריסות של מנהל החלונות diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/packageplugins/aurorae/kwin-packagestructure-aurorae.desktop new/kwin-5.10.3/packageplugins/aurorae/kwin-packagestructure-aurorae.desktop --- old/kwin-5.10.2/packageplugins/aurorae/kwin-packagestructure-aurorae.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/packageplugins/aurorae/kwin-packagestructure-aurorae.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -7,6 +7,7 @@ Name[el]=KWin Aurorae Name[en_GB]=KWin Aurorae Name[es]=Aurorae de KWin +Name[eu]=KWin Aurorae Name[fi]=KWin Aurorae Name[hu]=KWin Aurorae Name[it]=Aurorae di Kwin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/packageplugins/decoration/kwin-packagestructure-decoration.desktop new/kwin-5.10.3/packageplugins/decoration/kwin-packagestructure-decoration.desktop --- old/kwin-5.10.2/packageplugins/decoration/kwin-packagestructure-decoration.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/packageplugins/decoration/kwin-packagestructure-decoration.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -7,6 +7,7 @@ Name[el]=Διακοσμήσεις KWin Name[en_GB]=KWin Decoration Name[es]=Decoración de KWin +Name[eu]=KWin apainketa Name[fi]=KWin-ikkunakehykset Name[hu]=KWin dekoráció Name[ia]=Decorationes de KWin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/packageplugins/scripts/kwin-packagestructure-scripts.desktop new/kwin-5.10.3/packageplugins/scripts/kwin-packagestructure-scripts.desktop --- old/kwin-5.10.2/packageplugins/scripts/kwin-packagestructure-scripts.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/packageplugins/scripts/kwin-packagestructure-scripts.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -8,6 +8,7 @@ Name[el]=Σενάριο KWin Name[en_GB]=KWin Script Name[es]=Guion de KWin +Name[eu]=KWin scripta Name[fi]=KWin-skripti Name[hu]=KWin szkript Name[ia]=Script de KWin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/packageplugins/windowswitcher/kwin-packagestructure-windowswitcher.desktop new/kwin-5.10.3/packageplugins/windowswitcher/kwin-packagestructure-windowswitcher.desktop --- old/kwin-5.10.2/packageplugins/windowswitcher/kwin-packagestructure-windowswitcher.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/packageplugins/windowswitcher/kwin-packagestructure-windowswitcher.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -8,6 +8,7 @@ Name[el]=Εφαρμογή εναλλαγής παραθύρων Kwin Name[en_GB]=KWin Window Switcher Name[es]=Cambiador de ventanas de KWin +Name[eu]=KWin leiho-aldatzailea Name[fi]=KWin-ikkunanvalitsin Name[hu]=KWin ablakváltó Name[ia]=Commutator de fenestra de KWin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/plugins/kdecorations/aurorae/src/aurorae.knsrc new/kwin-5.10.3/plugins/kdecorations/aurorae/src/aurorae.knsrc --- old/kwin-5.10.2/plugins/kdecorations/aurorae/src/aurorae.knsrc 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/plugins/kdecorations/aurorae/src/aurorae.knsrc 2017-06-27 11:52:14.000000000 +0200 @@ -8,6 +8,7 @@ Name[el]=Διακοσμήσεις παραθύρου Aurorae Name[en_GB]=Aurorae Window Decorations Name[es]=Decoración de ventanas Aurorae +Name[eu]=Aurorae leihoentzako apaingarriak Name[fi]=Aurorae-ikkunakehykset Name[fr]=Décorations de fenêtres Aurorae Name[hu]=Aurorae ablakdekorációk diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/plugins/platforms/x11/standalone/edge.cpp new/kwin-5.10.3/plugins/platforms/x11/standalone/edge.cpp --- old/kwin-5.10.2/plugins/platforms/x11/standalone/edge.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/plugins/platforms/x11/standalone/edge.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -130,9 +130,6 @@ if (!isReserved()) { return; } - if (!activatesForPointer()) { - return; - } if (isBlocked()) { m_window.unmap(); m_approachWindow.unmap(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/plugins/platforms/x11/standalone/glxbackend.cpp new/kwin-5.10.3/plugins/platforms/x11/standalone/glxbackend.cpp --- old/kwin-5.10.2/plugins/platforms/x11/standalone/glxbackend.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/plugins/platforms/x11/standalone/glxbackend.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -64,6 +64,10 @@ } xcb_glx_buffer_swap_complete_event_t; #endif +#ifndef GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV +#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7 +#endif + #include <tuple> #if __cplusplus <= 201103L @@ -293,6 +297,15 @@ // Use glXCreateContextAttribsARB() when it's available if (hasExtension(QByteArrayLiteral("GLX_ARB_create_context"))) { + const int attribs_31_core_nv_robustness[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, 3, + GLX_CONTEXT_MINOR_VERSION_ARB, 1, + GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB, + GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB, + GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV, GL_TRUE, + 0 + }; + const int attribs_31_core_robustness[] = { GLX_CONTEXT_MAJOR_VERSION_ARB, 3, GLX_CONTEXT_MINOR_VERSION_ARB, 1, @@ -307,6 +320,13 @@ 0 }; + const int attribs_legacy_nv_robustness[] = { + GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB, + GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB, + GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV, GL_TRUE, + 0 + }; + const int attribs_legacy_robustness[] = { GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB, GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB, @@ -320,18 +340,31 @@ }; const bool have_robustness = hasExtension(QByteArrayLiteral("GLX_ARB_create_context_robustness")); + const bool haveVideoMemoryPurge = hasExtension(QByteArrayLiteral("GLX_NV_robustness_video_memory_purge")); // Try to create a 3.1 context first if (options->glCoreProfile()) { - if (have_robustness) - ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_31_core_robustness); + if (have_robustness) { + if (haveVideoMemoryPurge) { + ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_31_core_nv_robustness); + } + if (!ctx) { + ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_31_core_robustness); + } + } if (!ctx) ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_31_core); } - if (!ctx && have_robustness) - ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_legacy_robustness); + if (!ctx && have_robustness) { + if (haveVideoMemoryPurge) { + ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_legacy_nv_robustness); + } + if (!ctx) { + ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_legacy_robustness); + } + } if (!ctx) ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct, attribs_legacy); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/po/tr/kcmkwinrules.po new/kwin-5.10.3/po/tr/kcmkwinrules.po --- old/kwin-5.10.2/po/tr/kcmkwinrules.po 2017-06-13 20:21:36.000000000 +0200 +++ new/kwin-5.10.3/po/tr/kcmkwinrules.po 2017-06-27 11:52:54.000000000 +0200 @@ -192,9 +192,9 @@ "özelleştirilmiştir. Bir set <i>taban</i>+(<i>liste</i>) şeklinde " "özelleştirilmiştir, Burada taban değiştiricileri ve liste tuşların listesini " "belirtir.<br>\n" -"Örneğin.\"<b>ÜstKrktr+Alt+(123) ÜstKrktr+Ctrl+(ABC)</b>\" önce " -"<b>ÜstKrktr+Alt+1</b>'i deneyecek sırayla devam edecek en son olarak " -"<b>ÜstKrktr+Ctrl+C</b>'yi deneyecektir." +"Örneğin.\"<b>ÜstKrktr+Alt+(123) ÜstKrktr+Ctrl+(ABC)</b>\" önce <b>ÜstKrktr" +"+Alt+1</b>'i deneyecek sırayla devam edecek en son olarak <b>ÜstKrktr+Ctrl" +"+C</b>'yi deneyecektir." #. i18n: ectx: property (text), widget (QPushButton, pushButton1) #: editshortcut.ui:62 @@ -380,19 +380,18 @@ "given value until it is hidden (this action will be deleted after the window " "is hidden).</li></ul>" msgstr "" -"Pencere özelliğinin nasıl etkileneceğini belirtin:<ul><li><em>Etkilenme:</em>" -" Pencere özelliği etkilenmeyecektir ve öntanımlı ayarlar kullanılacaktır. " -"Bunu belirtmek bir çok genel pencerenin etkilenmesini " -"engelliyeecktir.</li><li><em>İlk Olarak Uygula:</em> Pencere özelliği, " -"pencere oluşturulduktan sonra verilen değere ayarlanacaktır. Daha başka " -"değişiklik olmayacaktır.</li><li><em>Hatırla:</em> Pencere özelliğinin " -"değeri her zaman hatırlanacak ve en son hatırlanan değer " -"uygulanacaktır.</li><li><em>Zorla:</em> Bu, pencere özelliğini her zaman " -"verilen değerlere zorlar.</li><li><em>Şimdi Uygula:</em> Pencere özelliğine " -"verilen değer hemen uygulanacak ve sonra etkilenmeyecektir (bu eylem daha " -"sonra silinecektir).</li><li><em>Geçici olarak Zorla:</em> Pencere özelliği " -"gizlenene kadar verilen değere zorlanacaktır (bu eylem pencere gizlendikten " -"sonra silinecektir).</li></ul>" +"Pencere özelliğinin nasıl etkileneceğini belirtin:<ul><li><em>Etkilenme:</" +"em> Pencere özelliği etkilenmeyecektir ve öntanımlı ayarlar kullanılacaktır. " +"Bunu belirtmek bir çok genel pencerenin etkilenmesini engelliyeecktir.</" +"li><li><em>İlk Olarak Uygula:</em> Pencere özelliği, pencere oluşturulduktan " +"sonra verilen değere ayarlanacaktır. Daha başka değişiklik olmayacaktır.</" +"li><li><em>Hatırla:</em> Pencere özelliğinin değeri her zaman hatırlanacak " +"ve en son hatırlanan değer uygulanacaktır.</li><li><em>Zorla:</em> Bu, " +"pencere özelliğini her zaman verilen değerlere zorlar.</li><li><em>Şimdi " +"Uygula:</em> Pencere özelliğine verilen değer hemen uygulanacak ve sonra " +"etkilenmeyecektir (bu eylem daha sonra silinecektir).</li><li><em>Geçici " +"olarak Zorla:</em> Pencere özelliği gizlenene kadar verilen değere " +"zorlanacaktır (bu eylem pencere gizlendikten sonra silinecektir).</li></ul>" #: ruleswidget.cpp:83 #, kde-format @@ -405,13 +404,13 @@ "em> The window property will be forced to the given value until it is hidden " "(this action will be deleted after the window is hidden).</li></ul>" msgstr "" -"Pencere özelliğinin nasıl etkileneceğini belirtin:<ul><li><em>Etkileme " -"Yok:</em> Pencere özelliği etkilenmeyecektir ve öntanımlı ayarlar " -"kullanılacaktır. Bunu belirtmek bir çok genel pencerenin etkilenmesini " -"engelleyecektir.</li><li><em>Zorla:</em> Bu, pencere özelliğini her zaman " -"verilen değerlere zorlar.</li><li><em>Geçici olarak Zorla:</em>Bu, pencere " -"özelliğini pencere gizlenene kadar verilen değerlere zorlar. (bu eylem " -"pencere gizlenince silinir).</li></ul>" +"Pencere özelliğinin nasıl etkileneceğini belirtin:<ul><li><em>Etkileme Yok:</" +"em> Pencere özelliği etkilenmeyecektir ve öntanımlı ayarlar kullanılacaktır. " +"Bunu belirtmek bir çok genel pencerenin etkilenmesini engelleyecektir.</" +"li><li><em>Zorla:</em> Bu, pencere özelliğini her zaman verilen değerlere " +"zorlar.</li><li><em>Geçici olarak Zorla:</em>Bu, pencere özelliğini pencere " +"gizlenene kadar verilen değerlere zorlar. (bu eylem pencere gizlenince " +"silinir).</li></ul>" #: ruleswidget.cpp:150 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/po/tr/kcmkwm.po new/kwin-5.10.3/po/tr/kcmkwm.po --- old/kwin-5.10.2/po/tr/kcmkwm.po 2017-06-13 20:21:36.000000000 +0200 +++ new/kwin-5.10.3/po/tr/kcmkwm.po 2017-06-27 11:52:54.000000000 +0200 @@ -530,8 +530,8 @@ "<li><em>Rastgele</em> rastgele bir yerleşim kullanacaktır.</li>\n" "<li><em>Ortalanmış</em> pencereyi ortaya yerleştirecektir.</li>\n" "<li><em>Sıfır Köşeli</em> pencereyi sol üst köşeye yerleştirecektir.</li>\n" -"<li><em>Farenin Altında</em> pencereyi imlecin altına yerleştirecektir.</li>" -"\n" +"<li><em>Farenin Altında</em> pencereyi imlecin altına yerleştirecektir.</" +"li>\n" "</ul>" #. i18n: ectx: property (text), item, widget (KComboBox, placementCombo) @@ -698,8 +698,8 @@ "Think as <i>Click To Focus</i> just without having to actually click." msgstr "" "<b>Odak Fareyi Takip Eder</b><br>\n" -"Farenin bir pencere üzerine sürüklenmesi, o pencereyi etkinleştirir.<br><br>" -"\n" +"Farenin bir pencere üzerine sürüklenmesi, o pencereyi etkinleştirir." +"<br><br>\n" "Örn. farenin altında rastgele görünen pencereler odaklanılmayacaktır.<br>\n" "Odak çalma koruması, alışıldığı gibi kullanılır.<br><br>\n" "<i>Odaklanmak için Tıkla</i> olarak düşünün, sadece gerçekten tıklamadan." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/po/tr/kwin.po new/kwin-5.10.3/po/tr/kwin.po --- old/kwin-5.10.2/po/tr/kwin.po 2017-06-13 20:21:36.000000000 +0200 +++ new/kwin-5.10.3/po/tr/kwin.po 2017-06-27 11:52:54.000000000 +0200 @@ -15,8 +15,8 @@ "Project-Id-Version: kwin\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2017-05-10 06:25+0200\n" -"PO-Revision-Date: 2017-05-10 07:30+0000\n" -"Last-Translator: Kaan <[email protected]>\n" +"PO-Revision-Date: 2017-06-09 14:24+0100\n" +"Last-Translator: Volkan Gezer <[email protected]>\n" "Language-Team: Turkish <[email protected]>\n" "Language: tr\n" "MIME-Version: 1.0\n" @@ -818,8 +818,8 @@ "<p>You tried to close window \"%1\" from application \"%2\" (Process ID: " "%3), running on host \"%4\", but the application is not responding.</p>" msgstr "" -"<p>\"%4\" sunucusunda çalışan \"%2\" uygulamasından (Süreç Kimliği: %3) \"%" -"1\" penceresini kapatmaya çalıştınız fakat uygulama yanıt vermiyor.</p>" +"<p>\"%4\" sunucusunda çalışan \"%2\" uygulamasından (Süreç Kimliği: %3) " +"\"%1\" penceresini kapatmaya çalıştınız fakat uygulama yanıt vermiyor.</p>" #: helpers/killer/killer.cpp:103 #, kde-kuit-format @@ -1275,24 +1275,24 @@ #: main_wayland.cpp:522 #, kde-format msgid "The width for windowed mode. Default width is 1024." -msgstr "Pencereli kipin genişliği. Varsayılan genişlik 1024'tür." +msgstr "Pencereli kipin genişliği. Öntanımlı genişlik 1024'tür." #: main_wayland.cpp:526 #, kde-format msgid "The height for windowed mode. Default height is 768." -msgstr "Pencereli kipin yüksekliği. Varsayılan yükseklik 768'tir." +msgstr "Pencereli kipin yüksekliği. Öntanımlı yükseklik 768'tir." #: main_wayland.cpp:531 #, kde-format msgid "The scale for windowed mode. Default value is 1." -msgstr "Pencerelenmiş kipin ölçeği. Varsayılan değer 1'dir." +msgstr "Pencerelenmiş kipin ölçeği. Öntanımlı değer 1'dir." #: main_wayland.cpp:536 #, kde-format msgid "" "The number of windows to open as outputs in windowed mode. Default value is 1" msgstr "" -"Pencere kipinde çıkış olarak açılacak pencere sayısı. Varsayılan değer 1'dir" +"Pencere kipinde çıkış olarak açılacak pencere sayısı. Öntanımlı değer 1'dir" #: main_wayland.cpp:569 #, kde-format @@ -1331,7 +1331,8 @@ #: main_wayland.cpp:600 #, kde-format msgid "Exit after the session application, which is started by KWin, closed." -msgstr "KWin tarafından başlatılan oturum uygulaması kapatıldıktan sonra çıkın." +msgstr "" +"KWin tarafından başlatılan oturum uygulaması kapatıldıktan sonra çıkın." #: main_wayland.cpp:606 main_x11.cpp:423 #, kde-format @@ -1436,8 +1437,8 @@ "compositing, switch to the XRender backend or lower the resolution to %1x%1." msgstr "" "<h1>OpenGL masaüstü efektleri kullanılamayabilir</h1>Geçerli çözünürlükte " -"OpenGL Masaüstü Efektleri destekleniyor ancak oldukça yavaş çalışabilir.<br>" -"Ayrıca büyük pencereler tamamen siyah görünecektir.<br><br>Birleştirmeyi " +"OpenGL Masaüstü Efektleri destekleniyor ancak oldukça yavaş çalışabilir." +"<br>Ayrıca büyük pencereler tamamen siyah görünecektir.<br><br>Birleştirmeyi " "durdurun, XRender arka ucuna geçin veya çözünürlüğü %1x%1 olarak ayarlayın." #: scene_opengl.cpp:898 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/po/tr/kwin_scripting.po new/kwin-5.10.3/po/tr/kwin_scripting.po --- old/kwin-5.10.2/po/tr/kwin_scripting.po 2017-06-13 20:21:36.000000000 +0200 +++ new/kwin-5.10.3/po/tr/kwin_scripting.po 2017-06-27 11:52:54.000000000 +0200 @@ -85,7 +85,8 @@ #, kde-format msgctxt "KWin Scripting error thrown due to incorrect argument" msgid "Second argument to registerScreenEdge needs to be a callback" -msgstr "RegisterScreenEdge'in ikinci argümanının bir geriçağırım olması gerekir" +msgstr "" +"RegisterScreenEdge'in ikinci argümanının bir geriçağırım olması gerekir" #: scriptingutils.h:213 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/scene_opengl.cpp new/kwin-5.10.3/scene_opengl.cpp --- old/kwin-5.10.2/scene_opengl.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/scene_opengl.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -2248,12 +2248,12 @@ const QRectF outerRect(QPointF(-leftOffset(), -topOffset()), QPointF(topLevel()->width() + rightOffset(), topLevel()->height() + bottomOffset())); - const int width = qMax(topLeft.width(), bottomLeft.width()) + - qMax(top.width(), bottom.width()) + - qMax(topRight.width(), bottomRight.width()); - const int height = qMax(topLeft.height(), topRight.height()) + - qMax(left.height(), right.height()) + - qMax(bottomLeft.height(), bottomRight.height()); + const int width = std::max({topLeft.width(), left.width(), bottomLeft.width()}) + + std::max(top.width(), bottom.width()) + + std::max({topRight.width(), right.width(), bottomRight.width()}); + const int height = std::max({topLeft.height(), top.height(), topRight.height()}) + + std::max(left.height(), right.height()) + + std::max({bottomLeft.height(), bottom.height(), bottomRight.height()}); qreal tx1(0.0), tx2(0.0), ty1(0.0), ty2(0.0); @@ -2355,13 +2355,12 @@ const QSize topLeft(shadowPixmap(ShadowElementTopLeft).size()); const QSize bottomRight(shadowPixmap(ShadowElementBottomRight).size()); - const int width = qMax(topLeft.width(), bottomLeft.width()) + - qMax(top.width(), bottom.width()) + - qMax(topRight.width(), bottomRight.width()); - - const int height = qMax(topRight.height(), topLeft.height()) + - qMax(left.height(), right.height()) + - qMax(bottomLeft.height(), bottomRight.height()); + const int width = std::max({topLeft.width(), left.width(), bottomLeft.width()}) + + std::max(top.width(), bottom.width()) + + std::max({topRight.width(), right.width(), bottomRight.width()}); + const int height = std::max({topLeft.height(), top.height(), topRight.height()}) + + std::max(left.height(), right.height()) + + std::max({bottomLeft.height(), bottom.height(), bottomRight.height()}); if (width == 0 || height == 0) { return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/screenedge.cpp new/kwin-5.10.3/screenedge.cpp --- old/kwin-5.10.2/screenedge.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/screenedge.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -183,6 +183,12 @@ if (m_edges->isDesktopSwitching()) { return true; } + if (m_edges->isDesktopSwitchingMovingClients()) { + auto c = Workspace::self()->getMovingClient(); + if (c && !c->isResize()) { + return true; + } + } if (!m_callBacks.isEmpty()) { return true; } @@ -293,10 +299,7 @@ void Edge::handle(const QPoint &cursorPos) { AbstractClient *movingClient = Workspace::self()->getMovingClient(); - bool isResize = false; - if (Client *movingClientClient = qobject_cast<Client*>(movingClient)) - isResize = movingClientClient->isResize(); - if ((edges()->isDesktopSwitchingMovingClients() && movingClient && !isResize) || + if ((edges()->isDesktopSwitchingMovingClients() && movingClient && !movingClient->isResize()) || (edges()->isDesktopSwitching() && isScreenEdge())) { // always switch desktops in case: // moving a Client and option for switch on client move is enabled diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/scripts/minimizeall/metadata.desktop new/kwin-5.10.3/scripts/minimizeall/metadata.desktop --- old/kwin-5.10.2/scripts/minimizeall/metadata.desktop 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/scripts/minimizeall/metadata.desktop 2017-06-27 11:52:14.000000000 +0200 @@ -19,7 +19,7 @@ Name[it]=Minimizza tutto Name[ja]=すべて最小化 Name[ko]=모두최소화 -Name[lt]=SumažintiVisus +Name[lt]=Sumažinti visus Name[nb]=Minimer alt Name[nl]=Alles-minimaliseren Name[nn]=Minimer alle diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/tabbox/tabbox.cpp new/kwin-5.10.3/tabbox/tabbox.cpp --- old/kwin-5.10.2/tabbox/tabbox.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/tabbox/tabbox.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -284,7 +284,7 @@ ToplevelList stacking = Workspace::self()->stackingOrder(); TabBoxClientList ret; foreach (Toplevel *toplevel, stacking) { - if (Client *client = qobject_cast<Client*>(toplevel)) { + if (auto client = qobject_cast<AbstractClient*>(toplevel)) { ret.append(client->tabBoxClient()); } } @@ -331,7 +331,7 @@ QWeakPointer<TabBoxClient> TabBoxHandlerImpl::desktopClient() const { foreach (Toplevel *toplevel, Workspace::self()->stackingOrder()) { - Client *client = qobject_cast<Client*>(toplevel); + auto client = qobject_cast<AbstractClient*>(toplevel); if (client && client->isDesktop() && client->isOnCurrentDesktop() && client->screen() == screens()->current()) { return client->tabBoxClient(); } @@ -1319,7 +1319,7 @@ void TabBox::CDEWalkThroughWindows(bool forward) { - Client* c = nullptr; + AbstractClient* c = nullptr; // this function find the first suitable client for unreasonable focus // policies - the topmost one, with some exceptions (can't be keepabove/below, // otherwise it gets stuck on them) @@ -1327,7 +1327,7 @@ for (int i = Workspace::self()->stackingOrder().size() - 1; i >= 0 ; --i) { - Client* it = qobject_cast<Client*>(Workspace::self()->stackingOrder().at(i)); + auto it = qobject_cast<AbstractClient*>(Workspace::self()->stackingOrder().at(i)); if (it && it->isOnCurrentActivity() && it->isOnCurrentDesktop() && !it->isSpecialWindow() && it->isShown(false) && it->wantsTabFocus() && !it->keepAbove() && !it->keepBelow()) { @@ -1335,14 +1335,14 @@ break; } } - Client* nc = c; + AbstractClient* nc = c; bool options_traverse_all; { KConfigGroup group(kwinApp()->config(), "TabBox"); options_traverse_all = group.readEntry("TraverseAll", false); } - Client* firstClient = nullptr; + AbstractClient* firstClient = nullptr; do { nc = forward ? nextClientStatic(nc) : previousClientStatic(nc); if (!firstClient) { @@ -1641,34 +1641,36 @@ auxiliary functions to travers all clients according to the static order. Useful for the CDE-style Alt-tab feature. */ -Client* TabBox::nextClientStatic(Client* c) const +AbstractClient* TabBox::nextClientStatic(AbstractClient* c) const { - if (!c || Workspace::self()->clientList().isEmpty()) + const auto &list = Workspace::self()->allClientList(); + if (!c || list.isEmpty()) return 0; - int pos = Workspace::self()->clientList().indexOf(c); + int pos = list.indexOf(c); if (pos == -1) - return Workspace::self()->clientList().first(); + return list.first(); ++pos; - if (pos == Workspace::self()->clientList().count()) - return Workspace::self()->clientList().first(); - return Workspace::self()->clientList()[ pos ]; + if (pos == list.count()) + return list.first(); + return list.at(pos); } /*! auxiliary functions to travers all clients according to the static order. Useful for the CDE-style Alt-tab feature. */ -Client* TabBox::previousClientStatic(Client* c) const +AbstractClient* TabBox::previousClientStatic(AbstractClient* c) const { - if (!c || Workspace::self()->clientList().isEmpty()) + const auto &list = Workspace::self()->allClientList(); + if (!c || list.isEmpty()) return 0; - int pos = Workspace::self()->clientList().indexOf(c); + int pos = list.indexOf(c); if (pos == -1) - return Workspace::self()->clientList().last(); + return list.last(); if (pos == 0) - return Workspace::self()->clientList().last(); + return list.last(); --pos; - return Workspace::self()->clientList()[ pos ]; + return list.at(pos); } bool TabBox::establishTabBoxGrab() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/tabbox/tabbox.h new/kwin-5.10.3/tabbox/tabbox.h --- old/kwin-5.10.2/tabbox/tabbox.h 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/tabbox/tabbox.h 2017-06-27 11:52:14.000000000 +0200 @@ -176,8 +176,8 @@ void initShortcuts(); - Client* nextClientStatic(Client*) const; - Client* previousClientStatic(Client*) const; + AbstractClient* nextClientStatic(AbstractClient*) const; + AbstractClient* previousClientStatic(AbstractClient*) const; int nextDesktopStatic(int iDesktop) const; int previousDesktopStatic(int iDesktop) const; void keyPress(int key); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwin-5.10.2/xkb.cpp new/kwin-5.10.3/xkb.cpp --- old/kwin-5.10.2/xkb.cpp 2017-06-13 20:19:37.000000000 +0200 +++ new/kwin-5.10.3/xkb.cpp 2017-06-27 11:52:14.000000000 +0200 @@ -354,13 +354,16 @@ QString Xkb::layoutName(xkb_layout_index_t layout) const { + if (!m_keymap) { + return QString{}; + } return QString::fromLocal8Bit(xkb_keymap_layout_get_name(m_keymap, layout)); } QMap<xkb_layout_index_t, QString> Xkb::layoutNames() const { QMap<xkb_layout_index_t, QString> layouts; - const auto size = xkb_keymap_num_layouts(m_keymap); + const auto size = m_keymap ? xkb_keymap_num_layouts(m_keymap) : 0u; for (xkb_layout_index_t i = 0; i < size; i++) { layouts.insert(i, layoutName(i)); } @@ -387,6 +390,9 @@ Qt::KeyboardModifiers Xkb::modifiersRelevantForGlobalShortcuts() const { + if (!m_state) { + return Qt::NoModifier; + } Qt::KeyboardModifiers mods = Qt::NoModifier; if (xkb_state_mod_index_is_active(m_state, m_shiftModifier, XKB_STATE_MODS_EFFECTIVE) == 1) { mods |= Qt::ShiftModifier;
