[kde-workspace/f20] followup screenlocker fixes/polish (#1029917, #1032612)

Rex Dieter rdieter at fedoraproject.org
Tue Nov 26 03:22:52 UTC 2013


commit ebcd8f6b1549693625f49800e3b755c5dd5c9875
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Mon Nov 25 21:22:44 2013 -0600

    followup screenlocker fixes/polish (#1029917, #1032612)

 ...a-locked-property-for-the-qml-lock-screen.patch |    2 +-
 0033-stray-rubbish.patch                           |   24 ++
 0034-also-respect-locking-manually.patch           |  265 ++++++++++++++++++++
 ...e-it-possible-to-come-out-of-locked-state.patch |   34 +++
 ...improve-screenlocker-multiscreen-behavior.patch |   74 ++++--
 kde-workspace.spec                                 |   17 +-
 6 files changed, 389 insertions(+), 27 deletions(-)
---
diff --git a/0032-introduce-a-locked-property-for-the-qml-lock-screen.patch b/0032-introduce-a-locked-property-for-the-qml-lock-screen.patch
index 3d1c899..f01c44b 100644
--- a/0032-introduce-a-locked-property-for-the-qml-lock-screen.patch
+++ b/0032-introduce-a-locked-property-for-the-qml-lock-screen.patch
@@ -1,7 +1,7 @@
 From f3a6a90213694373ce9f0510db5d94c12435de1c Mon Sep 17 00:00:00 2001
 From: Aaron Seigo <aseigo at kde.org>
 Date: Fri, 22 Nov 2013 09:59:49 +0100
-Subject: [PATCH 32/36] introduce a 'locked' property for the qml lock screen
+Subject: [PATCH 32/42] introduce a 'locked' property for the qml lock screen
 
 if password locking is turned off, this lets the locker not show a
 password unlocker (e.g.)
diff --git a/0033-stray-rubbish.patch b/0033-stray-rubbish.patch
new file mode 100644
index 0000000..8f554aa
--- /dev/null
+++ b/0033-stray-rubbish.patch
@@ -0,0 +1,24 @@
+From e918addfd6b71114b27dc5b512a2f88278972e16 Mon Sep 17 00:00:00 2001
+From: Aaron Seigo <aseigo at kde.org>
+Date: Fri, 22 Nov 2013 20:42:03 +0100
+Subject: [PATCH 33/42] stray rubbish
+
+---
+ ksmserver/screenlocker/greeter/greeterapp.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/ksmserver/screenlocker/greeter/greeterapp.cpp b/ksmserver/screenlocker/greeter/greeterapp.cpp
+index e4d933d..f38f281 100644
+--- a/ksmserver/screenlocker/greeter/greeterapp.cpp
++++ b/ksmserver/screenlocker/greeter/greeterapp.cpp
+@@ -163,7 +163,6 @@ void UnlockApp::desktopResized()
+         connect(view->rootObject(), SIGNAL(unlockRequested()), SLOT(quit()));
+ 
+         QDeclarativeProperty lockProperty(view->rootObject(), "locked");
+-            KScreenSaverSettings::lockGrace();
+         if (KScreenSaverSettings::lock()) {
+             if (KScreenSaverSettings::lockGrace() < 1) {
+                 lockProperty.write(true);
+-- 
+1.8.4.2
+
diff --git a/0034-also-respect-locking-manually.patch b/0034-also-respect-locking-manually.patch
new file mode 100644
index 0000000..487bf7f
--- /dev/null
+++ b/0034-also-respect-locking-manually.patch
@@ -0,0 +1,265 @@
+From 719554e489634d716c92ef2781c554789c88dc70 Mon Sep 17 00:00:00 2001
+From: Aaron Seigo <aseigo at kde.org>
+Date: Fri, 22 Nov 2013 22:13:17 +0100
+Subject: [PATCH 34/42] also respect locking manually
+
+the code now:
+
+* shows the lock GUI immediately if called by dbus or in testing
+* a new screen is attached after the lock grace
+* otherwise behaves as it did prior to this commit ...
+
+catching those two issues meant additional state tracking, but all
+the ways i can find to lock work now.
+---
+ ksmserver/screenlocker/greeter/greeterapp.cpp | 32 +++++++++++++++++++++++----
+ ksmserver/screenlocker/greeter/greeterapp.h   |  4 ++++
+ ksmserver/screenlocker/greeter/main.cpp       |  4 ++++
+ ksmserver/screenlocker/interface.cpp          |  2 +-
+ ksmserver/screenlocker/ksldapp.cpp            | 22 +++++++++++++-----
+ ksmserver/screenlocker/ksldapp.h              |  3 ++-
+ 6 files changed, 56 insertions(+), 11 deletions(-)
+
+diff --git a/ksmserver/screenlocker/greeter/greeterapp.cpp b/ksmserver/screenlocker/greeter/greeterapp.cpp
+index f38f281..30987c1 100644
+--- a/ksmserver/screenlocker/greeter/greeterapp.cpp
++++ b/ksmserver/screenlocker/greeter/greeterapp.cpp
+@@ -61,10 +61,13 @@ static const char *DEFAULT_MAIN_PACKAGE = "org.kde.passworddialog";
+ UnlockApp::UnlockApp()
+     : KApplication()
+     , m_resetRequestIgnoreTimer(new QTimer(this))
++    , m_delayedLockTimer(0)
+     , m_testing(false)
+     , m_capsLocked(false)
+     , m_ignoreRequests(false)
+     , m_showScreenSaver(false)
++    , m_immediateLock(false)
++    , m_runtimeInitialized(false)
+ {
+     initialize();
+     connect(desktop(), SIGNAL(resized(int)), SLOT(desktopResized()));
+@@ -163,14 +166,25 @@ void UnlockApp::desktopResized()
+         connect(view->rootObject(), SIGNAL(unlockRequested()), SLOT(quit()));
+ 
+         QDeclarativeProperty lockProperty(view->rootObject(), "locked");
+-        if (KScreenSaverSettings::lock()) {
++        if (m_immediateLock) {
++            lockProperty.write(true);
++        } else if (KScreenSaverSettings::lock()) {
+             if (KScreenSaverSettings::lockGrace() < 1) {
+                 lockProperty.write(true);
++            } else if (m_runtimeInitialized) {
++                // if we have new views and we are waiting on the
++                // delayed lock timer still, we don't want to show
++                // the lock UI just yet
++                lockProperty.write(!m_delayedLockTimer);
+             } else {
+-                QTimer::singleShot(KScreenSaverSettings::lockGrace(),
+-                                   this, SLOT(setLockedPropertyOnViews()));
++                if (!m_delayedLockTimer) {
++                    m_delayedLockTimer = new QTimer(this);
++                    m_delayedLockTimer->setSingleShot(true);
++                    connect(m_delayedLockTimer, SIGNAL(timeout()), this, SLOT(setLockedPropertyOnViews()));
++                }
++                m_delayedLockTimer->start(KScreenSaverSettings::lockGrace());
+             }
+-        } else{
++        } else {
+             lockProperty.write(false);
+         }
+ 
+@@ -204,6 +218,8 @@ void UnlockApp::desktopResized()
+         }
+     }
+ 
++    m_runtimeInitialized = true;
++
+     // update geometry of all views and savers
+     for (int i = 0; i < nScreens; ++i) {
+         QDeclarativeView *view = m_views.at(i);
+@@ -240,6 +256,9 @@ void UnlockApp::getFocus()
+ 
+ void UnlockApp::setLockedPropertyOnViews()
+ {
++    delete m_delayedLockTimer;
++    m_delayedLockTimer = 0;
++
+     foreach (QDeclarativeView *view, m_views) {
+         QDeclarativeProperty lockProperty(view->rootObject(), "locked");
+         lockProperty.write(true);
+@@ -309,6 +328,11 @@ void UnlockApp::setTesting(bool enable)
+     }
+ }
+ 
++void UnlockApp::setImmediateLock(bool immediate)
++{
++    m_immediateLock = immediate;
++}
++
+ bool UnlockApp::eventFilter(QObject *obj, QEvent *event)
+ {
+     if (obj != this && event->type() == QEvent::Show) {
+diff --git a/ksmserver/screenlocker/greeter/greeterapp.h b/ksmserver/screenlocker/greeter/greeterapp.h
+index 8dbcff4..76b9824 100644
+--- a/ksmserver/screenlocker/greeter/greeterapp.h
++++ b/ksmserver/screenlocker/greeter/greeterapp.h
+@@ -43,6 +43,7 @@ public:
+     virtual ~UnlockApp();
+ 
+     void setTesting(bool enable);
++    void setImmediateLock(bool immediateLock);
+ 
+ public Q_SLOTS:
+     void desktopResized();
+@@ -67,12 +68,15 @@ private:
+     QList<QDeclarativeView*> m_views;
+     QList<ScreenSaverWindow*> m_screensaverWindows;
+     QTimer *m_resetRequestIgnoreTimer;
++    QTimer *m_delayedLockTimer;
+     Plasma::PackageStructure::Ptr m_structure;
+     Plasma::Package *m_package;
+     bool m_testing;
+     bool m_capsLocked;
+     bool m_ignoreRequests;
+     bool m_showScreenSaver;
++    bool m_immediateLock;
++    bool m_runtimeInitialized;
+ };
+ } // namespace
+ 
+diff --git a/ksmserver/screenlocker/greeter/main.cpp b/ksmserver/screenlocker/greeter/main.cpp
+index 3d4de27..d898734 100644
+--- a/ksmserver/screenlocker/greeter/main.cpp
++++ b/ksmserver/screenlocker/greeter/main.cpp
+@@ -56,6 +56,7 @@ int main(int argc, char* argv[])
+     KCmdLineArgs::init(argc, argv, &aboutData);
+     KCmdLineOptions options;
+     options.add("testing", ki18n("Starts the greeter in testing mode"));
++    options.add("immediateLock", ki18n("Lock immediately, ignoring any grace time etc."));
+     KCmdLineArgs::addCmdLineOptions(options);
+ 
+     ScreenLocker::UnlockApp app;
+@@ -64,6 +65,9 @@ int main(int argc, char* argv[])
+     KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+     if (args->isSet("testing")) {
+         app.setTesting(true);
++        app.setImmediateLock(true);
++    } else {
++        app.setImmediateLock(args->isSet("immediateLock"));
+     }
+     args->clear();
+     app.desktopResized();
+diff --git a/ksmserver/screenlocker/interface.cpp b/ksmserver/screenlocker/interface.cpp
+index 90814bf..219c533 100644
+--- a/ksmserver/screenlocker/interface.cpp
++++ b/ksmserver/screenlocker/interface.cpp
+@@ -100,7 +100,7 @@ uint Interface::GetSessionIdleTime()
+ 
+ void Interface::Lock()
+ {
+-    m_daemon->lock();
++    m_daemon->lock(calledFromDBus());
+ 
+     if (calledFromDBus() && m_daemon->lockState() == KSldApp::AcquiringLock) {
+         m_lockReplies << message().createReply();
+diff --git a/ksmserver/screenlocker/ksldapp.cpp b/ksmserver/screenlocker/ksldapp.cpp
+index f0526cf..9e94b06 100644
+--- a/ksmserver/screenlocker/ksldapp.cpp
++++ b/ksmserver/screenlocker/ksldapp.cpp
+@@ -165,17 +165,24 @@ void KSldApp::configure()
+ 
+ void KSldApp::lock()
+ {
++    lock(true);
++}
++
++void KSldApp::lock(bool immediateLock)
++{
+     if (lockState() != Unlocked) {
+         // already locked or acquiring lock, no need to lock again
+         // but make sure it's really locked
+         endGraceTime();
+         return;
+     }
++
+     kDebug() << "lock called";
+     if (!establishGrab()) {
+         kError() << "Could not establish screen lock";
+         return;
+     }
++
+     KDisplayManager().setLock(true);
+     KNotification::event(QLatin1String( "locked" ));
+ 
+@@ -185,7 +192,7 @@ void KSldApp::lock()
+     m_lockState = AcquiringLock;
+ 
+     // start unlock screen process
+-    if (!startLockProcess()) {
++    if (!startLockProcess(immediateLock)) {
+         doUnlock();
+         kError() << "Greeter Process not available";
+     }
+@@ -266,7 +273,7 @@ void KSldApp::lockProcessFinished(int exitCode, QProcess::ExitStatus exitStatus)
+         return;
+     }
+     // failure, restart lock process
+-    startLockProcess();
++    startLockProcess(true);
+ }
+ 
+ void KSldApp::lockProcessReady()
+@@ -276,13 +283,17 @@ void KSldApp::lockProcessReady()
+     emit locked();
+ }
+ 
+-bool KSldApp::startLockProcess()
++bool KSldApp::startLockProcess(bool immediateLock)
+ {
+     if (m_plasmaEnabled) {
+         m_lockProcess->start(KStandardDirs::findExe(QLatin1String("plasma-overlay")),
+                              QStringList() << QLatin1String("--nofork"));
+     } else {
+-        m_lockProcess->start(KStandardDirs::findExe(QLatin1String("kscreenlocker_greet")));
++        QStringList args;
++        if (immediateLock) {
++            args << "--immediateLock";
++        }
++        m_lockProcess->start(KStandardDirs::findExe(QLatin1String("kscreenlocker_greet")), args);
+     }
+     // we wait one minute
+     if (!m_lockProcess->waitForStarted(60000)) {
+@@ -337,7 +348,8 @@ void KSldApp::idleTimeout(int identifier)
+     } else if (m_lockGrace == -1) {
+         m_inGraceTime = true;  // if no timeout configured, grace time lasts forever
+     }
+-    lock();
++
++    lock(false);
+ }
+ 
+ bool KSldApp::isGraceTime() const
+diff --git a/ksmserver/screenlocker/ksldapp.h b/ksmserver/screenlocker/ksldapp.h
+index 7c81aa8..b292b62 100644
+--- a/ksmserver/screenlocker/ksldapp.h
++++ b/ksmserver/screenlocker/ksldapp.h
+@@ -82,6 +82,7 @@ public:
+ 
+ public Q_SLOTS:
+     Q_SCRIPTABLE void lock();
++    void lock(bool immediateLock);
+     void lockProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
+     void lockProcessReady();
+ 
+@@ -99,7 +100,7 @@ private:
+     bool establishGrab();
+     bool grabKeyboard();
+     bool grabMouse();
+-    bool startLockProcess();
++    bool startLockProcess(bool immediateLock);
+     void showLockWindow();
+     void hideLockWindow();
+     void doUnlock();
+-- 
+1.8.4.2
+
diff --git a/0037-make-it-possible-to-come-out-of-locked-state.patch b/0037-make-it-possible-to-come-out-of-locked-state.patch
new file mode 100644
index 0000000..5727b7a
--- /dev/null
+++ b/0037-make-it-possible-to-come-out-of-locked-state.patch
@@ -0,0 +1,34 @@
+From 515749fd7c5fd768891a22e67b86c29cff8cb57d Mon Sep 17 00:00:00 2001
+From: Aaron Seigo <aseigo at kde.org>
+Date: Sun, 24 Nov 2013 01:10:45 +0100
+Subject: [PATCH 37/42] make it possible to come out of locked state
+
+---
+ plasma/screensaver/shell/savercorona.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/plasma/screensaver/shell/savercorona.cpp b/plasma/screensaver/shell/savercorona.cpp
+index ce1631c..36a7f5d 100644
+--- a/plasma/screensaver/shell/savercorona.cpp
++++ b/plasma/screensaver/shell/savercorona.cpp
+@@ -27,6 +27,7 @@
+ 
+ #include <QtDeclarative/QDeclarativeComponent>
+ #include <QtDeclarative/QDeclarativeEngine>
++#include <QtDeclarative/QDeclarativeProperty>
+ 
+ #include <KDebug>
+ #include <KDialog>
+@@ -210,6 +211,9 @@ void SaverCorona::createGreeter()
+     QDeclarativeComponent component(m_engine, QUrl::fromLocalFile(mainQmlPath));
+ 
+     m_greeterItem = qobject_cast<QGraphicsObject *>(component.create());
++    QDeclarativeProperty lockProperty(m_greeterItem, "locked");
++    lockProperty.write(true);
++
+     addItem(m_greeterItem);
+     m_greeterItem->setFocus();
+     connect(m_greeterItem, SIGNAL(unlockRequested()), SLOT(greeterAccepted()));
+-- 
+1.8.4.2
+
diff --git a/kde-workspace-reviewboard113971.patch b/0040-improve-screenlocker-multiscreen-behavior.patch
similarity index 68%
rename from kde-workspace-reviewboard113971.patch
rename to 0040-improve-screenlocker-multiscreen-behavior.patch
index 57a4c48..0620c29 100644
--- a/kde-workspace-reviewboard113971.patch
+++ b/0040-improve-screenlocker-multiscreen-behavior.patch
@@ -1,7 +1,27 @@
-diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.reviewboard113971 kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp
---- kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.reviewboard113971	2013-11-23 01:44:45.960077885 -0600
-+++ kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp	2013-11-23 01:47:21.628236754 -0600
-@@ -32,6 +32,7 @@ along with this program.  If not, see <h
+From 3a4a7ac959c17ffd08b104bc4c5d550b5f1dfcb6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Thomas=20L=C3=BCbking?= <thomas.luebking at gmail.com>
+Date: Sat, 26 Jan 2013 22:27:48 +0100
+Subject: [PATCH 40/42] improve screenlocker multiscreen behavior
+
+- pass focus to greeter under the mouse
+- share keyboard events
+- let through keyboard events for one hidden locker
+  (mouse wakeup case)
+- remove double filtering
+
+BUG: 311188
+FIXED-IN: 4.11.4
+REVIEW: 113971
+---
+ ksmserver/screenlocker/greeter/greeterapp.cpp | 92 +++++++++++++++++++++++++--
+ ksmserver/screenlocker/greeter/greeterapp.h   |  1 +
+ 2 files changed, 87 insertions(+), 6 deletions(-)
+
+diff --git a/ksmserver/screenlocker/greeter/greeterapp.cpp b/ksmserver/screenlocker/greeter/greeterapp.cpp
+index 30987c1..c5e2f85 100644
+--- a/ksmserver/screenlocker/greeter/greeterapp.cpp
++++ b/ksmserver/screenlocker/greeter/greeterapp.cpp
+@@ -32,6 +32,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  #include <KDE/KDebug>
  #include <KDE/KStandardDirs>
  #include <KDE/KUser>
@@ -9,7 +29,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
  #include <Solid/PowerManagement>
  #include <kdeclarative.h>
  //Plasma
-@@ -52,6 +53,10 @@ along with this program.  If not, see <h
+@@ -52,6 +53,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  #include <X11/Xlib.h>
  #include <fixx11h.h>
  
@@ -20,7 +40,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
  namespace ScreenLocker
  {
  
-@@ -95,7 +100,11 @@ void UnlockApp::initialize()
+@@ -98,7 +103,11 @@ void UnlockApp::initialize()
      KCrash::setDrKonqiEnabled(false);
  
      KScreenSaverSettings::self()->readConfig();
@@ -32,7 +52,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
  
      m_structure = Plasma::PackageStructure::load("Plasma/Generic");
      m_package = new Plasma::Package(KStandardDirs::locate("data", "ksmserver/screenlocker/"), KScreenSaverSettings::greeterQML(), m_structure);
-@@ -145,7 +154,6 @@ void UnlockApp::desktopResized()
+@@ -148,7 +157,6 @@ void UnlockApp::desktopResized()
                  this, SLOT(viewStatusChanged(QDeclarativeView::Status)));
          view->setWindowFlags(Qt::X11BypassWindowManagerHint);
          view->setFrameStyle(QFrame::NoFrame);
@@ -40,7 +60,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
  
          // engine stuff
          KDeclarative kdeclarative;
-@@ -217,11 +225,15 @@ void UnlockApp::desktopResized()
+@@ -232,11 +240,15 @@ void UnlockApp::desktopResized()
              ScreenSaverWindow *screensaverWindow = m_screensaverWindows.at(i);
              screensaverWindow->setGeometry(view->geometry());
  
@@ -56,12 +76,17 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
              screensaverWindow->show();
              screensaverWindow->activateWindow();
              connect(screensaverWindow, SIGNAL(hidden()), this, SLOT(getFocus()));
-@@ -229,14 +241,47 @@ void UnlockApp::desktopResized()
+@@ -244,14 +256,52 @@ void UnlockApp::desktopResized()
      }
      // random state update, actually rather required on init only
      QMetaObject::invokeMethod(this, "getFocus", Qt::QueuedConnection);
-+    if (nScreens > 1 && m_screensaverWindows.isEmpty())
++    // getFocus on the next event cycle does not work as expected for multiple views
++    // if there's no screensaver, hiding it won't happen and thus not trigger getFocus either
++    // so we call it again in a few miliseconds - the value is nearly random but "must cross some event cycles"
++    // while 150ms worked for me, 250ms gets us a bit more padding without being notable to a human user
++    if (nScreens > 1 && m_screensaverWindows.isEmpty()) {
 +        QTimer::singleShot(250, this, SLOT(getFocus()));
++    }
      capsLocked();
  }
  
@@ -71,7 +96,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
 -        m_views.first()->activateWindow();
 +    if (m_views.isEmpty()) {
 +        return;
-+    }
+     }
 +    QWidget *w = 0;
 +    // this loop is required to make the qml/graphicsscene properly handle the shared keyboard input
 +    // ie. "type something into the box of every greeter"
@@ -86,7 +111,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
 +            w = view;
 +            break;
 +        }
-     }
++    }
 +    if (!w) { // try harder
 +        foreach (QDeclarativeView *view, m_views) {
 +            if (view->geometry().contains(QCursor::pos())) {
@@ -106,7 +131,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
  }
  
  void UnlockApp::setLockedPropertyOnViews()
-@@ -331,14 +376,15 @@ bool UnlockApp::eventFilter(QObject *obj
+@@ -354,14 +404,15 @@ bool UnlockApp::eventFilter(QObject *obj, QEvent *event)
  
      static bool ignoreNextEscape = false;
      if (event->type() == QEvent::KeyPress) { // react if saver is visible
@@ -125,7 +150,7 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
              return false; // we don't care
          }
          ignoreNextEscape = bool(static_cast<QKeyEvent *>(event)->key() == Qt::Key_Escape);
-@@ -355,6 +401,7 @@ bool UnlockApp::eventFilter(QObject *obj
+@@ -378,6 +429,7 @@ bool UnlockApp::eventFilter(QObject *obj, QEvent *event)
              return false;
          }
          if (ke->key() != Qt::Key_Escape) {
@@ -133,10 +158,17 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
              return false; // irrelevant
          }
          if (ignoreNextEscape) {
-@@ -405,6 +452,27 @@ void UnlockApp::capsLocked()
+@@ -428,6 +480,34 @@ void UnlockApp::capsLocked()
      }
  }
  
++/*
++ * This function forwards an event from one greeter window to all others
++ * It's used to have the keyboard operate on all greeter windows (on every screen)
++ * at once so that the user gets visual feedback on the screen he's looking at -
++ * even if the focus is actually on a powered off screen.
++ */
++
 +void UnlockApp::shareEvent(QEvent *e, QDeclarativeView *from)
 +{
 +    // from can be NULL any time (because the parameter is passed as qobject_cast)
@@ -161,10 +193,11 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.cpp.revi
  } // namespace
  
  #include "greeterapp.moc"
-diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.h.reviewboard113971 kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.h
---- kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.h.reviewboard113971	2013-11-23 01:44:45.960077885 -0600
-+++ kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.h	2013-11-23 01:44:45.964077812 -0600
-@@ -62,6 +62,7 @@ private Q_SLOTS:
+diff --git a/ksmserver/screenlocker/greeter/greeterapp.h b/ksmserver/screenlocker/greeter/greeterapp.h
+index 76b9824..8b79188 100644
+--- a/ksmserver/screenlocker/greeter/greeterapp.h
++++ b/ksmserver/screenlocker/greeter/greeterapp.h
+@@ -63,6 +63,7 @@ private Q_SLOTS:
  private:
      void initialize();
      void capsLocked();
@@ -172,3 +205,6 @@ diff -up kde-workspace-4.11.3/ksmserver/screenlocker/greeter/greeterapp.h.review
  
      QString m_mainQmlPath;
      QList<QDeclarativeView*> m_views;
+-- 
+1.8.4.2
+
diff --git a/kde-workspace.spec b/kde-workspace.spec
index 88b7b44..f28237c 100644
--- a/kde-workspace.spec
+++ b/kde-workspace.spec
@@ -115,13 +115,13 @@ Patch57: kde-workspace-4.8.0-bug796969.patch
 # use backlight actual_brightness interface
 Patch58: kde-workspace-4.11.0-backlight_actual_brightness.patch
 
-# https://git.reviewboard.kde.org/r/113971/
-# https://bugzilla.redhat.com/show_bug.cgi?id=1029917
-Patch59: kde-workspace-reviewboard113971.patch
-
 ## upstream patches
 Patch1003: 0003-update-adjust-to-UPower-0.99.0.patch
 Patch1032: 0032-introduce-a-locked-property-for-the-qml-lock-screen.patch
+Patch1033: 0033-stray-rubbish.patch
+Patch1034: 0034-also-respect-locking-manually.patch
+Patch1037: 0037-make-it-possible-to-come-out-of-locked-state.patch
+Patch1040: 0040-improve-screenlocker-multiscreen-behavior.patch
 
 ## plasma active patches
 
@@ -491,8 +491,11 @@ Requires: akonadi
 %patch58 -p1 -b .backlight_actual_brightness
 
 %patch1003 -p1 -b .0003
-#patch1032 -p1 -b .0032
-%patch59 -p1 -b .reviewboard113971
+%patch1032 -p1 -b .0032
+%patch1033 -p1 -b .0033
+%patch1034 -p1 -b .0034
+%patch1037 -p1 -b .0037
+%patch1040 -p1 -b .0040
 
 # upstream patches
 
@@ -1061,7 +1064,7 @@ fi
 
 %changelog
 * Mon Nov 25 2013 Rex Dieter <rdieter at fedoraproject.org> 4.11.3-5
-- omit introduce-a-locked-property-for-the-qml-lock-screen.patch
+- followup screenlocker fixes/polish (#1029917, #1032612)
 
 * Sat Nov 23 2013 Rex Dieter <rdieter at fedoraproject.org> - 4.11.3-4
 - screenlocker improvements (#1029917, #1032612)


More information about the scm-commits mailing list