re-enabled the nice feature that Alt-Tab and Ctrl-Tab won't do anything

if there are popup windows open (that is, if we cannot obtain a mouse pointer
grab). Avoids "hanging" Window or Desktop boxes.

This broke when the (otherwise very nice) transition to KGlobalAccel was
introduced.

svn path=/trunk/kdebase/kwin/; revision=89105
icc-effect-5.14.5
Matthias Ettrich 2001-03-28 12:44:31 +00:00
parent e2beba0abe
commit 9547820ecc
4 changed files with 67 additions and 64 deletions

View File

@ -1007,6 +1007,7 @@ bool Client::configureRequest( XConfigureRequestEvent& e )
if ( isShade() )
setShade( FALSE );
qDebug("configureRequest %s: %d %d %d %d", caption().latin1(), e.x, e.y, e.width, e.height );
/*
// compress configure requests
XEvent otherEvent;

View File

@ -221,8 +221,8 @@ int kdemain( int argc, char * argv[] )
// manager, since the session manager will register multiple kwins,
// one for each screen...
QCString multiHead = getenv("KDE_MULTIHEAD");
if (multiHead.lower() == "true")
{
if (multiHead.lower() == "true") {
Display* dpy = XOpenDisplay( NULL );
if ( !dpy ) {
fprintf(stderr, "%s: FATAL ERROR while trying to open display %s\n",

View File

@ -697,7 +697,7 @@ void Workspace::slotWalkThroughWindows()
CDEWalkThroughWindows( true );
else {
if(( keyToXMod( walkThroughWindowsKeycode ) & XMODMASK ) != 0 ) {
startKDEWalkThroughWindows();
if ( startKDEWalkThroughWindows() )
KDEWalkThroughWindows( true );
}
else
@ -718,18 +718,18 @@ void Workspace::slotWalkBackThroughWindows()
return;
if( tab_grab || control_grab )
return;
if ( options->altTabStyle == Options::CDE || !options->focusPolicyIsReasonable() )
if ( options->altTabStyle == Options::CDE || !options->focusPolicyIsReasonable() ) {
// CDE style raise / lower
CDEWalkThroughWindows( true );
else {
} else {
if (( keyToXMod( walkBackThroughWindowsKeycode ) & XMODMASK ) != 0 ) {
startKDEWalkThroughWindows();
if ( startKDEWalkThroughWindows() )
KDEWalkThroughWindows( false );
}
else
} else {
KDEOneStepThroughWindows( false );
}
}
}
void Workspace::slotWalkThroughDesktops()
{
@ -738,12 +738,12 @@ void Workspace::slotWalkThroughDesktops()
if( tab_grab || control_grab )
return;
if (( keyToXMod( walkThroughDesktopsKeycode ) & XMODMASK ) != 0 ) {
startWalkThroughDesktops();
if ( startWalkThroughDesktops() )
walkThroughDesktops( true );
}
else
} else {
oneStepThroughDesktops( true );
}
}
void Workspace::slotWalkBackThroughDesktops()
{
@ -752,14 +752,14 @@ void Workspace::slotWalkBackThroughDesktops()
if( tab_grab || control_grab )
return;
if (( keyToXMod( walkBackThroughDesktopsKeycode ) & XMODMASK ) != 0 ) {
startWalkThroughDesktops();
if ( startWalkThroughDesktops() )
walkThroughDesktops( false );
}
else
} else {
oneStepThroughDesktops( false );
}
}
void Workspace::startKDEWalkThroughWindows()
bool Workspace::startKDEWalkThroughWindows()
{
if ( XGrabPointer( qt_xdisplay(), root, TRUE,
(uint)(ButtonPressMask | ButtonReleaseMask |
@ -768,7 +768,7 @@ void Workspace::startKDEWalkThroughWindows()
GrabModeSync, GrabModeAsync,
None, None, kwin_time ) != GrabSuccess ) {
freeKeyboard(FALSE);
return;
return FALSE;
}
XGrabKeyboard(qt_xdisplay(),
root, FALSE,
@ -778,9 +778,10 @@ void Workspace::startKDEWalkThroughWindows()
keys->setEnabled( FALSE );
tab_box->setMode( TabBox::WindowsMode );
tab_box->reset();
return TRUE;
}
void Workspace::startWalkThroughDesktops()
bool Workspace::startWalkThroughDesktops()
{
if ( XGrabPointer( qt_xdisplay(), root, TRUE,
(uint)(ButtonPressMask | ButtonReleaseMask |
@ -789,7 +790,7 @@ void Workspace::startWalkThroughDesktops()
GrabModeSync, GrabModeAsync,
None, None, kwin_time ) != GrabSuccess ) {
freeKeyboard(FALSE);
return;
return FALSE;
}
XGrabKeyboard(qt_xdisplay(),
root, FALSE,
@ -799,6 +800,7 @@ void Workspace::startWalkThroughDesktops()
keys->setEnabled( FALSE );
tab_box->setMode( TabBox::DesktopMode );
tab_box->reset();
return TRUE;
}
void Workspace::KDEWalkThroughWindows( bool forward )

View File

@ -265,8 +265,8 @@ private:
void createKeybindings();
void freeKeyboard(bool pass);
void startKDEWalkThroughWindows();
void startWalkThroughDesktops();
bool startKDEWalkThroughWindows();
bool startWalkThroughDesktops();
void KDEWalkThroughWindows( bool forward );
void CDEWalkThroughWindows( bool forward );
void walkThroughDesktops( bool forward );