[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