From ef6197b119baeae3a936dabf455cdb33b4f6d071 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 1 Sep 2017 13:40:12 -0400 Subject: [PATCH] do not force client focus setting after calling e_desk_last_focused_focus() in some cases focus setting must be deferred, and forcing focus in these cases will create focus bugs ref 9ae24a3a4a93827f6bce1c565a00926aa8ea1460 --- src/bin/e_actions.c | 5 +---- src/bin/e_client.c | 4 +--- src/bin/e_comp_x.c | 10 ++-------- src/bin/e_int_client_menu.c | 5 +---- src/modules/msgbus/msgbus_window.c | 5 +---- src/modules/pager/e_mod_main.c | 10 ++-------- src/modules/pager/gadget/pager.c | 10 ++-------- src/modules/pager_plain/e_mod_main.c | 10 ++-------- 8 files changed, 12 insertions(+), 47 deletions(-) diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index 01a85e5e5..a118d7888 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -1329,10 +1329,7 @@ ACT_FN_GO(window_desk_move_to, ) { e_client_desk_set(ec, desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } } } diff --git a/src/bin/e_client.c b/src/bin/e_client.c index d3dc6bdef..e96e02f14 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -4514,12 +4514,10 @@ e_client_iconify(E_Client *ec) e_client_iconify(child); } e_client_stack_list_finish(list); - E_Client *pec; E_Desk *desk; desk = e_desk_current_get(ec->zone); - pec = e_desk_last_focused_focus(desk); - if (pec) evas_object_focus_set(pec->frame, 1); + e_desk_last_focused_focus(desk); return; } ec->iconic = 1; diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 50f92beb8..1c7cd9df6 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -2178,10 +2178,7 @@ _e_comp_x_message(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Cl { e_client_desk_set(ec, desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } } } @@ -2268,10 +2265,7 @@ _e_comp_x_message(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Cl desk->window_profile); e_client_desk_set(ec, desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } e_client_desk_window_profile_wait_desk_set(ec, NULL); } diff --git a/src/bin/e_int_client_menu.c b/src/bin/e_int_client_menu.c index dac3efd9f..0309dc267 100644 --- a/src/bin/e_int_client_menu.c +++ b/src/bin/e_int_client_menu.c @@ -1326,10 +1326,7 @@ _e_client_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi EINA_UNUSED) ec->hidden = 0; e_client_desk_set(ec, desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } } diff --git a/src/modules/msgbus/msgbus_window.c b/src/modules/msgbus/msgbus_window.c index fb600641f..5158a877c 100644 --- a/src/modules/msgbus/msgbus_window.c +++ b/src/modules/msgbus/msgbus_window.c @@ -149,10 +149,7 @@ _e_msgbus_window_sendtodesktop_cb( const Eldbus_Service_Interface *iface EINA_UN { e_client_desk_set(ec, desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } } } diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index 631ba66ef..7b5505f8e 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -1354,10 +1354,7 @@ _pager_update_drop_position(Pager *p, Evas_Coord x, Evas_Coord y) y = E_CLAMP(vy + zy, zy, zy + zh - ec->h); evas_object_move(ec->frame, x, y); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } else { @@ -1481,10 +1478,7 @@ _pager_drop_cb_drop(void *data, const char *type, void *event_info) ec->hidden = 0; e_client_desk_set(ec, pd->desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); evas_object_raise(ec->frame); if ((!max) && (!fullscreen)) diff --git a/src/modules/pager/gadget/pager.c b/src/modules/pager/gadget/pager.c index 3f8ca9d45..8d3e5d4b2 100644 --- a/src/modules/pager/gadget/pager.c +++ b/src/modules/pager/gadget/pager.c @@ -2248,10 +2248,7 @@ _pager_update_drop_position(Pager *p, Pager_Desk *pd, Evas_Coord x, Evas_Coord y y = E_CLAMP(vy + zy, zy, zy + zh - ec->h); evas_object_move(ec->frame, x, y); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); } else { @@ -2371,10 +2368,7 @@ _pager_drop_cb_drop(void *data, const char *type, void *event_info) ec->hidden = 0; e_client_desk_set(ec, pd->desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); evas_object_raise(ec->frame); if ((!max) && (!fullscreen)) diff --git a/src/modules/pager_plain/e_mod_main.c b/src/modules/pager_plain/e_mod_main.c index c8e73e5c0..26089d1e9 100644 --- a/src/modules/pager_plain/e_mod_main.c +++ b/src/modules/pager_plain/e_mod_main.c @@ -1904,10 +1904,7 @@ _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI ec->hidden = 0; e_client_desk_set(ec, pd->desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); edje_object_signal_emit(pd->o_desk, "e,action,drag,in", "e"); pd->pager->active_drop_pd = pd; } @@ -2174,10 +2171,7 @@ _pager_drop_cb_drop(void *data, const char *type, void *event_info) ec->hidden = 0; e_client_desk_set(ec, pd->desk); if (was_focused) - { - E_Client *ec_focus = e_desk_last_focused_focus(old_desk); - if (ec_focus) e_client_focus_set_with_pointer(ec_focus); - } + e_desk_last_focused_focus(old_desk); evas_object_raise(ec->frame); if ((!max) && (!fullscreen))