global: Automatically unshape the stage X window when we take a modal
This prevents the "client" from having to do it, and removes one part of the FULLSCREEN input mode. https://bugzilla.gnome.org/show_bug.cgi?id=700735
This commit is contained in:
parent
9c8c282e08
commit
985d0c786c
@ -356,8 +356,6 @@ function pushModal(actor, params) {
|
|||||||
Meta.disable_unredirect_for_screen(global.screen);
|
Meta.disable_unredirect_for_screen(global.screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.FULLSCREEN);
|
|
||||||
|
|
||||||
modalCount += 1;
|
modalCount += 1;
|
||||||
let actorDestroyId = actor.connect('destroy', function() {
|
let actorDestroyId = actor.connect('destroy', function() {
|
||||||
let index = _findModal(actor);
|
let index = _findModal(actor);
|
||||||
@ -406,7 +404,6 @@ function popModal(actor, timestamp) {
|
|||||||
if (focusIndex < 0) {
|
if (focusIndex < 0) {
|
||||||
global.stage.set_key_focus(null);
|
global.stage.set_key_focus(null);
|
||||||
global.end_modal(timestamp);
|
global.end_modal(timestamp);
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.NORMAL);
|
|
||||||
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
||||||
|
|
||||||
throw new Error('incorrect pop');
|
throw new Error('incorrect pop');
|
||||||
@ -454,7 +451,6 @@ function popModal(actor, timestamp) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
global.end_modal(timestamp);
|
global.end_modal(timestamp);
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.NORMAL);
|
|
||||||
Meta.enable_unredirect_for_screen(global.screen);
|
Meta.enable_unredirect_for_screen(global.screen);
|
||||||
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
||||||
}
|
}
|
||||||
|
@ -611,7 +611,7 @@ sync_input_region (ShellGlobal *global)
|
|||||||
|
|
||||||
if (global->gtk_grab_active)
|
if (global->gtk_grab_active)
|
||||||
meta_empty_stage_input_region (screen);
|
meta_empty_stage_input_region (screen);
|
||||||
else if (global->input_mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region)
|
else if (global->input_mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region || global->has_modal)
|
||||||
meta_set_stage_input_region (screen, None);
|
meta_set_stage_input_region (screen, None);
|
||||||
else
|
else
|
||||||
meta_set_stage_input_region (screen, global->input_region);
|
meta_set_stage_input_region (screen, global->input_region);
|
||||||
@ -1050,6 +1050,7 @@ shell_global_begin_modal (ShellGlobal *global,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
global->has_modal = meta_plugin_begin_modal (global->plugin, global->stage_xwindow, None, options, timestamp);
|
global->has_modal = meta_plugin_begin_modal (global->plugin, global->stage_xwindow, None, options, timestamp);
|
||||||
|
sync_input_region (global);
|
||||||
return global->has_modal;
|
return global->has_modal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1080,6 +1081,8 @@ shell_global_end_modal (ShellGlobal *global,
|
|||||||
else if (get_key_focused_actor (global) && meta_stage_is_focused (global->meta_screen))
|
else if (get_key_focused_actor (global) && meta_stage_is_focused (global->meta_screen))
|
||||||
meta_screen_focus_default_window (global->meta_screen,
|
meta_screen_focus_default_window (global->meta_screen,
|
||||||
get_current_time_maybe_roundtrip (global));
|
get_current_time_maybe_roundtrip (global));
|
||||||
|
|
||||||
|
sync_input_region (global);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user