mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
new function
2002-09-03 Havoc Pennington <hp@pobox.com> * src/display.c (meta_display_get_tab_current): new function * src/keybindings.c (do_choose_window): apply modified patch from JeyaSudha to still display tab popup if only one window is on the desktop.
This commit is contained in:
parent
a6a7407faa
commit
cbb0b8e66c
@ -1,3 +1,11 @@
|
|||||||
|
2002-09-03 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* src/display.c (meta_display_get_tab_current): new function
|
||||||
|
|
||||||
|
* src/keybindings.c (do_choose_window): apply modified patch from
|
||||||
|
JeyaSudha to still display tab popup if only one window is on the
|
||||||
|
desktop.
|
||||||
|
|
||||||
2002-06-25 JeyaSudha <jeyasudha.duraipandy@wipro.com>
|
2002-06-25 JeyaSudha <jeyasudha.duraipandy@wipro.com>
|
||||||
|
|
||||||
* src/session.c, src/window.c: Session saves the unmaximized
|
* src/session.c, src/window.c: Session saves the unmaximized
|
||||||
|
@ -3119,6 +3119,26 @@ meta_display_get_tab_next (MetaDisplay *display,
|
|||||||
display->mru_list);
|
display->mru_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MetaWindow*
|
||||||
|
meta_display_get_tab_current (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWorkspace *workspace)
|
||||||
|
{
|
||||||
|
MetaWindow *window;
|
||||||
|
|
||||||
|
window = display->focus_window;
|
||||||
|
|
||||||
|
if (window != NULL &&
|
||||||
|
window->screen == screen &&
|
||||||
|
IN_TAB_CHAIN (window, type) &&
|
||||||
|
(workspace == NULL ||
|
||||||
|
meta_window_visible_on_workspace (window, workspace)))
|
||||||
|
return window;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
meta_resize_gravity_from_grab_op (MetaGrabOp op)
|
meta_resize_gravity_from_grab_op (MetaGrabOp op)
|
||||||
{
|
{
|
||||||
|
@ -369,6 +369,11 @@ MetaWindow* meta_display_get_tab_next (MetaDisplay *display,
|
|||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
gboolean backward);
|
gboolean backward);
|
||||||
|
|
||||||
|
MetaWindow* meta_display_get_tab_current (MetaDisplay *display,
|
||||||
|
MetaTabList type,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWorkspace *workspace);
|
||||||
|
|
||||||
int meta_resize_gravity_from_grab_op (MetaGrabOp op);
|
int meta_resize_gravity_from_grab_op (MetaGrabOp op);
|
||||||
|
|
||||||
gboolean meta_rectangle_intersect (MetaRectangle *src1,
|
gboolean meta_rectangle_intersect (MetaRectangle *src1,
|
||||||
|
@ -2333,77 +2333,68 @@ do_choose_window (MetaDisplay *display,
|
|||||||
MetaKeyBinding *binding,
|
MetaKeyBinding *binding,
|
||||||
gboolean show_popup)
|
gboolean show_popup)
|
||||||
{
|
{
|
||||||
MetaWindow *window;
|
MetaScreen *screen;
|
||||||
MetaTabList type;
|
MetaTabList type;
|
||||||
gboolean backward;
|
gboolean backward;
|
||||||
|
MetaWindow *initial_selection;
|
||||||
|
|
||||||
type = GPOINTER_TO_INT (binding->handler->data);
|
type = GPOINTER_TO_INT (binding->handler->data);
|
||||||
|
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
"Tab list = %d show_popup = %d\n", type, show_popup);
|
"Tab list = %d show_popup = %d\n", type, show_popup);
|
||||||
|
|
||||||
|
screen = meta_display_screen_for_root (display,
|
||||||
|
event->xkey.root);
|
||||||
|
|
||||||
|
if (screen == NULL)
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
|
"No screen for root 0x%lx, not doing choose_window\n",
|
||||||
|
event->xkey.root);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* backward if shift is down, this isn't configurable */
|
/* backward if shift is down, this isn't configurable */
|
||||||
backward = (event->xkey.state & ShiftMask) != 0;
|
backward = (event->xkey.state & ShiftMask) != 0;
|
||||||
|
|
||||||
|
initial_selection = meta_display_get_tab_next (display,
|
||||||
|
type,
|
||||||
|
screen,
|
||||||
|
screen->active_workspace,
|
||||||
|
NULL,
|
||||||
|
backward);
|
||||||
|
|
||||||
|
/* Note that focus_window may not be in the tab chain, but it's OK */
|
||||||
|
if (initial_selection == NULL)
|
||||||
|
initial_selection = meta_display_get_tab_current (display,
|
||||||
|
type, screen,
|
||||||
|
screen->active_workspace);
|
||||||
|
|
||||||
window = NULL;
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
|
"Initially selecting window %s\n",
|
||||||
|
initial_selection ? initial_selection->desc : "(none)");
|
||||||
|
|
||||||
if (display->focus_window != NULL)
|
if (initial_selection != NULL &&
|
||||||
{
|
meta_display_begin_grab_op (display,
|
||||||
window = meta_display_get_tab_next (display,
|
screen,
|
||||||
type,
|
NULL,
|
||||||
display->focus_window->screen,
|
show_popup ?
|
||||||
display->focus_window->screen->active_workspace,
|
tab_op_from_tab_type (type) :
|
||||||
display->focus_window,
|
cycle_op_from_tab_type (type),
|
||||||
backward);
|
FALSE,
|
||||||
}
|
0,
|
||||||
|
event->xkey.state & ~(display->ignored_modifier_mask),
|
||||||
|
event->xkey.time,
|
||||||
|
0, 0))
|
||||||
|
{
|
||||||
|
meta_ui_tab_popup_select (screen->tab_popup,
|
||||||
|
(MetaTabEntryKey) initial_selection->xwindow);
|
||||||
|
|
||||||
if (window == NULL)
|
if (show_popup)
|
||||||
{
|
meta_ui_tab_popup_set_showing (screen->tab_popup,
|
||||||
MetaScreen *screen;
|
TRUE);
|
||||||
|
else
|
||||||
screen = meta_display_screen_for_root (display,
|
meta_window_raise (initial_selection);
|
||||||
event->xkey.root);
|
|
||||||
|
|
||||||
/* We get the screen because event_window may be NULL,
|
|
||||||
* in which case we can't use event_window->screen
|
|
||||||
*/
|
|
||||||
if (screen)
|
|
||||||
{
|
|
||||||
window = meta_display_get_tab_next (screen->display,
|
|
||||||
type,
|
|
||||||
screen,
|
|
||||||
screen->active_workspace,
|
|
||||||
NULL,
|
|
||||||
backward);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (window)
|
|
||||||
{
|
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
|
||||||
"Starting tab/cycle between windows\n");
|
|
||||||
|
|
||||||
if (meta_display_begin_grab_op (window->display,
|
|
||||||
window->screen,
|
|
||||||
NULL,
|
|
||||||
show_popup ?
|
|
||||||
tab_op_from_tab_type (type) :
|
|
||||||
cycle_op_from_tab_type (type),
|
|
||||||
FALSE,
|
|
||||||
0,
|
|
||||||
event->xkey.state & ~(display->ignored_modifier_mask),
|
|
||||||
event->xkey.time,
|
|
||||||
0, 0))
|
|
||||||
{
|
|
||||||
meta_ui_tab_popup_select (window->screen->tab_popup,
|
|
||||||
(MetaTabEntryKey) window->xwindow);
|
|
||||||
|
|
||||||
if (show_popup)
|
|
||||||
meta_ui_tab_popup_set_showing (window->screen->tab_popup,
|
|
||||||
TRUE);
|
|
||||||
else
|
|
||||||
meta_window_raise (window);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,6 +446,10 @@ meta_ui_tab_popup_select (MetaTabPopup *popup,
|
|||||||
{
|
{
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
|
|
||||||
|
/* Note, "key" may not be in the list of entries; other code assumes
|
||||||
|
* it's OK to pass in a key that isn't.
|
||||||
|
*/
|
||||||
|
|
||||||
tmp = popup->entries;
|
tmp = popup->entries;
|
||||||
while (tmp != NULL)
|
while (tmp != NULL)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user