diff options
Diffstat (limited to 'kdesktop/lock/lockprocess.cc')
-rw-r--r-- | kdesktop/lock/lockprocess.cc | 66 |
1 files changed, 41 insertions, 25 deletions
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc index d96b64ca9..ac70def46 100644 --- a/kdesktop/lock/lockprocess.cc +++ b/kdesktop/lock/lockprocess.cc @@ -220,6 +220,7 @@ LockProcess::LockProcess() mHackDelayStartupTimer(NULL), mHackDelayStartupTimeout(0), mHackStartupEnabled(true), + mOverrideHackStartupEnabled(false), mResizingDesktopLock(false), m_rootPixmap(NULL), mBackingStartupDelayTimer(0), @@ -683,6 +684,7 @@ void LockProcess::slotDeadTimePassed() bool LockProcess::defaultSave() { mLocked = false; + mOverrideHackStartupEnabled = true; if (startSaver()) { if (mLockGrace >= 0) TQTimer::singleShot(mLockGrace, this, TQT_SLOT(startLock())); @@ -859,16 +861,19 @@ void LockProcess::configure() if (mSaver.isEmpty() || mUseBlankOnly) { mSaver = "KBlankscreen.desktop"; } - if (KDesktopSettings::screenSaverEnabled() == false) { - mSaver = ""; - mSaverExec = ""; + if (!trinity_desktop_lock_use_system_modal_dialogs) { + if (KDesktopSettings::screenSaverEnabled() == false) { + mSaver = ""; + mSaverExec = ""; + } } readSaver(); mPlugins = KDesktopSettings::pluginsUnlock(); - if (mPlugins.isEmpty()) + if (mPlugins.isEmpty()) { mPlugins = TQStringList("classic"); + } mPluginOptions = KDesktopSettings::pluginOptions(); } @@ -1110,7 +1115,7 @@ void LockProcess::desktopResized() // Black out the background widget to hide ugly resize tiling artifacts if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { setBackgroundColor(black); @@ -1362,17 +1367,10 @@ void LockProcess::ungrabInput() //--------------------------------------------------------------------------- // -// Start the screen saver. +// Set a fully transparent ARGB background image. // -bool LockProcess::startSaver() +void LockProcess::setTransparentBackgroundARGB() { - if (!child_saver && !grabInput()) - { - kdWarning(1204) << "LockProcess::startSaver() grabInput() failed!!!!" << endl; - return false; - } - mBusy = false; - // eliminate nasty flicker on first show TQImage m_grayImage = TQImage( TQApplication::desktop()->width(), TQApplication::desktop()->height(), 32 ); m_grayImage = m_grayImage.convertDepth(32); @@ -1387,6 +1385,23 @@ bool LockProcess::startSaver() p.drawImage( 0, 0, m_grayImage ); p.end(); setBackgroundPixmap( m_root ); +} + +//--------------------------------------------------------------------------- +// +// Start the screen saver. +// +bool LockProcess::startSaver() +{ + if (!child_saver && !grabInput()) + { + kdWarning(1204) << "LockProcess::startSaver() grabInput() failed!!!!" << endl; + return false; + } + mBusy = false; + + // eliminate nasty flicker on first show + setTransparentBackgroundARGB(); saveVRoot(); @@ -1408,9 +1423,9 @@ bool LockProcess::startSaver() slotPaintBackground(rootWinSnapShot); } - if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!trinity_desktop_lock_in_sec_dlg)) && mHackStartupEnabled) { + if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!trinity_desktop_lock_in_sec_dlg)) && (mHackStartupEnabled || mOverrideHackStartupEnabled)) { if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { @@ -1430,7 +1445,8 @@ bool LockProcess::startSaver() if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); } else { - if (mHackStartupEnabled == true) { + if (mHackStartupEnabled || mOverrideHackStartupEnabled) { + mOverrideHackStartupEnabled = false; startHack(); } else { @@ -1558,7 +1574,7 @@ void LockProcess::repaintRootWindowIfNeeded() if (trinity_desktop_lock_use_system_modal_dialogs) { if (!mHackProc.isRunning()) { if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); erase(); } else { @@ -1591,7 +1607,7 @@ bool LockProcess::startHack() { // no resuming with dialog visible or when not visible if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { @@ -1644,7 +1660,7 @@ bool LockProcess::startHack() if (trinity_desktop_lock_use_system_modal_dialogs) { // Make sure we have a nice clean display to start with! if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { @@ -1684,7 +1700,7 @@ bool LockProcess::startHack() TQApplication::syncX(); if (!trinity_desktop_lock_use_system_modal_dialogs) { if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { @@ -1696,7 +1712,7 @@ bool LockProcess::startHack() } } if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); erase(); } else { @@ -1746,7 +1762,7 @@ void LockProcess::hackExited(TDEProcess *) TQApplication::syncX(); if (!trinity_desktop_lock_use_system_modal_dialogs) { if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { @@ -1758,7 +1774,7 @@ void LockProcess::hackExited(TDEProcess *) } } if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { @@ -1846,7 +1862,7 @@ void LockProcess::resume( bool force ) // no resuming with dialog visible or when not visible if (trinity_desktop_lock_use_system_modal_dialogs) { if (argb_visual) { - setErasePixmap(TQPixmap()); + setTransparentBackgroundARGB(); } else { if (backingPixmap.isNull()) { |