Move UI and key grabs to MetaX11Display

https://bugzilla.gnome.org/show_bug.cgi?id=759538
This commit is contained in:
Armin Krezović
2017-08-26 21:38:59 +02:00
committed by Jonas Ådahl
parent 6458139c04
commit d79ffd3976
9 changed files with 45 additions and 38 deletions

View File

@ -65,7 +65,7 @@ meta_window_ensure_frame (MetaWindow *window)
frame->rect.x, frame->rect.y,
frame->rect.width, frame->rect.height);
frame->ui_frame = meta_ui_create_frame (window->screen->ui,
frame->ui_frame = meta_ui_create_frame (x11_display->ui,
x11_display->xdisplay,
frame->window,
window->xvisual,
@ -118,7 +118,7 @@ meta_window_ensure_frame (MetaWindow *window)
meta_frame_update_style (frame);
meta_frame_update_title (frame);
meta_ui_map_frame (frame->window->screen->ui, frame->xwindow);
meta_ui_map_frame (x11_display->ui, frame->xwindow);
{
MetaBackend *backend = meta_get_backend ();

View File

@ -127,8 +127,6 @@ typedef struct
void meta_display_init_keys (MetaDisplay *display);
void meta_display_shutdown_keys (MetaDisplay *display);
void meta_screen_grab_keys (MetaScreen *screen);
void meta_screen_ungrab_keys (MetaScreen *screen);
void meta_window_grab_keys (MetaWindow *window);
void meta_window_ungrab_keys (MetaWindow *window);
gboolean meta_window_grab_all_keys (MetaWindow *window,
@ -152,4 +150,7 @@ GList *meta_prefs_get_keybindings (void);
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
const char *meta_prefs_get_iso_next_group_option (void);
void meta_x11_display_grab_keys (MetaX11Display *x11_display);
void meta_x11_display_ungrab_keys (MetaX11Display *x11_display);
#endif

View File

@ -880,7 +880,8 @@ ungrab_key_bindings (MetaDisplay *display)
{
GSList *windows, *l;
meta_screen_ungrab_keys (display->screen);
if (display->x11_display)
meta_x11_display_ungrab_keys (display->x11_display);
windows = meta_display_list_windows (display, META_LIST_DEFAULT);
for (l = windows; l; l = l->next)
@ -897,7 +898,8 @@ grab_key_bindings (MetaDisplay *display)
{
GSList *windows, *l;
meta_screen_grab_keys (display->screen);
if (display->x11_display)
meta_x11_display_grab_keys (display->x11_display);
windows = meta_display_list_windows (display, META_LIST_DEFAULT);
for (l = windows; l; l = l->next)
@ -1477,45 +1479,44 @@ change_binding_keygrabs (MetaKeyBindingManager *keys,
}
static void
meta_screen_change_keygrabs (MetaScreen *screen,
gboolean grab)
meta_x11_display_change_keygrabs (MetaX11Display *x11_display,
gboolean grab)
{
MetaDisplay *display = screen->display;
MetaKeyBindingManager *keys = &display->key_binding_manager;
MetaKeyBindingManager *keys = &x11_display->display->key_binding_manager;
int i;
if (keys->overlay_resolved_key_combo.len != 0)
meta_change_keygrab (keys, display->x11_display->xroot,
meta_change_keygrab (keys, x11_display->xroot,
grab, &keys->overlay_resolved_key_combo);
for (i = 0; i < keys->n_iso_next_group_combos; i++)
meta_change_keygrab (keys, display->x11_display->xroot,
meta_change_keygrab (keys, x11_display->xroot,
grab, &keys->iso_next_group_combo[i]);
change_binding_keygrabs (keys, display->x11_display->xroot,
change_binding_keygrabs (keys, x11_display->xroot,
FALSE, grab);
}
void
meta_screen_grab_keys (MetaScreen *screen)
meta_x11_display_grab_keys (MetaX11Display *x11_display)
{
if (screen->keys_grabbed)
if (x11_display->keys_grabbed)
return;
meta_screen_change_keygrabs (screen, TRUE);
meta_x11_display_change_keygrabs (x11_display, TRUE);
screen->keys_grabbed = TRUE;
x11_display->keys_grabbed = TRUE;
}
void
meta_screen_ungrab_keys (MetaScreen *screen)
meta_x11_display_ungrab_keys (MetaX11Display *x11_display)
{
if (!screen->keys_grabbed)
if (!x11_display->keys_grabbed)
return;
meta_screen_change_keygrabs (screen, FALSE);
meta_x11_display_change_keygrabs (x11_display, FALSE);
screen->keys_grabbed = FALSE;
x11_display->keys_grabbed = FALSE;
}
static void

View File

@ -45,7 +45,6 @@ struct _MetaScreen
GObject parent_instance;
MetaDisplay *display;
MetaUI *ui;
MetaWorkspace *active_workspace;
@ -57,8 +56,6 @@ struct _MetaScreen
guint vertical_workspaces : 1;
guint workspace_layout_overridden : 1;
guint keys_grabbed : 1;
int closing;
};

View File

@ -207,7 +207,6 @@ meta_screen_new (MetaDisplay *display,
MetaScreen *screen;
int number;
Window xroot = meta_x11_display_get_xroot (display->x11_display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
number = meta_ui_get_screen_number ();
@ -235,11 +234,6 @@ meta_screen_new (MetaDisplay *display,
*/
meta_workspace_new (screen);
screen->keys_grabbed = FALSE;
meta_screen_grab_keys (screen);
screen->ui = meta_ui_new (xdisplay);
meta_prefs_add_listener (prefs_changed_callback, screen);
meta_verbose ("Added screen %d ('%s') root 0x%lx\n",
@ -293,10 +287,6 @@ meta_screen_free (MetaScreen *screen,
meta_prefs_remove_listener (prefs_changed_callback, screen);
meta_screen_ungrab_keys (screen);
meta_ui_free (screen->ui);
g_object_unref (screen);
}