From 226edf8b037f05b9e2b977a7e07cbf8227f23b26 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 28 Sep 2016 11:55:23 +0000 Subject: [PATCH 1/9] 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/drm/drm.json | 1 + plugins/platforms/fbdev/fbdev.json | 4 +++- plugins/platforms/hwcomposer/hwcomposer.json | 1 + plugins/platforms/virtual/virtual.json | 4 +++- plugins/platforms/wayland/wayland.json | 1 + plugins/platforms/x11/standalone/x11.json | 1 + plugins/platforms/x11/windowed/x11.json | 2 ++ 7 files changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/platforms/drm/drm.json b/plugins/platforms/drm/drm.json index ba19fc4650..cd75cb94da 100644 --- a/plugins/platforms/drm/drm.json +++ b/plugins/platforms/drm/drm.json @@ -29,6 +29,7 @@ "Description[uk]": "Обробляти через вузол DRM.", "Description[x-test]": "xxRender through drm node.xx", "Description[zh_CN]": "通过 drm 结点渲染。", + "Description[zh_TW]": "透過 drm 節點成像。", "Id": "KWinWaylandDrmBackend", "Name": "drm", "Name[ca@valencia]": "DRM", diff --git a/plugins/platforms/fbdev/fbdev.json b/plugins/platforms/fbdev/fbdev.json index 258cdb2bb6..103a7cc534 100644 --- a/plugins/platforms/fbdev/fbdev.json +++ b/plugins/platforms/fbdev/fbdev.json @@ -29,6 +29,7 @@ "Description[uk]": "Обробляти до буфера кадрів.", "Description[x-test]": "xxRender to framebuffer.xx", "Description[zh_CN]": "渲染到帧缓冲。", + "Description[zh_TW]": "成像至 framebuffer。", "Id": "KWinWaylandFbdevBackend", "Name": "framebuffer", "Name[ca@valencia]": "Framebuffer", @@ -44,7 +45,8 @@ "Name[sr@latin]": "Kadrobafer", "Name[sr]": "Кадробафер", "Name[sv]": "rambuffer", - "Name[x-test]": "xxframebufferxx" + "Name[x-test]": "xxframebufferxx", + "Name[zh_TW]": "影格緩衝區(framebuffer)" }, "input": false } \ No newline at end of file diff --git a/plugins/platforms/hwcomposer/hwcomposer.json b/plugins/platforms/hwcomposer/hwcomposer.json index bed756cb42..445940533c 100644 --- a/plugins/platforms/hwcomposer/hwcomposer.json +++ b/plugins/platforms/hwcomposer/hwcomposer.json @@ -27,6 +27,7 @@ "Description[uk]": "Обробляти за допомогою апаратного засобу композиції через libhybris.", "Description[x-test]": "xxRender through hwcomposer through libhybris.xx", "Description[zh_CN]": "使用 libhybris 通过 hwcomposer 渲染。", + "Description[zh_TW]": "透過 libhybris 成像到 hwcomposer。", "Id": "KWinWaylandHwcomposerBackend", "Name": "hwcomposer", "Name[pl]": "sprzętowy kompozytor", diff --git a/plugins/platforms/virtual/virtual.json b/plugins/platforms/virtual/virtual.json index 0e4f1e352f..d55b5af49a 100644 --- a/plugins/platforms/virtual/virtual.json +++ b/plugins/platforms/virtual/virtual.json @@ -29,6 +29,7 @@ "Description[uk]": "Обробляти до віртуального буфера кадрів.", "Description[x-test]": "xxRender to a virtual framebuffer.xx", "Description[zh_CN]": "渲染到虚拟帧缓冲。", + "Description[zh_TW]": "成像到虛擬影格緩衝區。", "Id": "KWinWaylandVirtualBackend", "Name": "virtual", "Name[ca@valencia]": "Virtual", @@ -45,7 +46,8 @@ "Name[sr@latin]": "Virtuelno", "Name[sr]": "Виртуелно", "Name[sv]": "virtuell", - "Name[x-test]": "xxvirtualxx" + "Name[x-test]": "xxvirtualxx", + "Name[zh_TW]": "虛擬" }, "input": true } \ No newline at end of file diff --git a/plugins/platforms/wayland/wayland.json b/plugins/platforms/wayland/wayland.json index f90449426c..b927cceb60 100644 --- a/plugins/platforms/wayland/wayland.json +++ b/plugins/platforms/wayland/wayland.json @@ -27,6 +27,7 @@ "Description[uk]": "Обробляти у вкладене вікно запущеного засобу композиції Wayland.", "Description[x-test]": "xxRender to a nested window on running Wayland compositor.xx", "Description[zh_CN]": "渲染到 Wayland 混成器上的嵌套窗口中", + "Description[zh_TW]": "成像到執行中的 Wayland 的巢狀視窗。", "Id": "KWinWaylandWaylandBackend", "Name": "wayland", "Name[ca@valencia]": "Wayland", diff --git a/plugins/platforms/x11/standalone/x11.json b/plugins/platforms/x11/standalone/x11.json index 7274b07e6a..d1c848c856 100644 --- a/plugins/platforms/x11/standalone/x11.json +++ b/plugins/platforms/x11/standalone/x11.json @@ -25,6 +25,7 @@ "Description[uk]": "Додаток платформи для окремого x11 у kwin_x11.", "Description[x-test]": "xxPlatform plugin for standalone x11 in kwin_x11.xx", "Description[zh_CN]": "kwin_x11 中的独立 x11 的平台插件", + "Description[zh_TW]": "在 kwin_x11 中供 standalone 的 x11 使用的平臺外掛程式。", "Id": "KWinX11Platform", "Name": "x11-standalone", "Name[ca@valencia]": "X11-autònoma", diff --git a/plugins/platforms/x11/windowed/x11.json b/plugins/platforms/x11/windowed/x11.json index 785219e9f4..a26285f3cf 100644 --- a/plugins/platforms/x11/windowed/x11.json +++ b/plugins/platforms/x11/windowed/x11.json @@ -17,6 +17,7 @@ "Description[pl]": "Wyświetlaj w zagnieżdżonym oknie w systemie okien X11.", "Description[pt]": "Desenhar numa janela encadeada no sistema de janelas X11.", "Description[pt_BR]": "Renderizar uma janela encadeada no sistema de janelas X11.", + "Description[ru]": "Отрисовка во вложенном окне оконной системы X11.", "Description[sk]": "Renderovať na vnorené okno na systém okien X11.", "Description[sl]": "Izriši v gnezdeno okno na okenskem sistemu X11.", "Description[sr@ijekavian]": "Рендеровање у угнежђени прозор на прозорском систему Икс11.", @@ -27,6 +28,7 @@ "Description[uk]": "Обробляти у вкладене вікно системи керування вікнами X11.", "Description[x-test]": "xxRender to a nested window on X11 windowing system.xx", "Description[zh_CN]": "渲染到 X11 窗口系统上的嵌套窗口中", + "Description[zh_TW]": "成像到 X11 視窗系統的巢狀視窗。", "Id": "KWinWaylandX11Backend", "Name": "x11", "Name[ca@valencia]": "X11", From 78143b0cf93fd44bf942b582d7ec9eebf9765cb4 Mon Sep 17 00:00:00 2001 From: Jonathan Riddell Date: Thu, 29 Sep 2016 11:00:41 +0100 Subject: [PATCH 2/9] Update version number for 5.8.0 GIT_SILENT --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1f3b10009..71bcc83e4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ project(KWIN) -set(PROJECT_VERSION "5.7.95") +set(PROJECT_VERSION "5.8.0") set(PROJECT_VERSION_MAJOR 5) cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) From b2bed00c825dc7f9947953630d275c9f1188650b Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 2 Oct 2016 12:02:41 +0000 Subject: [PATCH 3/9] 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/dialogparent/package/metadata.desktop | 4 ++-- kcmkwin/kwincompositing/kcmkwineffects.desktop | 2 +- kcmkwin/kwinoptions/kwinoptions.desktop | 2 +- kcmkwin/kwinrules/kwinrules.desktop | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/effects/dialogparent/package/metadata.desktop b/effects/dialogparent/package/metadata.desktop index 32127e8d9c..c61ee79b58 100644 --- a/effects/dialogparent/package/metadata.desktop +++ b/effects/dialogparent/package/metadata.desktop @@ -12,7 +12,7 @@ Name[cs]=Předek dialogu Name[da]=Dialogens forældrevindue Name[de]=Eltern-Fenster abdunkeln Name[el]=Γονικός διάλογος -Name[en_GB]=Dialogue Parent +Name[en_GB]=Dialogue Box Parent Name[eo]=Dialoga patro Name[es]=Padre de la ventana Name[et]=Dialoogi eellane @@ -87,7 +87,7 @@ Comment[cs]=Ztmaví okno nadřazené aktivnímu dialogu Comment[da]=Gør forældrevindue til aktuelt aktiv dialog mørkere Comment[de]=Dunkelt das Eltern-Fenster des aktiven Dialogs ab. Comment[el]=Σκίαση του γονικού παραθύρου του τρέχοντος ενεργού διαλόγου -Comment[en_GB]=Darkens the parent window of the currently active dialogue +Comment[en_GB]=Darkens the parent window of the currently active dialogue box Comment[eo]=Malheligas patrajn fenestrojn de la aktuala aktiva dialogo Comment[es]=Oscurece la ventana madre de los diálogos activos Comment[et]=Tumendab aktiivse dialoogi eellasakna diff --git a/kcmkwin/kwincompositing/kcmkwineffects.desktop b/kcmkwin/kwincompositing/kcmkwineffects.desktop index 1bca2c75e4..04c30063f5 100644 --- a/kcmkwin/kwincompositing/kcmkwineffects.desktop +++ b/kcmkwin/kwincompositing/kcmkwineffects.desktop @@ -109,7 +109,7 @@ X-KDE-Keywords[ca]=kwin,finestra,gestor,efecte,efectes 3D,efectes 2D,efectes gr X-KDE-Keywords[ca@valencia]=kwin,finestra,gestor,efecte,efectes 3D,efectes 2D,efectes gràfics,efectes d'escriptori,animacions,animacions diverses,efectes en la gestió de les finestres,efecte en el canvi de finestra,efecte en el canvi d'escriptori,animacions,animacions en l'escriptori,controladors,configuració dels controladors,renderització,render,efecte d'inversió,efecte d'aparença de vidre,efecte de lupa,efecte ajudant del desplaçament,efecte de seguiment del ratolí,efecte de zoom,efecte de difuminat,efecte d'explosió,efecte d'esvaïment,efecte d'esvaïment de l'escriptori,efecte de trencament,efecte de lliscament,efecte de ressaltat de la finestra,efecte en l'inici de la sessió,efecte en eixir de la sessió,efecte de làmpada màgica,efecte d'animació de la minimització,efecte de marca del ratolí,efecte d'apropament,efecte de captura de pantalla,efecte de full,efecte de diapositiva,efecte de missatges emergents lliscants,efecte de miniatures en la barra de tasques,efecte de miniatures laterals,translucidesa,efecte de translucidesa,transparència,efecte de geometria de la finestra,efecte de finestres sacsejades,efecte de confirmació d'engegada,efecte de diàleg principal,efecte d'enfosquiment en estar inactiu,efecte d'enfosquiment de la pantalla,efecte de diapositiva prèvia,decoració,efecte per mostrar els FPS,efecte de mostra de pintat,efecte del quadre de commutació,efecte de canvi de coberta,efecte de cub de l'escriptori,efecte d'animació del cub de l'escriptori,efecte de graella de l'escriptori,efecte de canvi en roda,efecte de contorn,efecte de presentació de les finestres,efecte de redimensió de la finestra X-KDE-Keywords[da]=kwin,vindue,vindueshåndtering,effekter,3D-effekter,2D-effekter,grafiske effekter,skrivebordseffekter,animationer,diverse animationer,vindueshåndteringseffekter,effekt til skift af vinduer,effekt til skrivebordsskift,skrivebordsanimationer,drivere,driverindstillinger,rendering,render,invertereffect,kikkerteffekt,forstørrelsesglaseffekt,hægtehjælpereffekt,følg musen-effekt,zoomeffect,sløreffekt,eksplosionseffekt,fade-effect,svæve-effect,fremhæv vindue-effekt,login-effekt,log ud-effekt,magisk lampe-effekt,minimer-effekt,musemærke-effekt,skalerind-effekt,skærmbillede-effekt,glide-effekt,glidende pop-op-effekt,opgavelinjeminiaturer-effekt,gennemsigtighed,transparens,ugennemsigtighed,vinduesgeometri-effekt,wobbly,blævrende vinduer,eye candy,øjeguf,vis FPS-effekt,cube,terning,gitter X-KDE-Keywords[de]=KWin,Fenster,Verwaltung,Effekt,2D-Effekte,3D-Effekte,Grafische Effekte,Desktopeffekte,Arbeitsflächeneffekte,Animation,Fensterverwaltungs-Effekte,Fensterwechsel-Effekte,Desktop-Wechsel,Arbeitsflächenwechsel,Desktop-Animation,Arbeitsflächen-Animation,Treiber,Treibereinstellung,Rendering,Rendern,Invertierungseffekt,Bildschirmlupeneffekt,Vergrößerungseffekt,Einrasteffekt,Maus folgen,Zoomeffekt,Dashboard,Explosionseffekt,Überblendungseffekt,Gleiteneffekt,Fensterhervorhebungs-Effekt,Anmeldungseffekt,Abmeldungseffekt,Animierter Minimierungseffekt,Mausmarkierungseffekt,Skalierungseffekt,Bildschirmeffekt,Blatteffekt,Folieneffekt,Vorschaueffekt der Kontrollleiste,Vorschaueffekt,Durchsichtigkeit,Durchsichtigkeitseffekt,Fenstergeometrieffekt,Effekt Wabernde Fenster,Programmstartanzeigeneffekt,Inaktiveffekt,Bildschirmabdunkelungseffekt,FPS-Effekt,Zeichnungsbereicheffekt,Kasten mit Minibilderneffekt,3D-Fenstergalerieeffekt,Desktopgittereffekt,3D-Fensterstapelumschalteffekt,Umrisseffekt,Fensteranzeigeeffekt,Fenstergrößenänderungseffekt -X-KDE-Keywords[en_GB]=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,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[en_GB]=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,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,dialogue box 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[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 diff --git a/kcmkwin/kwinoptions/kwinoptions.desktop b/kcmkwin/kwinoptions/kwinoptions.desktop index 505da68258..86ab1dfbde 100644 --- a/kcmkwin/kwinoptions/kwinoptions.desktop +++ b/kcmkwin/kwinoptions/kwinoptions.desktop @@ -110,7 +110,7 @@ Comment[cs]=Činnosti a chování oken Comment[da]=Vindueshandlinger og -opførsel Comment[de]=Fenster-Aktionen und -verhalten Comment[el]=Ενέργειες και συμπεριφορά παραθύρου -Comment[en_GB]=Window Actions and Behavior +Comment[en_GB]=Window Actions and Behaviour Comment[es]=Acciones y comportamiento de las ventanas Comment[et]=Akende toimingud ja käitumine Comment[fi]=Ikkunoiden toiminnot ja toiminta diff --git a/kcmkwin/kwinrules/kwinrules.desktop b/kcmkwin/kwinrules/kwinrules.desktop index aff9524c2b..b6a598f7af 100644 --- a/kcmkwin/kwinrules/kwinrules.desktop +++ b/kcmkwin/kwinrules/kwinrules.desktop @@ -83,7 +83,7 @@ Comment[cs]=Chování individuálních oken Comment[da]=Opførsel af enkeltvinduer Comment[de]=Individuelles Fensterverhalten Comment[el]=Συμπεριφορά ανεξάρτητου παραθύρου -Comment[en_GB]=Individual Window Behavior +Comment[en_GB]=Individual Window Behaviour Comment[es]=Comportamiento de las ventanas individuales Comment[et]=Konkreetse akna käitumine Comment[fi]=Yksittäisten ikkunoiden toiminta From 4d47f6d831f0216743a48c196e7f38f4806e857b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 4 Oct 2016 13:37:25 +0200 Subject: [PATCH 4/9] [autotests/integration] Add a test case for closing DebugConsole This test simulates closing the DebugConsole through the window decoration. Which unlike the dedicated button does not destroy the DebugConsole. CCBUG: 369858 --- autotests/integration/debug_console_test.cpp | 25 ++++++++++++++++++++ debug_console.h | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/autotests/integration/debug_console_test.cpp b/autotests/integration/debug_console_test.cpp index f75ba9f3bd..a89aadf37a 100644 --- a/autotests/integration/debug_console_test.cpp +++ b/autotests/integration/debug_console_test.cpp @@ -52,6 +52,7 @@ private Q_SLOTS: void testWaylandClient_data(); void testWaylandClient(); void testInternalWindow(); + void testClosingDebugConsole(); }; void DebugConsoleTest::initTestCase() @@ -502,6 +503,30 @@ void DebugConsoleTest::testInternalWindow() QCOMPARE(rowsRemovedSpy.first().first().value(), internalTopLevelIndex); } +void DebugConsoleTest::testClosingDebugConsole() +{ + // this test verifies that the DebugConsole gets destroyed when closing the window + // BUG: 369858 + + DebugConsole *console = new DebugConsole; + QSignalSpy destroyedSpy(console, &QObject::destroyed); + QVERIFY(destroyedSpy.isValid()); + + QSignalSpy clientAddedSpy(waylandServer(), &WaylandServer::shellClientAdded); + QVERIFY(clientAddedSpy.isValid()); + console->show(); + QCOMPARE(console->windowHandle()->isVisible(), true); + QTRY_COMPARE(clientAddedSpy.count(), 1); + ShellClient *c = clientAddedSpy.first().first().value(); + QVERIFY(c->isInternal()); + QCOMPARE(c->internalWindow(), console->windowHandle()); + QVERIFY(c->isDecorated()); + c->closeWindow(); + QEXPECT_FAIL("", "BUG 369858", Continue); + QVERIFY(destroyedSpy.wait()); + QCOMPARE(console->windowHandle()->isVisible(), false); +} + } WAYLANDTEST_MAIN(KWin::DebugConsoleTest) diff --git a/debug_console.h b/debug_console.h index f67b43a748..60a2d4aae9 100644 --- a/debug_console.h +++ b/debug_console.h @@ -94,7 +94,7 @@ public: QString displayText(const QVariant &value, const QLocale &locale) const override; }; -class DebugConsole : public QWidget +class KWIN_EXPORT DebugConsole : public QWidget { Q_OBJECT public: From 48db671684c6257161b4a438fe3f0a7dda7ede31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 4 Oct 2016 16:02:11 +0200 Subject: [PATCH 5/9] [autotests/integration] Add test case for repeating shortcuts This adds a new test case for global shortcuts which simulates triggering a shortcut through key repeat. The test verifies a problem that the the shortcut continues to be triggered after releasing the key if another key is still pressed (and triggers repeats). CCBUG: 369091 --- .../integration/globalshortcuts_test.cpp | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/autotests/integration/globalshortcuts_test.cpp b/autotests/integration/globalshortcuts_test.cpp index ab46fbd520..41b8d27251 100644 --- a/autotests/integration/globalshortcuts_test.cpp +++ b/autotests/integration/globalshortcuts_test.cpp @@ -26,6 +26,8 @@ along with this program. If not, see . #include "wayland_server.h" #include "workspace.h" +#include + #include #include @@ -43,6 +45,7 @@ private Q_SLOTS: void cleanup(); void testConsumedShift(); + void testRepeatedTrigger(); }; void GlobalShortcutsTest::initTestCase() @@ -96,5 +99,43 @@ void GlobalShortcutsTest::testConsumedShift() kwinApp()->platform()->keyboardKeyReleased(KEY_LEFTSHIFT, timestamp++); } +void GlobalShortcutsTest::testRepeatedTrigger() +{ + // this test verifies that holding a key, triggers repeated global shortcut + // in addition pressing another key should stop triggering the shortcut + + QScopedPointer action(new QAction(nullptr)); + action->setProperty("componentName", QStringLiteral(KWIN_NAME)); + action->setObjectName(QStringLiteral("globalshortcuts-test-consumed-shift")); + QSignalSpy triggeredSpy(action.data(), &QAction::triggered); + QVERIFY(triggeredSpy.isValid()); + KGlobalAccel::self()->setShortcut(action.data(), QList{Qt::Key_Percent}, KGlobalAccel::NoAutoloading); + input()->registerShortcut(Qt::Key_Percent, action.data()); + + // we need to configure the key repeat first. It is only enabled on libinput + waylandServer()->seat()->setKeyRepeatInfo(25, 300); + + // press shift+5 + quint32 timestamp = 0; + kwinApp()->platform()->keyboardKeyPressed(KEY_WAKEUP, timestamp++); + kwinApp()->platform()->keyboardKeyPressed(KEY_LEFTSHIFT, timestamp++); + QCOMPARE(input()->keyboardModifiers(), Qt::ShiftModifier); + kwinApp()->platform()->keyboardKeyPressed(KEY_5, timestamp++); + QTRY_COMPARE(triggeredSpy.count(), 1); + // and should repeat + QVERIFY(triggeredSpy.wait()); + QVERIFY(triggeredSpy.wait()); + // now release the key + kwinApp()->platform()->keyboardKeyReleased(KEY_5, timestamp++); + QEXPECT_FAIL("", "BUG 369091", Continue); + QVERIFY(!triggeredSpy.wait(500)); + + kwinApp()->platform()->keyboardKeyReleased(KEY_WAKEUP, timestamp++); + QVERIFY(!triggeredSpy.wait(500)); + + // release shift + kwinApp()->platform()->keyboardKeyReleased(KEY_LEFTSHIFT, timestamp++); +} + WAYLANDTEST_MAIN(GlobalShortcutsTest) #include "globalshortcuts_test.moc" From 6199631604f9a654a2474ae55ccceafc5a87123f Mon Sep 17 00:00:00 2001 From: Rohan Garg Date: Tue, 4 Oct 2016 15:55:26 +0200 Subject: [PATCH 6/9] Check for EGL_KHR_platform_x11 in addition to EGL_EXT_platform_x11 Summary: Some platforms (like Mali) only report the newer EGL_KHR_platform_x11 on X11. Reviewers: kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D2933 --- plugins/platforms/x11/common/eglonxbackend.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/platforms/x11/common/eglonxbackend.cpp b/plugins/platforms/x11/common/eglonxbackend.cpp index 35c401bfd1..43bf2649d8 100644 --- a/plugins/platforms/x11/common/eglonxbackend.cpp +++ b/plugins/platforms/x11/common/eglonxbackend.cpp @@ -181,8 +181,10 @@ bool EglOnXBackend::initRenderingContext() setHavePlatformBase(havePlatformBase); if (havePlatformBase) { // Make sure that the X11 platform is supported - if (!hasClientExtension(QByteArrayLiteral("EGL_EXT_platform_x11"))) { - qCWarning(KWIN_CORE) << "EGL_EXT_platform_base is supported, but EGL_EXT_platform_x11 is not. Cannot create EGLDisplay on X11"; + if (!hasClientExtension(QByteArrayLiteral("EGL_EXT_platform_x11")) && + !hasClientExtension(QByteArrayLiteral("EGL_KHR_platform_x11")) { + qCWarning(KWIN_CORE) << "EGL_EXT_platform_base is supported, but neither EGL_EXT_platform_x11 nor EGL_KHR_platform_x11 is supported." + << "Cannot create EGLDisplay on X11"; return false; } From 13991f85eabbf152434db28373b93339f04e1737 Mon Sep 17 00:00:00 2001 From: Rohan Garg Date: Tue, 4 Oct 2016 17:20:41 +0200 Subject: [PATCH 7/9] Fix the build 6199631604f9a654a2474ae55ccceafc5a87123f broke the build due to a missing bracket. --- plugins/platforms/x11/common/eglonxbackend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/platforms/x11/common/eglonxbackend.cpp b/plugins/platforms/x11/common/eglonxbackend.cpp index 43bf2649d8..78e0ce4de0 100644 --- a/plugins/platforms/x11/common/eglonxbackend.cpp +++ b/plugins/platforms/x11/common/eglonxbackend.cpp @@ -182,7 +182,7 @@ bool EglOnXBackend::initRenderingContext() if (havePlatformBase) { // Make sure that the X11 platform is supported if (!hasClientExtension(QByteArrayLiteral("EGL_EXT_platform_x11")) && - !hasClientExtension(QByteArrayLiteral("EGL_KHR_platform_x11")) { + !hasClientExtension(QByteArrayLiteral("EGL_KHR_platform_x11"))) { qCWarning(KWIN_CORE) << "EGL_EXT_platform_base is supported, but neither EGL_EXT_platform_x11 nor EGL_KHR_platform_x11 is supported." << "Cannot create EGLDisplay on X11"; return false; From fd6e4bb0236b42d4fab2fdc856a381b6159f6605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 4 Oct 2016 14:06:01 +0200 Subject: [PATCH 8/9] Destroy DebugConsole on hide of QWindow Summary: The quit button in the DebugConsole is connected to deleteLater on the DebugConsole. This is to clean up resources like the input event filter which is rather expensive to have running. When closed through the window decoration the DebugConsole window only got hidden but not destroyed. Resulting in the input filter to continue processing. This change ensures that the DebugConsole gets properly destroyed once the window gets hidden. BUG: 369858 FIXED-IN: 5.8.1 Reviewers: #kwin, #plasma_on_wayland Subscribers: plasma-devel, kwin Tags: #plasma_on_wayland, #kwin Differential Revision: https://phabricator.kde.org/D2931 --- autotests/integration/debug_console_test.cpp | 2 -- debug_console.cpp | 16 ++++++++++++++++ debug_console.h | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/autotests/integration/debug_console_test.cpp b/autotests/integration/debug_console_test.cpp index a89aadf37a..a21d9170a8 100644 --- a/autotests/integration/debug_console_test.cpp +++ b/autotests/integration/debug_console_test.cpp @@ -522,9 +522,7 @@ void DebugConsoleTest::testClosingDebugConsole() QCOMPARE(c->internalWindow(), console->windowHandle()); QVERIFY(c->isDecorated()); c->closeWindow(); - QEXPECT_FAIL("", "BUG 369858", Continue); QVERIFY(destroyedSpy.wait()); - QCOMPARE(console->windowHandle()->isVisible(), false); } } diff --git a/debug_console.cpp b/debug_console.cpp index 813c9fe806..db18569fea 100644 --- a/debug_console.cpp +++ b/debug_console.cpp @@ -536,6 +536,22 @@ void DebugConsole::initGLTab() m_ui->openGLExtensionsLabel->setText(extensionsString(openGLExtensions())); } +void DebugConsole::showEvent(QShowEvent *event) +{ + QWidget::showEvent(event); + + // delay the connection to the show event as in ctor the windowHandle returns null + connect(windowHandle(), &QWindow::visibleChanged, this, + [this] (bool visible) { + if (visible) { + // ignore + return; + } + deleteLater(); + } + ); +} + DebugConsoleDelegate::DebugConsoleDelegate(QObject *parent) : QStyledItemDelegate(parent) { diff --git a/debug_console.h b/debug_console.h index 60a2d4aae9..fe80d1b0e7 100644 --- a/debug_console.h +++ b/debug_console.h @@ -101,6 +101,9 @@ public: DebugConsole(); virtual ~DebugConsole(); +protected: + void showEvent(QShowEvent *event) override; + private: void initGLTab(); From fb59b054881e9888da97ebede8564b9391756457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Thu, 15 Sep 2016 11:44:32 +0200 Subject: [PATCH 9/9] Add support for resize only borders on Wayland Summary: This change adds support for resizing outside the window decoration (e.g. setting borders to NoSide or None). To support this a new Toplevel::inputGeometry() -> QRect method is added which exposes the geometry adjusted by the margins provided by the decoration. This is checked in InputRedirection when finding a Toplevel at a given position. The logic for figuring out whether the event should go to the decoration or the window already handled the situation correctly, so no further changes are needed. BUG: 364607 FIXED-IN: 5.8.1 Reviewers: #kwin, #plasma_on_wayland Subscribers: plasma-devel, kwin Tags: #plasma_on_wayland, #kwin Differential Revision: https://phabricator.kde.org/D2787 --- abstract_client.cpp | 8 +++ abstract_client.h | 2 + .../integration/decoration_input_test.cpp | 65 +++++++++++++++++++ input.cpp | 2 +- toplevel.cpp | 5 ++ toplevel.h | 7 ++ 6 files changed, 88 insertions(+), 1 deletion(-) diff --git a/abstract_client.cpp b/abstract_client.cpp index 91538e27f9..8eb6476012 100644 --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -1627,4 +1627,12 @@ QRect AbstractClient::iconGeometry() const return candidateGeom.translated(candidatePanel->pos()); } +QRect AbstractClient::inputGeometry() const +{ + if (isDecorated()) { + return Toplevel::inputGeometry() + decoration()->resizeOnlyBorders(); + } + return Toplevel::inputGeometry(); +} + } diff --git a/abstract_client.h b/abstract_client.h index d77de4d8d5..142743dcf9 100644 --- a/abstract_client.h +++ b/abstract_client.h @@ -578,6 +578,8 @@ public: */ virtual void showContextHelp(); + QRect inputGeometry() const override; + // TODO: remove boolean trap static bool belongToSameApplication(const AbstractClient* c1, const AbstractClient* c2, bool active_hack = false); diff --git a/autotests/integration/decoration_input_test.cpp b/autotests/integration/decoration_input_test.cpp index b9cde01e19..72c205235b 100644 --- a/autotests/integration/decoration_input_test.cpp +++ b/autotests/integration/decoration_input_test.cpp @@ -70,6 +70,8 @@ private Q_SLOTS: void testPressToMove(); void testTapToMove_data(); void testTapToMove(); + void testResizeOutsideWindow_data(); + void testResizeOutsideWindow(); private: AbstractClient *showWindow(Test::ShellSurfaceType type); @@ -498,6 +500,69 @@ void DecorationInputTest::testTapToMove() QCOMPARE(c->pos(), oldPos + offset2 + offset3); } +void DecorationInputTest::testResizeOutsideWindow_data() +{ + QTest::addColumn("type"); + QTest::addColumn("edge"); + QTest::addColumn("expectedCursor"); + + QTest::newRow("wlShell - left") << Test::ShellSurfaceType::WlShell << Qt::LeftEdge << Qt::SizeHorCursor; + QTest::newRow("xdgShellV5 - left") << Test::ShellSurfaceType::XdgShellV5 << Qt::LeftEdge << Qt::SizeHorCursor; + QTest::newRow("wlShell - right") << Test::ShellSurfaceType::WlShell << Qt::RightEdge << Qt::SizeHorCursor; + QTest::newRow("xdgShellV5 - right") << Test::ShellSurfaceType::XdgShellV5 << Qt::RightEdge << Qt::SizeHorCursor; + QTest::newRow("wlShell - bottom") << Test::ShellSurfaceType::WlShell << Qt::BottomEdge << Qt::SizeVerCursor; + QTest::newRow("xdgShellV5 - bottom") << Test::ShellSurfaceType::XdgShellV5 << Qt::BottomEdge << Qt::SizeVerCursor; +} + +void DecorationInputTest::testResizeOutsideWindow() +{ + // this test verifies that one can resize the window outside the decoration with NoSideBorder + + // first adjust config + kwinApp()->config()->group("org.kde.kdecoration2").writeEntry("BorderSize", QStringLiteral("None")); + kwinApp()->config()->sync(); + workspace()->slotReconfigure(); + + // now create window + QFETCH(Test::ShellSurfaceType, type); + AbstractClient *c = showWindow(type); + QVERIFY(c); + QVERIFY(c->isDecorated()); + QVERIFY(!c->noBorder()); + c->move(screens()->geometry(0).center() - QPoint(c->width()/2, c->height()/2)); + QVERIFY(c->geometry() != c->inputGeometry()); + QVERIFY(c->inputGeometry().contains(c->geometry())); + QSignalSpy startMoveResizedSpy(c, &AbstractClient::clientStartUserMovedResized); + QVERIFY(startMoveResizedSpy.isValid()); + + // go to border + quint32 timestamp = 1; + QFETCH(Qt::Edge, edge); + switch (edge) { + case Qt::LeftEdge: + MOTION(QPoint(c->geometry().x() -1, c->geometry().center().y())); + break; + case Qt::RightEdge: + MOTION(QPoint(c->geometry().x() + c->geometry().width() +1, c->geometry().center().y())); + break; + case Qt::BottomEdge: + MOTION(QPoint(c->geometry().center().x(), c->geometry().y() + c->geometry().height() + 1)); + break; + default: + break; + } + QVERIFY(!c->geometry().contains(KWin::Cursor::pos())); + + // pressing should trigger resize + PRESS; + QVERIFY(!c->isResize()); + QVERIFY(startMoveResizedSpy.wait()); + QVERIFY(c->isResize()); + + RELEASE; + QVERIFY(!c->isResize()); +} + } WAYLANDTEST_MAIN(KWin::DecorationInputTest) diff --git a/input.cpp b/input.cpp index 8cabc1c3a9..f9237b58e0 100644 --- a/input.cpp +++ b/input.cpp @@ -1451,7 +1451,7 @@ Toplevel *InputRedirection::findToplevel(const QPoint &pos) continue; } } - if (t->geometry().contains(pos) && acceptsInput(t, pos)) { + if (t->inputGeometry().contains(pos) && acceptsInput(t, pos)) { return t; } } while (it != stacking.begin()); diff --git a/toplevel.cpp b/toplevel.cpp index 2fb5448c1f..aec48615c5 100644 --- a/toplevel.cpp +++ b/toplevel.cpp @@ -538,5 +538,10 @@ quint32 Toplevel::windowId() const return window(); } +QRect Toplevel::inputGeometry() const +{ + return geometry(); +} + } // namespace diff --git a/toplevel.h b/toplevel.h index 0db6145fb3..7f78944a4f 100644 --- a/toplevel.h +++ b/toplevel.h @@ -219,6 +219,13 @@ public: **/ virtual quint32 windowId() const; QRect geometry() const; + /** + * The geometry of the Toplevel which accepts input events. This might be larger + * than the actual geometry, e.g. to support resizing outside the window. + * + * Default implementation returns same as geometry. + **/ + virtual QRect inputGeometry() const; QSize size() const; QPoint pos() const; QRect rect() const;