[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-bugs-dist
Subject: [Bug 140023] win+tab don't switch thru all desktops (commit 427993)
From: Lubos Lunak <l.lunak () kde ! org>
Date: 2007-01-24 13:42:04
Message-ID: 20070124134204.2377.qmail () ktown ! kde ! org
[Download RAW message or body]
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
http://bugs.kde.org/show_bug.cgi?id=140023
l.lunak kde org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
------- Additional Comments From l.lunak kde org 2007-01-24 14:42 -------
SVN commit 626727 by lunakl:
Revert r427993 (#106013) as it causes #140023.
BUG: 140023
M +0 -4 events.cpp
M +9 -51 tabbox.cpp
M +0 -1 tabbox.h
--- branches/KDE/3.5/kdebase/kwin/events.cpp #626726:626727
@ -451,10 +451,6 @
if( electricBorder( e ))
return true;
break;
- case MappingNotify:
- XRefreshKeyboardMapping( &e->xmapping );
- tab_box->updateKeyMapping();
- break;
default:
break;
}
--- branches/KDE/3.5/kdebase/kwin/tabbox.cpp #626726:626727
@ -54,7 +54,6 @
no_tasks = i18n("*** No Windows ***");
m = DesktopMode; // init variables
- updateKeyMapping();
reconfigure();
reset();
connect(&delayedShowTimer, SIGNAL(timeout()), this, SLOT(show()));
@ -787,10 +786,6 @
return bAll;
}
-static const int MAX_KEYSYMS = 4;
-static uint alt_keysyms[ MAX_KEYSYMS ];
-static uint win_keysyms[ MAX_KEYSYMS ];
-
static bool areModKeysDepressed( const KKeySequence& seq )
{
uint rgKeySyms[10];
@ -811,17 +806,18 @
}
if( mod & KKey::ALT )
{
- for( int i = 0;
- i < MAX_KEYSYMS && alt_keysyms[ i ] != NoSymbol;
- ++i )
- rgKeySyms[nKeySyms++] = alt_keysyms[ i ];
+ rgKeySyms[nKeySyms++] = XK_Alt_L;
+ rgKeySyms[nKeySyms++] = XK_Alt_R;
}
if( mod & KKey::WIN )
{
- for( int i = 0;
- i < MAX_KEYSYMS && win_keysyms[ i ] != NoSymbol;
- ++i )
- rgKeySyms[nKeySyms++] = win_keysyms[ i ];
+ // It would take some code to determine whether the Win key
+ // is associated with Super or Meta, so check for both.
+ // See bug #140023 for details.
+ rgKeySyms[nKeySyms++] = XK_Super_L;
+ rgKeySyms[nKeySyms++] = XK_Super_R;
+ rgKeySyms[nKeySyms++] = XK_Meta_L;
+ rgKeySyms[nKeySyms++] = XK_Meta_R;
}
return areKeySymXsDepressed( false, rgKeySyms, nKeySyms );
@ -839,44 +835,6 @
return false;
}
-void TabBox::updateKeyMapping()
- {
- const int size = 6;
- uint keysyms[ size ] = { XK_Alt_L, XK_Alt_R, XK_Super_L, XK_Super_R, XK_Meta_L, XK_Meta_R };
- XModifierKeymap* map = XGetModifierMapping( qt_xdisplay() );
- int altpos = 0;
- int winpos = 0;
- int winmodpos = -1;
- int winmod = KKeyNative::modX( KKey::WIN );
- while( winmod > 0 ) // get position of the set bit in winmod
- {
- winmod >>= 1;
- ++winmodpos;
- }
- for( int i = 0;
- i < MAX_KEYSYMS;
- ++i )
- alt_keysyms[ i ] = win_keysyms[ i ] = NoSymbol;
- for( int i = 0;
- i < size;
- ++i )
- {
- KeyCode keycode = XKeysymToKeycode( qt_xdisplay(), keysyms[ i ] );
- for( int j = 0;
- j < map->max_keypermod;
- ++j )
- {
- if( map->modifiermap[ 3 * map->max_keypermod + j ] == keycode ) // Alt
- if( altpos < MAX_KEYSYMS )
- alt_keysyms[ altpos++ ] = keysyms[ i ];
- if( winmodpos >= 0 && map->modifiermap[ winmodpos * map->max_keypermod + j ] == keycode )
- if( winpos < MAX_KEYSYMS )
- win_keysyms[ winpos++ ] = keysyms[ i ];
- }
- }
- XFreeModifiermap( map );
- }
-
void Workspace::slotWalkThroughWindows()
{
if ( root != qt_xrootwin() )
--- branches/KDE/3.5/kdebase/kwin/tabbox.h #626726:626727
@ -54,7 +54,6 @
Workspace* workspace() const;
void reconfigure();
- void updateKeyMapping();
protected:
void showEvent( QShowEvent* );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic