diff -Nru kscreenlocker-5.8.6/CMakeLists.txt kscreenlocker-5.8.7/CMakeLists.txt --- kscreenlocker-5.8.6/CMakeLists.txt 2017-02-21 13:03:22.000000000 +0100 +++ kscreenlocker-5.8.7/CMakeLists.txt 2017-05-23 13:57:22.000000000 +0200 @@ -1,4 +1,4 @@ -set(PROJECT_VERSION "5.8.6") +set(PROJECT_VERSION "5.8.7") set(PROJECT_VERSION_MAJOR 5) cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) diff -Nru kscreenlocker-5.8.6/debian/changelog kscreenlocker-5.8.7/debian/changelog --- kscreenlocker-5.8.6/debian/changelog 2017-03-15 09:10:42.000000000 +0100 +++ kscreenlocker-5.8.7/debian/changelog 2017-06-19 09:27:23.000000000 +0200 @@ -1,3 +1,24 @@ +kscreenlocker (5.8.7-1+deb9u1) stretch; urgency=medium + + * Upload to stretch + + -- Maximiliano Curia Mon, 19 Jun 2017 09:27:23 +0200 + +kscreenlocker (5.8.7-1) unstable; urgency=medium + + * New upstream release (5.8.7) + + Implement manual focus on click + Currently only the first created screenlock window gets focus. + On clicks, no focus events are sent, which makes it impossible to input + passwords. This patch now makes it possible to focus to a different + screenlock window (on a different monitor, for example) using a mouse + button press. + This should also fix newly created screenlock windows stealing the focus + of already displayed ones as only the first window gains automatic focus. + Fixes KDE#348789, KDE#374289 + + -- Maximiliano Curia Thu, 08 Jun 2017 17:14:31 +0200 + kscreenlocker (5.8.6-2) unstable; urgency=medium * Release to unstable diff -Nru kscreenlocker-5.8.6/greeter/greeterapp.cpp kscreenlocker-5.8.7/greeter/greeterapp.cpp --- kscreenlocker-5.8.6/greeter/greeterapp.cpp 2017-02-21 13:02:40.000000000 +0100 +++ kscreenlocker-5.8.7/greeter/greeterapp.cpp 2017-05-23 13:55:54.000000000 +0200 @@ -372,7 +372,6 @@ // this loop is required to make the qml/graphicsscene properly handle the shared keyboard input // ie. "type something into the box of every greeter" foreach (KQuickAddons::QuickViewSharedEngine *view, m_views) { - view->requestActivate(); if (!m_testing) { view->setKeyboardGrabEnabled(true); // TODO - check whether this still works in master! } diff -Nru kscreenlocker-5.8.6/greeter/themes/org.kde.passworddialog/metadata.desktop kscreenlocker-5.8.7/greeter/themes/org.kde.passworddialog/metadata.desktop --- kscreenlocker-5.8.6/greeter/themes/org.kde.passworddialog/metadata.desktop 2017-02-21 13:02:40.000000000 +0100 +++ kscreenlocker-5.8.7/greeter/themes/org.kde.passworddialog/metadata.desktop 2017-05-23 13:55:54.000000000 +0200 @@ -10,6 +10,7 @@ Name[en_GB]=Password dialog Name[es]=Diálogo de contraseña Name[et]=Paroolidialoog +Name[eu]=Pasahitzaren elkarrizketa-koadroa Name[fi]=Salasanaikkuna Name[fr]=Boîtes de dialogue de mot de passe Name[gl]=Diálogo de contrasinal @@ -47,6 +48,7 @@ Comment[en_GB]=Screen locker that provides a password dialog and an interface to switch the current user Comment[es]=Bloqueador de pantalla que proporciona un diálogo de contraseña y una interfaz para cambiar el usuario actual Comment[et]=Ekraani lukustaja, mis pakub paroolidialoogi ja liidest aktiivse kasutaja vahetamiseks +Comment[eu]=Pantaila giltzatzailea, pasahitzaren elkarrizketa-koadro bat eta uneko erabiltzailea aldatzeko interfaze bat eskaintzen dituena Comment[fi]=Salasanakyselyn ja käyttäjävaihdon tarjoava näyttölukko Comment[fr]=Outil de verrouillage d'écran fournissant une boîte de dialogue de mot de passe et une interface pour changer d'utilisateur Comment[gl]=Bloqueador da pantalla que fornece un diálogo de contrasinal e unha interface para trocar de usuario. diff -Nru kscreenlocker-5.8.6/kcm/screenlocker.desktop kscreenlocker-5.8.7/kcm/screenlocker.desktop --- kscreenlocker-5.8.6/kcm/screenlocker.desktop 2017-02-21 13:02:40.000000000 +0100 +++ kscreenlocker-5.8.7/kcm/screenlocker.desktop 2017-05-23 13:55:54.000000000 +0200 @@ -21,6 +21,7 @@ Name[en_GB]=Screen Locking Name[es]=Bloqueo de pantalla Name[et]=Ekraani lukustamine +Name[eu]=Pantaila giltzatzea Name[fi]=Näytön lukitseminen Name[fr]=Verrouillage de l'écran Name[gl]=Trancar a pantalla @@ -57,6 +58,7 @@ Comment[en_GB]=Screen Locking Timeouts Comment[es]=Tiempos de espera del bloqueo de pantalla Comment[et]=Ekraani lukustamise aegumine +Comment[eu]=Pantaila giltzatzeko denbora-muga Comment[fi]=Näytön lukitsemisen viiveet Comment[fr]=Délai de verrouillage de l'écran Comment[gl]=Tempos máximos de trancar a pantalla @@ -91,6 +93,7 @@ X-KDE-Keywords[en_GB]=lock,resume, screensaver, screenlock X-KDE-Keywords[es]=bloquear, reanudar, salvapantallas, bloqueo de pantalla X-KDE-Keywords[et]=lukustamine,taastamine,ekraanisäästja,ekraani lukustamine +X-KDE-Keywords[eu]=giltzatu,berrekin,pantaila-babesle,pantaila-giltzatu X-KDE-Keywords[fi]=lock,resume, screensaver, screenlock, lukko, lukitseminen, herääminen, näytönsäästäjä, näyttölukko, lukitusnäyttö X-KDE-Keywords[fr]=verrouiller, reprendre,écran de veille, verrouillage de l'écran X-KDE-Keywords[gl]=bloquear,desbloquear,salvapantallas,bloqueo de pantalla diff -Nru kscreenlocker-5.8.6/kscreenlocker.notifyrc kscreenlocker-5.8.7/kscreenlocker.notifyrc --- kscreenlocker-5.8.6/kscreenlocker.notifyrc 2017-02-21 13:02:40.000000000 +0100 +++ kscreenlocker-5.8.7/kscreenlocker.notifyrc 2017-05-23 13:55:54.000000000 +0200 @@ -12,6 +12,7 @@ Comment[en_GB]=Screen Saver Comment[es]=Salvapantallas Comment[et]=Ekraanisäästja +Comment[eu]=Pantaila-babesle Comment[fi]=Näytönsäästäjä Comment[fr]=Écran de veille Comment[gl]=Protector de pantalla @@ -51,6 +52,7 @@ Name[en_GB]=Screen locked Name[es]=Pantalla bloqueada Name[et]=Ekraan on lukustatud +Name[eu]=Pantaila giltzatuta Name[fi]=Näyttö lukittu Name[fr]=Écran verrouillé Name[gl]=A pantalla está trancada @@ -88,6 +90,7 @@ Comment[en_GB]=The screen has been locked Comment[es]=Se ha bloqueado la pantalla Comment[et]=Ekraan on lukustatud +Comment[eu]=Pantaila giltzatu egin da Comment[fi]=Näyttö on lukittunut Comment[fr]=L'écran a été verrouillé Comment[gl]=A pantalla trancouse @@ -128,6 +131,7 @@ Name[en_GB]=Screen unlocked Name[es]=Pantalla desbloqueada Name[et]=Ekraan on lahtilukustatud +Name[eu]=Pantaila giltzapetik askatuta Name[fi]=Näytön lukitus aukeni Name[fr]=Écran déverrouillé Name[gl]=A pantalla desatrancouse @@ -165,6 +169,7 @@ Comment[en_GB]=The screen has been unlocked Comment[es]=Se ha desbloqueado la pantalla Comment[et]=Ekraan on lahtilukustatud +Comment[eu]=Pantaila giltzapetik askatu da Comment[fi]=Näytön lukitus on avautunut Comment[fr]=L'écran a été déverrouillé Comment[gl]=A pantalla desatrancouse diff -Nru kscreenlocker-5.8.6/po/de/kscreenlocker_greet.po kscreenlocker-5.8.7/po/de/kscreenlocker_greet.po --- kscreenlocker-5.8.6/po/de/kscreenlocker_greet.po 2017-02-21 13:02:49.000000000 +0100 +++ kscreenlocker-5.8.7/po/de/kscreenlocker_greet.po 2017-05-23 13:56:24.000000000 +0200 @@ -1,12 +1,12 @@ # Frederik Schwarzer , 2012, 2016. -# Burkhard Lück , 2012, 2013, 2014, 2015. +# Burkhard Lück , 2012, 2013, 2014, 2015, 2017. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2016-11-19 22:52+0100\n" -"PO-Revision-Date: 2016-02-27 04:27+0100\n" -"Last-Translator: Frederik Schwarzer \n" +"PO-Revision-Date: 2017-05-15 12:06+0100\n" +"Last-Translator: Burkhard Lück \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" @@ -52,7 +52,7 @@ #: main.cpp:114 #, kde-format msgid "Default to the switch user UI." -msgstr "" +msgstr "Startet mit der Benutzerschnittstelle zum Benutzerwechsel." #: main.cpp:117 #, kde-format diff -Nru kscreenlocker-5.8.6/po/eu/screenlocker_kcm.po kscreenlocker-5.8.7/po/eu/screenlocker_kcm.po --- kscreenlocker-5.8.6/po/eu/screenlocker_kcm.po 1970-01-01 01:00:00.000000000 +0100 +++ kscreenlocker-5.8.7/po/eu/screenlocker_kcm.po 2017-05-23 13:56:28.000000000 +0200 @@ -0,0 +1,126 @@ +# Translation of screenlocker_kcm.po to Euskara/Basque (eu). +# Copyright (C) 2017, Free Software Foundation, Inc. +# This file is distributed under the same license as the kde-workspace package. +# +# Iñigo Salvador Azurmendi , 2017. +msgid "" +msgstr "" +"Project-Id-Version: screenlocker_kcm\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2017-02-11 08:15+0100\n" +"PO-Revision-Date: 2017-03-02 01:16+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kcm.cpp:55 +#, kde-format +msgctxt "Spinbox suffix. Short for minutes" +msgid " min" +msgid_plural " mins" +msgstr[0] " min" +msgstr[1] " min" + +#: kcm.cpp:57 +#, kde-format +msgctxt "Spinbox suffix. Short for seconds" +msgid " sec" +msgid_plural " secs" +msgstr[0] " seg" +msgstr[1] " seg" + +#: kcm.cpp:78 +#, kde-format +msgid "Lock Session" +msgstr "Giltzatu saioa" + +#: kcm.cpp:143 +#, kde-format +msgid "Error" +msgstr "Errorea" + +#: kcm.cpp:143 +#, kde-format +msgid "Failed to successfully test the screen locker." +msgstr "Pantaila giltzatzailearen probak huts egin du." + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: kcm.ui:36 +#, kde-format +msgid "Activation" +msgstr "Aktibazioa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_Autolock) +#: kcm.ui:50 +#, kde-format +msgid "Lock screen automatically after:" +msgstr "Giltzatu pantaila automatikoki hau igarotakoan:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: kcm.ui:73 +#, kde-format +msgid "Re&quire password after locking:" +msgstr "Es&katu pasahitza giltzatu ondoren:" + +#. i18n: ectx: property (specialValueText), widget (KPluralHandlingSpinBox, kcfg_LockGrace) +#: kcm.ui:89 +#, kde-format +msgid "Immediately" +msgstr "Berehala" + +#. i18n: ectx: property (toolTip), widget (QLabel, label_5) +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_LockOnResume) +#: kcm.ui:102 kcm.ui:115 +#, kde-format +msgid "Lock screen when waking up from suspension" +msgstr "Giltzatu pantaila esekitako egoeratik esnatzean" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: kcm.ui:105 +#, kde-format +msgid "&Lock screen on resume:" +msgstr "&Giltzatu pantaila berrekitean:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label_7) +#: kcm.ui:128 +#, kde-format +msgid "The global keyboard shortcut to lock the screen." +msgstr "Pantaila giltzatzeko teklatuko laster-tekla orokorra." + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: kcm.ui:131 +#, kde-format +msgid "Lock screen:" +msgstr "Giltzatu pantaila:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: kcm.ui:141 +#, kde-format +msgid "Wallpaper" +msgstr "Horma-papera" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: kcm.ui:157 +#, kde-format +msgid "Wallpaper &Type:" +msgstr "Horma-paper &mota:" + +#: selectimagebutton.cpp:41 +#, kde-format +msgid "Load from file..." +msgstr "Zamatu fitxategitik..." + +#: selectimagebutton.cpp:42 +#, kde-format +msgid "Clear Image" +msgstr "Ezabatu irudia" + +#: selectimagebutton.cpp:74 +#, kde-format +msgid "Select image" +msgstr "Hautatu irudia" \ No newline at end of file diff -Nru kscreenlocker-5.8.6/po/nb/screenlocker_kcm.po kscreenlocker-5.8.7/po/nb/screenlocker_kcm.po --- kscreenlocker-5.8.6/po/nb/screenlocker_kcm.po 2017-02-21 13:03:05.000000000 +0100 +++ kscreenlocker-5.8.7/po/nb/screenlocker_kcm.po 2017-05-23 13:56:54.000000000 +0200 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2016-11-19 22:52+0100\n" +"POT-Creation-Date: 2017-02-11 08:15+0100\n" "PO-Revision-Date: 2015-04-28 13:51+0200\n" "Last-Translator: Bjørn Steensrud \n" "Language-Team: Norwegian Bokmål \n" @@ -40,12 +40,12 @@ msgid "Lock Session" msgstr "Lås økt" -#: kcm.cpp:138 +#: kcm.cpp:143 #, kde-format msgid "Error" msgstr "Feil" -#: kcm.cpp:138 +#: kcm.cpp:143 #, kde-format msgid "Failed to successfully test the screen locker." msgstr "Klarte ikke å prøve skjermlåseren." diff -Nru kscreenlocker-5.8.6/x11locker.cpp kscreenlocker-5.8.7/x11locker.cpp --- kscreenlocker-5.8.6/x11locker.cpp 2017-02-21 13:02:40.000000000 +0100 +++ kscreenlocker-5.8.7/x11locker.cpp 2017-05-23 13:55:54.000000000 +0200 @@ -51,6 +51,7 @@ X11Locker::X11Locker(QObject *parent) : AbstractLocker(parent) , QAbstractNativeEventFilter() + , m_focusedLockWindow(XCB_WINDOW_NONE) { initialize(); } @@ -229,8 +230,12 @@ XDeleteProperty (QX11Info::display(), win, gXA_VROOT); } -static void fakeFocusIn( WId window ) +void X11Locker::fakeFocusIn( WId window ) { + if (window == m_focusedLockWindow) { + return; + } + // We have keyboard grab, so this application will // get keyboard events even without having focus. // Fake FocusIn to make Qt realize it has the active @@ -244,6 +249,8 @@ ev.xfocus.detail = NotifyAncestor; XSendEvent( QX11Info::display(), window, False, NoEventMask, &ev ); XFlush(QX11Info::display()); + + m_focusedLockWindow = window; } template< typename T> @@ -308,6 +315,11 @@ (x>=x_return && x<=x_return+(int)width_return) && (y>=y_return && y<=y_return+(int)height_return) ) { + // We need to do our own focus handling (see comment in fakeFocusIn). + // For now: Focus on clicks inside the window + if (responseType == XCB_BUTTON_PRESS) { + fakeFocusIn(window); + } const int targetX = x - x_return; const int targetY = y - y_return; if (responseType == XCB_KEY_PRESS || responseType == XCB_KEY_RELEASE) { @@ -386,6 +398,10 @@ else qDebug() << "Unknown toplevel for MapNotify"; m_lockWindows.removeAll(xu->event); + if (m_focusedLockWindow == xu->event && !m_lockWindows.empty()) { + // The currently focused window vanished, just focus the first one in the list + fakeFocusIn(m_lockWindows[0]); + } ret = true; } break; @@ -508,8 +524,14 @@ // not yet shown and we have a lock window, so we show our own window m_background->show(); } + + if (m_lockWindows.empty()) { + // Make sure to focus the first window + m_focusedLockWindow = XCB_WINDOW_NONE; + fakeFocusIn(window); + } + m_lockWindows.prepend(window); - fakeFocusIn(window); stayOnTop(); } } diff -Nru kscreenlocker-5.8.6/x11locker.h kscreenlocker-5.8.7/x11locker.h --- kscreenlocker-5.8.6/x11locker.h 2017-02-21 13:02:40.000000000 +0100 +++ kscreenlocker-5.8.7/x11locker.h 2017-05-23 13:55:54.000000000 +0200 @@ -60,6 +60,7 @@ void setVRoot(Window win, Window vr); void removeVRoot(Window win); int findWindowInfo(Window w); + void fakeFocusIn(WId window); void stayOnTop() override; struct WindowInfo { @@ -69,6 +70,7 @@ QList m_windowInfo; QList m_lockWindows; QList m_allowedWindows; + WId m_focusedLockWindow; }; }