Fix kdesktop_lock not reacting to settings changes until it is restarted

pull/2/head
Timothy Pearson 12 years ago
parent de4e7b4159
commit 345d1e7880

@ -157,7 +157,7 @@ trinity_desktop_lock_autohide_lockdlg = TRUE;
// starting screensaver hacks, and password entry. // starting screensaver hacks, and password entry.
// //
LockProcess::LockProcess() LockProcess::LockProcess()
: TQWidget(0L, "saver window", (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)(WStyle_StaysOnTop|WStyle_Customize|WStyle_NoBorder)):((WFlags)WX11BypassWM))), : TQWidget(0L, "saver window", ((WFlags)(WStyle_StaysOnTop|WStyle_Customize|WStyle_NoBorder))),
mOpenGLVisual(0), mOpenGLVisual(0),
mParent(0), mParent(0),
mShowLockDateTime(false), mShowLockDateTime(false),
@ -344,6 +344,10 @@ LockProcess::~LockProcess()
// //
void LockProcess::init(bool child, bool useBlankOnly) void LockProcess::init(bool child, bool useBlankOnly)
{ {
if (!trinity_desktop_lock_use_system_modal_dialogs) {
setWFlags((WFlags)WX11BypassWM);
}
child_saver = child; child_saver = child;
mUseBlankOnly = useBlankOnly; mUseBlankOnly = useBlankOnly;
@ -1260,12 +1264,13 @@ bool LockProcess::startSaver()
// Try to get the root pixmap // Try to get the root pixmap
if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this); if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this);
m_rootPixmap->setCustomPainting(true); m_rootPixmap->setCustomPainting(true);
m_rootPixmap->start();
// Sometimes KRootPixmap fails...make sure the desktop is hidden regardless // Sometimes KRootPixmap fails...make sure the desktop is hidden regardless
if (!mEnsureScreenHiddenTimer) { if (!mEnsureScreenHiddenTimer) {
mEnsureScreenHiddenTimer = new TQTimer( this ); mEnsureScreenHiddenTimer = new TQTimer( this );
connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) ); connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) );
mEnsureScreenHiddenTimer->start(2000, true);
} }
mEnsureScreenHiddenTimer->start(2000, true);
} }
if (trinity_desktop_lock_in_sec_dlg == FALSE) { if (trinity_desktop_lock_in_sec_dlg == FALSE) {
@ -1818,7 +1823,13 @@ void LockProcess::slotForcePaintBackground()
void LockProcess::slotPaintBackground(const TQPixmap &rpm) void LockProcess::slotPaintBackground(const TQPixmap &rpm)
{ {
mEnsureScreenHiddenTimer->stop(); if (mEnsureScreenHiddenTimer) {
mEnsureScreenHiddenTimer->stop();
}
else {
mEnsureScreenHiddenTimer = new TQTimer( this );
connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) );
}
TQPixmap pm = rpm; TQPixmap pm = rpm;

@ -204,15 +204,9 @@ int main( int argc, char **argv )
app.disableSessionManagement(); app.disableSessionManagement();
KGlobal::locale()->insertCatalogue("libdmctl"); KGlobal::locale()->insertCatalogue("libdmctl");
// we need to read from the right rc file - possibly taking screen number in account
KDesktopSettings::instance("kdesktoprc");
trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
struct stat st; struct stat st;
KSimpleConfig* tdmconfig; KSimpleConfig* tdmconfig;
OPEN_TDMCONFIG_AND_SET_GROUP OPEN_TDMCONFIG_AND_SET_GROUP
trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", true); trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", true);
LockProcess process; LockProcess process;
@ -271,10 +265,10 @@ int main( int argc, char **argv )
} }
} }
// Reload settings to make sure they reflect reality // load settings here so that they actually reflect reality
KDesktopSettings::self()->config()->reparseConfiguration(); // there is no way to force a reload once KDesktopSettings::instance has been called!
delete tdmconfig; // we need to read from the right rc file - possibly taking screen number in account
OPEN_TDMCONFIG_AND_SET_GROUP KDesktopSettings::instance("kdesktoprc");
trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows(); trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart(); trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {

Loading…
Cancel
Save