diff options
author | François Andriot <albator78@libertysurf.fr> | 2013-06-24 19:50:32 +0200 |
---|---|---|
committer | François Andriot <albator78@libertysurf.fr> | 2013-06-24 19:50:32 +0200 |
commit | b4359e8bf97799f83dc1ca62744db7cfcc81bc87 (patch) | |
tree | 3346872613490cc467c19e1645d0026c1221bce7 /redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch | |
parent | 4cc71d79c5718d59078d06c497a56d7c05b41576 (diff) | |
download | tde-packaging-b4359e8bf97799f83dc1ca62744db7cfcc81bc87.tar.gz tde-packaging-b4359e8bf97799f83dc1ca62744db7cfcc81bc87.zip |
RPM Packaging: rename directories
Diffstat (limited to 'redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch')
-rw-r--r-- | redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch | 372 |
1 files changed, 372 insertions, 0 deletions
diff --git a/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch b/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch new file mode 100644 index 000000000..1c022587d --- /dev/null +++ b/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch @@ -0,0 +1,372 @@ +commit 057932620ba8355a6506b9d437518e253ba14ed9 +Author: Timothy Pearson <kb9vqf@pearsoncomputing.net> +Date: 1327619240 -0600 + + Clean up lock screen internals + This cleanup is part of an effort to resolve Bug 810, but a new Qt3 version is required to fully resolve it + +diff --git a/kdesktop/lock/autologout.cc b/kdesktop/lock/autologout.cc +index 22b449c..bef39dd 100644 +--- a/kdesktop/lock/autologout.cc ++++ b/kdesktop/lock/autologout.cc +@@ -82,6 +82,8 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog" + mCountdownTimerId = startTimer(1000/25); + + connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity())); ++ ++ setFixedSize( sizeHint() ); + } + + AutoLogout::~AutoLogout() +diff --git a/kdesktop/lock/infodlg.cc b/kdesktop/lock/infodlg.cc +index f5f35b9..3fbc276 100644 +--- a/kdesktop/lock/infodlg.cc ++++ b/kdesktop/lock/infodlg.cc +@@ -99,6 +99,7 @@ InfoDlg::InfoDlg(LockProcess *parent) + frameLayout->addLayout( layStatus, 1, 1 ); + + installEventFilter(this); ++ setFixedSize( sizeHint() ); + } + + InfoDlg::~InfoDlg() +diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc +index 0863a22..f3eeee0 100644 +--- a/kdesktop/lock/lockdlg.cc ++++ b/kdesktop/lock/lockdlg.cc +@@ -215,6 +215,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) + mNewSessButton->hide(); + + installEventFilter(this); ++ setFixedSize( sizeHint() ); + + mFailedTimerId = 0; + mTimeoutTimerId = startTimer(PASSDLG_HIDE_TIMEOUT); +@@ -598,6 +599,7 @@ void PasswordDlg::show() + { + TQDialog::show(); + TQApplication::flushX(); ++ setFixedSize( sizeHint() ); + } + + void PasswordDlg::slotStartNewSession() +@@ -818,6 +820,8 @@ void PasswordDlg::slotSwitchUser() + connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(reject()) ); + vbox2->addWidget( btn ); + ++ dialog.setFixedSize( dialog.sizeHint() ); ++ + int ret = static_cast< LockProcess* >(parent())->execDialog( &dialog ); + if (ret != TQDialog::Rejected) { + TQDialog::reject(); +diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc +index 5acc96e..9648bbc 100644 +--- a/kdesktop/lock/lockprocess.cc ++++ b/kdesktop/lock/lockprocess.cc +@@ -4,7 +4,7 @@ + // + // Copyright (c) 1999 Martin R. Jones <mjones@kde.org> + // Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org> +-// Copyright (c) 2010-2011 Timothy Pearson <kb9vqf@pearsoncomputing.net> ++// Copyright (c) 2010-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> + // + + //kdesktop keeps running and checks user inactivity +@@ -111,6 +111,10 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * ); + #define LOCK_GRACE_DEFAULT 5000 + #define AUTOLOGOUT_DEFAULT 600 + ++// FIXME ++// This should be defined if Qt 3.4.0 or higher is in use ++// #define KEEP_MOUSE_UNGRABBED 1 ++ + // These lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special multimedia keys + #define XF86XK_AudioMute 0x1008FF12 + #define XF86XK_AudioRaiseVolume 0x1008FF13 +@@ -183,6 +187,10 @@ LockProcess::LockProcess(bool child, bool useBlankOnly) + mBackingStartupDelayTimer(0), + m_startupStatusDialog(NULL) + { ++#ifdef KEEP_MOUSE_UNGRABBED ++ setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize); ++#endif ++ + setupSignals(); + setupPipe(); + +@@ -267,7 +275,11 @@ LockProcess::LockProcess(bool child, bool useBlankOnly) + #endif + + #if (QT_VERSION-0 >= 0x030200) // XRANDR support +- connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); ++ connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); ++#endif ++ ++#ifdef KEEP_MOUSE_UNGRABBED ++ setEnabled(false); + #endif + + greetPlugin.library = 0; +@@ -874,7 +886,6 @@ void LockProcess::createSaverWindow() + // this is a security risk and has been deactivated--welcome to the 21st century folks! + // setBackgroundMode(TQWidget::NoBackground); + +- setCursor( tqblankCursor ); + setGeometry(0, 0, mRootWidth, mRootHeight); + + kdDebug(1204) << "Saver window Id: " << winId() << endl; +@@ -884,7 +895,6 @@ void LockProcess::desktopResized() + { + mBusy = true; + suspend(); +- setCursor( tqblankCursor ); + + // Get root window size + XWindowAttributes rootAttr; +@@ -1087,6 +1097,7 @@ bool LockProcess::grabInput() + } + } + ++#ifndef KEEP_MOUSE_UNGRABBED + if (!grabMouse()) + { + usleep(100000); +@@ -1096,6 +1107,7 @@ bool LockProcess::grabInput() + return false; + } + } ++#endif + + lockXF86(); + +@@ -1150,7 +1162,6 @@ bool LockProcess::startSaver() + createSaverWindow(); + move(0, 0); + show(); +- setCursor( tqblankCursor ); + + raise(); + XSync(qt_xdisplay(), False); +@@ -1313,6 +1324,8 @@ void LockProcess::repaintRootWindowIfNeeded() + + bool LockProcess::startHack() + { ++ setCursor( tqblankCursor ); ++ + if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) mEnsureVRootWindowSecurityTimer->start(250, FALSE); + + if (currentDialog || (!mDialogs.isEmpty())) +@@ -1429,6 +1442,7 @@ void LockProcess::stopHack() + mHackProc.kill(SIGKILL); + } + } ++ setCursor( tqarrowCursor ); + } + + //--------------------------------------------------------------------------- +@@ -1730,7 +1744,6 @@ void LockProcess::doFunctionKeyBroadcast() { + mDialogControlLock = false; + } + } +- setCursor( tqblankCursor ); + + DCOPRef ref( "*", "MainApplication-Interface"); + ref.send("sendFakeKey", DCOPArg(mkeyCode , "unsigned int")); +diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc +index c0b8e24..0cbef60 100644 +--- a/kdesktop/lock/main.cc ++++ b/kdesktop/lock/main.cc +@@ -45,8 +45,9 @@ bool trinity_desktop_lock_forced = FALSE; + + bool MyApp::x11EventFilter( XEvent *ev ) + { +- if (ev->type == XKeyPress || ev->type == ButtonPress) ++ if (ev->type == XKeyPress || ev->type == ButtonPress) { + emit activity(); ++ } + else if (ev->type == MotionNotify) { + time_t tick = time( 0 ); + if (tick != lastTick) { +diff --git a/kdesktop/lock/querydlg.cc b/kdesktop/lock/querydlg.cc +index e672d54..5f50cbe 100644 +--- a/kdesktop/lock/querydlg.cc ++++ b/kdesktop/lock/querydlg.cc +@@ -118,6 +118,7 @@ QueryDlg::QueryDlg(LockProcess *parent) + connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK())); + + installEventFilter(this); ++ setFixedSize( sizeHint() ); + } + + QueryDlg::~QueryDlg() +diff --git a/kdesktop/lock/sakdlg.cc b/kdesktop/lock/sakdlg.cc +index 17f54a1..d96e0af 100644 +--- a/kdesktop/lock/sakdlg.cc ++++ b/kdesktop/lock/sakdlg.cc +@@ -102,6 +102,7 @@ SAKDlg::SAKDlg(LockProcess *parent) + mStatusLabel->setText("<b>" + i18n("Press Ctrl+Alt+Del to begin.") + "</b><p>" + i18n("This process helps keep your password secure.") + "<br>" + i18n("It prevents unauthorized users from emulating the login screen.")); + + installEventFilter(this); ++ setFixedSize( sizeHint() ); + + mSAKProcess = new KProcess; + *mSAKProcess << "kdmtsak"; +diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cc +index 532b904..37524f7 100644 +--- a/kdesktop/lock/securedlg.cc ++++ b/kdesktop/lock/securedlg.cc +@@ -144,6 +144,7 @@ SecureDlg::SecureDlg(LockProcess *parent) + mSwitchButton->setFixedWidth(btnSize); + + installEventFilter(this); ++ setFixedSize( sizeHint() ); + } + + SecureDlg::~SecureDlg() +commit 678bea5ba74b3b39981e482e188c61fdd37786f0 +Author: Timothy Pearson <kb9vqf@pearsoncomputing.net> +Date: 1328606373 -0600 + + Allow minimal managed window interaction inside the lock process + This closes Bug 810 + +diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc +index 9648bbc..2e9c9d3 100644 +--- a/kdesktop/lock/lockprocess.cc ++++ b/kdesktop/lock/lockprocess.cc +@@ -111,8 +111,8 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * ); + #define LOCK_GRACE_DEFAULT 5000 + #define AUTOLOGOUT_DEFAULT 600 + +-// FIXME +-// This should be defined if Qt 3.4.0 or higher is in use ++// Setting this define is INSECURE ++// Use it for debugging purposes ONLY + // #define KEEP_MOUSE_UNGRABBED 1 + + // These lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special multimedia keys +@@ -185,7 +185,12 @@ LockProcess::LockProcess(bool child, bool useBlankOnly) + mHackStartupEnabled(true), + m_rootPixmap(NULL), + mBackingStartupDelayTimer(0), +- m_startupStatusDialog(NULL) ++ m_startupStatusDialog(NULL), ++ m_mouseDown(0), ++ m_mousePrevX(0), ++ m_mousePrevY(0), ++ m_dialogPrevX(0), ++ m_dialogPrevY(0) + { + #ifdef KEEP_MOUSE_UNGRABBED + setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize); +@@ -208,6 +213,8 @@ LockProcess::LockProcess(bool child, bool useBlankOnly) + mEnsureVRootWindowSecurityTimer = new TQTimer( this ); + connect( mEnsureVRootWindowSecurityTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(repaintRootWindowIfNeeded()) ); + ++ connect(tqApp, TQT_SIGNAL(mouseInteraction(XEvent *)), TQT_SLOT(slotMouseActivity(XEvent *))); ++ + mHackDelayStartupTimeout = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::timeout()*1000:10*1000; + mHackStartupEnabled = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::screenSaverEnabled():true; + +@@ -2200,4 +2207,64 @@ void LockProcess::sendVkbdFocusInOut( WId window, Time t ) + } + } + ++void LockProcess::slotMouseActivity(XEvent *event) ++{ ++ bool inFrame = 0; ++ bool inDialog = 0; ++ XButtonEvent *be = (XButtonEvent *) event; ++ XMotionEvent *me = (XMotionEvent *) event; ++ if (event->type == ButtonPress) { ++ // Get geometry including window frame/titlebar ++ TQRect fgeom = mDialogs.first()->frameGeometry(); ++ TQRect wgeom = mDialogs.first()->geometry(); ++ ++ if (((be->x_root > fgeom.x()) && (be->y_root > fgeom.y())) && ((be->x_root < (fgeom.x()+fgeom.width())) && (be->y_root < (fgeom.y()+fgeom.height())))) { ++ inFrame = 1; ++ } ++ if (((be->x_root > wgeom.x()) && (be->y_root > wgeom.y())) && ((be->x_root < (wgeom.x()+wgeom.width())) && (be->y_root < (wgeom.y()+wgeom.height())))) { ++ inDialog = 1; ++ } ++ ++ // Clicked inside dialog; set focus ++ if (inFrame == TRUE) { ++ WId window = mDialogs.first()->winId(); ++ XSetInputFocus(qt_xdisplay(), window, RevertToParent, CurrentTime); ++ fakeFocusIn(window); ++ // Why this needs to be repeated I have no idea... ++ XSetInputFocus(qt_xdisplay(), window, RevertToParent, CurrentTime); ++ fakeFocusIn(window); ++ } ++ ++ // Clicked inside window handle (or border); drag window ++ if ((inFrame == TRUE) && (inDialog == FALSE)) { ++ TQPoint oldPoint = mDialogs.first()->pos(); ++ m_mouseDown = 1; ++ m_dialogPrevX = oldPoint.x(); ++ m_dialogPrevY = oldPoint.y(); ++ m_mousePrevX = be->x_root; ++ m_mousePrevY = be->y_root; ++ XChangeActivePointerGrab( qt_xdisplay(), GRABEVENTS, TQCursor(tqsizeAllCursor).handle(), CurrentTime); ++ } ++ } ++ ++ // Drag the window... ++ if (event->type == MotionNotify) { ++ if (m_mouseDown == TRUE) { ++ int deltaX = me->x_root - m_mousePrevX; ++ int deltaY = me->y_root - m_mousePrevY; ++ m_dialogPrevX = m_dialogPrevX + deltaX; ++ m_dialogPrevY = m_dialogPrevY + deltaY; ++ mDialogs.first()->move(m_dialogPrevX, m_dialogPrevY); ++ ++ m_mousePrevX = me->x_root; ++ m_mousePrevY = me->y_root; ++ } ++ } ++ ++ if (event->type == ButtonRelease) { ++ m_mouseDown = 0; ++ XChangeActivePointerGrab( qt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime); ++ } ++} ++ + #include "lockprocess.moc" +diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h +index 3a7e3db..18320a8 100644 +--- a/kdesktop/lock/lockprocess.h ++++ b/kdesktop/lock/lockprocess.h +@@ -94,6 +94,7 @@ private slots: + bool closeCurrentWindow(); + void repaintRootWindowIfNeeded(); + void startSecureDialog(); ++ void slotMouseActivity(XEvent *event); + + private: + void configure(); +@@ -197,6 +198,12 @@ private: + KSMModalDialog* m_startupStatusDialog; + + TQDateTime mlockDateTime; ++ ++ bool m_mouseDown; ++ int m_mousePrevX; ++ int m_mousePrevY; ++ int m_dialogPrevX; ++ int m_dialogPrevY; + }; + + #endif +diff --git a/kdesktop/lock/main.h b/kdesktop/lock/main.h +index c8e0e05..23797e4 100644 +--- a/kdesktop/lock/main.h ++++ b/kdesktop/lock/main.h +@@ -32,6 +32,7 @@ protected: + bool x11EventFilter( XEvent * ); + signals: + void activity(); ++ void mouseInteraction(XEvent *event); + private: + time_t lastTick; + }; |