summaryrefslogtreecommitdiffstats
path: root/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch
diff options
context:
space:
mode:
authorFrançois Andriot <albator78@libertysurf.fr>2013-06-24 19:50:32 +0200
committerFrançois Andriot <albator78@libertysurf.fr>2013-06-24 19:50:32 +0200
commitb4359e8bf97799f83dc1ca62744db7cfcc81bc87 (patch)
tree3346872613490cc467c19e1645d0026c1221bce7 /redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch
parent4cc71d79c5718d59078d06c497a56d7c05b41576 (diff)
downloadtde-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.patch372
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;
+ };