Fix the most egregious style guide violations in the remaining kdesktop_lock source files

No functional changes were made to the source
pull/2/head
Timothy Pearson 9 years ago
parent b5462e86f3
commit e89d9e5e16

@ -1,6 +1,6 @@
//=========================================================================== //===========================================================================
// //
// This file is part of the KDE project // This file is part of the TDE project
// //
// Copyright (c) 2004 Chris Howells <howells@kde.org> // Copyright (c) 2004 Chris Howells <howells@kde.org>
@ -33,88 +33,88 @@ extern bool trinity_desktop_lock_use_system_modal_dialogs;
AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog", true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM))) AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog", true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)))
{ {
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {
// Signal that we do not want any window controls to be shown at all // Signal that we do not want any window controls to be shown at all
Atom kde_wm_system_modal_notification; Atom kde_wm_system_modal_notification;
kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_TDE_WM_MODAL_SYS_NOTIFICATION", False); kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_TDE_WM_MODAL_SYS_NOTIFICATION", False);
XChangeProperty(tqt_xdisplay(), winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L); XChangeProperty(tqt_xdisplay(), winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
} }
setCaption(i18n("Automatic Logout Notification")); setCaption(i18n("Automatic Logout Notification"));
frame = new TQFrame(this); frame = new TQFrame(this);
if (trinity_desktop_lock_use_system_modal_dialogs) if (trinity_desktop_lock_use_system_modal_dialogs) {
frame->setFrameStyle( TQFrame::NoFrame ); frame->setFrameStyle( TQFrame::NoFrame );
else }
frame->setFrameStyle(TQFrame::Panel | TQFrame::Raised); else {
frame->setLineWidth(2); frame->setFrameStyle(TQFrame::Panel | TQFrame::Raised);
}
TQLabel *pixLabel = new TQLabel( frame, "pixlabel" ); frame->setLineWidth(2);
pixLabel->setPixmap(DesktopIcon("system-log-out"));
TQLabel *pixLabel = new TQLabel( frame, "pixlabel" );
TQLabel *greetLabel = new TQLabel(i18n("<nobr><qt><b>Automatic Log Out</b></qt><nobr>"), frame); pixLabel->setPixmap(DesktopIcon("system-log-out"));
TQLabel *infoLabel = new TQLabel(i18n("<qt>To prevent being logged out, resume using this session by moving the mouse or pressing a key.</qt>"), frame);
TQLabel *greetLabel = new TQLabel(i18n("<nobr><qt><b>Automatic Log Out</b></qt><nobr>"), frame);
mStatusLabel = new TQLabel("<b> </b>", frame); TQLabel *infoLabel = new TQLabel(i18n("<qt>To prevent being logged out, resume using this session by moving the mouse or pressing a key.</qt>"), frame);
mStatusLabel->setAlignment(TQLabel::AlignCenter);
mStatusLabel = new TQLabel("<b> </b>", frame);
TQLabel *mProgressLabel = new TQLabel("Time Remaining:", frame); mStatusLabel->setAlignment(TQLabel::AlignCenter);
mProgressRemaining = new TQProgressBar(frame);
mProgressRemaining->setPercentageVisible(false); TQLabel *mProgressLabel = new TQLabel("Time Remaining:", frame);
mProgressRemaining = new TQProgressBar(frame);
TQVBoxLayout *unlockDialogLayout = new TQVBoxLayout( this ); mProgressRemaining->setPercentageVisible(false);
unlockDialogLayout->addWidget( frame );
TQVBoxLayout *unlockDialogLayout = new TQVBoxLayout( this );
frameLayout = new TQGridLayout(frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint()); unlockDialogLayout->addWidget( frame );
frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, Qt::AlignCenter | Qt::AlignTop);
frameLayout->addWidget(greetLabel, 0, 1); frameLayout = new TQGridLayout(frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint());
frameLayout->addWidget(mStatusLabel, 1, 1); frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, Qt::AlignCenter | Qt::AlignTop);
frameLayout->addWidget(infoLabel, 2, 1); frameLayout->addWidget(greetLabel, 0, 1);
frameLayout->addWidget(mProgressLabel, 3, 1); frameLayout->addWidget(mStatusLabel, 1, 1);
frameLayout->addWidget(mProgressRemaining, 4, 1); frameLayout->addWidget(infoLabel, 2, 1);
frameLayout->addWidget(mProgressLabel, 3, 1);
// get the time remaining in seconds for the status label frameLayout->addWidget(mProgressRemaining, 4, 1);
mRemaining = COUNTDOWN * 25;
// get the time remaining in seconds for the status label
mProgressRemaining->setTotalSteps(COUNTDOWN * 25); mRemaining = COUNTDOWN * 25;
updateInfo(mRemaining); mProgressRemaining->setTotalSteps(COUNTDOWN * 25);
mCountdownTimerId = startTimer(1000/25); updateInfo(mRemaining);
connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity())); mCountdownTimerId = startTimer(1000/25);
setFixedSize( sizeHint() ); connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()));
setFixedSize( sizeHint() );
} }
AutoLogout::~AutoLogout() AutoLogout::~AutoLogout()
{ {
hide(); hide();
} }
void AutoLogout::updateInfo(int timeout) void AutoLogout::updateInfo(int timeout)
{ {
mStatusLabel->setText(i18n("<nobr><qt>You will be automatically logged out in 1 second</qt></nobr>", mStatusLabel->setText(i18n("<nobr><qt>You will be automatically logged out in 1 second</qt></nobr>",
"<nobr><qt>You will be automatically logged out in %n seconds</qt></nobr>", "<nobr><qt>You will be automatically logged out in %n seconds</qt></nobr>",
timeout / 25) ); timeout / 25) );
mProgressRemaining->setProgress(timeout); mProgressRemaining->setProgress(timeout);
} }
void AutoLogout::timerEvent(TQTimerEvent *ev) void AutoLogout::timerEvent(TQTimerEvent *ev)
{ {
if (ev->timerId() == mCountdownTimerId) if (ev->timerId() == mCountdownTimerId) {
{ updateInfo(mRemaining);
updateInfo(mRemaining); --mRemaining;
--mRemaining; if (mRemaining < 0) {
if (mRemaining < 0) logout();
{ }
logout();
} }
}
} }
void AutoLogout::slotActivity() void AutoLogout::slotActivity()
{ {
accept(); accept();
} }
void AutoLogout::logout() void AutoLogout::logout()
@ -125,8 +125,8 @@ void AutoLogout::logout()
void AutoLogout::show() void AutoLogout::show()
{ {
TQDialog::show(); TQDialog::show();
TQApplication::flushX(); TQApplication::flushX();
} }
#include "autologout.moc" #include "autologout.moc"

@ -1,6 +1,6 @@
//=========================================================================== //===========================================================================
// //
// This file is part of the KDE project // This file is part of the TDE project
// //
// Copyright (c) 1999 Martin R. Jones <mjones@kde.org> // Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
// Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org> // Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
@ -22,29 +22,29 @@ class TQProgressBar;
class AutoLogout : public TQDialog class AutoLogout : public TQDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
AutoLogout(LockProcess *parent); AutoLogout(LockProcess *parent);
~AutoLogout(); ~AutoLogout();
virtual void show(); virtual void show();
protected: protected:
virtual void timerEvent(TQTimerEvent *); virtual void timerEvent(TQTimerEvent *);
private slots: private slots:
void slotActivity(); void slotActivity();
private: private:
void updateInfo(int); void updateInfo(int);
TQFrame *frame; TQFrame *frame;
TQGridLayout *frameLayout; TQGridLayout *frameLayout;
TQLabel *mStatusLabel; TQLabel *mStatusLabel;
int mCountdownTimerId; int mCountdownTimerId;
int mRemaining; int mRemaining;
TQTimer countDownTimer; TQTimer countDownTimer;
TQProgressBar *mProgressRemaining; TQProgressBar *mProgressRemaining;
void logout(); void logout();
}; };
#endif #endif

