? .display.c.swp
? .keybindings.c.swp
? .screen.c.swp
? libmetacity-private.la
? libmetacity_private_la-gradient.lo
? libmetacity_private_la-preview-widget.lo
? libmetacity_private_la-theme-parser.lo
? libmetacity_private_la-theme.lo
? libmetacity_private_la-util.lo
? tools/.deps
? tools/.libs
? wm-tester/.deps
? wm-tester/.libs
Index: common.h
===================================================================
RCS file: /cvs/gnome/metacity/src/common.h,v
retrieving revision 1.36
diff -u -p -b -r1.36 common.h
--- common.h	21 Jan 2006 19:18:51 -0000	1.36
+++ common.h	25 Feb 2006 01:26:10 -0000
@@ -116,6 +116,9 @@ typedef enum
   /* Alt+Esc */
   META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL,
   META_GRAB_OP_KEYBOARD_ESCAPING_DOCK,
+
+  /* Alt+F6 */
+  META_GRAB_OP_KEYBOARD_ESCAPING_GROUP,
   
   META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING,
   
Index: display.c
===================================================================
RCS file: /cvs/gnome/metacity/src/display.c,v
retrieving revision 1.278
diff -u -p -b -r1.278 display.c
--- display.c	16 Feb 2006 20:26:05 -0000	1.278
+++ display.c	25 Feb 2006 01:26:13 -0000
@@ -71,7 +71,8 @@
         (g == META_GRAB_OP_KEYBOARD_TABBING_NORMAL  ||  \
          g == META_GRAB_OP_KEYBOARD_TABBING_DOCK    ||  \
          g == META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL ||  \
-         g == META_GRAB_OP_KEYBOARD_ESCAPING_DOCK)
+         g == META_GRAB_OP_KEYBOARD_ESCAPING_DOCK   ||  \
+         g == META_GRAB_OP_KEYBOARD_ESCAPING_GROUP)
 
 typedef struct 
 {
@@ -122,6 +123,8 @@ static void    prefs_changed_callback   
 static void    sanity_check_timestamps   (MetaDisplay *display,
                                           Time         known_good_timestamp);
 
+MetaGroup*     get_focussed_group (MetaWorkspace *workspace);
+
 static void
 ping_data_free (MetaPingData *ping_data)
 {
@@ -1124,6 +1127,7 @@ grab_op_is_keyboard (MetaGrabOp op)
     case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
     case META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL:
     case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
+    case META_GRAB_OP_KEYBOARD_ESCAPING_GROUP:
     case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
       return TRUE;
 
@@ -3537,6 +3541,10 @@ meta_display_begin_grab_op (MetaDisplay 
                                     META_TAB_LIST_DOCKS,
                                     META_TAB_SHOW_INSTANTLY);
       break;
+    case META_GRAB_OP_KEYBOARD_ESCAPING_GROUP:
+      meta_screen_ensure_tab_popup (screen,
+                                    META_TAB_LIST_GROUP,
+                                    META_TAB_SHOW_INSTANTLY);
       
     case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
       meta_screen_ensure_workspace_popup (screen);
@@ -4233,7 +4241,18 @@ meta_display_window_has_pending_pings (M
   return FALSE;
 }
 
-#define IN_TAB_CHAIN(w,t) (((t) == META_TAB_LIST_NORMAL && META_WINDOW_IN_NORMAL_TAB_CHAIN (w)) || ((t) == META_TAB_LIST_DOCKS && META_WINDOW_IN_DOCK_TAB_CHAIN (w)))
+MetaGroup*
+get_focussed_group (MetaWorkspace *workspace)
+{
+  if (workspace->mru_list)
+    return ((MetaWindow*)workspace->mru_list->data)->group;
+  else
+    return NULL;
+}
+
+#define IN_TAB_CHAIN(w,t) (((t) == META_TAB_LIST_NORMAL && META_WINDOW_IN_NORMAL_TAB_CHAIN (w)) \
+    || ((t) == META_TAB_LIST_DOCKS && META_WINDOW_IN_DOCK_TAB_CHAIN (w)) \
+    || ((t) == META_TAB_LIST_GROUP && META_WINDOW_IN_NORMAL_TAB_CHAIN_AND_GROUP (w, get_focussed_group(w->workspace))))
 
 static MetaWindow*
 find_tab_forward (MetaDisplay   *display,
Index: display.h
===================================================================
RCS file: /cvs/gnome/metacity/src/display.h,v
retrieving revision 1.146
diff -u -p -b -r1.146 display.h
--- display.h	30 Jan 2006 17:22:14 -0000	1.146
+++ display.h	25 Feb 2006 01:26:14 -0000
@@ -500,7 +500,8 @@ gboolean meta_display_window_has_pending
 typedef enum
 {
   META_TAB_LIST_NORMAL,
-  META_TAB_LIST_DOCKS
+  META_TAB_LIST_DOCKS,
+  META_TAB_LIST_GROUP
 } MetaTabList;
 
 typedef enum
Index: keybindings.c
===================================================================
RCS file: /cvs/gnome/metacity/src/keybindings.c,v
retrieving revision 1.126
diff -u -p -b -r1.126 keybindings.c
--- keybindings.c	13 Feb 2006 19:26:40 -0000	1.126
+++ keybindings.c	25 Feb 2006 01:26:17 -0000
@@ -280,6 +280,10 @@ static const MetaKeyHandler screen_handl
     GINT_TO_POINTER (META_TAB_LIST_DOCKS) },
   { META_KEYBINDING_SWITCH_PANELS_BACKWARD, handle_tab_backward,
     GINT_TO_POINTER (META_TAB_LIST_DOCKS) },
+  { META_KEYBINDING_CYCLE_GROUP, handle_cycle_forward,
+    GINT_TO_POINTER (META_TAB_LIST_GROUP) },
+  { META_KEYBINDING_CYCLE_GROUP_BACKWARD, handle_cycle_backward,
+    GINT_TO_POINTER (META_TAB_LIST_GROUP) },
   { META_KEYBINDING_CYCLE_WINDOWS, handle_cycle_forward,
     GINT_TO_POINTER (META_TAB_LIST_NORMAL) },
   { META_KEYBINDING_CYCLE_WINDOWS_BACKWARD, handle_cycle_backward,
@@ -1664,6 +1668,7 @@ meta_display_process_key_event (MetaDisp
         case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
         case META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL:
         case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
+        case META_GRAB_OP_KEYBOARD_ESCAPING_GROUP:
           meta_topic (META_DEBUG_KEYBINDINGS,
                       "Processing event for keyboard tabbing/cycling\n");
           handled = process_tab_grab (display, screen, event, keysym);
@@ -2392,6 +2397,12 @@ process_tab_grab (MetaDisplay *display,
       key_used = TRUE;
       backward = TRUE;
       break;
+    case META_KEYBINDING_ACTION_CYCLE_GROUP:
+      key_used = TRUE;
+      break;
+    case META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD:
+      key_used = TRUE;
+      backward = TRUE;
     default:
       break;
     }
@@ -2901,6 +2912,7 @@ tab_op_from_tab_type (MetaTabList type)
   switch (type)
     {
     case META_TAB_LIST_NORMAL:
+    case META_TAB_LIST_GROUP:
       return META_GRAB_OP_KEYBOARD_TABBING_NORMAL;
     case META_TAB_LIST_DOCKS:
       return META_GRAB_OP_KEYBOARD_TABBING_DOCK;
@@ -2920,6 +2932,8 @@ cycle_op_from_tab_type (MetaTabList type
       return META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL;
     case META_TAB_LIST_DOCKS:
       return META_GRAB_OP_KEYBOARD_ESCAPING_DOCK;
+    case META_TAB_LIST_GROUP:
+      return META_GRAB_OP_KEYBOARD_ESCAPING_GROUP;
     }
 
   g_assert_not_reached ();
Index: prefs.c
===================================================================
RCS file: /cvs/gnome/metacity/src/prefs.c,v
retrieving revision 1.61
diff -u -p -b -r1.61 prefs.c
--- prefs.c	16 Feb 2006 20:26:05 -0000	1.61
+++ prefs.c	25 Feb 2006 01:26:18 -0000
@@ -1722,6 +1722,8 @@ static MetaKeyPref screen_bindings[] = {
   { META_KEYBINDING_SWITCH_WINDOWS_BACKWARD, 0, 0, TRUE },
   { META_KEYBINDING_SWITCH_PANELS, 0, 0, TRUE },
   { META_KEYBINDING_SWITCH_PANELS_BACKWARD, 0, 0, TRUE },
+  { META_KEYBINDING_CYCLE_GROUP, 0, 0, TRUE },
+  { META_KEYBINDING_CYCLE_GROUP_BACKWARD, 0, 0, TRUE },
   { META_KEYBINDING_CYCLE_WINDOWS, 0, 0, TRUE },
   { META_KEYBINDING_CYCLE_WINDOWS_BACKWARD, 0, 0, TRUE },
   { META_KEYBINDING_CYCLE_PANELS, 0, 0, TRUE },
@@ -1821,6 +1823,7 @@ static MetaSimpleKeyMapping screen_strin
   { META_KEYBINDING_WORKSPACE_DOWN,         "<Control><Alt>Down"         },
   { META_KEYBINDING_SWITCH_WINDOWS,         "<Alt>Tab"                   },
   { META_KEYBINDING_SWITCH_PANELS,          "<Control><Alt>Tab"          },
+  { META_KEYBINDING_CYCLE_GROUP,            "<Alt>F6"                    },
   { META_KEYBINDING_CYCLE_WINDOWS,          "<Alt>Escape"                },
   { META_KEYBINDING_CYCLE_PANELS,           "<Control><Alt>Escape"       },
   { META_KEYBINDING_SHOW_DESKTOP,           "<Control><Alt>d"            },
Index: prefs.h
===================================================================
RCS file: /cvs/gnome/metacity/src/prefs.h,v
retrieving revision 1.40
diff -u -p -b -r1.40 prefs.h
--- prefs.h	16 Feb 2006 20:26:05 -0000	1.40
+++ prefs.h	25 Feb 2006 01:26:19 -0000
@@ -122,6 +122,8 @@ gboolean    meta_prefs_get_compositing_m
 #define META_KEYBINDING_SWITCH_WINDOWS_BACKWARD  "switch_windows_backward"
 #define META_KEYBINDING_SWITCH_PANELS            "switch_panels"
 #define META_KEYBINDING_SWITCH_PANELS_BACKWARD   "switch_panels_backward"
+#define META_KEYBINDING_CYCLE_GROUP              "cycle_group"
+#define META_KEYBINDING_CYCLE_GROUP_BACKWARD     "cycle_group_backward"
 #define META_KEYBINDING_CYCLE_WINDOWS            "cycle_windows"
 #define META_KEYBINDING_CYCLE_WINDOWS_BACKWARD   "cycle_windows_backward"
 #define META_KEYBINDING_CYCLE_PANELS             "cycle_panels"
@@ -223,6 +225,8 @@ typedef enum _MetaKeyBindingAction
   META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD,
   META_KEYBINDING_ACTION_SWITCH_PANELS,
   META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD,
+  META_KEYBINDING_ACTION_CYCLE_GROUP,
+  META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD,
   META_KEYBINDING_ACTION_CYCLE_WINDOWS,
   META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD,
   META_KEYBINDING_ACTION_CYCLE_PANELS,
Index: screen.h
===================================================================
RCS file: /cvs/gnome/metacity/src/screen.h,v
retrieving revision 1.70
diff -u -p -b -r1.70 screen.h
--- screen.h	16 Feb 2006 20:26:05 -0000	1.70
+++ screen.h	25 Feb 2006 01:26:21 -0000
@@ -144,6 +144,9 @@ void          meta_screen_update_cursor 
 void          meta_screen_ensure_tab_popup    (MetaScreen                 *screen,
                                                MetaTabList                 list_type,
                                                MetaTabShowType             show_type);
+void          meta_screen_ensure_appswitch_popup    (MetaScreen                 *screen,
+                                                     MetaTabList                 list_type,
+                                                     MetaTabShowType             show_type);
 void          meta_screen_ensure_workspace_popup (MetaScreen *screen);
 
 MetaWindow*   meta_screen_get_mouse_window     (MetaScreen                 *screen,
Index: window.h
===================================================================
RCS file: /cvs/gnome/metacity/src/window.h,v
retrieving revision 1.123
diff -u -p -b -r1.123 window.h
--- window.h	10 Jan 2006 19:43:21 -0000	1.123
+++ window.h	25 Feb 2006 01:26:22 -0000
@@ -539,6 +539,8 @@ gboolean meta_window_same_application (M
   (((w)->input || (w)->take_focus ) && META_WINDOW_IN_NORMAL_TAB_CHAIN_TYPE (w) && (!(w)->skip_taskbar))
 #define META_WINDOW_IN_DOCK_TAB_CHAIN(w) \
   (((w)->input || (w)->take_focus) && ! META_WINDOW_IN_NORMAL_TAB_CHAIN_TYPE (w))
+#define META_WINDOW_IN_NORMAL_TAB_CHAIN_AND_GROUP(w, g) \
+  (META_WINDOW_IN_NORMAL_TAB_CHAIN(w) && (!g || meta_window_get_group(w)==g))
 
 void meta_window_refresh_resize_popup (MetaWindow *window);
 
