return EINA_FALSE;
}
-static void
-_e_comp_wl_evas_cb_focus_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+/* It is called in the following cases:
+ * When a normal ec->frame has focus.
+ * Or launching image ec is replaced to the real ec.
+ */
+EINTERN void
+e_comp_wl_feed_focus_in(E_Client *ec)
{
- E_Client *ec, *focused;
+ E_Client *focused;
struct wl_resource *res;
struct wl_client *wc;
Eina_List *l;
- if (!(ec = data)) return;
+ if (!ec) return;
if (e_object_is_del(E_OBJECT(ec))) return;
if (ec->iconic) return;
e_pointer_rotation_set(e_comp->pointer, rotation);
}
+static void
+_e_comp_wl_evas_cb_focus_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+ E_Client *ec;
+ if (!(ec = data)) return;
+ e_comp_wl_feed_focus_in(ec);
+}
+
static void
_e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
EINTERN Eina_Bool e_comp_wl_mouse_wheel_send(E_Client *ec, int direction, int z, Ecore_Device *dev, uint32_t time);
EINTERN Eina_Bool e_comp_wl_cursor_hide(E_Client *ec);
+EINTERN void e_comp_wl_feed_focus_in(E_Client *ec);
+
E_API extern int E_EVENT_WAYLAND_GLOBAL_ADD;
# endif
Ecore_Timer *timeout; /* launch screen image hide timer */
Eina_Bool valid; /* validation check */
+ Eina_Bool replaced;
E_Comp_Object_Content_Type content_type; /* type of content */
} E_Policy_Wl_Tzlaunch_Img;
evas_object_hide(ec->frame);
}
+ if (!tzlaunch_img->replaced)
+ {
+ if (ec->focused)
+ e_comp_wl_feed_focus_in(ec);
+ }
+
e_comp->launchscrns = eina_list_remove(e_comp->launchscrns, ec);
if (obj)
if (tzlaunch_img->timeout) ecore_timer_del(tzlaunch_img->timeout);
tzlaunch_img->timeout = NULL;
tzlaunch_img->valid = EINA_FALSE;
+ tzlaunch_img->replaced = EINA_FALSE;
}
static Eina_Bool
EC_CHANGED(new_ec);
tzlaunch_img->ec = new_ec;
+ tzlaunch_img->replaced = EINA_TRUE;
ELOGF("TZPOL",
"Launchscreen client changed | old(%p) new(%p) using obj(%p)",
tzlaunch_img->tzlaunch = tzlaunch;
tzlaunch_img->res_tzlaunch_img = res_tzlaunch_img;
+ tzlaunch_img->replaced = EINA_FALSE;
tzlaunch_img->ep = e_pixmap_new(E_PIXMAP_TYPE_EXT_OBJECT, 0);
EINA_SAFETY_ON_NULL_GOTO(tzlaunch_img->ep, error);
tzlaunch_img->ec = e_client_new(tzlaunch_img->ep, 0, 1);