@ -233,18 +233,18 @@ LockProcess::LockProcess()
#endif #endif
setupSignals(); setupSignals();
// Set up atoms // Set up atoms
kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_TDE_WM_MODAL_SYS_NOTIFICATION", False); kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_TDE_WM_MODAL_SYS_NOTIFICATION", False);
kde_wm_transparent_to_desktop = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_DESKTOP", False); kde_wm_transparent_to_desktop = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_DESKTOP", False);
kde_wm_transparent_to_black = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_BLACK", False); kde_wm_transparent_to_black = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_BLACK", False);
kapp->installX11EventFilter(this); kapp->installX11EventFilter(this);
mForceContinualLockDisplayTimer = new TQTimer( this ); mForceContinualLockDisplayTimer = new TQTimer( this );
mHackDelayStartupTimer = new TQTimer( this ); mHackDelayStartupTimer = new TQTimer( this );
mEnsureVRootWindowSecurityTimer = new TQTimer( this ); mEnsureVRootWindowSecurityTimer = new TQTimer( this );
if (!argb_visual) { if (!argb_visual) {
// 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);
@ -252,7 +252,7 @@ LockProcess::LockProcess()
m_rootPixmap->setCustomPainting(true); m_rootPixmap->setCustomPainting(true);
m_rootPixmap->start(); m_rootPixmap->start();
} }
// Get root window attributes // Get root window attributes
XWindowAttributes rootAttr; XWindowAttributes rootAttr;
XGetWindowAttributes(tqt_xdisplay(), RootWindow(tqt_xdisplay(), tqt_xscreen()), &rootAttr); XGetWindowAttributes(tqt_xdisplay(), RootWindow(tqt_xdisplay(), tqt_xscreen()), &rootAttr);
@ -261,12 +261,12 @@ LockProcess::LockProcess()
TQToolTip::add( &w, "foo" ); TQToolTip::add( &w, "foo" );
} }
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), SubstructureNotifyMask | rootAttr.your_event_mask ); XSelectInput( tqt_xdisplay(), tqt_xrootwin(), SubstructureNotifyMask | rootAttr.your_event_mask );
// Add non-TDE path // Add non-TDE path
TDEGlobal::dirs()->addResourceType("scrsav", TDEGlobal::dirs()->addResourceType("scrsav",
TDEGlobal::dirs()->kde_default("apps") + TDEGlobal::dirs()->kde_default("apps") +
"System/ScreenSavers/"); "System/ScreenSavers/");
// Add KDE specific screensaver path // Add KDE specific screensaver path
TQString relPath="System/ScreenSavers/"; TQString relPath="System/ScreenSavers/";
KServiceGroup::Ptr servGroup = KServiceGroup::baseGroup( "screensavers"); KServiceGroup::Ptr servGroup = KServiceGroup::baseGroup( "screensavers");
@ -277,11 +277,11 @@ LockProcess::LockProcess()
TDEGlobal::dirs()->addResourceType("scrsav", TDEGlobal::dirs()->addResourceType("scrsav",
TDEGlobal::dirs()->kde_default("apps") + TDEGlobal::dirs()->kde_default("apps") +
relPath); relPath);
// virtual root property // virtual root property
gXA_VROOT = XInternAtom (tqt_xdisplay(), "__SWM_VROOT", False); gXA_VROOT = XInternAtom (tqt_xdisplay(), "__SWM_VROOT", False);
gXA_SCREENSAVER_VERSION = XInternAtom (tqt_xdisplay(), "_SCREENSAVER_VERSION", False); gXA_SCREENSAVER_VERSION = XInternAtom (tqt_xdisplay(), "_SCREENSAVER_VERSION", False);
TQStringList dmopt = TQStringList::split(TQChar(','), TQStringList dmopt = TQStringList::split(TQChar(','),
TQString::fromLatin1( ::getenv( "XDM_MANAGED" ))); TQString::fromLatin1( ::getenv( "XDM_MANAGED" )));
for (TQStringList::ConstIterator it = dmopt.begin(); it != dmopt.end(); ++it) { for (TQStringList::ConstIterator it = dmopt.begin(); it != dmopt.end(); ++it) {
@ -295,7 +295,7 @@ LockProcess::LockProcess()
#endif #endif
greetPlugin.library = 0; greetPlugin.library = 0;
TDECrash::setCrashHandler(segv_handler); TDECrash::setCrashHandler(segv_handler);
} }
@ -334,18 +334,18 @@ LockProcess::~LockProcess()
mEnsureVRootWindowSecurityTimer->stop(); mEnsureVRootWindowSecurityTimer->stop();
delete mEnsureVRootWindowSecurityTimer; delete mEnsureVRootWindowSecurityTimer;
} }
if (greetPlugin.library) { if (greetPlugin.library) {
if (greetPlugin.info->done) if (greetPlugin.info->done)
greetPlugin.info->done(); greetPlugin.info->done();
greetPlugin.library->unload(); greetPlugin.library->unload();
} }
if (m_rootPixmap) { if (m_rootPixmap) {
m_rootPixmap->stop(); m_rootPixmap->stop();
delete m_rootPixmap; delete m_rootPixmap;
} }
mPipeOpen = false; mPipeOpen = false;
mPipeOpen_out = false; mPipeOpen_out = false;
} }
@ -363,7 +363,7 @@ void LockProcess::init(bool child, bool useBlankOnly)
mRootWidth = rootAttr.width; mRootWidth = rootAttr.width;
mRootHeight = rootAttr.height; mRootHeight = rootAttr.height;
generateBackingImages(); generateBackingImages();
// Connect all signals // Connect all signals
connect( mForceContinualLockDisplayTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(displayLockDialogIfNeeded()) ); connect( mForceContinualLockDisplayTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(displayLockDialogIfNeeded()) );
connect( mHackDelayStartupTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(closeDialogAndStartHack()) ); connect( mHackDelayStartupTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(closeDialogAndStartHack()) );
@ -399,15 +399,15 @@ void LockProcess::init(bool child, bool useBlankOnly)
child_saver = child; child_saver = child;
mUseBlankOnly = useBlankOnly; mUseBlankOnly = useBlankOnly;
mShowLockDateTime = KDesktopSettings::showLockDateTime(); mShowLockDateTime = KDesktopSettings::showLockDateTime();
mlockDateTime = TQDateTime::currentDateTime(); mlockDateTime = TQDateTime::currentDateTime();
mHackDelayStartupTimeout = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::timeout()*1000:10*1000; mHackDelayStartupTimeout = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::timeout()*1000:10*1000;
mHackStartupEnabled = trinity_desktop_lock_use_system_modal_dialogs?KDesktopSettings::screenSaverEnabled():true; mHackStartupEnabled = trinity_desktop_lock_use_system_modal_dialogs?KDesktopSettings::screenSaverEnabled():true;
configure(); configure();
mControlPipeHandlerThread = new TQEventLoopThread(); mControlPipeHandlerThread = new TQEventLoopThread();
mControlPipeHandler = new ControlPipeHandlerObject(); mControlPipeHandler = new ControlPipeHandlerObject();
mControlPipeHandler->mParent = this; mControlPipeHandler->mParent = this;
@ -453,7 +453,7 @@ bool LockProcess::closeCurrentWindow()
currentDialog->close(); currentDialog->close();
} }
} }
if( mDialogs.isEmpty() ) { if( mDialogs.isEmpty() ) {
mClosingWindows = FALSE; mClosingWindows = FALSE;
mForceReject = false; mForceReject = false;
@ -506,7 +506,7 @@ void LockProcess::setupSignals()
sigaddset(&(act.sa_mask), SIGHUP); sigaddset(&(act.sa_mask), SIGHUP);
act.sa_flags = 0; act.sa_flags = 0;
sigaction(SIGHUP, &act, 0L); sigaction(SIGHUP, &act, 0L);
if (pipe(signal_pipe) == -1) { if (pipe(signal_pipe) == -1) {
// Error handler to shut up gcc warnings // Error handler to shut up gcc warnings
} }
@ -733,17 +733,17 @@ void LockProcess::configure()
} }
else else
mLockGrace = -1; mLockGrace = -1;
if ( KDesktopSettings::autoLogout() ) { if ( KDesktopSettings::autoLogout() ) {
mAutoLogout = true; mAutoLogout = true;
mAutoLogoutTimeout = KDesktopSettings::autoLogoutTimeout(); mAutoLogoutTimeout = KDesktopSettings::autoLogoutTimeout();
mAutoLogoutTimerId = startTimer(mAutoLogoutTimeout * 1000); // in milliseconds mAutoLogoutTimerId = startTimer(mAutoLogoutTimeout * 1000); // in milliseconds
} }
mPriority = KDesktopSettings::priority(); mPriority = KDesktopSettings::priority();
if (mPriority < 0) mPriority = 0; if (mPriority < 0) mPriority = 0;
if (mPriority > 19) mPriority = 19; if (mPriority > 19) mPriority = 19;
mSaver = KDesktopSettings::saver(); mSaver = KDesktopSettings::saver();
if (mSaver.isEmpty() || mUseBlankOnly) { if (mSaver.isEmpty() || mUseBlankOnly) {
mSaver = "KBlankscreen.desktop"; mSaver = "KBlankscreen.desktop";
@ -754,9 +754,9 @@ void LockProcess::configure()
mSaverExec = ""; mSaverExec = "";
} }
} }
readSaver(); readSaver();
mPlugins = KDesktopSettings::pluginsUnlock(); mPlugins = KDesktopSettings::pluginsUnlock();
if (mPlugins.isEmpty()) { if (mPlugins.isEmpty()) {
mPlugins = TQStringList("classic"); mPlugins = TQStringList("classic");
@ -772,7 +772,7 @@ void LockProcess::readSaver()
{ {
if (!mSaver.isEmpty()) { if (!mSaver.isEmpty()) {
TQString file = locate("scrsav", mSaver); TQString file = locate("scrsav", mSaver);
bool opengl = kapp->authorize("opengl_screensavers"); bool opengl = kapp->authorize("opengl_screensavers");
bool manipulatescreen = kapp->authorize("manipulatescreen_screensavers"); bool manipulatescreen = kapp->authorize("manipulatescreen_screensavers");
KDesktopFile config(file, true); KDesktopFile config(file, true);
@ -793,9 +793,9 @@ void LockProcess::readSaver()
} }
} }
} }
kdDebug(1204) << "mForbidden: " << (mForbidden ? "true" : "false") << endl; kdDebug(1204) << "mForbidden: " << (mForbidden ? "true" : "false") << endl;
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {
if (config.hasActionGroup("InWindow")) { if (config.hasActionGroup("InWindow")) {
config.setActionGroup("InWindow"); config.setActionGroup("InWindow");
@ -882,7 +882,7 @@ void LockProcess::createSaverWindow()
attrs.override_redirect = 1; attrs.override_redirect = 1;
hide(); hide();
if (argb_visual) { if (argb_visual) {
// The GL visual selection can return a visual with invalid depth // The GL visual selection can return a visual with invalid depth
// Check for this and use a fallback visual if needed // Check for this and use a fallback visual if needed
@ -892,7 +892,7 @@ void LockProcess::createSaverWindow()
info = NULL; info = NULL;
flags &= ~CWColormap; flags &= ~CWColormap;
} }
attrs.background_pixel = 0; attrs.background_pixel = 0;
attrs.border_pixel = 0; attrs.border_pixel = 0;
flags |= CWBackPixel; flags |= CWBackPixel;
@ -916,33 +916,33 @@ void LockProcess::createSaverWindow()
if (info) { if (info) {
XFree( info ); XFree( info );
} }
m_saverRootWindow = XCreateWindow( x11Display(), RootWindow( x11Display(), x11Screen()), x(), y(), width(), height(), 0, x11Depth(), InputOutput, visual, flags, &attrs ); m_saverRootWindow = XCreateWindow( x11Display(), RootWindow( x11Display(), x11Screen()), x(), y(), width(), height(), 0, x11Depth(), InputOutput, visual, flags, &attrs );
create( m_saverRootWindow ); create( m_saverRootWindow );
// Some xscreensaver hacks check for this property // Some xscreensaver hacks check for this property
const char *version = "KDE 2.0"; const char *version = "KDE 2.0";
XChangeProperty (tqt_xdisplay(), winId(), XChangeProperty (tqt_xdisplay(), winId(),
gXA_SCREENSAVER_VERSION, XA_STRING, 8, PropModeReplace, gXA_SCREENSAVER_VERSION, XA_STRING, 8, PropModeReplace,
(unsigned char *) version, strlen(version)); (unsigned char *) version, strlen(version));
XSetWindowAttributes attr; XSetWindowAttributes attr;
attr.event_mask = KeyPressMask | ButtonPressMask | PointerMotionMask | VisibilityChangeMask | ExposureMask; attr.event_mask = KeyPressMask | ButtonPressMask | PointerMotionMask | VisibilityChangeMask | ExposureMask;
XChangeWindowAttributes(tqt_xdisplay(), winId(), CWEventMask, &attr); XChangeWindowAttributes(tqt_xdisplay(), winId(), CWEventMask, &attr);
// Signal that we want to be transparent to the desktop, not to windows behind us... // Signal that we want to be transparent to the desktop, not to windows behind us...
XChangeProperty(tqt_xdisplay(), m_saverRootWindow, kde_wm_transparent_to_desktop, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L); XChangeProperty(tqt_xdisplay(), m_saverRootWindow, kde_wm_transparent_to_desktop, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
// erase(); // erase();
// set NoBackground so that the saver can capture the current // set NoBackground so that the saver can capture the current
// screen state if necessary // screen state if necessary
// this is a security risk and has been deactivated--welcome to the 21st century folks! // this is a security risk and has been deactivated--welcome to the 21st century folks!
// setBackgroundMode(TQWidget::NoBackground); // setBackgroundMode(TQWidget::NoBackground);
setGeometry(0, 0, mRootWidth, mRootHeight); setGeometry(0, 0, mRootWidth, mRootHeight);
saverReadyIfNeeded(); saverReadyIfNeeded();
// HACK // HACK
// Hide all tooltips and notification windows // Hide all tooltips and notification windows
{ {
@ -952,7 +952,7 @@ void LockProcess::createSaverWindow()
unsigned int noOfChildren = 0; unsigned int noOfChildren = 0;
XWindowAttributes childAttr; XWindowAttributes childAttr;
Window childTransient; Window childTransient;
if (XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) { if (XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
for (unsigned int i=0; i<noOfChildren; i++) { for (unsigned int i=0; i<noOfChildren; i++) {
if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) { if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
@ -967,7 +967,7 @@ void LockProcess::createSaverWindow()
} }
} }
} }
kdDebug(1204) << "Saver window Id: " << winId() << endl; kdDebug(1204) << "Saver window Id: " << winId() << endl;
} }
@ -982,15 +982,15 @@ void LockProcess::desktopResized()
mRootWidth = rootAttr.width; mRootWidth = rootAttr.width;
mRootHeight = rootAttr.height; mRootHeight = rootAttr.height;
generateBackingImages(); generateBackingImages();
mBusy = true; mBusy = true;
mHackDelayStartupTimer->stop(); mHackDelayStartupTimer->stop();
stopHack(); stopHack();
DISABLE_CONTINUOUS_LOCKDLG_DISPLAY DISABLE_CONTINUOUS_LOCKDLG_DISPLAY
mResizingDesktopLock = true; mResizingDesktopLock = true;
backingPixmap = TQPixmap(); backingPixmap = TQPixmap();
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {
// Temporarily hide the entire screen with a new override redirect window // Temporarily hide the entire screen with a new override redirect window
if (m_maskWidget) { if (m_maskWidget) {
@ -1005,7 +1005,7 @@ void LockProcess::desktopResized()
} }
XSync(tqt_xdisplay(), False); XSync(tqt_xdisplay(), False);
saverReadyIfNeeded(); saverReadyIfNeeded();
if (mEnsureScreenHiddenTimer) { if (mEnsureScreenHiddenTimer) {
mEnsureScreenHiddenTimer->stop(); mEnsureScreenHiddenTimer->stop();
} }
@ -1015,12 +1015,12 @@ void LockProcess::desktopResized()
} }
mEnsureScreenHiddenTimer->start(DESKTOP_WALLPAPER_OBTAIN_TIMEOUT_MS, true); mEnsureScreenHiddenTimer->start(DESKTOP_WALLPAPER_OBTAIN_TIMEOUT_MS, true);
} }
// Resize the background widget // Resize the background widget
setGeometry(0, 0, mRootWidth, mRootHeight); setGeometry(0, 0, mRootWidth, mRootHeight);
XSync(tqt_xdisplay(), False); XSync(tqt_xdisplay(), False);
saverReadyIfNeeded(); saverReadyIfNeeded();
// Black out the background widget to hide ugly resize tiling artifacts // Black out the background widget to hide ugly resize tiling artifacts
if (argb_visual) { if (argb_visual) {
setTransparentBackgroundARGB(); setTransparentBackgroundARGB();
@ -1029,7 +1029,7 @@ void LockProcess::desktopResized()
setBackgroundColor(black); setBackgroundColor(black);
} }
erase(); erase();
// This slot needs to be able to execute very rapidly so as to prevent the user's desktop from ever // This slot needs to be able to execute very rapidly so as to prevent the user's desktop from ever
// being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot // being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot
if (resizeTimer == NULL) { if (resizeTimer == NULL) {
@ -1110,20 +1110,20 @@ void LockProcess::saveVRoot()
Window rootReturn, parentReturn, *children; Window rootReturn, parentReturn, *children;
unsigned int numChildren; unsigned int numChildren;
Window root = RootWindowOfScreen(ScreenOfDisplay(tqt_xdisplay(), tqt_xscreen())); Window root = RootWindowOfScreen(ScreenOfDisplay(tqt_xdisplay(), tqt_xscreen()));
gVRoot = 0; gVRoot = 0;
gVRootData = 0; gVRootData = 0;
int (*oldHandler)(Display *, XErrorEvent *); int (*oldHandler)(Display *, XErrorEvent *);
oldHandler = XSetErrorHandler(ignoreXError); oldHandler = XSetErrorHandler(ignoreXError);
if (XQueryTree(tqt_xdisplay(), root, &rootReturn, &parentReturn, &children, &numChildren)) { if (XQueryTree(tqt_xdisplay(), root, &rootReturn, &parentReturn, &children, &numChildren)) {
for (unsigned int i = 0; i < numChildren; i++) { for (unsigned int i = 0; i < numChildren; i++) {
Atom actual_type; Atom actual_type;
int actual_format; int actual_format;
unsigned long nitems, bytesafter; unsigned long nitems, bytesafter;
unsigned char *newRoot = 0; unsigned char *newRoot = 0;
if ((XGetWindowProperty(tqt_xdisplay(), children[i], gXA_VROOT, 0, 1, if ((XGetWindowProperty(tqt_xdisplay(), children[i], gXA_VROOT, 0, 1,
False, XA_WINDOW, &actual_type, &actual_format, &nitems, &bytesafter, False, XA_WINDOW, &actual_type, &actual_format, &nitems, &bytesafter,
&newRoot) == Success) && newRoot) { &newRoot) == Success) && newRoot) {
@ -1138,7 +1138,7 @@ void LockProcess::saveVRoot()
XFree((char *)children); XFree((char *)children);
} }
} }
XSetErrorHandler(oldHandler); XSetErrorHandler(oldHandler);
} }
@ -1151,10 +1151,10 @@ void LockProcess::setVRoot(Window win, Window vr)
if (gVRoot) { if (gVRoot) {
removeVRoot(gVRoot); removeVRoot(gVRoot);
} }
unsigned long rw = RootWindowOfScreen(ScreenOfDisplay(tqt_xdisplay(), tqt_xscreen())); unsigned long rw = RootWindowOfScreen(ScreenOfDisplay(tqt_xdisplay(), tqt_xscreen()));
unsigned long vroot_data[1] = { vr }; unsigned long vroot_data[1] = { vr };
Window rootReturn; Window rootReturn;
Window parentReturn; Window parentReturn;
Window *children = NULL; Window *children = NULL;
@ -1175,7 +1175,7 @@ void LockProcess::setVRoot(Window win, Window vr)
top = parentReturn; top = parentReturn;
} }
} }
XChangeProperty(tqt_xdisplay(), top, gXA_VROOT, XA_WINDOW, 32, PropModeReplace, (unsigned char *)vroot_data, 1); XChangeProperty(tqt_xdisplay(), top, gXA_VROOT, XA_WINDOW, 32, PropModeReplace, (unsigned char *)vroot_data, 1);
} }
@ -1196,7 +1196,7 @@ bool LockProcess::grabKeyboard()
{ {
int rv = XGrabKeyboard( tqt_xdisplay(), TQApplication::desktop()->winId(), int rv = XGrabKeyboard( tqt_xdisplay(), TQApplication::desktop()->winId(),
True, GrabModeAsync, GrabModeAsync, CurrentTime ); True, GrabModeAsync, GrabModeAsync, CurrentTime );
return (rv == GrabSuccess); return (rv == GrabSuccess);
} }
@ -1219,7 +1219,7 @@ bool LockProcess::grabMouse()
int rv = XGrabPointer( tqt_xdisplay(), TQApplication::desktop()->winId(), int rv = XGrabPointer( tqt_xdisplay(), TQApplication::desktop()->winId(),
True, GRABEVENTS, GrabModeAsync, GrabModeAsync, None, True, GRABEVENTS, GrabModeAsync, GrabModeAsync, None,
cursorHandle, CurrentTime ); cursorHandle, CurrentTime );
return (rv == GrabSuccess); return (rv == GrabSuccess);
} }
@ -1230,14 +1230,14 @@ bool LockProcess::grabMouse()
bool LockProcess::grabInput() bool LockProcess::grabInput()
{ {
XSync(tqt_xdisplay(), False); XSync(tqt_xdisplay(), False);
if (!grabKeyboard()) { if (!grabKeyboard()) {
usleep(100000); usleep(100000);
if (!grabKeyboard()) { if (!grabKeyboard()) {
return false; return false;
} }
} }
#ifndef KEEP_MOUSE_UNGRABBED #ifndef KEEP_MOUSE_UNGRABBED
if (!grabMouse()) { if (!grabMouse()) {
usleep(100000); usleep(100000);
@ -1247,9 +1247,9 @@ bool LockProcess::grabInput()
} }
} }
#endif #endif
lockXF86(); lockXF86();
return true; return true;
} }
@ -1543,11 +1543,11 @@ void LockProcess::repaintRootWindowIfNeeded()
bool LockProcess::startHack() bool LockProcess::startHack()
{ {
mHackActive = TRUE; mHackActive = TRUE;
if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) { if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) {
mEnsureVRootWindowSecurityTimer->start(250, FALSE); mEnsureVRootWindowSecurityTimer->start(250, FALSE);
} }
if (currentDialog || (!mDialogs.isEmpty())) { if (currentDialog || (!mDialogs.isEmpty())) {
// no resuming with dialog visible or when not visible // no resuming with dialog visible or when not visible
if (argb_visual) { if (argb_visual) {
@ -1566,30 +1566,30 @@ bool LockProcess::startHack()
saverReadyIfNeeded(); saverReadyIfNeeded();
return false; return false;
} }
setCursor( tqblankCursor ); setCursor( tqblankCursor );
XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime); XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime);
if (mSaverExec.isEmpty()) { if (mSaverExec.isEmpty()) {
return false; return false;
} }
if (mHackProc.isRunning()) { if (mHackProc.isRunning()) {
stopHack(); stopHack();
} }
mHackProc.clearArguments(); mHackProc.clearArguments();
TQTextStream ts(&mSaverExec, IO_ReadOnly); TQTextStream ts(&mSaverExec, IO_ReadOnly);
TQString word; TQString word;
ts >> word; ts >> word;
TQString path = TDEStandardDirs::findExe(word); TQString path = TDEStandardDirs::findExe(word);
if (!path.isEmpty()) { if (!path.isEmpty()) {
mHackProc << path; mHackProc << path;
kdDebug(1204) << "Starting hack: " << path << endl; kdDebug(1204) << "Starting hack: " << path << endl;
while (!ts.atEnd()) { while (!ts.atEnd()) {
ts >> word; ts >> word;
if (word == "%w") if (word == "%w")
@ -1623,7 +1623,7 @@ bool LockProcess::startHack()
saverReadyIfNeeded(); saverReadyIfNeeded();
mSuspended = false; mSuspended = false;
} }
XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime); XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime);
if (mHackProc.start() == true) { if (mHackProc.start() == true) {
#ifdef HAVE_SETPRIORITY #ifdef HAVE_SETPRIORITY
@ -1699,7 +1699,7 @@ void LockProcess::stopHack()
} }
} }
setCursor( tqarrowCursor ); setCursor( tqarrowCursor );
mHackActive = FALSE; mHackActive = FALSE;
} }
@ -1868,13 +1868,13 @@ bool LockProcess::checkPass()
if (mAutoLogout) { if (mAutoLogout) {
killTimer(mAutoLogoutTimerId); killTimer(mAutoLogoutTimerId);
} }
// Make sure we never launch the SAK or login dialog if windows are being closed down // Make sure we never launch the SAK or login dialog if windows are being closed down
// Otherwise we can get stuck in an irrecoverable state where any attempt to show the login screen is instantly aborted // Otherwise we can get stuck in an irrecoverable state where any attempt to show the login screen is instantly aborted
if (mClosingWindows) { if (mClosingWindows) {
return 0; return 0;
} }
if (trinity_desktop_lock_use_sak) { if (trinity_desktop_lock_use_sak) {
// Verify SAK operational status // Verify SAK operational status
TDEProcess* checkSAKProcess = new TDEProcess; TDEProcess* checkSAKProcess = new TDEProcess;
@ -1886,7 +1886,7 @@ bool LockProcess::checkPass()
trinity_desktop_lock_use_sak = false; trinity_desktop_lock_use_sak = false;
} }
} }
if (trinity_desktop_lock_use_sak) { if (trinity_desktop_lock_use_sak) {
// Wait for SAK press before continuing... // Wait for SAK press before continuing...
SAKDlg inDlg( this ); SAKDlg inDlg( this );
@ -1895,17 +1895,17 @@ bool LockProcess::checkPass()
return 0; return 0;
} }
} }
showVkbd(); showVkbd();
PasswordDlg passDlg( this, &greetPlugin, (mShowLockDateTime)?mlockDateTime:TQDateTime()); PasswordDlg passDlg( this, &greetPlugin, (mShowLockDateTime)?mlockDateTime:TQDateTime());
int ret = execDialog( &passDlg ); int ret = execDialog( &passDlg );
hideVkbd(); hideVkbd();
if (mForceReject == true) { if (mForceReject == true) {
ret = TQDialog::Rejected; ret = TQDialog::Rejected;
} }
mForceReject = false; mForceReject = false;
XWindowAttributes rootAttr; XWindowAttributes rootAttr;
XGetWindowAttributes(tqt_xdisplay(), RootWindow(tqt_xdisplay(), XGetWindowAttributes(tqt_xdisplay(), RootWindow(tqt_xdisplay(),
tqt_xscreen()), &rootAttr); tqt_xscreen()), &rootAttr);
@ -1914,7 +1914,7 @@ bool LockProcess::checkPass()
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), XSelectInput( tqt_xdisplay(), tqt_xrootwin(),
SubstructureNotifyMask | rootAttr.your_event_mask ); SubstructureNotifyMask | rootAttr.your_event_mask );
} }
return ret == TQDialog::Accepted; return ret == TQDialog::Accepted;
} }
else { else {
@ -1947,11 +1947,11 @@ int LockProcess::execDialog( TQDialog *dlg )
{ {
currentDialog=dlg; currentDialog=dlg;
dlg->adjustSize(); dlg->adjustSize();
TQRect rect = dlg->geometry(); TQRect rect = dlg->geometry();
rect.moveCenter(TDEGlobalSettings::desktopGeometry(TQCursor::pos()).center()); rect.moveCenter(TDEGlobalSettings::desktopGeometry(TQCursor::pos()).center());
dlg->move( rect.topLeft() ); dlg->move( rect.topLeft() );
if (mDialogs.isEmpty()) { if (mDialogs.isEmpty()) {
suspend(); suspend();
XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime); XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime);
@ -2102,7 +2102,7 @@ void LockProcess::doFunctionKeyBroadcast() {
mDialogControlLock = false; mDialogControlLock = false;
} }
} }
DCOPRef ref( "*", "MainApplication-Interface"); DCOPRef ref( "*", "MainApplication-Interface");
ref.send("sendFakeKey", DCOPArg(mkeyCode , "unsigned int")); ref.send("sendFakeKey", DCOPArg(mkeyCode , "unsigned int"));
} }
@ -2123,7 +2123,7 @@ bool LockProcess::x11Event(XEvent *event)
// XF86XK_Sleep Ditto // XF86XK_Sleep Ditto
// XF86XK_Suspend Ditto // XF86XK_Suspend Ditto
// XF86XK_Hibernate Ditto // XF86XK_Hibernate Ditto
//if ((event->type == KeyPress) || (event->type == KeyRelease)) { //if ((event->type == KeyPress) || (event->type == KeyRelease)) {
if (event->type == KeyPress) { if (event->type == KeyPress) {
// Multimedia keys // Multimedia keys
@ -2145,7 +2145,7 @@ bool LockProcess::x11Event(XEvent *event)
return true; return true;
} }
} }
switch (event->type) switch (event->type)
{ {
case ButtonPress: case ButtonPress:
@ -2194,7 +2194,7 @@ bool LockProcess::x11Event(XEvent *event)
} }
mBusy = false; mBusy = false;
return true; return true;
case VisibilityNotify: case VisibilityNotify:
if( event->xvisibility.window == winId()) { if( event->xvisibility.window == winId()) {
// mVisibility == false means the screensaver is not visible at all // mVisibility == false means the screensaver is not visible at all
@ -2230,7 +2230,7 @@ bool LockProcess::x11Event(XEvent *event)
} }
} }
break; break;
case ConfigureNotify: // from SubstructureNotifyMask on the root window case ConfigureNotify: // from SubstructureNotifyMask on the root window
if(event->xconfigure.event == tqt_xrootwin()) { if(event->xconfigure.event == tqt_xrootwin()) {
stayOnTop(); stayOnTop();
@ -2260,7 +2260,7 @@ bool LockProcess::x11Event(XEvent *event)
} }
break; break;
} }
// We have grab with the grab window being the root window. // We have grab with the grab window being the root window.
// This results in key events being sent to the root window, // This results in key events being sent to the root window,
// but they should be sent to the dialog if it's visible. // but they should be sent to the dialog if it's visible.
@ -2276,7 +2276,7 @@ bool LockProcess::x11Event(XEvent *event)
tqApp->x11ProcessEvent( &ev2 ); tqApp->x11ProcessEvent( &ev2 );
return true; return true;
} }
return false; return false;
} }
@ -2408,14 +2408,14 @@ void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt )
button->setDefault( true ); button->setDefault( true );
button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) ); button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) );
connect( button, TQT_SIGNAL( clicked() ), &box, TQT_SLOT( accept() ) ); connect( button, TQT_SIGNAL( clicked() ), &box, TQT_SLOT( accept() ) );
TQVBoxLayout *vbox = new TQVBoxLayout( &box ); TQVBoxLayout *vbox = new TQVBoxLayout( &box );
vbox->addWidget( winFrame ); vbox->addWidget( winFrame );
TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 ); TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 );
grid->addWidget( label1, 0, 0, Qt::AlignCenter ); grid->addWidget( label1, 0, 0, Qt::AlignCenter );
grid->addWidget( label2, 0, 1, Qt::AlignCenter ); grid->addWidget( label2, 0, 1, Qt::AlignCenter );
grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter ); grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter );
execDialog( &box ); execDialog( &box );
} }
@ -2466,7 +2466,7 @@ void LockProcess::windowAdded( WId w, bool managed )
oldHandler = XSetErrorHandler(ignoreXError); oldHandler = XSetErrorHandler(ignoreXError);
KWin::WindowInfo info = KWin::windowInfo( w, 0, NET::WM2WindowClass ); KWin::WindowInfo info = KWin::windowInfo( w, 0, NET::WM2WindowClass );
XSetErrorHandler(oldHandler); XSetErrorHandler(oldHandler);
if( info.windowClassClass().lower() != "xvkbd" ) { if( info.windowClassClass().lower() != "xvkbd" ) {
return; return;
} }
@ -2860,15 +2860,15 @@ void ControlPipeHandlerObject::run(void) {
mkdir(FIFO_DIR,0644); mkdir(FIFO_DIR,0644);
mknod(fifo_file, S_IFIFO|0644, 0); mknod(fifo_file, S_IFIFO|0644, 0);
chmod(fifo_file, 0644); chmod(fifo_file, 0644);
mParent->mPipe_fd = open(fifo_file, O_RDONLY | O_NONBLOCK); mParent->mPipe_fd = open(fifo_file, O_RDONLY | O_NONBLOCK);
if (mParent->mPipe_fd > -1) { if (mParent->mPipe_fd > -1) {
mParent->mPipeOpen = true; mParent->mPipeOpen = true;
} }
mknod(fifo_file_out, S_IFIFO|0600, 0); mknod(fifo_file_out, S_IFIFO|0600, 0);
chmod(fifo_file_out, 0600); chmod(fifo_file_out, 0600);
mParent->mPipe_fd_out = open(fifo_file_out, O_RDWR | O_NONBLOCK); mParent->mPipe_fd_out = open(fifo_file_out, O_RDWR | O_NONBLOCK);
if (mParent->mPipe_fd_out > -1) { if (mParent->mPipe_fd_out > -1) {
mParent->mPipeOpen_out = true; mParent->mPipeOpen_out = true;

@ -1,7 +1,7 @@
/* This file is part of the KDE project /* This file is part of the TDE project
Copyright (C) 1999 David Faure Copyright (C) 1999 David Faure
Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org> Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
Copyright (c) 2010-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> Copyright (c) 2010-2015 Timothy Pearson <kb9vqf@pearsoncomputing.net>
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public modify it under the terms of the GNU Library General Public
@ -88,462 +88,463 @@ bool trinity_desktop_lock_settings_initialized = FALSE;
static void sigusr1_handler(int) static void sigusr1_handler(int)
{ {
signalled_forcelock = TRUE; signalled_forcelock = TRUE;
} }
static void sigusr2_handler(int) static void sigusr2_handler(int)
{ {
signalled_dontlock = TRUE; signalled_dontlock = TRUE;
} }
static void sigusr3_handler(int) static void sigusr3_handler(int)
{ {
signalled_securedialog = TRUE; signalled_securedialog = TRUE;
} }
static void sigusr4_handler(int) static void sigusr4_handler(int)
{ {
signalled_blank = TRUE; signalled_blank = TRUE;
} }
static void sigusr5_handler(int) static void sigusr5_handler(int)
{ {
signalled_run = TRUE; signalled_run = TRUE;
} }
static int trapXErrors(Display *, XErrorEvent *) static int trapXErrors(Display *, XErrorEvent *)
{ {
return 0; return 0;
} }
bool MyApp::x11EventFilter( XEvent *ev ) bool MyApp::x11EventFilter( XEvent *ev )
{ {
if (ev->type == ButtonPress || ev->type == ButtonRelease || ev->type == MotionNotify) { if (ev->type == ButtonPress || ev->type == ButtonRelease || ev->type == MotionNotify) {
emit mouseInteraction(ev); emit mouseInteraction(ev);
} }
if (ev->type == XKeyPress || ev->type == ButtonPress) { if (ev->type == XKeyPress || ev->type == ButtonPress) {
emit activity(); emit activity();
} }
else if (ev->type == MotionNotify) { else if (ev->type == MotionNotify) {
time_t tick = time( 0 ); time_t tick = time( 0 );
if (tick != lastTick) { if (tick != lastTick) {
lastTick = tick; lastTick = tick;
emit activity(); emit activity();
} }
} }
else if (ev->type == MapNotify) { else if (ev->type == MapNotify) {
// HACK // HACK
// Hide all tooltips and notification windows // Hide all tooltips and notification windows
XMapEvent map_event = ev->xmap; XMapEvent map_event = ev->xmap;
XWindowAttributes childAttr; XWindowAttributes childAttr;
Window childTransient; Window childTransient;
if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) { if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) { if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
if (!trinity_desktop_lock_hidden_window_list.contains(map_event.window)) { if (!trinity_desktop_lock_hidden_window_list.contains(map_event.window)) {
trinity_desktop_lock_hidden_window_list.append(map_event.window); trinity_desktop_lock_hidden_window_list.append(map_event.window);
} }
XLowerWindow(map_event.display, map_event.window); XLowerWindow(map_event.display, map_event.window);
XFlush(map_event.display); XFlush(map_event.display);
} }
} }
} }
else if (ev->type == VisibilityNotify) { else if (ev->type == VisibilityNotify) {
// HACK // HACK
// Hide all tooltips and notification windows // Hide all tooltips and notification windows
XVisibilityEvent visibility_event = ev->xvisibility; XVisibilityEvent visibility_event = ev->xvisibility;
XWindowAttributes childAttr; XWindowAttributes childAttr;
Window childTransient; Window childTransient;
if ((visibility_event.state == VisibilityUnobscured) || (visibility_event.state == VisibilityPartiallyObscured)) { if ((visibility_event.state == VisibilityUnobscured) || (visibility_event.state == VisibilityPartiallyObscured)) {
if (XGetWindowAttributes(visibility_event.display, visibility_event.window, &childAttr) && XGetTransientForHint(visibility_event.display, visibility_event.window, &childTransient)) { if (XGetWindowAttributes(visibility_event.display, visibility_event.window, &childAttr) && XGetTransientForHint(visibility_event.display, visibility_event.window, &childTransient)) {
if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) { if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
if (!trinity_desktop_lock_hidden_window_list.contains(visibility_event.window)) { if (!trinity_desktop_lock_hidden_window_list.contains(visibility_event.window)) {
trinity_desktop_lock_hidden_window_list.append(visibility_event.window); trinity_desktop_lock_hidden_window_list.append(visibility_event.window);
} }
XLowerWindow(visibility_event.display, visibility_event.window); XLowerWindow(visibility_event.display, visibility_event.window);
XFlush(visibility_event.display); XFlush(visibility_event.display);
} }
} }
} }
} }
else if (ev->type == CreateNotify) { else if (ev->type == CreateNotify) {
// HACK // HACK
// Close all tooltips and notification windows // Close all tooltips and notification windows
XCreateWindowEvent create_event = ev->xcreatewindow; XCreateWindowEvent create_event = ev->xcreatewindow;
XWindowAttributes childAttr; XWindowAttributes childAttr;
Window childTransient; Window childTransient;
// XGetWindowAttributes may generate BadWindow errors, so make sure they are silently ignored // XGetWindowAttributes may generate BadWindow errors, so make sure they are silently ignored
int (*oldHandler)(Display *, XErrorEvent *); int (*oldHandler)(Display *, XErrorEvent *);
oldHandler = XSetErrorHandler(trapXErrors); oldHandler = XSetErrorHandler(trapXErrors);
if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) { if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
if ((childAttr.override_redirect) && (childTransient)) { if ((childAttr.override_redirect) && (childTransient)) {
if (!trinity_desktop_lock_hidden_window_list.contains(create_event.window)) { if (!trinity_desktop_lock_hidden_window_list.contains(create_event.window)) {
trinity_desktop_lock_hidden_window_list.append(create_event.window); trinity_desktop_lock_hidden_window_list.append(create_event.window);
} }
XLowerWindow(create_event.display, create_event.window); XLowerWindow(create_event.display, create_event.window);
XFlush(create_event.display); XFlush(create_event.display);
} }
} }
XSetErrorHandler(oldHandler); XSetErrorHandler(oldHandler);
} }
else if (ev->type == DestroyNotify) { else if (ev->type == DestroyNotify) {
XDestroyWindowEvent destroy_event = ev->xdestroywindow; XDestroyWindowEvent destroy_event = ev->xdestroywindow;
if (trinity_desktop_lock_hidden_window_list.contains(destroy_event.window)) { if (trinity_desktop_lock_hidden_window_list.contains(destroy_event.window)) {
trinity_desktop_lock_hidden_window_list.remove(destroy_event.window); trinity_desktop_lock_hidden_window_list.remove(destroy_event.window);
} }
} }
#if 0 #if 0
else if (ev->type == CreateNotify) { else if (ev->type == CreateNotify) {
// HACK // HACK
// Close all tooltips and notification windows // Close all tooltips and notification windows
XCreateWindowEvent create_event = ev->xcreatewindow; XCreateWindowEvent create_event = ev->xcreatewindow;
XWindowAttributes childAttr; XWindowAttributes childAttr;
Window childTransient; Window childTransient;
if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) { if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
if ((childAttr.override_redirect) && (childTransient)) { if ((childAttr.override_redirect) && (childTransient)) {
XDestroyWindow(create_event.display, create_event.window); XDestroyWindow(create_event.display, create_event.window);
} }
} }
} }
#endif #endif
return TDEApplication::x11EventFilter( ev ); return TDEApplication::x11EventFilter( ev );
} }
static TDECmdLineOptions options[] = static TDECmdLineOptions options[] =
{ {
{ "forcelock", I18N_NOOP("Force session locking"), 0 }, { "forcelock", I18N_NOOP("Force session locking"), 0 },
{ "dontlock", I18N_NOOP("Only start screensaver"), 0 }, { "dontlock", I18N_NOOP("Only start screensaver"), 0 },
{ "securedialog", I18N_NOOP("Launch the secure dialog"), 0 }, { "securedialog", I18N_NOOP("Launch the secure dialog"), 0 },
{ "blank", I18N_NOOP("Only use the blank screensaver"), 0 }, { "blank", I18N_NOOP("Only use the blank screensaver"), 0 },
{ "internal <pid>", I18N_NOOP("TDE internal command for background process loading"), 0 }, { "internal <pid>", I18N_NOOP("TDE internal command for background process loading"), 0 },
TDECmdLineLastOption TDECmdLineLastOption
}; };
void restore_hidden_override_redirect_windows() { void restore_hidden_override_redirect_windows() {
TQXLibWindowList::iterator it; TQXLibWindowList::iterator it;
for (it = trinity_desktop_lock_hidden_window_list.begin(); it != trinity_desktop_lock_hidden_window_list.end(); ++it) { for (it = trinity_desktop_lock_hidden_window_list.begin(); it != trinity_desktop_lock_hidden_window_list.end(); ++it) {
Window win = *it; Window win = *it;
XRaiseWindow(tqt_xdisplay(), win); XRaiseWindow(tqt_xdisplay(), win);
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
int main( int argc, char **argv ) int main( int argc, char **argv )
{ {
TDELocale::setMainCatalogue("kdesktop"); TDELocale::setMainCatalogue("kdesktop");
TDECmdLineArgs::init( argc, argv, "kdesktop_lock", I18N_NOOP("KDesktop Locker"), I18N_NOOP("Session Locker for KDesktop"), "2.1" ); TDECmdLineArgs::init( argc, argv, "kdesktop_lock", I18N_NOOP("KDesktop Locker"), I18N_NOOP("Session Locker for KDesktop"), "2.1" );
TDECmdLineArgs::addCmdLineOptions( options ); TDECmdLineArgs::addCmdLineOptions( options );
TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
putenv(strdup("SESSION_MANAGER=")); putenv(strdup("SESSION_MANAGER="));
TDEApplication::disableAutoDcopRegistration(); // not needed TDEApplication::disableAutoDcopRegistration(); // not needed
XSetErrorHandler(trapXErrors); XSetErrorHandler(trapXErrors);
MyApp* app = NULL; MyApp* app = NULL;
while (1 == 1) { while (1 == 1) {
signalled_forcelock = FALSE; signalled_forcelock = FALSE;
signalled_dontlock = FALSE; signalled_dontlock = FALSE;
signalled_securedialog = FALSE; signalled_securedialog = FALSE;
signalled_blank = FALSE; signalled_blank = FALSE;
signalled_run = FALSE; signalled_run = FALSE;
int kdesktop_screen_number = 0; int kdesktop_screen_number = 0;
int starting_screen = 0; int starting_screen = 0;
bool child = false; bool child = false;
int parent_connection = 0; // socket to the parent saver int parent_connection = 0; // socket to the parent saver
TQValueList<int> child_sockets; TQValueList<int> child_sockets;
if (TDEGlobalSettings::isMultiHead()) if (TDEGlobalSettings::isMultiHead()) {
{ Display *dpy = XOpenDisplay(NULL);
Display *dpy = XOpenDisplay(NULL); if (! dpy) {
if (! dpy) { fprintf(stderr,
fprintf(stderr, "%s: FATAL ERROR: couldn't open display '%s'\n",
"%s: FATAL ERROR: couldn't open display '%s'\n", argv[0], XDisplayName(NULL));
argv[0], XDisplayName(NULL)); exit(1);
exit(1); }
}
int number_of_screens = ScreenCount(dpy);
int number_of_screens = ScreenCount(dpy); starting_screen = kdesktop_screen_number = DefaultScreen(dpy);
starting_screen = kdesktop_screen_number = DefaultScreen(dpy); int pos;
int pos; TQCString display_name = XDisplayString(dpy);
TQCString display_name = XDisplayString(dpy); XCloseDisplay(dpy);
XCloseDisplay(dpy); kdDebug() << "screen " << number_of_screens << " " << kdesktop_screen_number << " " << display_name << " " << starting_screen << endl;
kdDebug() << "screen " << number_of_screens << " " << kdesktop_screen_number << " " << display_name << " " << starting_screen << endl; dpy = 0;
dpy = 0;
if ((pos = display_name.findRev('.')) != -1) {
if ((pos = display_name.findRev('.')) != -1) display_name.remove(pos, 10);
display_name.remove(pos, 10); }
TQCString env; TQCString env;
if (number_of_screens != 1) { if (number_of_screens != 1) {
for (int i = 0; i < number_of_screens; i++) { for (int i = 0; i < number_of_screens; i++) {
if (i != starting_screen) { if (i != starting_screen) {
int fd[2]; int fd[2];
if (pipe(fd)) { if (pipe(fd)) {
perror("pipe"); perror("pipe");
break; break;
} }
if (fork() == 0) { if (fork() == 0) {
child = true; child = true;
kdesktop_screen_number = i; kdesktop_screen_number = i;
parent_connection = fd[0]; parent_connection = fd[0];
// break here because we are the child process, we don't // break here because we are the child process, we don't
// want to fork() anymore // want to fork() anymore
break; break;
} else { }
child_sockets.append(fd[1]); else {
} child_sockets.append(fd[1]);
} }
} }
}
env.sprintf("DISPLAY=%s.%d", display_name.data(),
kdesktop_screen_number); env.sprintf("DISPLAY=%s.%d", display_name.data(),
kdDebug() << "env " << env << endl; kdesktop_screen_number);
kdDebug() << "env " << env << endl;
if (putenv(strdup(env.data()))) {
fprintf(stderr, if (putenv(strdup(env.data()))) {
"%s: WARNING: unable to set DISPLAY environment variable\n", fprintf(stderr,
argv[0]); "%s: WARNING: unable to set DISPLAY environment variable\n",
perror("putenv()"); argv[0]);
} perror("putenv()");
} }
} }
}
if (!app) {
if (!app) {
#ifdef COMPOSITE #ifdef COMPOSITE
app = new MyApp(TDEApplication::openX11RGBADisplay()); app = new MyApp(TDEApplication::openX11RGBADisplay());
argb_visual = app->isX11CompositionAvailable(); argb_visual = app->isX11CompositionAvailable();
#else #else
app = new MyApp; app = new MyApp;
#endif #endif
} }
TDELockFile lock(locateLocal("tmp", "kdesktop_lock_lockfile")); TDELockFile lock(locateLocal("tmp", "kdesktop_lock_lockfile"));
lock.setStaleTime(0); lock.setStaleTime(0);
TDELockFile::LockResult lockRet = lock.lock(); TDELockFile::LockResult lockRet = lock.lock();
if (lockRet != TDELockFile::LockOK) { if (lockRet != TDELockFile::LockOK) {
// Terminate existing (stale) process if needed // Terminate existing (stale) process if needed
int pid; int pid;
TQString hostName; TQString hostName;
TQString appName; TQString appName;
if (lock.getLockInfo(pid, hostName, appName)) { if (lock.getLockInfo(pid, hostName, appName)) {
// Verify that the pid in question is an instance of kdesktop_lock // Verify that the pid in question is an instance of kdesktop_lock
int len; int len;
char procpath[PATH_MAX]; char procpath[PATH_MAX];
char fullpath[PATH_MAX]; char fullpath[PATH_MAX];
snprintf(procpath, sizeof(procpath), "/proc/%d/exe", pid); snprintf(procpath, sizeof(procpath), "/proc/%d/exe", pid);
len = readlink( procpath, fullpath, sizeof(fullpath) ); len = readlink( procpath, fullpath, sizeof(fullpath) );
if (len >= 0) { if (len >= 0) {
fullpath[len] = 0; fullpath[len] = 0;
TQFileInfo fileInfo(fullpath); TQFileInfo fileInfo(fullpath);
if (fileInfo.baseName() == "kdesktop_lock") { if (fileInfo.baseName() == "kdesktop_lock") {
// Verify that pid in question is owned by current user before killing it // Verify that pid in question is owned by current user before killing it
uid_t current_uid = geteuid(); uid_t current_uid = geteuid();
struct stat info; struct stat info;
if (lstat(procpath, &info) == 0) { if (lstat(procpath, &info) == 0) {
if (info.st_uid == current_uid) { if (info.st_uid == current_uid) {
kill(pid, SIGKILL); kill(pid, SIGKILL);
} }
} }
} }
} }
} }
} }
// Force a relock as a stale lockfile or process may have been dealt with above // Force a relock as a stale lockfile or process may have been dealt with above
if (!lock.isLocked()) { if (!lock.isLocked()) {
lockRet = lock.lock(TDELockFile::LockNoBlock | TDELockFile::LockForce); lockRet = lock.lock(TDELockFile::LockNoBlock | TDELockFile::LockForce);
} }
kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl; kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl;
app->disableSessionManagement(); app->disableSessionManagement();
TDEGlobal::locale()->insertCatalogue("libdmctl"); TDEGlobal::locale()->insertCatalogue("libdmctl");
struct stat st; struct stat st;
KSimpleConfig* tdmconfig; KSimpleConfig* tdmconfig;
OPEN_TDMCONFIG_AND_SET_GROUP OPEN_TDMCONFIG_AND_SET_GROUP
trinity_desktop_lock_process = new LockProcess; trinity_desktop_lock_process = new LockProcess;
// Start loading core functions, such as the desktop wallpaper interface // Start loading core functions, such as the desktop wallpaper interface
app->processEvents();
if (args->isSet( "internal" )) {
kdesktop_pid = atoi(args->getOption( "internal" ));
sigset_t new_mask;
sigset_t orig_mask;
struct sigaction act;
in_internal_mode = TRUE;
// handle SIGUSR1
act.sa_handler= sigusr1_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGUSR1);
act.sa_flags = 0;
sigaction(SIGUSR1, &act, 0L);
// handle SIGUSR2
act.sa_handler= sigusr2_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGUSR2);
act.sa_flags = 0;
sigaction(SIGUSR2, &act, 0L);
// handle SIGWINCH (an ersatz SIGUSR3)
act.sa_handler= sigusr3_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGWINCH);
act.sa_flags = 0;
sigaction(SIGWINCH, &act, 0L);
// handle SIGTTIN (an ersatz SIGUSR4)
act.sa_handler= sigusr4_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTTIN);
act.sa_flags = 0;
sigaction(SIGTTIN, &act, 0L);
// handle SIGTTOU (an ersatz SIGUSR5)
act.sa_handler= sigusr5_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTTOU);
act.sa_flags = 0;
sigaction(SIGTTOU, &act, 0L);
// initialize the signal masks
sigemptyset(&new_mask);
sigaddset(&new_mask,SIGUSR1);
sigaddset(&new_mask,SIGUSR2);
sigaddset(&new_mask,SIGWINCH);
sigaddset(&new_mask,SIGTTIN);
sigaddset(&new_mask,SIGTTOU);
while (signalled_run == FALSE) {
// let kdesktop know the saver process is ready
if (kill(kdesktop_pid, SIGTTIN) < 0) {
// The controlling kdesktop process probably died. Commit suicide...
return 12;
}
// Get root window attributes
XWindowAttributes rootAttr;
XGetWindowAttributes(tqt_xdisplay(), RootWindow(tqt_xdisplay(), tqt_xscreen()), &rootAttr);
// Disable reception of all X11 events on the root window
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), 0 );
app->processEvents(); app->processEvents();
// wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU if (args->isSet( "internal" )) {
sigprocmask(SIG_BLOCK, &new_mask, &orig_mask); kdesktop_pid = atoi(args->getOption( "internal" ));
if (signalled_run != TRUE) { sigset_t new_mask;
sigsuspend(&orig_mask); sigset_t orig_mask;
struct sigaction act;
in_internal_mode = TRUE;
// handle SIGUSR1
act.sa_handler= sigusr1_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGUSR1);
act.sa_flags = 0;
sigaction(SIGUSR1, &act, 0L);
// handle SIGUSR2
act.sa_handler= sigusr2_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGUSR2);
act.sa_flags = 0;
sigaction(SIGUSR2, &act, 0L);
// handle SIGWINCH (an ersatz SIGUSR3)
act.sa_handler= sigusr3_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGWINCH);
act.sa_flags = 0;
sigaction(SIGWINCH, &act, 0L);
// handle SIGTTIN (an ersatz SIGUSR4)
act.sa_handler= sigusr4_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTTIN);
act.sa_flags = 0;
sigaction(SIGTTIN, &act, 0L);
// handle SIGTTOU (an ersatz SIGUSR5)
act.sa_handler= sigusr5_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTTOU);
act.sa_flags = 0;
sigaction(SIGTTOU, &act, 0L);
// initialize the signal masks
sigemptyset(&new_mask);
sigaddset(&new_mask,SIGUSR1);
sigaddset(&new_mask,SIGUSR2);
sigaddset(&new_mask,SIGWINCH);
sigaddset(&new_mask,SIGTTIN);
sigaddset(&new_mask,SIGTTOU);
while (signalled_run == FALSE) {
// let kdesktop know the saver process is ready
if (kill(kdesktop_pid, SIGTTIN) < 0) {
// The controlling kdesktop process probably died. Commit suicide...
return 12;
}
// Get root window attributes
XWindowAttributes rootAttr;
XGetWindowAttributes(tqt_xdisplay(), RootWindow(tqt_xdisplay(), tqt_xscreen()), &rootAttr);
// Disable reception of all X11 events on the root window
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), 0 );
app->processEvents();
// wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU
sigprocmask(SIG_BLOCK, &new_mask, &orig_mask);
if (signalled_run != TRUE) {
sigsuspend(&orig_mask);
}
sigprocmask(SIG_UNBLOCK, &new_mask, NULL);
// Reenable reception of X11 events on the root window
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), rootAttr.your_event_mask );
}
// Block reception of all signals in this thread
sigprocmask(SIG_BLOCK, &new_mask, NULL);
}
// (re)load settings here so that they actually reflect reality
// we need to read from the right rc file - possibly taking screen number in account
if (!trinity_desktop_lock_settings_initialized) {
KDesktopSettings::instance("kdesktoprc");
trinity_desktop_lock_settings_initialized = true;
} }
sigprocmask(SIG_UNBLOCK, &new_mask, NULL); else {
KDesktopSettings::self()->readConfig();
// Reenable reception of X11 events on the root window }
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), rootAttr.your_event_mask ); trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
} trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
if (trinity_desktop_lock_use_system_modal_dialogs) {
// Block reception of all signals in this thread
sigprocmask(SIG_BLOCK, &new_mask, NULL);
}
// (re)load settings here so that they actually reflect reality
// we need to read from the right rc file - possibly taking screen number in account
if (!trinity_desktop_lock_settings_initialized) {
KDesktopSettings::instance("kdesktoprc");
trinity_desktop_lock_settings_initialized = true;
}
else {
KDesktopSettings::self()->readConfig();
}
trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
if (trinity_desktop_lock_use_system_modal_dialogs) {
#ifdef BUILD_TSAK #ifdef BUILD_TSAK
trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK(); trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK();
#else #else
trinity_desktop_lock_use_sak = false; trinity_desktop_lock_use_sak = false;
#endif #endif
} }
else { else {
trinity_desktop_lock_use_sak = false; // If SAK is enabled with unmanaged windows, the SAK dialog will never close and will "burn in" the screen trinity_desktop_lock_use_sak = false; // If SAK is enabled with unmanaged windows, the SAK dialog will never close and will "burn in" the screen
trinity_desktop_lock_delay_screensaver_start = false; // If trinity_desktop_lock_delay_screensaver_start is true with unmanaged windows, the lock dialog may never appear trinity_desktop_lock_delay_screensaver_start = false; // If trinity_desktop_lock_delay_screensaver_start is true with unmanaged windows, the lock dialog may never appear
} }
trinity_desktop_lock_hide_active_windows = KDesktopSettings::hideActiveWindowsFromSaver(); trinity_desktop_lock_hide_active_windows = KDesktopSettings::hideActiveWindowsFromSaver();
trinity_desktop_lock_hide_cancel_button = KDesktopSettings::hideCancelButton(); trinity_desktop_lock_hide_cancel_button = KDesktopSettings::hideCancelButton();
delete tdmconfig; delete tdmconfig;
if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)) { if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)) {
trinity_desktop_lock_forced = TRUE; trinity_desktop_lock_forced = TRUE;
} }
trinity_desktop_lock_process->init(child, (args->isSet( "blank" ) || (signalled_blank == TRUE))); trinity_desktop_lock_process->init(child, (args->isSet( "blank" ) || (signalled_blank == TRUE)));
if (!child) { if (!child) {
trinity_desktop_lock_process->setChildren(child_sockets); trinity_desktop_lock_process->setChildren(child_sockets);
} }
else { else {
trinity_desktop_lock_process->setParent(parent_connection); trinity_desktop_lock_process->setParent(parent_connection);
} }
bool rt; bool rt;
if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE))) { if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE))) {
rt = trinity_desktop_lock_process->lock(); rt = trinity_desktop_lock_process->lock();
} }
else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) { else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) {
rt = trinity_desktop_lock_process->dontLock(); rt = trinity_desktop_lock_process->dontLock();
} }
else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) { else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) {
int retcode = tde_sak_verify_calling_process(); int retcode = tde_sak_verify_calling_process();
if (retcode == 0) { if (retcode == 0) {
rt = trinity_desktop_lock_process->runSecureDialog(); rt = trinity_desktop_lock_process->runSecureDialog();
} }
else { else {
return 1; return 1;
} }
} }
else { else {
rt = trinity_desktop_lock_process->defaultSave(); rt = trinity_desktop_lock_process->defaultSave();
} }
if (!rt) { if (!rt) {
return 0; return 0;
} }
if (in_internal_mode == FALSE) { if (in_internal_mode == FALSE) {
trinity_desktop_lock_hidden_window_list.clear(); trinity_desktop_lock_hidden_window_list.clear();
int ret = app->exec(); int ret = app->exec();
restore_hidden_override_redirect_windows(); restore_hidden_override_redirect_windows();
return ret; return ret;
} }
else { else {
if (kill(kdesktop_pid, 0) < 0) { if (kill(kdesktop_pid, 0) < 0) {
// The controlling kdesktop process probably died. Commit suicide... // The controlling kdesktop process probably died. Commit suicide...
return 12; return 12;
} }
trinity_desktop_lock_hidden_window_list.clear(); trinity_desktop_lock_hidden_window_list.clear();
app->exec(); app->exec();
restore_hidden_override_redirect_windows(); restore_hidden_override_redirect_windows();
if (kill(kdesktop_pid, SIGUSR1) < 0) { if (kill(kdesktop_pid, SIGUSR1) < 0) {
// The controlling kdesktop process probably died. Commit suicide... // The controlling kdesktop process probably died. Commit suicide...
return 12; return 12;
} }
delete trinity_desktop_lock_process; delete trinity_desktop_lock_process;
trinity_desktop_lock_process = NULL; trinity_desktop_lock_process = NULL;
// FIXME // FIXME
// We should not have to return (restart) at all, // We should not have to return (restart) at all,
// but it seems that some X11 connections are left active, // but it seems that some X11 connections are left active,
// preventing the lock process from restarting properly in the while() loop above. // preventing the lock process from restarting properly in the while() loop above.
return 0; return 0;
} }
} }
} }
#include "main.moc" #include "main.moc"

@ -1,4 +1,4 @@
/* This file is part of the KDE project /* This file is part of the TDE project
Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org> Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
@ -25,17 +25,20 @@
#include <time.h> #include <time.h>
class MyApp : public TDEApplication { class MyApp : public TDEApplication {
Q_OBJECT Q_OBJECT
public: public:
MyApp() : TDEApplication(), lastTick( 0 ) {} MyApp() : TDEApplication(), lastTick( 0 ) {}
MyApp(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {} MyApp(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {}
protected:
bool x11EventFilter( XEvent * ); protected:
signals: bool x11EventFilter( XEvent * );
void activity();
void mouseInteraction(XEvent *event); signals:
private: void activity();
time_t lastTick; void mouseInteraction(XEvent *event);
private:
time_t lastTick;
}; };
#endif #endif

Loading…
Cancel
Save