forked from enlightenment/enlightenment
set E_GADGET_ANCHOR env var corresponding to the gadget sites anchor
this value can change without destroying the gadget, but it can be helpful to have this data available during initial setup
This commit is contained in:
parent
52e7131477
commit
f57cd82beb
|
@ -35,6 +35,7 @@ typedef struct Tooltip
|
||||||
typedef struct Instance
|
typedef struct Instance
|
||||||
{
|
{
|
||||||
E_Gadget_Site_Orient orient;
|
E_Gadget_Site_Orient orient;
|
||||||
|
E_Gadget_Site_Anchor anchor;
|
||||||
Evas_Object *box;
|
Evas_Object *box;
|
||||||
Evas_Object *obj;
|
Evas_Object *obj;
|
||||||
Ecore_Exe *exe;
|
Ecore_Exe *exe;
|
||||||
|
@ -114,6 +115,34 @@ runner_run(Instance *inst)
|
||||||
e_util_env_set("E_GADGET_ORIENTATION", "Vertical");
|
e_util_env_set("E_GADGET_ORIENTATION", "Vertical");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (inst->anchor)
|
||||||
|
{
|
||||||
|
if (inst->anchor & E_GADGET_SITE_ANCHOR_TOP)
|
||||||
|
{
|
||||||
|
if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Top,Left");
|
||||||
|
else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Top,Right");
|
||||||
|
else
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Top");
|
||||||
|
}
|
||||||
|
else if (inst->anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
|
||||||
|
{
|
||||||
|
if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Bottom,Left");
|
||||||
|
else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Bottom,Right");
|
||||||
|
else
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Bottom");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Left");
|
||||||
|
else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", "Right");
|
||||||
|
}
|
||||||
|
}
|
||||||
e_util_env_set("E_GADGET_ID", buf);
|
e_util_env_set("E_GADGET_ID", buf);
|
||||||
|
|
||||||
unshare(CLONE_NEWPID);
|
unshare(CLONE_NEWPID);
|
||||||
|
@ -122,12 +151,14 @@ runner_run(Instance *inst)
|
||||||
|
|
||||||
setns(ns_fd, CLONE_NEWPID);
|
setns(ns_fd, CLONE_NEWPID);
|
||||||
|
|
||||||
|
e_util_env_set("E_GADGET_ANCHOR", NULL);
|
||||||
e_util_env_set("E_GADGET_ORIENTATION", NULL);
|
e_util_env_set("E_GADGET_ORIENTATION", NULL);
|
||||||
e_util_env_set("E_GADGET_ID", NULL);
|
e_util_env_set("E_GADGET_ID", NULL);
|
||||||
e_util_env_set("LD_PRELOAD", preload);
|
e_util_env_set("LD_PRELOAD", preload);
|
||||||
free(preload);
|
free(preload);
|
||||||
eina_hash_free_buckets(inst->allowed_pids);
|
eina_hash_free_buckets(inst->allowed_pids);
|
||||||
pid = ecore_exe_pid_get(inst->exe);
|
pid = ecore_exe_pid_get(inst->exe);
|
||||||
|
ecore_exe_data_set(inst->exe, inst);
|
||||||
eina_hash_add(inst->allowed_pids, &pid, (void*)1);
|
eina_hash_add(inst->allowed_pids, &pid, (void*)1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,8 +403,9 @@ static void
|
||||||
runner_site_anchor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
runner_site_anchor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Instance *inst = data;
|
Instance *inst = data;
|
||||||
|
inst->anchor = e_gadget_site_anchor_get(obj);
|
||||||
if (inst->gadget_resource)
|
if (inst->gadget_resource)
|
||||||
e_gadget_send_gadget_anchor(inst->gadget_resource, e_gadget_site_anchor_get(obj));
|
e_gadget_send_gadget_anchor(inst->gadget_resource, inst->anchor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -417,12 +449,14 @@ runner_created(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Instance *inst = data;
|
Instance *inst = data;
|
||||||
if (inst->box != event_info) return;
|
if (inst->box != event_info) return;
|
||||||
|
inst->anchor = e_gadget_site_anchor_get(obj);
|
||||||
e_gadget_configure_cb_set(inst->box, runner_gadget_configure);
|
e_gadget_configure_cb_set(inst->box, runner_gadget_configure);
|
||||||
evas_object_smart_callback_del_full(obj, "gadget_created", runner_created, data);
|
evas_object_smart_callback_del_full(obj, "gadget_created", runner_created, data);
|
||||||
if (e_gadget_site_is_desklock(obj))
|
if (e_gadget_site_is_desklock(obj))
|
||||||
evas_object_show(inst->obj);
|
evas_object_show(inst->obj);
|
||||||
else if (!e_desklock_state_get())
|
else if (!e_desklock_state_get())
|
||||||
evas_object_show(inst->obj);
|
evas_object_show(inst->obj);
|
||||||
|
runner_run(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -861,8 +895,6 @@ gadget_create(Evas_Object *parent, Config_Item *ci, int *id, E_Gadget_Site_Orien
|
||||||
evas_object_smart_callback_add(parent, "gadget_removed", runner_removed, inst);
|
evas_object_smart_callback_add(parent, "gadget_removed", runner_removed, inst);
|
||||||
evas_object_smart_callback_add(parent, "gadget_site_anchor", runner_site_anchor, inst);
|
evas_object_smart_callback_add(parent, "gadget_site_anchor", runner_site_anchor, inst);
|
||||||
evas_object_smart_callback_add(parent, "gadget_site_gravity", runner_site_gravity, inst);
|
evas_object_smart_callback_add(parent, "gadget_site_gravity", runner_site_gravity, inst);
|
||||||
runner_run(inst);
|
|
||||||
ecore_exe_data_set(inst->exe, inst);
|
|
||||||
inst->base.obj = inst->box = elm_box_add(e_comp->elm);
|
inst->base.obj = inst->box = elm_box_add(e_comp->elm);
|
||||||
evas_object_data_set(inst->box, "runner", inst);
|
evas_object_data_set(inst->box, "runner", inst);
|
||||||
evas_object_smart_callback_add(inst->box, "gadget_menu", runner_menu, inst);
|
evas_object_smart_callback_add(inst->box, "gadget_menu", runner_menu, inst);
|
||||||
|
@ -904,10 +936,7 @@ runner_exe_del(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Exe_Event_Del *ev)
|
||||||
if (ev->exit_code == 255) //exec error
|
if (ev->exit_code == 255) //exec error
|
||||||
e_gadget_del(inst->box);
|
e_gadget_del(inst->box);
|
||||||
else
|
else
|
||||||
{
|
|
||||||
runner_run(inst);
|
runner_run(inst);
|
||||||
ecore_exe_data_set(inst->exe, inst);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case EXIT_MODE_DELETE:
|
case EXIT_MODE_DELETE:
|
||||||
e_gadget_del(inst->box);
|
e_gadget_del(inst->box);
|
||||||
|
|
Loading…
Reference in New Issue