add e_deskmirror_mirror_copy

This commit is contained in:
Mike Blumenkrantz 2014-01-15 16:38:04 -05:00
parent a33fa26847
commit 30ef7b217a
3 changed files with 65 additions and 6 deletions

View File

@ -3141,6 +3141,7 @@ e_comp_object_util_mirror_add(Evas_Object *obj)
evas_object_image_smooth_scale_set(o, e_comp_config_get()->smooth_windows);
cw->obj_mirror = eina_list_append(cw->obj_mirror, o);
evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _e_comp_object_cb_mirror_del, cw);
evas_object_data_set(o, "E_Client", cw->ec);
evas_object_image_alpha_set(o, evas_object_image_alpha_get(cw->obj));
evas_object_image_size_set(o, w, h);

View File

@ -269,10 +269,9 @@ _mirror_client_smart_add(Evas_Object *obj)
static void
_mirror_client_signal_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission, const char *src)
{
Mirror_Border *mb = data;
edje_object_signal_emit(mb->frame, emission, src);
edje_object_message_signal_process(mb->frame);
edje_object_calc_force(mb->frame);
edje_object_signal_emit(data, emission, src);
edje_object_message_signal_process(data);
edje_object_calc_force(data);
}
static void
@ -280,7 +279,7 @@ _mirror_client_smart_del(Evas_Object *obj)
{
Mirror_Border *mb = evas_object_smart_data_get(obj);
if (mb->m->comp_object && mb->m->ec)
e_comp_object_signal_callback_del_full(mb->m->ec->frame, "*", "*", _mirror_client_signal_cb, mb);
e_comp_object_signal_callback_del_full(mb->m->ec->frame, "*", "*", _mirror_client_signal_cb, mb->frame);
evas_object_del(mb->frame);
evas_object_del(mb->mirror);
free(mb);
@ -445,7 +444,7 @@ _mirror_client_new(Mirror *m)
edje_object_signal_emit(mb->frame, "e,state,shadow,off", "e");
if (m->comp_object)
{
e_comp_object_signal_callback_add(mb->m->comp_object, "*", "*", _mirror_client_signal_cb, mb);
e_comp_object_signal_callback_add(mb->m->comp_object, "*", "*", _mirror_client_signal_cb, mb->frame);
evas_object_event_callback_add(m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
}
if (mb->m->ec->focused)
@ -735,6 +734,64 @@ e_deskmirror_mirror_list(Evas_Object *deskmirror)
return l;
}
EAPI Evas_Object *
e_deskmirror_mirror_copy(Evas_Object *obj)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
if (!e_util_strcmp(evas_object_type_get(obj), "mirror_border"))
{
Evas_Object *o, *oo;
Edje_Message_Float msg;
char buf[1024];
Mirror_Border *mb;
mb = evas_object_smart_data_get(obj);
o = edje_object_add(evas_object_evas_get(obj));
snprintf(buf, sizeof(buf), "e/deskmirror/frame/%s", mb->m->ec->border.name);
e_theme_edje_object_set(o, "base/theme/borders", buf);
if (e_util_client_shadow_state_get(mb->m->ec))
edje_object_signal_emit(o, "e,state,shadow,on", "e");
else
edje_object_signal_emit(o, "e,state,shadow,off", "e");
if (mb->m->comp_object)
e_comp_object_signal_callback_add(mb->m->comp_object, "*", "*", _mirror_client_signal_cb, o);
if (mb->m->ec->focused)
edje_object_signal_emit(o, "e,state,focused", "e");
if (mb->m->ec->shaded)
edje_object_signal_emit(o, "e,state,shaded", "e");
if (mb->m->ec->maximized)
edje_object_signal_emit(o, "e,action,maximize", "e");
if (mb->m->ec->sticky)
edje_object_signal_emit(o, "e,state,sticky", "e");
if (mb->m->ec->iconic)
edje_object_signal_emit(o, "e,action,iconify", "e");
msg.val = mb->m->sd->h / mb->m->sd->desk->zone->h;
edje_object_message_send(o, EDJE_MESSAGE_FLOAT, 0, &msg);
oo = e_comp_object_util_mirror_add(mb->m->comp_object);
edje_object_part_swallow(o, "e.swallow.client", oo);
edje_object_part_text_set(o, "e.text.title", e_client_name_get(mb->m->ec));
e_comp_object_util_del_list_append(o, oo);
return o;
}
else if (!e_util_strcmp(evas_object_type_get(obj), "image"))
{
if (!e_util_strcmp(evas_object_name_get(obj), "m->mirror"))
{
E_Client *ec;
ec = evas_object_data_get(obj, "E_Client");
if (!ec) return NULL;
return e_comp_object_util_mirror_add(ec->frame);
}
else
return e_comp_object_util_mirror_add(obj);
}
CRI("NOT A DESKMIRROR CLIENT");
return NULL;
}
EAPI void
e_deskmirror_coord_canvas_to_virtual(Evas_Object *obj, Evas_Coord cx, Evas_Coord cy, Evas_Coord *vx, Evas_Coord *vy)
{

View File

@ -4,6 +4,7 @@
EAPI Evas_Object *e_deskmirror_add(E_Desk *desk, Eina_Bool pager, Eina_Bool taskbar);
EAPI Evas_Object *e_deskmirror_mirror_find(Evas_Object *deskmirror, Evas_Object *comp_object);
EAPI Eina_List *e_deskmirror_mirror_list(Evas_Object *deskmirror);
EAPI Evas_Object *e_deskmirror_mirror_copy(Evas_Object *obj);
EAPI void e_deskmirror_coord_canvas_to_virtual(Evas_Object *obj, Evas_Coord cx, Evas_Coord cy, Evas_Coord *vx, Evas_Coord *vy);
EAPI void e_deskmirror_coord_virtual_to_canvas(Evas_Object *obj, Evas_Coord vx, Evas_Coord vy, Evas_Coord *cx, Evas_Coord *cy);
EAPI E_Desk *e_deskmirror_desk_get(Evas_Object *obj);