SVN commit 1189267 by ossi: make initial lock pop up the unlock dialog immediately this is kind of a readiness notification. FEATURE: 249822 FIXED-IN: 4.6 M +5 -1 krunner/lock/lockprocess.cc M +2 -1 krunner/lock/lockprocess.h M +2 -1 krunner/lock/main.cc M +1 -1 startkde.cmake --- trunk/KDE/kdebase/workspace/krunner/lock/lockprocess.cc #1189266:1189267 @@ -137,6 +137,7 @@ // LockProcess::LockProcess(bool child, bool useBlankOnly) : QWidget(0L, Qt::X11BypassWindowManagerHint), + mInitialLock(false), mLocked(false), mBusy(false), mPlasmaDBus(0), @@ -320,7 +321,7 @@ } //--------------------------------------------------------------------------- -bool LockProcess::lock() +bool LockProcess::lock(bool initial) { if (startSaver()) { // In case of a forced lock we don't react to events during @@ -329,6 +330,7 @@ // the screensaver kicks in because the user moved the mouse after // selecting "lock screen", that looks really untidy. mBusy = true; + mInitialLock = initial; if (startLock()) { QTimer::singleShot(1000, this, SLOT(slotDeadTimePassed())); @@ -342,6 +344,8 @@ //--------------------------------------------------------------------------- void LockProcess::slotDeadTimePassed() { + if (mInitialLock) + quit(); mBusy = false; } --- trunk/KDE/kdebase/workspace/krunner/lock/lockprocess.h #1189266:1189267 @@ -55,7 +55,7 @@ /** * start the screensaver locked */ - bool lock(); + bool lock(bool initial = false); /** * start the screensaver unlocked @@ -186,6 +186,7 @@ static QVariant getConf(void *ctx, const char *key, const QVariant &dflt); bool loadGreetPlugin(); + bool mInitialLock; bool mLocked; int mLockGrace; int mPriority; --- trunk/KDE/kdebase/workspace/krunner/lock/main.cc #1189266:1189267 @@ -64,6 +64,7 @@ KCmdLineOptions options; options.add("forcelock", ki18n("Force session locking")); options.add("dontlock", ki18n("Only start screen saver")); + options.add("showunlock", ki18n("Immediately show the unlock dialog")); options.add("blank", ki18n("Only use the blank screen saver")); options.add("plasmasetup", ki18n("start with plasma unlocked for configuring")); options.add("daemon", ki18n("Fork into the background after starting up")); @@ -171,7 +172,7 @@ bool rt; bool sig = false; if (!child && (args->isSet("forcelock"))) { - rt = process.lock(); + rt = process.lock(args->isSet("showunlock")); sig = true; } else if( child || args->isSet( "dontlock" )) --- trunk/KDE/kdebase/workspace/startkde.cmake #1189266:1189267 @@ -351,7 +351,7 @@ # If the session should be locked from the start (locked autologin), # lock now and do the rest of the KDE startup underneath the locker. if test -n "$dl"; then - if ! kwrapper4 kscreenlocker --forcelock --daemon; then + if ! kwrapper4 kscreenlocker --forcelock --showunlock --daemon; then echo 'startkde: Initial session lock failed. Terminating for security reasons.' 1>&2 exit 1 fi