mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
remove the unused tab stuff
2002-04-05 Havoc Pennington <hp@pobox.com> * src/stack.c: remove the unused tab stuff * src/display.c: implement tab list among panels * src/keybindings.c: fill in move-between-panels keybindings
This commit is contained in:
parent
a500a7e668
commit
fa0592ebc7
@ -1,3 +1,11 @@
|
|||||||
|
2002-04-05 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* src/stack.c: remove the unused tab stuff
|
||||||
|
|
||||||
|
* src/display.c: implement tab list among panels
|
||||||
|
|
||||||
|
* src/keybindings.c: fill in move-between-panels keybindings
|
||||||
|
|
||||||
2002-03-31 Johan Dahlin <jdahlin@telia.com>
|
2002-03-31 Johan Dahlin <jdahlin@telia.com>
|
||||||
|
|
||||||
* src/menu.c (meta_window_menu_new): Make sure all menu items are
|
* src/menu.c (meta_window_menu_new): Make sure all menu items are
|
||||||
|
@ -98,7 +98,8 @@ typedef enum
|
|||||||
META_GRAB_OP_KEYBOARD_RESIZING_SW,
|
META_GRAB_OP_KEYBOARD_RESIZING_SW,
|
||||||
META_GRAB_OP_KEYBOARD_RESIZING_NW,
|
META_GRAB_OP_KEYBOARD_RESIZING_NW,
|
||||||
|
|
||||||
META_GRAB_OP_KEYBOARD_TABBING,
|
META_GRAB_OP_KEYBOARD_TABBING_NORMAL,
|
||||||
|
META_GRAB_OP_KEYBOARD_TABBING_DOCK,
|
||||||
|
|
||||||
/* Frame button ops */
|
/* Frame button ops */
|
||||||
META_GRAB_OP_CLICKING_MINIMIZE,
|
META_GRAB_OP_CLICKING_MINIMIZE,
|
||||||
|
@ -718,7 +718,8 @@ grab_op_is_keyboard (MetaGrabOp op)
|
|||||||
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
||||||
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
||||||
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
||||||
case META_GRAB_OP_KEYBOARD_TABBING:
|
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
|
||||||
|
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2043,8 +2044,14 @@ meta_display_begin_grab_op (MetaDisplay *display,
|
|||||||
/* Do this last, after everything is set up. */
|
/* Do this last, after everything is set up. */
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
case META_GRAB_OP_KEYBOARD_TABBING:
|
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
|
||||||
meta_screen_ensure_tab_popup (window->screen);
|
meta_screen_ensure_tab_popup (window->screen,
|
||||||
|
META_TAB_LIST_NORMAL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
|
||||||
|
meta_screen_ensure_tab_popup (window->screen,
|
||||||
|
META_TAB_LIST_DOCKS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -2063,7 +2070,8 @@ meta_display_end_grab_op (MetaDisplay *display,
|
|||||||
if (display->grab_op == META_GRAB_OP_NONE)
|
if (display->grab_op == META_GRAB_OP_NONE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (display->grab_op == META_GRAB_OP_KEYBOARD_TABBING)
|
if (display->grab_op == META_GRAB_OP_KEYBOARD_TABBING_NORMAL ||
|
||||||
|
display->grab_op == META_GRAB_OP_KEYBOARD_TABBING_DOCK)
|
||||||
{
|
{
|
||||||
meta_ui_tab_popup_free (display->grab_window->screen->tab_popup);
|
meta_ui_tab_popup_free (display->grab_window->screen->tab_popup);
|
||||||
display->grab_window->screen->tab_popup = NULL;
|
display->grab_window->screen->tab_popup = NULL;
|
||||||
@ -2523,8 +2531,11 @@ meta_display_window_has_pending_pings (MetaDisplay *display,
|
|||||||
return FALSE;
|
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)))
|
||||||
|
|
||||||
static MetaWindow*
|
static MetaWindow*
|
||||||
find_tab_forward (MetaDisplay *display,
|
find_tab_forward (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
MetaWorkspace *workspace,
|
MetaWorkspace *workspace,
|
||||||
GList *start)
|
GList *start)
|
||||||
{
|
{
|
||||||
@ -2537,7 +2548,7 @@ find_tab_forward (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
MetaWindow *window = tmp->data;
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
if (IN_TAB_CHAIN (window, type) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -2550,7 +2561,7 @@ find_tab_forward (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
MetaWindow *window = tmp->data;
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
if (IN_TAB_CHAIN (window, type) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -2563,6 +2574,7 @@ find_tab_forward (MetaDisplay *display,
|
|||||||
|
|
||||||
static MetaWindow*
|
static MetaWindow*
|
||||||
find_tab_backward (MetaDisplay *display,
|
find_tab_backward (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
MetaWorkspace *workspace,
|
MetaWorkspace *workspace,
|
||||||
GList *start)
|
GList *start)
|
||||||
{
|
{
|
||||||
@ -2575,7 +2587,7 @@ find_tab_backward (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
MetaWindow *window = tmp->data;
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
if (IN_TAB_CHAIN (window, type) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -2588,7 +2600,7 @@ find_tab_backward (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
MetaWindow *window = tmp->data;
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
if (IN_TAB_CHAIN (window, type) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -2601,6 +2613,7 @@ find_tab_backward (MetaDisplay *display,
|
|||||||
|
|
||||||
GSList*
|
GSList*
|
||||||
meta_display_get_tab_list (MetaDisplay *display,
|
meta_display_get_tab_list (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
MetaWorkspace *workspace)
|
MetaWorkspace *workspace)
|
||||||
{
|
{
|
||||||
@ -2608,10 +2621,6 @@ meta_display_get_tab_list (MetaDisplay *display,
|
|||||||
|
|
||||||
/* workspace can be NULL for all workspaces */
|
/* workspace can be NULL for all workspaces */
|
||||||
|
|
||||||
#ifdef JOEL_RECOMMENDATION
|
|
||||||
/* mapping order */
|
|
||||||
tab_list = meta_stack_get_tab_list (screen->stack, workspace);
|
|
||||||
#else
|
|
||||||
/* Windows sellout mode - MRU order */
|
/* Windows sellout mode - MRU order */
|
||||||
{
|
{
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
@ -2623,7 +2632,7 @@ meta_display_get_tab_list (MetaDisplay *display,
|
|||||||
MetaWindow *window = tmp->data;
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
if (window->screen == screen &&
|
if (window->screen == screen &&
|
||||||
META_WINDOW_IN_TAB_CHAIN (window) &&
|
IN_TAB_CHAIN (window, type) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
tab_list = g_slist_prepend (tab_list, window);
|
tab_list = g_slist_prepend (tab_list, window);
|
||||||
@ -2632,23 +2641,17 @@ meta_display_get_tab_list (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
tab_list = g_slist_reverse (tab_list);
|
tab_list = g_slist_reverse (tab_list);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return tab_list;
|
return tab_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaWindow*
|
MetaWindow*
|
||||||
meta_display_get_tab_next (MetaDisplay *display,
|
meta_display_get_tab_next (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
MetaWorkspace *workspace,
|
MetaWorkspace *workspace,
|
||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
gboolean backward)
|
gboolean backward)
|
||||||
{
|
{
|
||||||
#ifdef JOEL_RECOMMENDATION
|
|
||||||
return meta_stack_get_tab_next (window->screen->stack,
|
|
||||||
workspace,
|
|
||||||
window,
|
|
||||||
backward);
|
|
||||||
#else
|
|
||||||
if (display->mru_list == NULL)
|
if (display->mru_list == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -2657,22 +2660,21 @@ meta_display_get_tab_next (MetaDisplay *display,
|
|||||||
g_assert (window->display == display);
|
g_assert (window->display == display);
|
||||||
|
|
||||||
if (backward)
|
if (backward)
|
||||||
return find_tab_backward (display, workspace,
|
return find_tab_backward (display, type, workspace,
|
||||||
g_list_find (display->mru_list,
|
g_list_find (display->mru_list,
|
||||||
window));
|
window));
|
||||||
else
|
else
|
||||||
return find_tab_forward (display, workspace,
|
return find_tab_forward (display, type, workspace,
|
||||||
g_list_find (display->mru_list,
|
g_list_find (display->mru_list,
|
||||||
window));
|
window));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (backward)
|
if (backward)
|
||||||
return find_tab_backward (display, workspace,
|
return find_tab_backward (display, type, workspace,
|
||||||
g_list_last (display->mru_list));
|
g_list_last (display->mru_list));
|
||||||
else
|
else
|
||||||
return find_tab_forward (display, workspace,
|
return find_tab_forward (display, type, workspace,
|
||||||
display->mru_list);
|
display->mru_list);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -274,11 +274,21 @@ void meta_display_ping_window (MetaDisplay *display,
|
|||||||
gboolean meta_display_window_has_pending_pings (MetaDisplay *display,
|
gboolean meta_display_window_has_pending_pings (MetaDisplay *display,
|
||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
META_TAB_LIST_NORMAL,
|
||||||
|
META_TAB_LIST_DOCKS
|
||||||
|
|
||||||
|
|
||||||
|
} MetaTabList;
|
||||||
|
|
||||||
GSList* meta_display_get_tab_list (MetaDisplay *display,
|
GSList* meta_display_get_tab_list (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
MetaWorkspace *workspace);
|
MetaWorkspace *workspace);
|
||||||
|
|
||||||
MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
MetaWorkspace *workspace,
|
MetaWorkspace *workspace,
|
||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
gboolean backward);
|
gboolean backward);
|
||||||
|
@ -59,6 +59,10 @@ static void handle_focus_previous (MetaDisplay *display,
|
|||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
XEvent *event,
|
XEvent *event,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
static void handle_toggle_fullscreen (MetaDisplay *display,
|
||||||
|
MetaWindow *window,
|
||||||
|
XEvent *event,
|
||||||
|
gpointer data);
|
||||||
static void handle_workspace_left (MetaDisplay *display,
|
static void handle_workspace_left (MetaDisplay *display,
|
||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
XEvent *event,
|
XEvent *event,
|
||||||
@ -117,9 +121,12 @@ static MetaKeyBinding screen_bindings[] = {
|
|||||||
{ XK_4, Mod1Mask, KeyPress, handle_activate_workspace, GINT_TO_POINTER (3), 0 },
|
{ XK_4, Mod1Mask, KeyPress, handle_activate_workspace, GINT_TO_POINTER (3), 0 },
|
||||||
{ XK_5, Mod1Mask, KeyPress, handle_activate_workspace, GINT_TO_POINTER (4), 0 },
|
{ XK_5, Mod1Mask, KeyPress, handle_activate_workspace, GINT_TO_POINTER (4), 0 },
|
||||||
{ XK_6, Mod1Mask, KeyPress, handle_activate_workspace, GINT_TO_POINTER (5), 0 },
|
{ XK_6, Mod1Mask, KeyPress, handle_activate_workspace, GINT_TO_POINTER (5), 0 },
|
||||||
{ XK_Tab, Mod1Mask, KeyPress, handle_tab_forward, NULL, 0 },
|
{ XK_Tab, Mod1Mask, KeyPress, handle_tab_forward, GINT_TO_POINTER (META_TAB_LIST_NORMAL), 0 },
|
||||||
{ XK_ISO_Left_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, NULL, 0 },
|
{ XK_ISO_Left_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, GINT_TO_POINTER (META_TAB_LIST_NORMAL), 0 },
|
||||||
{ XK_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, NULL, 0 },
|
{ XK_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, GINT_TO_POINTER (META_TAB_LIST_NORMAL), 0 },
|
||||||
|
{ XK_Tab, Mod1Mask | ControlMask, KeyPress, handle_tab_forward, GINT_TO_POINTER (META_TAB_LIST_DOCKS), 0 },
|
||||||
|
{ XK_ISO_Left_Tab, ShiftMask | Mod1Mask | ControlMask, KeyPress, handle_tab_backward, GINT_TO_POINTER (META_TAB_LIST_DOCKS), 0 },
|
||||||
|
{ XK_Tab, ShiftMask | Mod1Mask | ControlMask, KeyPress, handle_tab_backward, GINT_TO_POINTER (META_TAB_LIST_DOCKS), 0 },
|
||||||
{ XK_Escape, Mod1Mask, KeyPress, handle_focus_previous, NULL, 0 },
|
{ XK_Escape, Mod1Mask, KeyPress, handle_focus_previous, NULL, 0 },
|
||||||
{ XK_Left, Mod1Mask | ControlMask, KeyPress, handle_workspace_left, NULL, 0 },
|
{ XK_Left, Mod1Mask | ControlMask, KeyPress, handle_workspace_left, NULL, 0 },
|
||||||
{ XK_Right, Mod1Mask | ControlMask, KeyPress, handle_workspace_right, NULL, 0 },
|
{ XK_Right, Mod1Mask | ControlMask, KeyPress, handle_workspace_right, NULL, 0 },
|
||||||
@ -139,6 +146,8 @@ static MetaKeyBinding window_bindings[] = {
|
|||||||
{ XK_ISO_Left_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, NULL, 0 },
|
{ XK_ISO_Left_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, NULL, 0 },
|
||||||
{ XK_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, NULL, 0 },
|
{ XK_Tab, ShiftMask | Mod1Mask, KeyPress, handle_tab_backward, NULL, 0 },
|
||||||
{ XK_Escape, Mod1Mask, KeyPress, handle_focus_previous, NULL, 0 },
|
{ XK_Escape, Mod1Mask, KeyPress, handle_focus_previous, NULL, 0 },
|
||||||
|
/* Crack! */
|
||||||
|
{ XK_f, ControlMask | Mod1Mask, KeyPress, handle_toggle_fullscreen, NULL, 0 },
|
||||||
{ None, 0, 0, NULL, NULL, 0 }
|
{ None, 0, 0, NULL, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -592,7 +601,8 @@ meta_display_process_key_event (MetaDisplay *display,
|
|||||||
meta_verbose ("Processing event for keyboard move\n");
|
meta_verbose ("Processing event for keyboard move\n");
|
||||||
handled = process_keyboard_move_grab (display, window, event, keysym);
|
handled = process_keyboard_move_grab (display, window, event, keysym);
|
||||||
break;
|
break;
|
||||||
case META_GRAB_OP_KEYBOARD_TABBING:
|
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
|
||||||
|
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
|
||||||
meta_verbose ("Processing event for keyboard tabbing\n");
|
meta_verbose ("Processing event for keyboard tabbing\n");
|
||||||
handled = process_tab_grab (display, window, event, keysym);
|
handled = process_tab_grab (display, window, event, keysym);
|
||||||
break;
|
break;
|
||||||
@ -947,6 +957,22 @@ handle_activate_menu (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaGrabOp
|
||||||
|
op_from_tab_type (MetaTabList type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case META_TAB_LIST_NORMAL:
|
||||||
|
return META_GRAB_OP_KEYBOARD_TABBING_NORMAL;
|
||||||
|
case META_TAB_LIST_DOCKS:
|
||||||
|
return META_GRAB_OP_KEYBOARD_TABBING_DOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_assert_not_reached ();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_tab_forward (MetaDisplay *display,
|
handle_tab_forward (MetaDisplay *display,
|
||||||
MetaWindow *event_window,
|
MetaWindow *event_window,
|
||||||
@ -954,14 +980,18 @@ handle_tab_forward (MetaDisplay *display,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
MetaWindow *window;
|
MetaWindow *window;
|
||||||
|
MetaTabList type;
|
||||||
|
|
||||||
meta_verbose ("Tab forward\n");
|
type = GPOINTER_TO_INT (data);
|
||||||
|
|
||||||
|
meta_verbose ("Tab forward type = %d\n", type);
|
||||||
|
|
||||||
window = NULL;
|
window = NULL;
|
||||||
|
|
||||||
if (display->focus_window != NULL)
|
if (display->focus_window != NULL)
|
||||||
{
|
{
|
||||||
window = meta_display_get_tab_next (display,
|
window = meta_display_get_tab_next (display,
|
||||||
|
type,
|
||||||
display->focus_window->screen->active_workspace,
|
display->focus_window->screen->active_workspace,
|
||||||
display->focus_window,
|
display->focus_window,
|
||||||
FALSE);
|
FALSE);
|
||||||
@ -980,6 +1010,7 @@ handle_tab_forward (MetaDisplay *display,
|
|||||||
if (screen)
|
if (screen)
|
||||||
{
|
{
|
||||||
window = meta_display_get_tab_next (screen->display,
|
window = meta_display_get_tab_next (screen->display,
|
||||||
|
type,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
NULL,
|
NULL,
|
||||||
FALSE);
|
FALSE);
|
||||||
@ -993,7 +1024,7 @@ handle_tab_forward (MetaDisplay *display,
|
|||||||
if (meta_display_begin_grab_op (window->display,
|
if (meta_display_begin_grab_op (window->display,
|
||||||
display->focus_window ?
|
display->focus_window ?
|
||||||
display->focus_window : window,
|
display->focus_window : window,
|
||||||
META_GRAB_OP_KEYBOARD_TABBING,
|
op_from_tab_type (type),
|
||||||
FALSE,
|
FALSE,
|
||||||
0, 0,
|
0, 0,
|
||||||
event->xkey.time,
|
event->xkey.time,
|
||||||
@ -1015,14 +1046,18 @@ handle_tab_backward (MetaDisplay *display,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
MetaWindow *window;
|
MetaWindow *window;
|
||||||
|
MetaTabList type;
|
||||||
|
|
||||||
meta_verbose ("Tab backward\n");
|
type = GPOINTER_TO_INT (data);
|
||||||
|
|
||||||
|
meta_verbose ("Tab backward type = %d\n", type);
|
||||||
|
|
||||||
window = NULL;
|
window = NULL;
|
||||||
|
|
||||||
if (display->focus_window != NULL)
|
if (display->focus_window != NULL)
|
||||||
{
|
{
|
||||||
window = meta_display_get_tab_next (display,
|
window = meta_display_get_tab_next (display,
|
||||||
|
type,
|
||||||
display->focus_window->screen->active_workspace,
|
display->focus_window->screen->active_workspace,
|
||||||
display->focus_window,
|
display->focus_window,
|
||||||
TRUE);
|
TRUE);
|
||||||
@ -1041,6 +1076,7 @@ handle_tab_backward (MetaDisplay *display,
|
|||||||
if (screen)
|
if (screen)
|
||||||
{
|
{
|
||||||
window = meta_display_get_tab_next (screen->display,
|
window = meta_display_get_tab_next (screen->display,
|
||||||
|
type,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
NULL,
|
NULL,
|
||||||
TRUE);
|
TRUE);
|
||||||
@ -1054,7 +1090,7 @@ handle_tab_backward (MetaDisplay *display,
|
|||||||
if (meta_display_begin_grab_op (window->display,
|
if (meta_display_begin_grab_op (window->display,
|
||||||
display->focus_window ?
|
display->focus_window ?
|
||||||
display->focus_window : window,
|
display->focus_window : window,
|
||||||
META_GRAB_OP_KEYBOARD_TABBING,
|
op_from_tab_type (type),
|
||||||
FALSE,
|
FALSE,
|
||||||
0, 0,
|
0, 0,
|
||||||
event->xkey.time,
|
event->xkey.time,
|
||||||
@ -1104,6 +1140,7 @@ handle_focus_previous (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
/* Pick first window in tab order */
|
/* Pick first window in tab order */
|
||||||
window = meta_display_get_tab_next (screen->display,
|
window = meta_display_get_tab_next (screen->display,
|
||||||
|
META_TAB_LIST_NORMAL,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
NULL,
|
NULL,
|
||||||
TRUE);
|
TRUE);
|
||||||
@ -1124,6 +1161,20 @@ handle_focus_previous (MetaDisplay *display,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
handle_toggle_fullscreen (MetaDisplay *display,
|
||||||
|
MetaWindow *window,
|
||||||
|
XEvent *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
if (window)
|
||||||
|
{
|
||||||
|
if (window->fullscreen)
|
||||||
|
meta_window_unmake_fullscreen (window);
|
||||||
|
else
|
||||||
|
meta_window_make_fullscreen (window);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_spew_mark (MetaDisplay *display,
|
handle_spew_mark (MetaDisplay *display,
|
||||||
|
@ -591,7 +591,8 @@ meta_screen_set_cursor (MetaScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_screen_ensure_tab_popup (MetaScreen *screen)
|
meta_screen_ensure_tab_popup (MetaScreen *screen,
|
||||||
|
MetaTabList type)
|
||||||
{
|
{
|
||||||
MetaTabEntry *entries;
|
MetaTabEntry *entries;
|
||||||
GSList *tab_list;
|
GSList *tab_list;
|
||||||
@ -603,6 +604,7 @@ meta_screen_ensure_tab_popup (MetaScreen *screen)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
tab_list = meta_display_get_tab_list (screen->display,
|
tab_list = meta_display_get_tab_list (screen->display,
|
||||||
|
type,
|
||||||
screen,
|
screen,
|
||||||
screen->active_workspace);
|
screen->active_workspace);
|
||||||
|
|
||||||
|
@ -66,7 +66,8 @@ int meta_screen_get_n_workspaces (MetaScreen *scree
|
|||||||
void meta_screen_set_cursor (MetaScreen *screen,
|
void meta_screen_set_cursor (MetaScreen *screen,
|
||||||
MetaCursor cursor);
|
MetaCursor cursor);
|
||||||
|
|
||||||
void meta_screen_ensure_tab_popup (MetaScreen *screen);
|
void meta_screen_ensure_tab_popup (MetaScreen *screen,
|
||||||
|
MetaTabList type);
|
||||||
|
|
||||||
void meta_screen_focus_top_window (MetaScreen *screen,
|
void meta_screen_focus_top_window (MetaScreen *screen,
|
||||||
MetaWindow *not_this_one);
|
MetaWindow *not_this_one);
|
||||||
|
176
src/stack.c
176
src/stack.c
@ -929,182 +929,6 @@ meta_stack_get_default_focus_window (MetaStack *stack,
|
|||||||
return topmost_dock;
|
return topmost_dock;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define GET_XWINDOW(stack, i) (g_array_index ((stack)->windows, \
|
|
||||||
Window, (i)))
|
|
||||||
|
|
||||||
static MetaWindow*
|
|
||||||
find_tab_forward (MetaStack *stack,
|
|
||||||
MetaWorkspace *workspace,
|
|
||||||
int start)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* start may be -1 to find any tab window at all */
|
|
||||||
|
|
||||||
i = start + 1;
|
|
||||||
while (i < (int) stack->windows->len)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
|
||||||
GET_XWINDOW (stack, i));
|
|
||||||
|
|
||||||
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
|
||||||
(workspace == NULL ||
|
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
|
||||||
return window;
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < start)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
|
||||||
GET_XWINDOW (stack, i));
|
|
||||||
|
|
||||||
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
|
||||||
(workspace == NULL ||
|
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
|
||||||
return window;
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* no window other than the start window is in the tab chain */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static MetaWindow*
|
|
||||||
find_tab_backward (MetaStack *stack,
|
|
||||||
MetaWorkspace *workspace,
|
|
||||||
int start)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* start may be stack->windows->len to find any tab window at all */
|
|
||||||
|
|
||||||
i = start - 1;
|
|
||||||
while (i >= 0)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
|
||||||
GET_XWINDOW (stack, i));
|
|
||||||
|
|
||||||
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
|
||||||
(workspace == NULL ||
|
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
|
||||||
return window;
|
|
||||||
|
|
||||||
--i;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = stack->windows->len - 1;
|
|
||||||
while (i > start)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
|
||||||
GET_XWINDOW (stack, i));
|
|
||||||
|
|
||||||
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
|
||||||
(workspace == NULL ||
|
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
|
||||||
return window;
|
|
||||||
|
|
||||||
--i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* no window other than the start window is in the tab chain */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This ignores the dock/desktop layers */
|
|
||||||
MetaWindow*
|
|
||||||
meta_stack_get_tab_next (MetaStack *stack,
|
|
||||||
MetaWorkspace *workspace,
|
|
||||||
MetaWindow *window,
|
|
||||||
gboolean backward)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (workspace && window)
|
|
||||||
{
|
|
||||||
/* This is a paranoia check, because races can happen where
|
|
||||||
* you get a key shortcut or something on a window just as you
|
|
||||||
* are moving workspaces to one the window isn't on
|
|
||||||
*/
|
|
||||||
if (!meta_window_visible_on_workspace (window, workspace))
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stack->windows->len == 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (window != NULL)
|
|
||||||
{
|
|
||||||
i = 0;
|
|
||||||
while (i < (int) stack->windows->len)
|
|
||||||
{
|
|
||||||
Window w;
|
|
||||||
|
|
||||||
w = g_array_index (stack->windows, Window, i);
|
|
||||||
|
|
||||||
if (w == window->xwindow)
|
|
||||||
{
|
|
||||||
if (backward)
|
|
||||||
return find_tab_backward (stack, workspace, i);
|
|
||||||
else
|
|
||||||
return find_tab_forward (stack, workspace, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* window may be NULL, or maybe the origin window was already the last/first
|
|
||||||
* window and we need to wrap around
|
|
||||||
*/
|
|
||||||
if (backward)
|
|
||||||
return find_tab_backward (stack, workspace,
|
|
||||||
stack->windows->len);
|
|
||||||
else
|
|
||||||
return find_tab_forward (stack, workspace, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
GSList*
|
|
||||||
meta_stack_get_tab_list (MetaStack *stack,
|
|
||||||
MetaWorkspace *workspace)
|
|
||||||
{
|
|
||||||
GSList *list;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
list = NULL;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < (int) stack->windows->len)
|
|
||||||
{
|
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
|
||||||
GET_XWINDOW (stack, i));
|
|
||||||
|
|
||||||
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
|
||||||
(workspace == NULL ||
|
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
|
||||||
list = g_slist_prepend (list, window);
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
list = g_slist_reverse (list);
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
meta_stack_windows_cmp (MetaStack *stack,
|
meta_stack_windows_cmp (MetaStack *stack,
|
||||||
MetaWindow *window_a,
|
MetaWindow *window_a,
|
||||||
|
@ -100,13 +100,6 @@ MetaWindow* meta_stack_get_default_focus_window (MetaStack *stack,
|
|||||||
MetaWorkspace *workspace,
|
MetaWorkspace *workspace,
|
||||||
MetaWindow *not_this_one);
|
MetaWindow *not_this_one);
|
||||||
|
|
||||||
MetaWindow* meta_stack_get_tab_next (MetaStack *stack,
|
|
||||||
MetaWorkspace *workspace,
|
|
||||||
MetaWindow *window,
|
|
||||||
gboolean backward);
|
|
||||||
GSList* meta_stack_get_tab_list (MetaStack *stack,
|
|
||||||
MetaWorkspace *workspace);
|
|
||||||
|
|
||||||
/* -1 if a < b, etc. */
|
/* -1 if a < b, etc. */
|
||||||
int meta_stack_windows_cmp (MetaStack *stack,
|
int meta_stack_windows_cmp (MetaStack *stack,
|
||||||
MetaWindow *window_a,
|
MetaWindow *window_a,
|
||||||
|
@ -364,9 +364,12 @@ void meta_window_get_work_area (MetaWindow *window,
|
|||||||
gboolean meta_window_same_application (MetaWindow *window,
|
gboolean meta_window_same_application (MetaWindow *window,
|
||||||
MetaWindow *other_window);
|
MetaWindow *other_window);
|
||||||
|
|
||||||
#define META_WINDOW_IN_TAB_CHAIN(w) \
|
#define META_WINDOW_IN_NORMAL_TAB_CHAIN(w) \
|
||||||
((w)->type != META_WINDOW_DOCK && (w)->type != META_WINDOW_DESKTOP)
|
((w)->type != META_WINDOW_DOCK && (w)->type != META_WINDOW_DESKTOP)
|
||||||
|
|
||||||
|
#define META_WINDOW_IN_DOCK_TAB_CHAIN(w) \
|
||||||
|
(! META_WINDOW_IN_NORMAL_TAB_CHAIN (w))
|
||||||
|
|
||||||
void meta_window_refresh_resize_popup (MetaWindow *window);
|
void meta_window_refresh_resize_popup (MetaWindow *window);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user