forked from enlightenment/enlightenment
from:
http://trac.enlightenment.org/e/ticket/671 :) tnx kiuma SVN revision: 56044
This commit is contained in:
parent
e0cc1c3149
commit
b835438c0d
|
@ -8,6 +8,8 @@ static void _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu);
|
|||
static void _save_widget_position(E_Gadcon_Client *gcc);
|
||||
static void _apply_widget_position(E_Gadcon_Client *gcc);
|
||||
static char *_get_bind_text(const char* action);
|
||||
static void _on_menu_layer(E_Gadcon_Client *gcc, Gadman_Layer_Type layer);
|
||||
static E_Gadcon_Client *_gadman_gadget_add(const E_Gadcon_Client_Class *cc, Gadman_Layer_Type layer, E_Config_Gadcon_Client *src_cf);
|
||||
|
||||
static Evas_Object* _create_mover(E_Gadcon *gc);
|
||||
static Evas_Object* _get_mover(E_Gadcon_Client *gcc);
|
||||
|
@ -224,6 +226,12 @@ gadman_gadget_place(E_Config_Gadcon_Client *cf, Gadman_Layer_Type layer, E_Zone
|
|||
|
||||
E_Gadcon_Client *
|
||||
gadman_gadget_add(const E_Gadcon_Client_Class *cc, Gadman_Layer_Type layer)
|
||||
{
|
||||
return _gadman_gadget_add(cc, layer, NULL);
|
||||
}
|
||||
|
||||
static E_Gadcon_Client *
|
||||
_gadman_gadget_add(const E_Gadcon_Client_Class *cc, Gadman_Layer_Type layer, E_Config_Gadcon_Client *src_cf)
|
||||
{
|
||||
E_Config_Gadcon_Client *cf = NULL;
|
||||
E_Gadcon_Client *gcc = NULL;
|
||||
|
@ -236,6 +244,8 @@ gadman_gadget_add(const E_Gadcon_Client_Class *cc, Gadman_Layer_Type layer)
|
|||
/* Create Config_Gadcon_Client */
|
||||
cf = e_gadcon_client_config_new(gc, cc->name);
|
||||
if (cf)
|
||||
{
|
||||
if (!src_cf)
|
||||
{
|
||||
cf->style = eina_stringshare_add(cc->default_style);
|
||||
cf->geom.pos_x = DEFAULT_POS_X;
|
||||
|
@ -243,6 +253,15 @@ gadman_gadget_add(const E_Gadcon_Client_Class *cc, Gadman_Layer_Type layer)
|
|||
cf->geom.size_w = DEFAULT_SIZE_W;
|
||||
cf->geom.size_h = DEFAULT_SIZE_H;
|
||||
}
|
||||
else
|
||||
{
|
||||
cf->style = strdup(src_cf->style);
|
||||
cf->geom.pos_x = src_cf->geom.pos_x;
|
||||
cf->geom.pos_y = src_cf->geom.pos_y;
|
||||
cf->geom.size_w = src_cf->geom.size_w;
|
||||
cf->geom.size_h = src_cf->geom.size_h;
|
||||
}
|
||||
}
|
||||
|
||||
/* Place the new gadget */
|
||||
if (cf)
|
||||
|
@ -265,17 +284,6 @@ gadman_gadget_add(const E_Gadcon_Client_Class *cc, Gadman_Layer_Type layer)
|
|||
return gcc;
|
||||
}
|
||||
|
||||
void
|
||||
gadman_gadget_remove(E_Gadcon_Client *gcc, Gadman_Layer_Type layer)
|
||||
{
|
||||
Man->gadgets[layer] = eina_list_remove(Man->gadgets[layer], gcc);
|
||||
|
||||
// edje_object_part_unswallow(gcc->o_frame, gcc->o_base);
|
||||
|
||||
e_object_del(E_OBJECT(gcc));
|
||||
current = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
gadman_gadget_del(E_Gadcon_Client *gcc)
|
||||
{
|
||||
|
@ -987,66 +995,33 @@ on_menu_style_vert(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
|||
}
|
||||
|
||||
static void
|
||||
on_menu_layer_bg(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
_on_menu_layer(E_Gadcon_Client *gcc, Gadman_Layer_Type layer)
|
||||
{
|
||||
const Eina_List *l;
|
||||
const E_Gadcon_Client_Class *cc;
|
||||
|
||||
E_Gadcon_Client *new_gcc;
|
||||
E_Config_Gadcon_Client *cf;
|
||||
E_Gadcon_Client *gcc;
|
||||
E_Gadcon *gc;
|
||||
unsigned int layer;
|
||||
|
||||
if (!current) return;
|
||||
cf = current->cf;
|
||||
gcc = data;
|
||||
cc = gcc->client_class;
|
||||
cf = gcc->cf;
|
||||
|
||||
gadman_gadget_remove(current, GADMAN_LAYER_TOP);
|
||||
current = gadman_gadget_place(cf, GADMAN_LAYER_BG, gcc->gadcon->zone);
|
||||
|
||||
for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++)
|
||||
{
|
||||
EINA_LIST_FOREACH(Man->gadcons[layer], l, gc)
|
||||
{
|
||||
if (gc->zone != current->gadcon->zone) continue;
|
||||
if (layer == GADMAN_LAYER_BG)
|
||||
gc->cf->clients = eina_list_append(gc->cf->clients, cf);
|
||||
else if (layer == GADMAN_LAYER_TOP)
|
||||
gc->cf->clients = eina_list_remove(gc->cf->clients, cf);
|
||||
}
|
||||
}
|
||||
new_gcc = _gadman_gadget_add(cc, layer, cf);
|
||||
gadman_gadget_del(gcc);
|
||||
current = new_gcc;
|
||||
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
on_menu_layer_bg(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
_on_menu_layer(data, GADMAN_LAYER_BG);
|
||||
}
|
||||
|
||||
static void
|
||||
on_menu_layer_top(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
const Eina_List *l;
|
||||
E_Config_Gadcon_Client *cf;
|
||||
E_Gadcon_Client *gcc;
|
||||
E_Gadcon *gc;
|
||||
unsigned int layer;
|
||||
|
||||
if (!current) return;
|
||||
cf = current->cf;
|
||||
gcc = data;
|
||||
|
||||
gadman_gadget_remove(current, GADMAN_LAYER_BG);
|
||||
current = gadman_gadget_place(cf, GADMAN_LAYER_TOP, gcc->gadcon->zone);
|
||||
|
||||
for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++)
|
||||
{
|
||||
EINA_LIST_FOREACH(Man->gadcons[layer], l, gc)
|
||||
{
|
||||
if (gc->zone != current->gadcon->zone) continue;
|
||||
if (layer == GADMAN_LAYER_BG)
|
||||
gc->cf->clients = eina_list_remove(gc->cf->clients, cf);
|
||||
else if (layer == GADMAN_LAYER_TOP)
|
||||
gc->cf->clients = eina_list_append(gc->cf->clients, cf);
|
||||
}
|
||||
}
|
||||
|
||||
e_config_save_queue();
|
||||
|
||||
_on_menu_layer(data, GADMAN_LAYER_TOP);
|
||||
gadman_gadgets_show();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue