[kde-base/kdesktop] remove kdesktop 3.5 ebuilds
This commit is contained in:
@@ -1,25 +0,0 @@
|
||||
AUX kdesktop-3.5.5-rounded-selection.patch 1046 RMD160 2a43e987c0afcbd2e37525bad8ec9c2c64f11ba3 SHA1 45a11e4bddf7d745096d89a95428425e332c94b9 SHA256 319e01a222060b52136ced08b31c5a13d1da2a22555f43260a7c257e9a1f20eb
|
||||
MD5 ac894d15b0bb3be2decc1908df2f98fc files/kdesktop-3.5.5-rounded-selection.patch 1046
|
||||
RMD160 2a43e987c0afcbd2e37525bad8ec9c2c64f11ba3 files/kdesktop-3.5.5-rounded-selection.patch 1046
|
||||
SHA256 319e01a222060b52136ced08b31c5a13d1da2a22555f43260a7c257e9a1f20eb files/kdesktop-3.5.5-rounded-selection.patch 1046
|
||||
AUX kdesktop-3.5.6-rounded-selection.patch 1046 RMD160 2a43e987c0afcbd2e37525bad8ec9c2c64f11ba3 SHA1 45a11e4bddf7d745096d89a95428425e332c94b9 SHA256 319e01a222060b52136ced08b31c5a13d1da2a22555f43260a7c257e9a1f20eb
|
||||
MD5 ac894d15b0bb3be2decc1908df2f98fc files/kdesktop-3.5.6-rounded-selection.patch 1046
|
||||
RMD160 2a43e987c0afcbd2e37525bad8ec9c2c64f11ba3 files/kdesktop-3.5.6-rounded-selection.patch 1046
|
||||
SHA256 319e01a222060b52136ced08b31c5a13d1da2a22555f43260a7c257e9a1f20eb files/kdesktop-3.5.6-rounded-selection.patch 1046
|
||||
AUX kdesktop-3.5.7-rounded-selection.patch 1046 RMD160 2a43e987c0afcbd2e37525bad8ec9c2c64f11ba3 SHA1 45a11e4bddf7d745096d89a95428425e332c94b9 SHA256 319e01a222060b52136ced08b31c5a13d1da2a22555f43260a7c257e9a1f20eb
|
||||
MD5 ac894d15b0bb3be2decc1908df2f98fc files/kdesktop-3.5.7-rounded-selection.patch 1046
|
||||
RMD160 2a43e987c0afcbd2e37525bad8ec9c2c64f11ba3 files/kdesktop-3.5.7-rounded-selection.patch 1046
|
||||
SHA256 319e01a222060b52136ced08b31c5a13d1da2a22555f43260a7c257e9a1f20eb files/kdesktop-3.5.7-rounded-selection.patch 1046
|
||||
AUX kdesktop-lock-show-xvkbd.patch 13330 RMD160 058b2433af6f8daa1ac9514c138924353e3a3059 SHA1 f828047497caa41664742fb1d3cea6cb312f1265 SHA256 1642346165203692c0612da0ec3cb05d9c5d676193129620f358d630bed07fac
|
||||
MD5 1f55d4395a4ada7f90ed0880724a5c2b files/kdesktop-lock-show-xvkbd.patch 13330
|
||||
RMD160 058b2433af6f8daa1ac9514c138924353e3a3059 files/kdesktop-lock-show-xvkbd.patch 13330
|
||||
SHA256 1642346165203692c0612da0ec3cb05d9c5d676193129620f358d630bed07fac files/kdesktop-lock-show-xvkbd.patch 13330
|
||||
DIST kdebase-3.5-patchset-03.tar.bz2 21409 RMD160 941b919097d03347b10bccb51db2fa5e89d7ba16 SHA1 9ac59cdfc4cd8d43b6d0e6dbebc5b28d7a33e35f SHA256 59c691754627f78daf7693e82496d808cf1cc31e2d6f32af829ec4ccfd776574
|
||||
DIST kdebase-3.5.7.tar.bz2 24395088 RMD160 f43070b5428c3099c0abceed56041e5b4ff3c656 SHA1 833a35e4bbec2852f0f5267e680590be0c986594 SHA256 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d
|
||||
EBUILD kdesktop-3.5.7-r10.ebuild 1779 RMD160 04dd9b1a3b10458ab9d4e25c6ae408a7e0d44937 SHA1 3cb6da21b19caf396aca22eaec134fdfb6f66398 SHA256 48afdb072d1af1b7a7a9349a169cc5c3e04d25657e1ea88b646e82704c875b84
|
||||
MD5 3c98ccc734b82045dffdc74d22f057a0 kdesktop-3.5.7-r10.ebuild 1779
|
||||
RMD160 04dd9b1a3b10458ab9d4e25c6ae408a7e0d44937 kdesktop-3.5.7-r10.ebuild 1779
|
||||
SHA256 48afdb072d1af1b7a7a9349a169cc5c3e04d25657e1ea88b646e82704c875b84 kdesktop-3.5.7-r10.ebuild 1779
|
||||
MD5 f168a743f84d79e060b92c87b762e515 files/digest-kdesktop-3.5.7-r10 521
|
||||
RMD160 3456c99daa483a5bd70c5cbf52c2cdc6ab37023f files/digest-kdesktop-3.5.7-r10 521
|
||||
SHA256 11bbf15ec8cbbe44d698d6ff90385926a37599e75f18e55e21bc994709398ec6 files/digest-kdesktop-3.5.7-r10 521
|
||||
@@ -1,26 +0,0 @@
|
||||
--- kdesktop/kfileividesktop.cpp.orig 2006-10-16 17:11:40.126858000 -0400
|
||||
+++ kdesktop/kfileividesktop.cpp 2006-10-17 04:43:55.573510819 -0400
|
||||
@@ -187,7 +187,22 @@
|
||||
QRect rect = textRect( false );
|
||||
rect.setRight( rect.right() - spread );
|
||||
rect.setBottom( rect.bottom() - spread + 1 );
|
||||
- p->fillRect( rect, cg.highlight() );
|
||||
+ int hRound = rect.height();
|
||||
+ int wRound = rect.width();
|
||||
+ QPixmap buffer(wRound * 2, hRound * 2);
|
||||
+ buffer.fill( ( qGray( cg.highlight().rgb() ) > 127 ) ? black : white );
|
||||
+ QPainter pBuffer(&buffer);
|
||||
+ pBuffer.setBrush( cg.highlight() );
|
||||
+ pBuffer.setPen( cg.highlight() );
|
||||
+ pBuffer.drawRoundRect(0, 0, wRound * 2, hRound * 2,
|
||||
+ 1000/wRound, 1000/hRound);
|
||||
+ pBuffer.end();
|
||||
+ buffer.setMask( buffer.createHeuristicMask(TRUE) );
|
||||
+ QImage imageToScale = buffer.convertToImage();
|
||||
+ // draw the selection box
|
||||
+ p->drawImage(rect.x(), rect.y(),
|
||||
+ imageToScale.smoothScale(wRound, hRound),
|
||||
+ 0, 0, -1, -1, DITHER_FLAGS);
|
||||
}
|
||||
else {
|
||||
// use shadow
|
||||
@@ -1,26 +0,0 @@
|
||||
--- kdesktop/kfileividesktop.cpp.orig 2006-10-16 17:11:40.126858000 -0400
|
||||
+++ kdesktop/kfileividesktop.cpp 2006-10-17 04:43:55.573510819 -0400
|
||||
@@ -187,7 +187,22 @@
|
||||
QRect rect = textRect( false );
|
||||
rect.setRight( rect.right() - spread );
|
||||
rect.setBottom( rect.bottom() - spread + 1 );
|
||||
- p->fillRect( rect, cg.highlight() );
|
||||
+ int hRound = rect.height();
|
||||
+ int wRound = rect.width();
|
||||
+ QPixmap buffer(wRound * 2, hRound * 2);
|
||||
+ buffer.fill( ( qGray( cg.highlight().rgb() ) > 127 ) ? black : white );
|
||||
+ QPainter pBuffer(&buffer);
|
||||
+ pBuffer.setBrush( cg.highlight() );
|
||||
+ pBuffer.setPen( cg.highlight() );
|
||||
+ pBuffer.drawRoundRect(0, 0, wRound * 2, hRound * 2,
|
||||
+ 1000/wRound, 1000/hRound);
|
||||
+ pBuffer.end();
|
||||
+ buffer.setMask( buffer.createHeuristicMask(TRUE) );
|
||||
+ QImage imageToScale = buffer.convertToImage();
|
||||
+ // draw the selection box
|
||||
+ p->drawImage(rect.x(), rect.y(),
|
||||
+ imageToScale.smoothScale(wRound, hRound),
|
||||
+ 0, 0, -1, -1, DITHER_FLAGS);
|
||||
}
|
||||
else {
|
||||
// use shadow
|
||||
@@ -1,26 +0,0 @@
|
||||
--- kdesktop/kfileividesktop.cpp.orig 2006-10-16 17:11:40.126858000 -0400
|
||||
+++ kdesktop/kfileividesktop.cpp 2006-10-17 04:43:55.573510819 -0400
|
||||
@@ -187,7 +187,22 @@
|
||||
QRect rect = textRect( false );
|
||||
rect.setRight( rect.right() - spread );
|
||||
rect.setBottom( rect.bottom() - spread + 1 );
|
||||
- p->fillRect( rect, cg.highlight() );
|
||||
+ int hRound = rect.height();
|
||||
+ int wRound = rect.width();
|
||||
+ QPixmap buffer(wRound * 2, hRound * 2);
|
||||
+ buffer.fill( ( qGray( cg.highlight().rgb() ) > 127 ) ? black : white );
|
||||
+ QPainter pBuffer(&buffer);
|
||||
+ pBuffer.setBrush( cg.highlight() );
|
||||
+ pBuffer.setPen( cg.highlight() );
|
||||
+ pBuffer.drawRoundRect(0, 0, wRound * 2, hRound * 2,
|
||||
+ 1000/wRound, 1000/hRound);
|
||||
+ pBuffer.end();
|
||||
+ buffer.setMask( buffer.createHeuristicMask(TRUE) );
|
||||
+ QImage imageToScale = buffer.convertToImage();
|
||||
+ // draw the selection box
|
||||
+ p->drawImage(rect.x(), rect.y(),
|
||||
+ imageToScale.smoothScale(wRound, hRound),
|
||||
+ 0, 0, -1, -1, DITHER_FLAGS);
|
||||
}
|
||||
else {
|
||||
// use shadow
|
||||
@@ -1,379 +0,0 @@
|
||||
diff -Nurp kdesktop-3.5.6.orig/kdesktop/lock/lockprocess.cc kdesktop-3.5.6/kdesktop/lock/lockprocess.cc
|
||||
--- kdesktop-3.5.6.orig/kdesktop/lock/lockprocess.cc 2007-01-15 12:32:10.000000000 +0100
|
||||
+++ kdesktop-3.5.6/kdesktop/lock/lockprocess.cc 2007-01-28 14:18:14.000000000 +0100
|
||||
@@ -36,6 +36,8 @@
|
||||
#include <kstdguiitem.h>
|
||||
#include <kpixmapeffect.h>
|
||||
#include <kpixmap.h>
|
||||
+#include <kwin.h>
|
||||
+#include <kwinmodule.h>
|
||||
|
||||
#include <qframe.h>
|
||||
#include <qlabel.h>
|
||||
@@ -93,6 +95,8 @@ static Window gVRootData = 0;
|
||||
static Atom gXA_VROOT;
|
||||
static Atom gXA_SCREENSAVER_VERSION;
|
||||
|
||||
+extern Atom qt_wm_state;
|
||||
+
|
||||
//===========================================================================
|
||||
//
|
||||
// Screen saver handling process. Handles screensaver window,
|
||||
@@ -108,7 +112,9 @@ LockProcess::LockProcess(bool child, boo
|
||||
mVisibility(false),
|
||||
mRestoreXF86Lock(false),
|
||||
mForbidden(false),
|
||||
- mAutoLogout(false)
|
||||
+ mAutoLogout(false),
|
||||
+ mVkbdProcess(NULL),
|
||||
+ mKWinModule(NULL)
|
||||
{
|
||||
setupSignals();
|
||||
|
||||
@@ -903,10 +909,14 @@ bool LockProcess::checkPass()
|
||||
{
|
||||
if (mAutoLogout)
|
||||
killTimer(mAutoLogoutTimerId);
|
||||
+
|
||||
+ showVkbd();
|
||||
|
||||
PasswordDlg passDlg( this, &greetPlugin);
|
||||
|
||||
int ret = execDialog( &passDlg );
|
||||
+
|
||||
+ hideVkbd();
|
||||
|
||||
XWindowAttributes rootAttr;
|
||||
XGetWindowAttributes(qt_xdisplay(), RootWindow(qt_xdisplay(),
|
||||
@@ -986,9 +996,13 @@ bool LockProcess::x11Event(XEvent *event
|
||||
{
|
||||
switch (event->type)
|
||||
{
|
||||
- case KeyPress:
|
||||
case ButtonPress:
|
||||
case MotionNotify:
|
||||
+ case ButtonRelease:
|
||||
+ if( forwardVkbdEvent( event ))
|
||||
+ return true; // filter out
|
||||
+ // fall through
|
||||
+ case KeyPress:
|
||||
if (mBusy || !mDialogs.isEmpty())
|
||||
break;
|
||||
mBusy = true;
|
||||
@@ -1025,11 +1039,30 @@ bool LockProcess::x11Event(XEvent *event
|
||||
case ConfigureNotify: // from SubstructureNotifyMask on the root window
|
||||
if(event->xconfigure.event == qt_xrootwin())
|
||||
stayOnTop();
|
||||
+ for( QValueList< VkbdWindow >::Iterator it = mVkbdWindows.begin();
|
||||
+ it != mVkbdWindows.end();
|
||||
+ ++it ) {
|
||||
+ if( (*it).id == event->xconfigure.window ) {
|
||||
+ (*it).rect = QRect( event->xconfigure.x, event->xconfigure.y,
|
||||
+ event->xconfigure.width, event->xconfigure.height );
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
break;
|
||||
case MapNotify: // from SubstructureNotifyMask on the root window
|
||||
+ windowAdded( event->xmap.window, false );
|
||||
if( event->xmap.event == qt_xrootwin())
|
||||
stayOnTop();
|
||||
break;
|
||||
+ case DestroyNotify:
|
||||
+ for( QValueList< VkbdWindow >::Iterator it = mVkbdWindows.begin();
|
||||
+ it != mVkbdWindows.end();
|
||||
+ ++it )
|
||||
+ if( (*it).id == event->xdestroywindow.window ) {
|
||||
+ mVkbdWindows.remove( it );
|
||||
+ break;
|
||||
+ }
|
||||
+ break;
|
||||
}
|
||||
|
||||
// We have grab with the grab window being the root window.
|
||||
@@ -1054,17 +1087,24 @@ bool LockProcess::x11Event(XEvent *event
|
||||
|
||||
void LockProcess::stayOnTop()
|
||||
{
|
||||
- if(!mDialogs.isEmpty())
|
||||
+ if(!mDialogs.isEmpty() || !mVkbdWindows.isEmpty())
|
||||
{
|
||||
// this restacking is written in a way so that
|
||||
// if the stacking positions actually don't change,
|
||||
// all restacking operations will be no-op,
|
||||
// and no ConfigureNotify will be generated,
|
||||
// thus avoiding possible infinite loops
|
||||
- XRaiseWindow( qt_xdisplay(), mDialogs.first()->winId()); // raise topmost
|
||||
+ if( !mVkbdWindows.isEmpty())
|
||||
+ XRaiseWindow( qt_xdisplay(), mVkbdWindows.first().id );
|
||||
+ else
|
||||
+ XRaiseWindow( qt_xdisplay(), mDialogs.first()->winId()); // raise topmost
|
||||
// and stack others below it
|
||||
- Window* stack = new Window[ mDialogs.count() + 1 ];
|
||||
+ Window* stack = new Window[ mDialogs.count() + mVkbdWindows.count() + 1 ];
|
||||
int count = 0;
|
||||
+ for( QValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin();
|
||||
+ it != mVkbdWindows.end();
|
||||
+ ++it )
|
||||
+ stack[ count++ ] = (*it).id;
|
||||
for( QValueList< QWidget* >::ConstIterator it = mDialogs.begin();
|
||||
it != mDialogs.end();
|
||||
++it )
|
||||
@@ -1163,4 +1203,200 @@ void LockProcess::msgBox( QMessageBox::I
|
||||
execDialog( &box );
|
||||
}
|
||||
|
||||
+static int run_vkbd = -1;
|
||||
+void LockProcess::showVkbd()
|
||||
+{
|
||||
+ if( run_vkbd == - 1 ) {
|
||||
+ int status = system( "hal-find-by-property --key system.formfactor.subtype --string tabletpc" );
|
||||
+// status = 0; // enable for testing
|
||||
+ run_vkbd = ( WIFEXITED( status ) && WEXITSTATUS( status ) == 0
|
||||
+ && !KStandardDirs::findExe( "xvkbd" ).isEmpty()) ? 1 : 0;
|
||||
+ }
|
||||
+ if( run_vkbd ) {
|
||||
+ mVkbdWindows.clear();
|
||||
+ mVkbdLastEventWindow = None;
|
||||
+ mKWinModule = new KWinModule( NULL, KWinModule::INFO_WINDOWS );
|
||||
+ connect( mKWinModule, SIGNAL( windowAdded( WId )), SLOT( windowAdded( WId )));
|
||||
+ mVkbdProcess = new KProcess;
|
||||
+ *mVkbdProcess << "xvkbd" << "-compact" << "-geometry" << "-0-0" << "-xdm";
|
||||
+ mVkbdProcess->start();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LockProcess::hideVkbd()
|
||||
+{
|
||||
+ if( mVkbdProcess != NULL ) {
|
||||
+ mVkbdProcess->kill();
|
||||
+ delete mVkbdProcess;
|
||||
+ mVkbdProcess = NULL;
|
||||
+ delete mKWinModule;
|
||||
+ mKWinModule = NULL;
|
||||
+ mVkbdWindows.clear();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LockProcess::windowAdded( WId w )
|
||||
+{
|
||||
+ windowAdded( w, true );
|
||||
+}
|
||||
+
|
||||
+void LockProcess::windowAdded( WId w, bool managed )
|
||||
+{
|
||||
+ KWin::WindowInfo info = KWin::windowInfo( w, 0, NET::WM2WindowClass );
|
||||
+ if( info.windowClassClass().lower() != "xvkbd" )
|
||||
+ return;
|
||||
+ // Unmanaged windows (i.e. popups) don't currently work anyway, since they
|
||||
+ // don't have WM_CLASS set anyway. I could perhaps try tricks with X id
|
||||
+ // ranges if really needed.
|
||||
+ if( managed ) {
|
||||
+ // withdraw the window, wait for it to be withdrawn, reparent it directly
|
||||
+ // to root at the right position
|
||||
+ XWithdrawWindow( qt_xdisplay(), w, qt_xscreen());
|
||||
+ for(;;) {
|
||||
+ Atom type;
|
||||
+ int format;
|
||||
+ unsigned long length, after;
|
||||
+ unsigned char *data;
|
||||
+ int r = XGetWindowProperty( qt_xdisplay(), w, qt_wm_state, 0, 2,
|
||||
+ false, AnyPropertyType, &type, &format,
|
||||
+ &length, &after, &data );
|
||||
+ bool withdrawn = true;
|
||||
+ if ( r == Success && data && format == 32 ) {
|
||||
+ Q_UINT32 *wstate = (Q_UINT32*)data;
|
||||
+ withdrawn = (*wstate == WithdrawnState );
|
||||
+ XFree( (char *)data );
|
||||
+ }
|
||||
+ if( withdrawn )
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ XSelectInput( qt_xdisplay(), w, StructureNotifyMask );
|
||||
+ XWindowAttributes attr_geom;
|
||||
+ if( !XGetWindowAttributes( qt_xdisplay(), w, &attr_geom ))
|
||||
+ return;
|
||||
+ int x = XDisplayWidth( qt_xdisplay(), qt_xscreen()) - attr_geom.width;
|
||||
+ int y = XDisplayHeight( qt_xdisplay(), qt_xscreen()) - attr_geom.height;
|
||||
+ if( managed ) {
|
||||
+ XSetWindowAttributes attr;
|
||||
+ attr.override_redirect = True;
|
||||
+ XChangeWindowAttributes( qt_xdisplay(), w, CWOverrideRedirect, &attr );
|
||||
+ XReparentWindow( qt_xdisplay(), w, qt_xrootwin(), x, y );
|
||||
+ XMapWindow( qt_xdisplay(), w );
|
||||
+ }
|
||||
+ VkbdWindow data;
|
||||
+ data.id = w;
|
||||
+ data.rect = QRect( x, y, attr_geom.width, attr_geom.height );
|
||||
+ mVkbdWindows.prepend( data );
|
||||
+}
|
||||
+
|
||||
+bool LockProcess::forwardVkbdEvent( XEvent* event )
|
||||
+{
|
||||
+ if( mVkbdProcess == NULL )
|
||||
+ return false;
|
||||
+ QPoint pos;
|
||||
+ Time time;
|
||||
+ switch( event->type )
|
||||
+ {
|
||||
+ case ButtonPress:
|
||||
+ case ButtonRelease:
|
||||
+ pos = QPoint( event->xbutton.x, event->xbutton.y );
|
||||
+ time = event->xbutton.time;
|
||||
+ break;
|
||||
+ case MotionNotify:
|
||||
+ pos = QPoint( event->xmotion.x, event->xmotion.y );
|
||||
+ time = event->xmotion.time;
|
||||
+ break;
|
||||
+ default:
|
||||
+ return false;
|
||||
+ }
|
||||
+ // vkbd windows are kept topmost, so just find the first one in the position
|
||||
+ for( QValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin();
|
||||
+ it != mVkbdWindows.end();
|
||||
+ ++it ) {
|
||||
+ if( (*it).rect.contains( pos )) {
|
||||
+ // Find the subwindow where the event should actually go.
|
||||
+ // Not exactly cheap in the number of X roundtrips but oh well.
|
||||
+ Window window = (*it).id;
|
||||
+ Window root, child;
|
||||
+ int root_x, root_y, x, y;
|
||||
+ unsigned int mask;
|
||||
+ for(;;) {
|
||||
+ if( !XQueryPointer( qt_xdisplay(), window, &root, &child, &root_x, &root_y, &x, &y, &mask ))
|
||||
+ return false;
|
||||
+ if( child == None )
|
||||
+ break;
|
||||
+ window = child;
|
||||
+ }
|
||||
+ switch( event->type )
|
||||
+ {
|
||||
+ case ButtonPress:
|
||||
+ case ButtonRelease:
|
||||
+ event->xbutton.x = x;
|
||||
+ event->xbutton.y = y;
|
||||
+ event->xbutton.subwindow = None;
|
||||
+ break;
|
||||
+ case MotionNotify:
|
||||
+ event->xmotion.x = x;
|
||||
+ event->xmotion.y = y;
|
||||
+ event->xmotion.subwindow = None;
|
||||
+ break;
|
||||
+ }
|
||||
+ event->xany.window = window;
|
||||
+ sendVkbdFocusInOut( window, time );
|
||||
+ XSendEvent( qt_xdisplay(), window, False, 0, event );
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ sendVkbdFocusInOut( None, time );
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+// Fake EnterNotify/LeaveNotify events as the mouse moves. They're not sent by X
|
||||
+// because of the grab and having them makes xvkbd highlight the buttons (but
|
||||
+// not needed otherwise it seems).
|
||||
+void LockProcess::sendVkbdFocusInOut( WId window, Time t )
|
||||
+{
|
||||
+ if( mVkbdLastEventWindow == window )
|
||||
+ return;
|
||||
+ if( mVkbdLastEventWindow != None ) {
|
||||
+ XEvent e;
|
||||
+ e.xcrossing.type = LeaveNotify;
|
||||
+ e.xcrossing.display = qt_xdisplay();
|
||||
+ e.xcrossing.window = mVkbdLastEventWindow;
|
||||
+ e.xcrossing.root = qt_xrootwin();
|
||||
+ e.xcrossing.subwindow = None;
|
||||
+ e.xcrossing.time = t;
|
||||
+ e.xcrossing.x = 0;
|
||||
+ e.xcrossing.y = 0;
|
||||
+ e.xcrossing.x_root = -1;
|
||||
+ e.xcrossing.y_root = -1;
|
||||
+ e.xcrossing.mode = NotifyNormal;
|
||||
+ e.xcrossing.detail = NotifyAncestor;
|
||||
+ e.xcrossing.same_screen = True;
|
||||
+ e.xcrossing.focus = False;
|
||||
+ e.xcrossing.state = 0;
|
||||
+ XSendEvent( qt_xdisplay(), mVkbdLastEventWindow, False, 0, &e );
|
||||
+ }
|
||||
+ mVkbdLastEventWindow = window;
|
||||
+ if( mVkbdLastEventWindow != None ) {
|
||||
+ XEvent e;
|
||||
+ e.xcrossing.type = EnterNotify;
|
||||
+ e.xcrossing.display = qt_xdisplay();
|
||||
+ e.xcrossing.window = mVkbdLastEventWindow;
|
||||
+ e.xcrossing.root = qt_xrootwin();
|
||||
+ e.xcrossing.subwindow = None;
|
||||
+ e.xcrossing.time = t;
|
||||
+ e.xcrossing.x = 0;
|
||||
+ e.xcrossing.y = 0;
|
||||
+ e.xcrossing.x_root = 0;
|
||||
+ e.xcrossing.y_root = 0;
|
||||
+ e.xcrossing.mode = NotifyNormal;
|
||||
+ e.xcrossing.detail = NotifyAncestor;
|
||||
+ e.xcrossing.same_screen = True;
|
||||
+ e.xcrossing.focus = False;
|
||||
+ e.xcrossing.state = 0;
|
||||
+ XSendEvent( qt_xdisplay(), mVkbdLastEventWindow, False, 0, &e );
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
#include "lockprocess.moc"
|
||||
diff -Nurp kdesktop-3.5.6.orig/kdesktop/lock/lockprocess.h kdesktop-3.5.6/kdesktop/lock/lockprocess.h
|
||||
--- kdesktop-3.5.6.orig/kdesktop/lock/lockprocess.h 2007-01-15 12:32:10.000000000 +0100
|
||||
+++ kdesktop-3.5.6/kdesktop/lock/lockprocess.h 2007-01-28 14:19:40.000000000 +0100
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
class KLibrary;
|
||||
+class KWinModule;
|
||||
|
||||
struct GreeterPluginHandle {
|
||||
KLibrary *library;
|
||||
@@ -53,7 +54,7 @@ public:
|
||||
|
||||
void msgBox( QMessageBox::Icon type, const QString &txt );
|
||||
int execDialog( QDialog* dlg );
|
||||
-
|
||||
+
|
||||
public slots:
|
||||
void quitSaver();
|
||||
void preparePopup();
|
||||
@@ -70,6 +71,7 @@ private slots:
|
||||
void suspend();
|
||||
void checkDPMSActive();
|
||||
void slotDeadTimePassed();
|
||||
+ void windowAdded( WId );
|
||||
|
||||
private:
|
||||
void configure();
|
||||
@@ -93,6 +95,12 @@ private:
|
||||
void stayOnTop();
|
||||
void lockXF86();
|
||||
void unlockXF86();
|
||||
+ void showVkbd();
|
||||
+ void hideVkbd();
|
||||
+ bool forwardVkbdEvent( XEvent* event );
|
||||
+ void sendVkbdFocusInOut( WId window, Time t );
|
||||
+ void windowAdded( WId window, bool managed );
|
||||
+
|
||||
void resume( bool force );
|
||||
static QVariant getConf(void *ctx, const char *key, const QVariant &dflt);
|
||||
|
||||
@@ -125,6 +133,15 @@ private:
|
||||
int mAutoLogoutTimerId;
|
||||
int mAutoLogoutTimeout;
|
||||
bool mAutoLogout;
|
||||
+ KProcess* mVkbdProcess;
|
||||
+ KWinModule* mKWinModule;
|
||||
+ struct VkbdWindow
|
||||
+ {
|
||||
+ WId id;
|
||||
+ QRect rect;
|
||||
+ };
|
||||
+ QValueList< VkbdWindow > mVkbdWindows;
|
||||
+ WId mVkbdLastEventWindow;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,58 +0,0 @@
|
||||
# Copyright 1999-2006 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/kde-base/kdesktop/kdesktop-3.5.5.ebuild,v 1.1 2006/10/03 10:22:11 flameeyes Exp $
|
||||
|
||||
KMNAME=kdebase
|
||||
MAXKDEVER=$PV
|
||||
KM_DEPRANGE="$PV $MAXKDEVER"
|
||||
inherit kde-meta eutils
|
||||
|
||||
SRC_URI="${SRC_URI}
|
||||
mirror://gentoo/kdebase-3.5-patchset-03.tar.bz2"
|
||||
|
||||
DESCRIPTION="KDesktop is the KDE interface that handles the icons, desktop popup menus and the screensaver system."
|
||||
KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
|
||||
IUSE="xscreensaver"
|
||||
|
||||
DEPEND="$(deprange $PV $MAXKDEVER kde-base/libkonq)
|
||||
$(deprange $PV $MAXKDEVER kde-base/kcontrol)
|
||||
xscreensaver? ( || ( x11-proto/scrnsaverproto <virtual/x11-7 ) )"
|
||||
# Requires the desktop background settings module,
|
||||
# so until we separate the kcontrol modules into separate ebuilds :-),
|
||||
# there's a dep here
|
||||
RDEPEND="${DEPEND}
|
||||
$(deprange 3.5.0 $MAXKDEVER kde-base/kcheckpass)
|
||||
$(deprange 3.5.5 $MAXKDEVER kde-base/kdialog)
|
||||
$(deprange $PV $MAXKDEVER kde-base/konqueror)
|
||||
xscreensaver? ( || ( x11-libs/libXScrnSaver <virtual/x11-7 ) )"
|
||||
|
||||
KMCOPYLIB="libkonq libkonq/"
|
||||
KMEXTRACTONLY="kcheckpass/kcheckpass.h
|
||||
libkonq/
|
||||
kdm/kfrontend/themer/
|
||||
kioslave/thumbnail/configure.in.in" # for the HAVE_LIBART test
|
||||
KMCOMPILEONLY="kcontrol/background
|
||||
kdmlib/"
|
||||
KMNODOCS=true
|
||||
|
||||
# add extra patches
|
||||
PATCHES="
|
||||
${FILESDIR}/${P}-rounded-selection.patch
|
||||
${FILESDIR}/${PN}-lock-show-xvkbd.patch
|
||||
"
|
||||
|
||||
src_compile() {
|
||||
myconf="${myconf} $(use_with xscreensaver)"
|
||||
kde-meta_src_compile
|
||||
}
|
||||
|
||||
src_install() {
|
||||
# ugly, needs fixing: don't install kcontrol/background
|
||||
kde-meta_src_install
|
||||
|
||||
rmdir "${D}/${PREFIX}/share/templates/.source/emptydir"
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
mkdir -p "${PREFIX}/share/templates/.source/emptydir"
|
||||
}
|
||||
Reference in New Issue
Block a user