global: Clean up the code that actually sets the shape on the stage
Instead of having "dummy" setters that do work, split out the parts that do work into their own function. https://bugzilla.gnome.org/show_bug.cgi?id=700735
This commit is contained in:
parent
93dc7a51c0
commit
9c8c282e08
@ -604,6 +604,19 @@ focus_actor_changed (ClutterStage *stage,
|
||||
sync_stage_window_focus (global);
|
||||
}
|
||||
|
||||
static void
|
||||
sync_input_region (ShellGlobal *global)
|
||||
{
|
||||
MetaScreen *screen = global->meta_screen;
|
||||
|
||||
if (global->gtk_grab_active)
|
||||
meta_empty_stage_input_region (screen);
|
||||
else if (global->input_mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region)
|
||||
meta_set_stage_input_region (screen, None);
|
||||
else
|
||||
meta_set_stage_input_region (screen, global->input_region);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_set_stage_input_mode:
|
||||
* @global: the #ShellGlobal
|
||||
@ -623,24 +636,12 @@ void
|
||||
shell_global_set_stage_input_mode (ShellGlobal *global,
|
||||
ShellStageInputMode mode)
|
||||
{
|
||||
MetaScreen *screen;
|
||||
if (mode == global->input_mode)
|
||||
return;
|
||||
|
||||
g_return_if_fail (SHELL_IS_GLOBAL (global));
|
||||
|
||||
screen = meta_plugin_get_screen (global->plugin);
|
||||
|
||||
if (global->gtk_grab_active)
|
||||
meta_empty_stage_input_region (screen);
|
||||
else if (mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region)
|
||||
meta_set_stage_input_region (screen, None);
|
||||
else
|
||||
meta_set_stage_input_region (screen, global->input_region);
|
||||
|
||||
if (mode != global->input_mode)
|
||||
{
|
||||
global->input_mode = mode;
|
||||
g_object_notify (G_OBJECT (global), "stage-input-mode");
|
||||
}
|
||||
global->input_mode = mode;
|
||||
sync_input_region (global);
|
||||
g_object_notify (G_OBJECT (global), "stage-input-mode");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -766,10 +767,7 @@ shell_global_set_stage_input_region (ShellGlobal *global,
|
||||
global->input_region = XFixesCreateRegion (global->xdisplay, rects, nrects);
|
||||
g_free (rects);
|
||||
|
||||
/* set_stage_input_mode() will figure out whether or not we
|
||||
* should actually change the input region right now.
|
||||
*/
|
||||
shell_global_set_stage_input_mode (global, global->input_mode);
|
||||
sync_input_region (global);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1299,7 +1297,7 @@ grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data)
|
||||
global->gtk_grab_active = !was_grabbed;
|
||||
|
||||
/* Update for the new setting of gtk_grab_active */
|
||||
shell_global_set_stage_input_mode (global, global->input_mode);
|
||||
sync_input_region (global);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user