From 47f414b6d52313692e50d103a957d2cc62eb3eb8 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Fri, 7 Jul 2017 05:51:38 +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" --- kcmkwin/kwincompositing/kcmkwineffects.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kcmkwin/kwincompositing/kcmkwineffects.desktop b/kcmkwin/kwincompositing/kcmkwineffects.desktop index 66cd452514..e3e826e330 100644 --- a/kcmkwin/kwincompositing/kcmkwineffects.desktop +++ b/kcmkwin/kwincompositing/kcmkwineffects.desktop @@ -113,7 +113,7 @@ X-KDE-Keywords[en_GB]=kwin,window,manager,effect,3D effects,2D effects,graphical X-KDE-Keywords[es]=kwin,ventana,gestor,efecto,efectos 3D,efectos 2D,efectos gráficos,efectos del escritorio,animaciones,animaciones diversas,efectos de la gestión de ventanas,efecto de cambio de ventana,efecto de cambio de escritorio,animaciones,animaciones del escritorio,controladores,preferencias del controlador,renderización,renderizar,efecto de inversión,efecto de espejo,efecto de lupa,efecto auxiliar de instantánea,efecto de seguimiento del ratón,efecto de ampliación,efecto borroso,efecto de explosión,efecto de desvanecimiento,efecto de desvanecimiento del escritorio,efecto de romper en pedazos,efecto de planeo,efecto de resaltar ventanas,efecto de inicio de sesión,efecto de final de sesión,efecto de lámpara mágica,efecto de animación al minimizar,efecto de marcas del ratón,efecto de escalado,efecto de captura de pantalla,efecto de hoja,efecto de deslizamiento,efecto de ventanas emergentes deslizantes,efecto de miniaturas de la barra de tareas,efecto de miniaturas laterales,transparencia,efecto de transparencia,efecto de geometría de las ventanas,efecto de ventanas gelatinosas,efecto de notificación de inicio,efecto de padre de la ventana,efecto de oscurecer inactiva,efecto de oscurecer la pantalla,efecto atrás,efectos atractivos,efecto de mostrar FPS,efecto de mostrar pintura,efecto de selección de ventana en caja,efecto de selección de ventana en modo carátula,efecto de cubo del escritorio,efecto de animación del cubo del escritorio,efecto de rejilla del escritorio,efecto de selección de ventana en modo cascada,efecto de contorno,efecto de presentación de ventanas,efecto de cambiar tamaño de las ventanas X-KDE-Keywords[et]=kwin,aken,hakdur,efekt,3D efektid,ruumilised efektid,2D efektid,graafikaefektid,töölauaefektid,animatsioonid,eri animatsioonid,aknahaldusefektid,akna lülitamise efekt,töölaua lülitamise efekt,animatsioonid,töölauaanimatsioonid,draiverid,draiveri seadistused,renderdamine,renderdus,inverteerimisefekt,pikksilmaefekt,suurendusklaasiefekt,tõmbe abistaja efekt,hiire jälgimise efekt,suurendusefekt,vidinavaate efekt,plahvatuseefekt,hääbumisefekt,töölaua kadumise efekt,lagunemise efekt,liuglemisefekt,akna esiletõstmise efekt,sisselogimisefekt,väljalogimisefekt,maagilise laterna efekt,minimeerimisanimatsiooni efekt,hiirega tähistamise efekt,skaleerimisefekt,ekraanipildi efekt,leheefekt,slaidiefekt,liuglevate hüpikakende efekt,tegumiriba pisipiltide efekt,kõrvalasuvate pisipiltide efekt,läbipaistvus,läbipaistvuseefekt,akende geomeetria efekt,vonklevate akende efekt,käivitamise tagasiside efekt,dialoogi eellase efekt,tuhmi mitteaktiivse efekt,tuhmi ekraani efekt,tagasiliugumise efekt,silmarõõm,FPS-i näitamise efekt,joonistamise näitamise efekt,kastina lülitamise efekt,vaiplülitamise efekt,töölauakuubiku efekt, töölauakuubiku animatsiooni efekt,töölauavõrgustiku efekt,pööramisega lülitamise efekt,kontuuriefekt,aktiivsete akende efekt, akende suuruse muutmise efekt X-KDE-Keywords[fi]=kwin,ikkuna,ohjelma,ikkunointi,ikkunointiohjelma,ikkunanhallinta,tehoste,3D-tehosteet,2D-tehosteet,3U-tehosteet,2U-tehosteet,graafiset tehosteet,työpöytätehosteet,animaatiot,animoinnit,useita animaatioita,eri animaatiot,ikkunanhallintatehosteet,ikkunan vaihtotehoste,työpöydän vaihtotehoste,animaatiot,animoinnit,työpöytäanimaatiot,ajurit,ajuriasetukset,piirtojärjestelmä,renderöijä,renderoija,piirtäminen,renderöinti,renderointi,käänteisten värien tehoste,suurennuslasitehoste,pikaopastajatehoste,hiiren jäljitystehoste,zoomaustehoste,sumennustehoste,räjähdystehoste,häivtytystehoste,työpöydän häivytystehoste,hajoamistehoste,ikkunaliukutehoste,ikkunan korostustehoste,sisäänkirjautumistehosteuloskirjautumistehoste,taikalampputehoste,pienennysanimaatiotehoste,hiiren jäljet -tehoste,skaalaustehoste,kuvankaappaustehoste,arkkitehoste,liu’utustehoste,liukuvat ponnahdusikkunat -tehoste,tehtäväpalkin esikatselukuvat -tehoste,esikatselukuva vieressä -tehoste,läpikuultavuus,läpinäkyvyys,läpikuultavuustehoste,läpinäkyvyystehoste,ikkunan mitat -tehoste,heiluvat ikkunat -tehoste,käynnistymisen ilmaisemisen tehoste,isäikkunatehoste,passiivisen himmennystehoste,näytön himmennystehoste,taakse liu’utus -tehoste,silmäkarkki,karkki,FPS-näyttötehoste,näytä FPS -tehoste,piirtämisen näyttämistehoste,laatikkovaihtajatehoste,levykansivaihtajatehoste,työpöytäkuutiotehoste,työpöytäkuutioanimaatiotehoste,työpöydän ruudukko -tehoste,kääntövaihtajatehoste,ääriviivatehoste,ikkunoiden esittämistehoste,ikkunan koon muuttamistehoste,window,manager,compositing,effect,3D effects,2D effects,video settings,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,animation speed,desktop animations,drivers,driver settings,rendering,render,invert effect,looking glass effect,magnifier effect,snap helper effect,track mouse effect,zoom effect,blur effect,explosion effect,fade effect,fade desktop effect,fall apart effect,glide effect,highlight window effect,login effect,logout effect,magic lamp effect,minimize animation effect,mouse mark effect,scale in effect,screenshot effect,sheet effect,slide effect,sliding popups effect,taskbar thumbnails effect,thumbnail aside effect,translucency,translucency effect,transparency,window geometry effect,wobbly windows effect,startup feedback effect,dialog parent effect,dim inactive effect,dim screen effect,slide back effect,eye candy,candy,show FPS effect,show paint effect,box switch effect,cover switch effect,desktop cube effect,desktop cube animation effect,desktop grid effect,flip switch effect,outline effect,present windows effect,resize window effect -X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, effets 3D, effets 2D, effets graphiques, effets de bureau, animations, animations variés, effets de gestion des fenêtres, effets de changement de fenêtre, effets de changement de bureau, animations, animation du bureau, pilotes, paramètres du pilote, rendu, rendre, effet d'inversion, effet de verre, effet de loupe, effet d'aide au positionnement, effet de repérage de la souris, effet de zoom,effet de flou, effet du tableau de bord, effet d'explosion, effet de fondu, effet de fondu du bureau, effet d'effondrement, effet de glissement, effet de mise en valeur de la fenêtre, effet de connexion, effet de déconnexion, effet de lampe magique, effet de minimisation de l'application, effet de marque de la souris, effet de gradation, effet de capture d'écran, effet de feuille, effet de glisse, effet d'annotations glissantes, effet d'aperçu de la barre de tâche, effet d'aperçu sur le coté,translucidité, effet de translucidité, transparence, effet de géométrie de la fenêtre, effet de fenêtre en gélatine, effet du témoin de démarrage, effet de dialogue parent, effet d'obscurcissement de fenêtre inactive, effet d'obscurcissement du bureau, effet de glissement en arrière, confort visuel, beauté, effet d'affichage du FPS, effet d'affichage des zones peintes, effet de défilement dans une boîte, effet de défilement circulaire, effet de bureaux en cube, effet d'animation de cube de bureaux, effet de bureaux en grille, effet d'empilement en perspective, effet d'esquisse, effet de présentation des fenêtres, effet de redimensionnement des fenêtres +X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, effets 3D, effets 2D, effets graphiques, effets de bureau, animations, animations variés, effets de gestion des fenêtres, effets de changement de fenêtre, effets de changement de bureau, animations, animation du bureau, pilotes, paramètres du pilote, rendu, rendre, effet d'inversion, effet de verre, effet de loupe, effet d'aide au positionnement, effet de repérage de la souris, effet de zoom,effet de flou, effet du tableau de bord, effet d'explosion, effet de fondu, effet de fondu du bureau, effet d'effondrement, effet de glissement, effet de mise en valeur de la fenêtre, effet de connexion, effet de déconnexion, effet de lampe magique, effet de minimisation de l'application, effet de marque de la souris, effet de gradation, effet de capture d'écran, effet de feuille, effet de glisse, effet d'annotations glissantes, effet vignettes dans la barre des tâches, effet vignettes sur le coté, translucidité, effet de translucidité, transparence, effet de géométrie de la fenêtre, effet de fenêtre en gélatine, effet du témoin de démarrage, effet de dialogue parent, effet d'obscurcissement de fenêtre inactive, effet d'obscurcissement du bureau, effet de glissement en arrière, confort visuel, beauté, effet d'affichage du FPS, effet d'affichage des zones peintes, effet de défilement dans une boîte, effet de défilement circulaire, effet de bureaux en cube, effet d'animation de cube de bureaux, effet de bureaux en grille, effet d'empilement en perspective, effet d'esquisse, effet de présentation des fenêtres, effet de redimensionnement des fenêtres X-KDE-Keywords[gl]=kwin,window,xanela,manager,xestor,effect,efecto,3D effects,efectos 3D,2D effects,efectos 2D,configuración de vídeo,graphical effects,efectos gráficos,efectos visuais,desktop effects,efectos de escritorio,animations,animacións,various animations,animacións diversas,varias animacións,animacións variadas,window management effects,efectos de xestión de xanelas,window switching effect,efecto de cambio de xanela,desktop switching effect,efecto de cambio de escritorio,animations,animacións,desktop animations,animacións de escritorio,animacións dos escritorios,animacións do escritorio,drivers,controlador,controladores,driver settings,configuración dos controladores,configuración do controlador,rendering,renderizado,renderizamento,render,renderizar,invert effect,inverter un efecto,inverter efecto,reverter un efecto,reverter efecto,looking glass effect,efecto de lupa,efecto lupa,magnifier effect,snap helper effect,track mouse effect,efecto de seguir o rato,efecto de seguimento do rato,zoom effect,efecto de ampliación,blur effect,efecto borroso,explosion effect,efecto de explosión,fade effect,efecto de esvaer,fade desktop effect,efecto de esvaer o escritorio,fall apart effect,efecto de destrución,glide effect,efecto de brillo,highlight window effect,efecto de resaltar a xanela,efecto de salientar a xanela,login effect,efecto de acceder,logout effect,efecto de saír,magic lamp effect,efecto de lámpada máxica,minimize animation effect,efecto de minimizar,mouse mark effect,efecto de marca co rato,scale in effect,efecto de achegar,efecto de escalar,screenshot effect,efecto de captura,sheet effect,efecto de folla,slide effect,efecto de dispositiva,sliding popups effect,taskbar thumbnails effect,efecto de miniaturas,thumbnail aside effect,translucency,transparencia,translucidez,translucency effect,efecto de translucidez,efecto de transparencia,transparency,transparencia,window geometry effect,efecto de xeometría da xanela,efecto de xeometría das xanelas,wobbly windows effect,efecto de xanelas a tremer,startup feedback effect,dialog parent effect,efecto do pai do diálogo,dim inactive effect,dim screen effect,efecto de escurecer,slide back effect,eye candy,candy,show FPS effect,efecto de mostrar os FPS,show paint effect,box switch effect,cover switch effect,desktop cube effect,efecto de cubo de escritorio,efecto do cubo de escritorio,efecto de cubo do escritorio,desktop cube animation effect,desktop grid effect,efecto de grade de escritorios,efecto de grade de escritorios,flip switch effect,efecto de interruptor,outline effect,efecto de contorno,present windows effect,resize window effect,efecto de cambio de tamaño das xanelas X-KDE-Keywords[hu]=kwin,ablak,kezelő,hatás,3D hatás,2D hatás,grafikai hatások,asztali hatások,animációk,különféle animációk,ablakkezelő hatások,ablakváltó hatások,asztalváltó hatások,animációk,asztali animációk,meghajtók,meghajtó beállítások,leképezés,renderelés,fordított hatás,tükörhatás,nagyító hatás,elkapás segítő hatás,egérkövetés hatás,nagyítás hatás,elmosás,robbanás hatás,elhalványulás hatás,asztal elhalványulása hatás,széteső hatás,csúszás hatás,ablak kiemelése hatás,belépés hatás,kilépés hatás,varázslámpa hatás,minimalizálás animáció hatás,egérjelölés hatás,méretezés hatás,képernyőkép hatás,munkalap hatás,dia hatás,csúszó felugrók hatás,feladatsáv bélyegképek hatás,bélyegképek félre hatás,áttetszőség,áttetszőség hatás,átlátszóság,ablak geometria hatás,ingó ablak hatás,indulási visszajelzés hatás,párbeszédablak szülő hatás,dim inaktív hatás,dim kijelző hatás,dia vissza hatás,látványelem,édesség,FPS megjelenítése hatás,festék megjelenése hatás,dobozváltás hatás,eltakarás váltás hatás,asztal kocka hatás,asztal kockaanimáció hatás,asztal rács hatás,tükrözésváltás hatás,körvonal hatás,jelenlegi ablakok hatás,ablak átméretezése hatás X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,effetti 3D,effetti 2D,effetti grafici,effetti del desktop,animazioni,animazioni varie, effetti del gestore delle finestre,effetto dello scambiafinestre,effetto dello scambiatore di desktop,animazioni,animazioni del desktop,driver,impostazioni driver,rendering,render,effetto invertito,effetto vetro,effetto lente,effetto snap helper,effetto evidenzia mouse,effetto ingrandimento, effetto sfocatura,effetto esplosione,effetto dissolvenza,effetto dissolvenza desktop,effetto caduta,effetto planatura,effetto evidenziazione finestra,effetto schermata di accesso, effetto disconnessione,effetto lampada magica,effetto animazione di minimizzazione,effetto tracciatura mouse, effetto scalatura,effetto schermata,effetto foglio,effetto diapositiva,effetto scivolamento,effetto miniature nella barra delle applicazioni,effetto miniatura su un lato,translucenza,effetto translucenza, trasparenza,effetto geometria finestra,effetto finestre tremolanti,effetto segnale di avvio,effetto finestra madre,effetto oscura finestra inattiva,effetto oscura schermo,effetto scivola all'indietro,gradevole,effetto gradevole,effetto mostra FPS,effetto ridisegno,effetto scambio cubi,effetto scambio copertina,effetto cubi del desktop,effetto animazione cubi del desktop,effetto griglia desktop,effetto scambiatore con inversione,effetto riquadro,effetto finestra presente,effetto ridimensionamento finestra From 06a558e3de658f300b295beac7c4adc4f08227f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= Date: Sun, 16 Jul 2017 17:58:25 +0200 Subject: [PATCH 2/5] [platforms/x11] Quit the OpenGL Freeze protection thread on shutdown Summary: Weird NVIDIA behavior fixup part 2. Now that we do no longer freeze when NVIDIA decides to create an OpenGL error on startup (aefb5f4dd9d41aa7377d56ece203089c73aefe07), we experience a new issue. KWin is terminating (no idea why, [1]) and at the same time the OpenGL freeze protection thread is still running. So far we did not terminate the thread on shutdown and thus we hit an abort in Qt. This change ensures that we properly terminate the thread on shutdown. [1] My current theory is that games terminate KWin, common pattern of bug reports is "steam". BUG: 382283 FIXED-IN: 5.10.4 Test Plan: Tortured KWin by making sure I go through the code path, saw the abort without the patch, no more abort with the patch Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D6735 --- plugins/platforms/x11/standalone/x11_platform.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/platforms/x11/standalone/x11_platform.cpp b/plugins/platforms/x11/standalone/x11_platform.cpp index 5fdb3a34de..064daf5855 100644 --- a/plugins/platforms/x11/standalone/x11_platform.cpp +++ b/plugins/platforms/x11/standalone/x11_platform.cpp @@ -63,7 +63,14 @@ X11StandalonePlatform::X11StandalonePlatform(QObject *parent) #endif } -X11StandalonePlatform::~X11StandalonePlatform() = default; +X11StandalonePlatform::~X11StandalonePlatform() +{ + if (m_openGLFreezeProtectionThread) { + m_openGLFreezeProtectionThread->quit(); + m_openGLFreezeProtectionThread->wait(); + delete m_openGLFreezeProtectionThread; + } +} void X11StandalonePlatform::init() { From 5cb91762be43b4303a1864accc545a6fe26aa9ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= Date: Sat, 15 Jul 2017 21:39:57 +0200 Subject: [PATCH 3/5] [aurorae] Mark the render QQuickWindow as frameless Summary: On Wayland aurorae was creating a lot of stress for the system and basically turning the system unusable in a short time. This was due to a recursion starting to create OpenGL contexts. The window created a decoration (aurorae) which created a QQuickWindow. For that KWin creates an internal window which in turn triggers the creation of a window decoration and so on and on. By simply setting the render QQuickWindow as frameless we can prevent this recursion. Test Plan: Tested on Wayland and X11. On Wayland the recursion is gone. Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D6726 --- plugins/kdecorations/aurorae/src/aurorae.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdecorations/aurorae/src/aurorae.cpp b/plugins/kdecorations/aurorae/src/aurorae.cpp index 1fce657890..c2f625d34c 100644 --- a/plugins/kdecorations/aurorae/src/aurorae.cpp +++ b/plugins/kdecorations/aurorae/src/aurorae.cpp @@ -339,6 +339,7 @@ void Decoration::init() m_renderControl = new QQuickRenderControl(this); m_view = new QQuickWindow(m_renderControl); m_view->setColor(Qt::transparent); + m_view->setFlags(Qt::FramelessWindowHint); // delay rendering a little bit for better performance m_updateTimer.reset(new QTimer); From 139b4dc82a9423e42285a469ab7f7cc4139d7054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= Date: Sat, 15 Jul 2017 08:55:49 +0200 Subject: [PATCH 4/5] Properly swap the quick tile side when pressing the shortcut again Summary: The quick tile shortcuts have a feature of moving the window to the next screen if one presses the same shortcut again. E.g. if a window is quick tiled to the left on the right most screen, quick tile again to left should move it to the left screen and quick tile right. Thus it swaps the borders. This wasn't handled correctly, especially not for modes like top and bottom. If a window is quick tiled to the top an impossible mode was generated: Left | Right. Doesn't make sense. This change fixes the mode swapping and extends our quick tile testing to cover the situation. BUG: 382313 FIXED-IN: 5.10.4 Test Plan: Extended test case Reviewers: #plasma, #kwin Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D6708 --- autotests/integration/quick_tiling_test.cpp | 50 +++++++++++++-------- geometry.cpp | 4 +- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/autotests/integration/quick_tiling_test.cpp b/autotests/integration/quick_tiling_test.cpp index f5068108b0..9bd7b8bfdc 100644 --- a/autotests/integration/quick_tiling_test.cpp +++ b/autotests/integration/quick_tiling_test.cpp @@ -117,20 +117,21 @@ void QuickTilingTest::testQuickTiling_data() QTest::addColumn("mode"); QTest::addColumn("expectedGeometry"); QTest::addColumn("secondScreen"); + QTest::addColumn("expectedModeAfterToggle"); #define FLAG(name) AbstractClient::QuickTileMode(AbstractClient::QuickTile##name) - QTest::newRow("left") << FLAG(Left) << QRect(0, 0, 640, 1024) << QRect(1280, 0, 640, 1024); - QTest::newRow("top") << FLAG(Top) << QRect(0, 0, 1280, 512) << QRect(1280, 0, 1280, 512); - QTest::newRow("right") << FLAG(Right) << QRect(640, 0, 640, 1024) << QRect(1920, 0, 640, 1024); - QTest::newRow("bottom") << FLAG(Bottom) << QRect(0, 512, 1280, 512) << QRect(1280, 512, 1280, 512); + QTest::newRow("left") << FLAG(Left) << QRect(0, 0, 640, 1024) << QRect(1280, 0, 640, 1024) << FLAG(Right); + QTest::newRow("top") << FLAG(Top) << QRect(0, 0, 1280, 512) << QRect(1280, 0, 1280, 512) << FLAG(Top); + QTest::newRow("right") << FLAG(Right) << QRect(640, 0, 640, 1024) << QRect(1920, 0, 640, 1024) << AbstractClient::QuickTileMode(); + QTest::newRow("bottom") << FLAG(Bottom) << QRect(0, 512, 1280, 512) << QRect(1280, 512, 1280, 512) << FLAG(Bottom); - QTest::newRow("top left") << (FLAG(Left) | FLAG(Top)) << QRect(0, 0, 640, 512) << QRect(1280, 0, 640, 512); - QTest::newRow("top right") << (FLAG(Right) | FLAG(Top)) << QRect(640, 0, 640, 512) << QRect(1920, 0, 640, 512); - QTest::newRow("bottom left") << (FLAG(Left) | FLAG(Bottom)) << QRect(0, 512, 640, 512) << QRect(1280, 512, 640, 512); - QTest::newRow("bottom right") << (FLAG(Right) | FLAG(Bottom)) << QRect(640, 512, 640, 512) << QRect(1920, 512, 640, 512); + QTest::newRow("top left") << (FLAG(Left) | FLAG(Top)) << QRect(0, 0, 640, 512) << QRect(1280, 0, 640, 512) << (FLAG(Right) | FLAG(Top)); + QTest::newRow("top right") << (FLAG(Right) | FLAG(Top)) << QRect(640, 0, 640, 512) << QRect(1920, 0, 640, 512) << AbstractClient::QuickTileMode(); + QTest::newRow("bottom left") << (FLAG(Left) | FLAG(Bottom)) << QRect(0, 512, 640, 512) << QRect(1280, 512, 640, 512) << (FLAG(Right) | FLAG(Bottom)); + QTest::newRow("bottom right") << (FLAG(Right) | FLAG(Bottom)) << QRect(640, 512, 640, 512) << QRect(1920, 512, 640, 512) << AbstractClient::QuickTileMode(); - QTest::newRow("maximize") << FLAG(Maximize) << QRect(0, 0, 1280, 1024) << QRect(1280, 0, 1280, 1024); + QTest::newRow("maximize") << FLAG(Maximize) << QRect(0, 0, 1280, 1024) << QRect(1280, 0, 1280, 1024) << AbstractClient::QuickTileMode(); #undef FLAG } @@ -188,6 +189,10 @@ void QuickTilingTest::testQuickTiling() // quick tile should not be changed QCOMPARE(c->quickTileMode(), mode); QTEST(c->geometry(), "secondScreen"); + + // now try to toggle again + c->setQuickTileMode(mode, true); + QTEST(c->quickTileMode(), "expectedModeAfterToggle"); } void QuickTilingTest::testQuickMaximizing_data() @@ -426,20 +431,22 @@ void QuickTilingTest::testX11QuickTiling_data() { QTest::addColumn("mode"); QTest::addColumn("expectedGeometry"); + QTest::addColumn("screen"); + QTest::addColumn("modeAfterToggle"); #define FLAG(name) AbstractClient::QuickTileMode(AbstractClient::QuickTile##name) - QTest::newRow("left") << FLAG(Left) << QRect(0, 0, 640, 1024); - QTest::newRow("top") << FLAG(Top) << QRect(0, 0, 1280, 512); - QTest::newRow("right") << FLAG(Right) << QRect(640, 0, 640, 1024); - QTest::newRow("bottom") << FLAG(Bottom) << QRect(0, 512, 1280, 512); + QTest::newRow("left") << FLAG(Left) << QRect(0, 0, 640, 1024) << 0 << AbstractClient::QuickTileMode(); + QTest::newRow("top") << FLAG(Top) << QRect(0, 0, 1280, 512) << 1 << FLAG(Top); + QTest::newRow("right") << FLAG(Right) << QRect(640, 0, 640, 1024) << 1 << FLAG(Left); + QTest::newRow("bottom") << FLAG(Bottom) << QRect(0, 512, 1280, 512) << 1 << FLAG(Bottom); - QTest::newRow("top left") << (FLAG(Left) | FLAG(Top)) << QRect(0, 0, 640, 512); - QTest::newRow("top right") << (FLAG(Right) | FLAG(Top)) << QRect(640, 0, 640, 512); - QTest::newRow("bottom left") << (FLAG(Left) | FLAG(Bottom)) << QRect(0, 512, 640, 512); - QTest::newRow("bottom right") << (FLAG(Right) | FLAG(Bottom)) << QRect(640, 512, 640, 512); + QTest::newRow("top left") << (FLAG(Left) | FLAG(Top)) << QRect(0, 0, 640, 512) << 0 << AbstractClient::QuickTileMode(); + QTest::newRow("top right") << (FLAG(Right) | FLAG(Top)) << QRect(640, 0, 640, 512) << 1 << (FLAG(Left) | FLAG(Top)); + QTest::newRow("bottom left") << (FLAG(Left) | FLAG(Bottom)) << QRect(0, 512, 640, 512) << 0 << AbstractClient::QuickTileMode(); + QTest::newRow("bottom right") << (FLAG(Right) | FLAG(Bottom)) << QRect(640, 512, 640, 512) << 1 << (FLAG(Left) | FLAG(Bottom)); - QTest::newRow("maximize") << FLAG(Maximize) << QRect(0, 0, 1280, 1024); + QTest::newRow("maximize") << FLAG(Maximize) << QRect(0, 0, 1280, 1024) << 0 << AbstractClient::QuickTileMode(); #undef FLAG } @@ -483,6 +490,13 @@ void QuickTilingTest::testX11QuickTiling() QEXPECT_FAIL("maximize", "For maximize we get two changed signals", Continue); QCOMPARE(quickTileChangedSpy.count(), 1); + // quick tile to same edge again should also act like send to screen + QCOMPARE(client->screen(), 0); + client->setQuickTileMode(mode, true); + QTEST(client->screen(), "screen"); + QTEST(client->quickTileMode(), "modeAfterToggle"); + QCOMPARE(client->geometryRestore(), origGeo); + // and destroy the window again xcb_unmap_window(c.data(), w); xcb_destroy_window(c.data(), w); diff --git a/geometry.cpp b/geometry.cpp index 03bb9d623a..b73b9eba2f 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -3385,7 +3385,9 @@ void AbstractClient::setQuickTileMode(QuickTileMode mode, bool keyboard) whichScreen = screens[nextScreen].center(); // Swap sides - mode = ~mode & QuickTileHorizontal; + if (mode & QuickTileHorizontal) { + mode = (~mode & QuickTileHorizontal) | (mode & QuickTileVertical); + } } setElectricBorderMode(mode); // used by ::electricBorderMaximizeGeometry(.) } else if (quickTileMode() == QuickTileNone) { From bf0e0f071cebf9238669ce4352f29cc3f061edcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= Date: Sat, 15 Jul 2017 18:59:23 +0200 Subject: [PATCH 5/5] [aurorae] Add support for shaded windows Summary: Aurorae did not render correctly. This change addresses the problem for both maximized and restored windows. BUG: 373319 FIXED-IN: 5.10.4 Test Plan: shaded windows with Plastik and SVG based theme Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D6719 --- plugins/kdecorations/aurorae/src/aurorae.cpp | 2 ++ plugins/kdecorations/aurorae/src/qml/Decoration.qml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/kdecorations/aurorae/src/aurorae.cpp b/plugins/kdecorations/aurorae/src/aurorae.cpp index c2f625d34c..00632c35a0 100644 --- a/plugins/kdecorations/aurorae/src/aurorae.cpp +++ b/plugins/kdecorations/aurorae/src/aurorae.cpp @@ -405,6 +405,7 @@ void Decoration::init() connect(m_extendedBorders, &KWin::Borders::bottomChanged, this, updateExtendedBorders); } connect(client().data(), &KDecoration2::DecoratedClient::maximizedChanged, this, &Decoration::updateBorders, Qt::QueuedConnection); + connect(client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, &Decoration::updateBorders); updateBorders(); if (!m_view.isNull()) { auto resizeWindow = [this] { @@ -418,6 +419,7 @@ void Decoration::init() connect(client().data(), &KDecoration2::DecoratedClient::widthChanged, this, resizeWindow); connect(client().data(), &KDecoration2::DecoratedClient::heightChanged, this, resizeWindow); connect(client().data(), &KDecoration2::DecoratedClient::maximizedChanged, this, resizeWindow); + connect(client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, resizeWindow); resizeWindow(); } else { // create a dummy shadow for the configuration interface diff --git a/plugins/kdecorations/aurorae/src/qml/Decoration.qml b/plugins/kdecorations/aurorae/src/qml/Decoration.qml index 4c858b1d99..849ab66654 100644 --- a/plugins/kdecorations/aurorae/src/qml/Decoration.qml +++ b/plugins/kdecorations/aurorae/src/qml/Decoration.qml @@ -32,5 +32,5 @@ Item { } property bool alpha: true width: decoration.client.width + decoration.borderLeft + decoration.borderRight + (decoration.client.maximized ? 0 : (padding.left + padding.right)) - height: decoration.client.height + decoration.borderTop + decoration.borderBottom + (decoration.client.maximized ? 0 : (padding.top + padding.bottom)) + height: (decoration.client.shaded ? 0 : decoration.client.height) + decoration.borderTop + (decoration.client.shaded ? 0 : decoration.borderBottom) + (decoration.client.maximized ? 0 : (padding.top + padding.bottom)) }