warp_client = NULL;
}
+E_API void
+e_client_unignore(E_Client *ec)
+{
+ E_OBJECT_CHECK(ec);
+ E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
+ if (!ec->ignored) return;
+
+ ec->ignored = 0;
+ _e_client_event_simple(ec, E_EVENT_CLIENT_ADD);
+}
+
E_API E_Client *
e_client_new(E_Pixmap *cp, int first_map, int internal)
{
e_comp->clients = eina_list_append(e_comp->clients, ec);
eina_hash_add(clients_hash[e_pixmap_type_get(cp)], &ec->pixmap, ec);
- _e_client_event_simple(ec, E_EVENT_CLIENT_ADD);
+ if (!ec->ignored)
+ _e_client_event_simple(ec, E_EVENT_CLIENT_ADD);
e_comp_object_client_add(ec);
if (ec->frame)
{
EINTERN Eina_Bool e_client_init(void);
EINTERN void e_client_shutdown(void);
E_API E_Client *e_client_new(E_Pixmap *cp, int first_map, int internal);
+E_API void e_client_unignore(E_Client *ec);
E_API void e_client_desk_set(E_Client *ec, E_Desk *desk);
E_API Eina_Bool e_client_comp_grabbed_get(void);
E_API E_Client *e_client_action_get(void);
if (pwin)
eina_hash_set(clients_win_hash, &pwin, wc);
wc->visible = 1;
- wc->ignored = 0;
+ if (wc->ignored)
+ e_client_unignore(wc);
if (ec->override)
e_client_focus_stack_set(eina_list_remove(e_client_focus_stack_get(), wc));
evas_object_name_set(wc->frame, evas_object_name_get(ec->frame));
}
static Eina_Bool
+_client_add(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Client *ev)
+{
+ if (!eina_hash_find(sd->mirror_hash, &ev->ec->frame))
+ _e_deskmirror_mirror_add(sd, ev->ec->frame);
+ return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool
_client_desk_set(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Client_Desk_Set *ev)
{
Mirror *m;
e_layout_thaw(sd->layout);
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_COMP_OBJECT_ADD, (Ecore_Event_Handler_Cb)_comp_object_add, sd);
+ E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_client_add, sd);
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_CLIENT_PROPERTY, (Ecore_Event_Handler_Cb)_client_property, sd);
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_CLIENT_DESK_SET, (Ecore_Event_Handler_Cb)_client_desk_set, sd);
return o;
EC_CHANGED(ec);
ec->new_client = ec->netwm.ping = EINA_TRUE;
e_comp->new_clients++;
- ec->ignored = 0;
+ e_client_unignore(ec);
/* get the client data */
if (!(cdata = ec->comp_data))
EC_CHANGED(ec);
ec->new_client = ec->netwm.ping = EINA_TRUE;
e_comp->new_clients++;
- ec->ignored = 0;
+ e_client_unignore(ec);
/* get the client data */
if (!(cdata = ec->comp_data))
EC_CHANGED(ec);
ec->new_client = ec->override = 1;
- ec->ignored = 0;
+ e_client_unignore(ec);
e_comp->new_clients++;
e_client_focus_stack_set(eina_list_remove(e_client_focus_stack_get(), ec));
if (!ec->internal)