mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
use new functions
2002-03-11 Havoc Pennington <hp@pobox.com> * src/keybindings.c: use new functions * src/display.c (meta_display_get_tab_next): (meta_display_get_tab_list): new tab order functions using MRU list instead of map order * src/window.c (meta_window_notify_focus): maintain focus MRU list * src/display.h (struct _MetaDisplay): Keep an MRU list of windows.
This commit is contained in:
parent
35a2f2df76
commit
11089cb824
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2002-03-11 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* src/keybindings.c: use new functions
|
||||||
|
|
||||||
|
* src/display.c (meta_display_get_tab_next):
|
||||||
|
(meta_display_get_tab_list): new tab order functions using
|
||||||
|
MRU list instead of map order
|
||||||
|
|
||||||
|
* src/window.c (meta_window_notify_focus): maintain focus MRU list
|
||||||
|
|
||||||
|
* src/display.h (struct _MetaDisplay): Keep an MRU list of
|
||||||
|
windows.
|
||||||
|
|
||||||
2002-03-10 Havoc Pennington <hp@pobox.com>
|
2002-03-10 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
* src/display.c (event_callback): support _NET_NUMBER_OF_DESKTOPS
|
* src/display.c (event_callback): support _NET_NUMBER_OF_DESKTOPS
|
||||||
|
157
src/display.c
157
src/display.c
@ -240,7 +240,7 @@ meta_display_open (const char *name)
|
|||||||
|
|
||||||
display->pending_pings = NULL;
|
display->pending_pings = NULL;
|
||||||
display->focus_window = NULL;
|
display->focus_window = NULL;
|
||||||
display->prev_focus_window = NULL;
|
display->mru_list = NULL;
|
||||||
|
|
||||||
display->showing_desktop = FALSE;
|
display->showing_desktop = FALSE;
|
||||||
|
|
||||||
@ -1509,7 +1509,7 @@ meta_event_mode_to_string (int m)
|
|||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char*
|
static const char*
|
||||||
stack_mode_to_string (int mode)
|
stack_mode_to_string (int mode)
|
||||||
{
|
{
|
||||||
switch (mode)
|
switch (mode)
|
||||||
@ -1654,7 +1654,7 @@ meta_spew_event (MetaDisplay *display,
|
|||||||
break;
|
break;
|
||||||
case ConfigureRequest:
|
case ConfigureRequest:
|
||||||
name = "ConfigureRequest";
|
name = "ConfigureRequest";
|
||||||
extra = g_strdup_printf ("parent: 0x%lx window: 0x%lx x: %d %sy: %d %sw: %d %sh: %d %sborder: %d %sabove: %lx %sstackmode: %lx %s",
|
extra = g_strdup_printf ("parent: 0x%lx window: 0x%lx x: %d %sy: %d %sw: %d %sh: %d %sborder: %d %sabove: %lx %sstackmode: %s %s",
|
||||||
event->xconfigurerequest.parent,
|
event->xconfigurerequest.parent,
|
||||||
event->xconfigurerequest.window,
|
event->xconfigurerequest.window,
|
||||||
event->xconfigurerequest.x,
|
event->xconfigurerequest.x,
|
||||||
@ -2506,3 +2506,154 @@ meta_display_window_has_pending_pings (MetaDisplay *display,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaWindow*
|
||||||
|
find_tab_forward (MetaDisplay *display,
|
||||||
|
MetaWorkspace *workspace,
|
||||||
|
GList *start)
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
|
||||||
|
g_return_val_if_fail (start != NULL, NULL);
|
||||||
|
|
||||||
|
tmp = start->next;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
|
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
|
(workspace == NULL ||
|
||||||
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
|
return window;
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = display->mru_list;
|
||||||
|
while (tmp != start)
|
||||||
|
{
|
||||||
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
|
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
|
(workspace == NULL ||
|
||||||
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
|
return window;
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static MetaWindow*
|
||||||
|
find_tab_backward (MetaDisplay *display,
|
||||||
|
MetaWorkspace *workspace,
|
||||||
|
GList *start)
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
|
||||||
|
g_return_val_if_fail (start != NULL, NULL);
|
||||||
|
|
||||||
|
tmp = start->prev;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
|
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
|
(workspace == NULL ||
|
||||||
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
|
return window;
|
||||||
|
|
||||||
|
tmp = tmp->prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = g_list_last (display->mru_list);
|
||||||
|
while (tmp != start)
|
||||||
|
{
|
||||||
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
|
if (META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
|
(workspace == NULL ||
|
||||||
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
|
return window;
|
||||||
|
|
||||||
|
tmp = tmp->prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
GSList*
|
||||||
|
meta_display_get_tab_list (MetaDisplay *display,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWorkspace *workspace)
|
||||||
|
{
|
||||||
|
GSList *tab_list;
|
||||||
|
|
||||||
|
/* 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 */
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
|
||||||
|
tab_list = NULL;
|
||||||
|
tmp = screen->display->mru_list;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaWindow *window = tmp->data;
|
||||||
|
|
||||||
|
if (window->screen == screen &&
|
||||||
|
META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
|
(workspace == NULL ||
|
||||||
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
|
tab_list = g_slist_prepend (tab_list, window);
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
tab_list = g_slist_reverse (tab_list);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return tab_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaWindow*
|
||||||
|
meta_display_get_tab_next (MetaDisplay *display,
|
||||||
|
MetaWorkspace *workspace,
|
||||||
|
MetaWindow *window,
|
||||||
|
gboolean backward)
|
||||||
|
{
|
||||||
|
#ifdef JOEL_RECOMMENDATION
|
||||||
|
return meta_stack_get_tab_next (window->screen->stack,
|
||||||
|
workspace,
|
||||||
|
window,
|
||||||
|
backward);
|
||||||
|
#else
|
||||||
|
if (display->mru_list == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (window != NULL)
|
||||||
|
{
|
||||||
|
g_assert (window->display == display);
|
||||||
|
|
||||||
|
if (backward)
|
||||||
|
return find_tab_backward (display, workspace,
|
||||||
|
g_list_find (display->mru_list,
|
||||||
|
window));
|
||||||
|
else
|
||||||
|
return find_tab_forward (display, workspace,
|
||||||
|
g_list_find (display->mru_list,
|
||||||
|
window));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (backward)
|
||||||
|
return find_tab_backward (display, workspace,
|
||||||
|
g_list_last (display->mru_list));
|
||||||
|
else
|
||||||
|
return find_tab_forward (display, workspace,
|
||||||
|
display->mru_list);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@ -133,8 +133,10 @@ struct _MetaDisplay
|
|||||||
*/
|
*/
|
||||||
MetaWindow *focus_window;
|
MetaWindow *focus_window;
|
||||||
|
|
||||||
/* Previous focus window */
|
/* Most recently focused list. Always contains all
|
||||||
MetaWindow *prev_focus_window;
|
* live windows.
|
||||||
|
*/
|
||||||
|
GList *mru_list;
|
||||||
|
|
||||||
GList *workspaces;
|
GList *workspaces;
|
||||||
|
|
||||||
@ -271,5 +273,13 @@ 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);
|
||||||
|
|
||||||
|
GSList* meta_display_get_tab_list (MetaDisplay *display,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWorkspace *workspace);
|
||||||
|
|
||||||
|
MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
||||||
|
MetaWorkspace *workspace,
|
||||||
|
MetaWindow *window,
|
||||||
|
gboolean backward);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -961,10 +961,10 @@ handle_tab_forward (MetaDisplay *display,
|
|||||||
|
|
||||||
if (display->focus_window != NULL)
|
if (display->focus_window != NULL)
|
||||||
{
|
{
|
||||||
window = meta_stack_get_tab_next (display->focus_window->screen->stack,
|
window = meta_display_get_tab_next (display,
|
||||||
display->focus_window->screen->active_workspace,
|
display->focus_window->screen->active_workspace,
|
||||||
display->focus_window,
|
display->focus_window,
|
||||||
FALSE);
|
FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window == NULL)
|
if (window == NULL)
|
||||||
@ -979,10 +979,10 @@ handle_tab_forward (MetaDisplay *display,
|
|||||||
*/
|
*/
|
||||||
if (screen)
|
if (screen)
|
||||||
{
|
{
|
||||||
window = meta_stack_get_tab_next (screen->stack,
|
window = meta_display_get_tab_next (screen->display,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
NULL,
|
NULL,
|
||||||
FALSE);
|
FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1022,10 +1022,10 @@ handle_tab_backward (MetaDisplay *display,
|
|||||||
|
|
||||||
if (display->focus_window != NULL)
|
if (display->focus_window != NULL)
|
||||||
{
|
{
|
||||||
window = meta_stack_get_tab_next (display->focus_window->screen->stack,
|
window = meta_display_get_tab_next (display,
|
||||||
display->focus_window->screen->active_workspace,
|
display->focus_window->screen->active_workspace,
|
||||||
display->focus_window,
|
display->focus_window,
|
||||||
TRUE);
|
TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window == NULL)
|
if (window == NULL)
|
||||||
@ -1040,10 +1040,10 @@ handle_tab_backward (MetaDisplay *display,
|
|||||||
*/
|
*/
|
||||||
if (screen)
|
if (screen)
|
||||||
{
|
{
|
||||||
window = meta_stack_get_tab_next (screen->stack,
|
window = meta_display_get_tab_next (screen->display,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
NULL,
|
NULL,
|
||||||
TRUE);
|
TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1085,8 +1085,15 @@ handle_focus_previous (MetaDisplay *display,
|
|||||||
|
|
||||||
if (screen == NULL)
|
if (screen == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
window = display->prev_focus_window;
|
window = NULL;
|
||||||
|
|
||||||
|
/* get previously-focused window, front of list is currently
|
||||||
|
* focused window
|
||||||
|
*/
|
||||||
|
if (display->mru_list &&
|
||||||
|
display->mru_list->next)
|
||||||
|
window = display->mru_list->next->data;
|
||||||
|
|
||||||
if (window &&
|
if (window &&
|
||||||
!meta_window_visible_on_workspace (window,
|
!meta_window_visible_on_workspace (window,
|
||||||
@ -1096,10 +1103,10 @@ handle_focus_previous (MetaDisplay *display,
|
|||||||
if (window == NULL)
|
if (window == NULL)
|
||||||
{
|
{
|
||||||
/* Pick first window in tab order */
|
/* Pick first window in tab order */
|
||||||
window = meta_stack_get_tab_next (screen->stack,
|
window = meta_display_get_tab_next (screen->display,
|
||||||
screen->active_workspace,
|
screen->active_workspace,
|
||||||
NULL,
|
NULL,
|
||||||
TRUE);
|
TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window &&
|
if (window &&
|
||||||
|
@ -602,8 +602,10 @@ meta_screen_ensure_tab_popup (MetaScreen *screen)
|
|||||||
if (screen->tab_popup)
|
if (screen->tab_popup)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
tab_list = meta_stack_get_tab_list (screen->stack,
|
tab_list = meta_display_get_tab_list (screen->display,
|
||||||
screen->active_workspace);
|
screen,
|
||||||
|
screen->active_workspace);
|
||||||
|
|
||||||
len = g_slist_length (tab_list);
|
len = g_slist_length (tab_list);
|
||||||
|
|
||||||
entries = g_new (MetaTabEntry, len + 1);
|
entries = g_new (MetaTabEntry, len + 1);
|
||||||
|
12
src/stack.c
12
src/stack.c
@ -929,8 +929,6 @@ meta_stack_get_default_focus_window (MetaStack *stack,
|
|||||||
return topmost_dock;
|
return topmost_dock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define IN_TAB_CHAIN(w) ((w)->type != META_WINDOW_DOCK && (w)->type != META_WINDOW_DESKTOP)
|
|
||||||
#define GET_XWINDOW(stack, i) (g_array_index ((stack)->windows, \
|
#define GET_XWINDOW(stack, i) (g_array_index ((stack)->windows, \
|
||||||
Window, (i)))
|
Window, (i)))
|
||||||
|
|
||||||
@ -951,7 +949,7 @@ find_tab_forward (MetaStack *stack,
|
|||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
window = meta_display_lookup_x_window (stack->screen->display,
|
||||||
GET_XWINDOW (stack, i));
|
GET_XWINDOW (stack, i));
|
||||||
|
|
||||||
if (window && IN_TAB_CHAIN (window) &&
|
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -967,7 +965,7 @@ find_tab_forward (MetaStack *stack,
|
|||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
window = meta_display_lookup_x_window (stack->screen->display,
|
||||||
GET_XWINDOW (stack, i));
|
GET_XWINDOW (stack, i));
|
||||||
|
|
||||||
if (window && IN_TAB_CHAIN (window) &&
|
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -996,7 +994,7 @@ find_tab_backward (MetaStack *stack,
|
|||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
window = meta_display_lookup_x_window (stack->screen->display,
|
||||||
GET_XWINDOW (stack, i));
|
GET_XWINDOW (stack, i));
|
||||||
|
|
||||||
if (window && IN_TAB_CHAIN (window) &&
|
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -1012,7 +1010,7 @@ find_tab_backward (MetaStack *stack,
|
|||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
window = meta_display_lookup_x_window (stack->screen->display,
|
||||||
GET_XWINDOW (stack, i));
|
GET_XWINDOW (stack, i));
|
||||||
|
|
||||||
if (window && IN_TAB_CHAIN (window) &&
|
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
return window;
|
return window;
|
||||||
@ -1094,7 +1092,7 @@ meta_stack_get_tab_list (MetaStack *stack,
|
|||||||
window = meta_display_lookup_x_window (stack->screen->display,
|
window = meta_display_lookup_x_window (stack->screen->display,
|
||||||
GET_XWINDOW (stack, i));
|
GET_XWINDOW (stack, i));
|
||||||
|
|
||||||
if (window && IN_TAB_CHAIN (window) &&
|
if (window && META_WINDOW_IN_TAB_CHAIN (window) &&
|
||||||
(workspace == NULL ||
|
(workspace == NULL ||
|
||||||
meta_window_visible_on_workspace (window, workspace)))
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
list = g_slist_prepend (list, window);
|
list = g_slist_prepend (list, window);
|
||||||
|
40
src/window.c
40
src/window.c
@ -590,6 +590,10 @@ meta_window_new (MetaDisplay *display, Window xwindow,
|
|||||||
window->size_hints.width,
|
window->size_hints.width,
|
||||||
window->size_hints.height);
|
window->size_hints.height);
|
||||||
|
|
||||||
|
/* add to MRU list */
|
||||||
|
window->display->mru_list =
|
||||||
|
g_list_append (window->display->mru_list, window);
|
||||||
|
|
||||||
meta_stack_add (window->screen->stack,
|
meta_stack_add (window->screen->stack,
|
||||||
window);
|
window);
|
||||||
|
|
||||||
@ -761,8 +765,8 @@ meta_window_free (MetaWindow *window)
|
|||||||
if (window->display->focus_window == window)
|
if (window->display->focus_window == window)
|
||||||
window->display->focus_window = NULL;
|
window->display->focus_window = NULL;
|
||||||
|
|
||||||
if (window->display->prev_focus_window == window)
|
window->display->mru_list =
|
||||||
window->display->prev_focus_window = NULL;
|
g_list_remove (window->display->mru_list, window);
|
||||||
|
|
||||||
meta_window_unqueue_calc_showing (window);
|
meta_window_unqueue_calc_showing (window);
|
||||||
meta_window_unqueue_move_resize (window);
|
meta_window_unqueue_move_resize (window);
|
||||||
@ -3185,20 +3189,15 @@ meta_window_notify_focus (MetaWindow *window,
|
|||||||
* because we won't get a focus out if it occurs, apparently.
|
* because we won't get a focus out if it occurs, apparently.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* We don't ever want to set prev_focus_window to NULL,
|
|
||||||
* though it may be NULL due to e.g. only one window ever
|
|
||||||
* getting focus, or a window disappearing.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* We ignore grabs, though this is questionable.
|
/* We ignore grabs, though this is questionable.
|
||||||
* It may be better to increase the intelligence of
|
* It may be better to increase the intelligence of
|
||||||
* the focus window tracking.
|
* the focus window tracking.
|
||||||
*
|
*
|
||||||
* The problem is that keybindings for windows are done
|
* The problem is that keybindings for windows are done with
|
||||||
* with XGrabKey, which means focus_window disappears
|
* XGrabKey, which means focus_window disappears and the front of
|
||||||
* and prev_focus_window gets confused from what the
|
* the MRU list gets confused from what the user expects once a
|
||||||
* user expects once a keybinding is used.
|
* keybinding is used.
|
||||||
*/
|
*/
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"Focus %s event received on %s 0x%lx (%s) "
|
"Focus %s event received on %s 0x%lx (%s) "
|
||||||
"mode %s detail %s\n",
|
"mode %s detail %s\n",
|
||||||
@ -3225,7 +3224,7 @@ meta_window_notify_focus (MetaWindow *window,
|
|||||||
event->xfocus.detail > NotifyNonlinearVirtual))
|
event->xfocus.detail > NotifyNonlinearVirtual))
|
||||||
{
|
{
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"Ignoring focus event generated by a grab\n");
|
"Ignoring focus event generated by a grab or other weirdness\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3233,18 +3232,15 @@ meta_window_notify_focus (MetaWindow *window,
|
|||||||
{
|
{
|
||||||
if (window != window->display->focus_window)
|
if (window != window->display->focus_window)
|
||||||
{
|
{
|
||||||
if (window == window->display->prev_focus_window &&
|
|
||||||
window->display->focus_window != NULL)
|
|
||||||
{
|
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
|
||||||
"%s is now the previous focus window due to another window focused in\n",
|
|
||||||
window->display->focus_window->desc);
|
|
||||||
window->display->prev_focus_window = window->display->focus_window;
|
|
||||||
}
|
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"* Focus --> %s\n", window->desc);
|
"* Focus --> %s\n", window->desc);
|
||||||
window->display->focus_window = window;
|
window->display->focus_window = window;
|
||||||
window->has_focus = TRUE;
|
window->has_focus = TRUE;
|
||||||
|
/* Move to the front of the MRU list */
|
||||||
|
window->display->mru_list =
|
||||||
|
g_list_remove (window->display->mru_list, window);
|
||||||
|
window->display->mru_list =
|
||||||
|
g_list_prepend (window->display->mru_list, window);
|
||||||
if (window->frame)
|
if (window->frame)
|
||||||
meta_frame_queue_draw (window->frame);
|
meta_frame_queue_draw (window->frame);
|
||||||
}
|
}
|
||||||
@ -3267,8 +3263,6 @@ meta_window_notify_focus (MetaWindow *window,
|
|||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"%s is now the previous focus window due to being focused out or unmapped\n",
|
"%s is now the previous focus window due to being focused out or unmapped\n",
|
||||||
window->desc);
|
window->desc);
|
||||||
|
|
||||||
window->display->prev_focus_window = window;
|
|
||||||
|
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"* Focus --> NULL (was %s)\n", window->desc);
|
"* Focus --> NULL (was %s)\n", window->desc);
|
||||||
|
@ -364,4 +364,7 @@ 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) \
|
||||||
|
((w)->type != META_WINDOW_DOCK && (w)->type != META_WINDOW_DESKTOP)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user