forked from enlightenment/enlightenment
add frame object selection ability - broke move of the framed "ibar" test.
need to fix framed gadcon clients to account for frame size. SVN revision: 21807
This commit is contained in:
parent
5828935a95
commit
cc6b6a326c
|
@ -1,6 +1,8 @@
|
||||||
images {
|
images {
|
||||||
image: "e17_shelf_bg_h.png" COMP;
|
image: "e17_shelf_bg_h.png" COMP;
|
||||||
image: "e17_shelf_sh_h.png" COMP;
|
image: "e17_shelf_sh_h.png" COMP;
|
||||||
|
image: "e17_ibar_bg_h.png" COMP;
|
||||||
|
image: "e17_ibar_over_h.png" COMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
group {
|
group {
|
||||||
|
@ -112,3 +114,76 @@ group {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
group {
|
||||||
|
name: "shelf/default/inset";
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "background";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
to: "overlay";
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "overlay";
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "e17_ibar_bg_h.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
fill {
|
||||||
|
smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "items_clip";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
to: "background";
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "background";
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "items";
|
||||||
|
type: SWALLOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "items_clip";
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "overlay";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
image {
|
||||||
|
normal: "e17_ibar_over_h.png";
|
||||||
|
border: 13 13 13 13;
|
||||||
|
middle: 0;
|
||||||
|
}
|
||||||
|
fill {
|
||||||
|
smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -38,7 +38,6 @@ static E_Config_DD *_e_config_color_class_edd = NULL;
|
||||||
static E_Config_DD *_e_config_gadcon_edd = NULL;
|
static E_Config_DD *_e_config_gadcon_edd = NULL;
|
||||||
static E_Config_DD *_e_config_gadcon_client_edd = NULL;
|
static E_Config_DD *_e_config_gadcon_client_edd = NULL;
|
||||||
static E_Config_DD *_e_config_shelf_edd = NULL;
|
static E_Config_DD *_e_config_shelf_edd = NULL;
|
||||||
static E_Config_DD *_e_config_shelf_config_edd = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
|
@ -90,6 +89,8 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, geom.pos, INT);
|
E_CONFIG_VAL(D, T, geom.pos, INT);
|
||||||
E_CONFIG_VAL(D, T, geom.size, INT);
|
E_CONFIG_VAL(D, T, geom.size, INT);
|
||||||
E_CONFIG_VAL(D, T, geom.res, INT);
|
E_CONFIG_VAL(D, T, geom.res, INT);
|
||||||
|
E_CONFIG_VAL(D, T, style, STR);
|
||||||
|
E_CONFIG_VAL(D, T, autoscroll, UCHAR);
|
||||||
|
|
||||||
_e_config_gadcon_edd = E_CONFIG_DD_NEW("E_Config_Gadcon", E_Config_Gadcon);
|
_e_config_gadcon_edd = E_CONFIG_DD_NEW("E_Config_Gadcon", E_Config_Gadcon);
|
||||||
#undef T
|
#undef T
|
||||||
|
@ -100,22 +101,6 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, id, STR);
|
E_CONFIG_VAL(D, T, id, STR);
|
||||||
E_CONFIG_LIST(D, T, clients, _e_config_gadcon_client_edd);
|
E_CONFIG_LIST(D, T, clients, _e_config_gadcon_client_edd);
|
||||||
|
|
||||||
_e_config_shelf_config_edd = E_CONFIG_DD_NEW("E_Config_Shelf_Config", E_Config_Shelf_Config);
|
|
||||||
#undef T
|
|
||||||
#undef D
|
|
||||||
#define T E_Config_Shelf_Config
|
|
||||||
#define D _e_config_shelf_config_edd
|
|
||||||
E_CONFIG_VAL(D, T, res.w, INT);
|
|
||||||
E_CONFIG_VAL(D, T, res.h, INT);
|
|
||||||
E_CONFIG_VAL(D, T, x, INT);
|
|
||||||
E_CONFIG_VAL(D, T, y, INT);
|
|
||||||
E_CONFIG_VAL(D, T, w, INT);
|
|
||||||
E_CONFIG_VAL(D, T, h, INT);
|
|
||||||
E_CONFIG_VAL(D, T, orient, INT);
|
|
||||||
E_CONFIG_VAL(D, T, style, STR);
|
|
||||||
E_CONFIG_VAL(D, T, fit_along, UCHAR);
|
|
||||||
E_CONFIG_VAL(D, T, fit_size, UCHAR);
|
|
||||||
|
|
||||||
_e_config_shelf_edd = E_CONFIG_DD_NEW("E_Config_Shelf", E_Config_Shelf);
|
_e_config_shelf_edd = E_CONFIG_DD_NEW("E_Config_Shelf", E_Config_Shelf);
|
||||||
#undef T
|
#undef T
|
||||||
#undef D
|
#undef D
|
||||||
|
@ -126,7 +111,11 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, zone, INT);
|
E_CONFIG_VAL(D, T, zone, INT);
|
||||||
E_CONFIG_VAL(D, T, layer, INT);
|
E_CONFIG_VAL(D, T, layer, INT);
|
||||||
E_CONFIG_VAL(D, T, popup, UCHAR);
|
E_CONFIG_VAL(D, T, popup, UCHAR);
|
||||||
E_CONFIG_LIST(D, T, configs, _e_config_shelf_config_edd);
|
E_CONFIG_VAL(D, T, orient, INT);
|
||||||
|
E_CONFIG_VAL(D, T, fit_along, UCHAR);
|
||||||
|
E_CONFIG_VAL(D, T, fit_size, UCHAR);
|
||||||
|
E_CONFIG_VAL(D, T, style, STR);
|
||||||
|
E_CONFIG_VAL(D, T, size, INT);
|
||||||
|
|
||||||
_e_config_desktop_bg_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Background", E_Config_Desktop_Background);
|
_e_config_desktop_bg_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Background", E_Config_Desktop_Background);
|
||||||
#undef T
|
#undef T
|
||||||
|
@ -1026,10 +1015,14 @@ e_config_init(void)
|
||||||
E_BINDING_MODIFIER_ALT, 0,
|
E_BINDING_MODIFIER_ALT, 0,
|
||||||
"desk_linear_flip_by", "1");
|
"desk_linear_flip_by", "1");
|
||||||
}
|
}
|
||||||
|
IFCFGEND;
|
||||||
|
/* yes - this causes a small leak - i know. it is for testing temporarily x*/
|
||||||
|
e_config->shelves = NULL;
|
||||||
|
e_config->gadcons = NULL;
|
||||||
|
// IFCFG(0x008e); /* the version # where this value(s) was introduced */
|
||||||
#if 1 // this is liable to change
|
#if 1 // this is liable to change
|
||||||
{
|
{
|
||||||
E_Config_Shelf *cf_es;
|
E_Config_Shelf *cf_es;
|
||||||
E_Config_Shelf_Config *cf_escf;
|
|
||||||
|
|
||||||
cf_es = E_NEW(E_Config_Shelf, 1);
|
cf_es = E_NEW(E_Config_Shelf, 1);
|
||||||
cf_es->name = evas_stringshare_add("shelf");
|
cf_es->name = evas_stringshare_add("shelf");
|
||||||
|
@ -1037,20 +1030,12 @@ e_config_init(void)
|
||||||
cf_es->zone = 0;
|
cf_es->zone = 0;
|
||||||
cf_es->popup = 1;
|
cf_es->popup = 1;
|
||||||
cf_es->layer = 200;
|
cf_es->layer = 200;
|
||||||
|
cf_es->orient = E_GADCON_ORIENT_TOP;
|
||||||
|
cf_es->fit_along = 1;
|
||||||
|
cf_es->fit_size = 0;
|
||||||
|
cf_es->style = evas_stringshare_add("default");
|
||||||
|
cf_es->size = 40;
|
||||||
e_config->shelves = evas_list_append(e_config->shelves, cf_es);
|
e_config->shelves = evas_list_append(e_config->shelves, cf_es);
|
||||||
|
|
||||||
cf_escf = E_NEW(E_Config_Shelf_Config, 1);
|
|
||||||
cf_escf->res.w = 800;
|
|
||||||
cf_escf->res.h = 600;
|
|
||||||
cf_escf->x = 0;
|
|
||||||
cf_escf->y = 0;
|
|
||||||
cf_escf->w = 800;
|
|
||||||
cf_escf->h = 40;
|
|
||||||
cf_escf->orient = E_GADCON_ORIENT_TOP;
|
|
||||||
cf_escf->fit_along = 1;
|
|
||||||
cf_escf->fit_size = 0;
|
|
||||||
cf_escf->style = evas_stringshare_add("default");
|
|
||||||
cf_es->configs = evas_list_append(cf_es->configs, cf_escf);
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
E_Config_Gadcon *cf_gc;
|
E_Config_Gadcon *cf_gc;
|
||||||
|
@ -1067,6 +1052,8 @@ e_config_init(void)
|
||||||
cf_gcc->geom.res = 800;
|
cf_gcc->geom.res = 800;
|
||||||
cf_gcc->geom.size = 200;
|
cf_gcc->geom.size = 200;
|
||||||
cf_gcc->geom.pos = 400 - (cf_gcc->geom.size / 2);
|
cf_gcc->geom.pos = 400 - (cf_gcc->geom.size / 2);
|
||||||
|
cf_gcc->style = evas_stringshare_add("inset");
|
||||||
|
cf_gcc->autoscroll = 0;
|
||||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||||
|
|
||||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||||
|
@ -1075,6 +1062,8 @@ e_config_init(void)
|
||||||
cf_gcc->geom.res = 800;
|
cf_gcc->geom.res = 800;
|
||||||
cf_gcc->geom.size = 32;
|
cf_gcc->geom.size = 32;
|
||||||
cf_gcc->geom.pos = 800 - (cf_gcc->geom.size);
|
cf_gcc->geom.pos = 800 - (cf_gcc->geom.size);
|
||||||
|
cf_gcc->style = NULL;
|
||||||
|
cf_gcc->autoscroll = 0;
|
||||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||||
|
|
||||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||||
|
@ -1083,10 +1072,12 @@ e_config_init(void)
|
||||||
cf_gcc->geom.res = 800;
|
cf_gcc->geom.res = 800;
|
||||||
cf_gcc->geom.size = 32;
|
cf_gcc->geom.size = 32;
|
||||||
cf_gcc->geom.pos = 0;
|
cf_gcc->geom.pos = 0;
|
||||||
|
cf_gcc->style = NULL;
|
||||||
|
cf_gcc->autoscroll = 0;
|
||||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
IFCFGEND;
|
// IFCFGEND;
|
||||||
|
|
||||||
#if 0 /* example of new config */
|
#if 0 /* example of new config */
|
||||||
IFCFG(0x008e); /* the version # where this value(s) was introduced */
|
IFCFG(0x008e); /* the version # where this value(s) was introduced */
|
||||||
|
@ -1201,7 +1192,6 @@ e_config_shutdown(void)
|
||||||
E_CONFIG_DD_FREE(_e_config_gadcon_edd);
|
E_CONFIG_DD_FREE(_e_config_gadcon_edd);
|
||||||
E_CONFIG_DD_FREE(_e_config_gadcon_client_edd);
|
E_CONFIG_DD_FREE(_e_config_gadcon_client_edd);
|
||||||
E_CONFIG_DD_FREE(_e_config_shelf_edd);
|
E_CONFIG_DD_FREE(_e_config_shelf_edd);
|
||||||
E_CONFIG_DD_FREE(_e_config_shelf_config_edd);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ typedef struct _E_Config_Desktop_Name E_Config_Desktop_Name;
|
||||||
typedef struct _E_Config_Gadcon E_Config_Gadcon;
|
typedef struct _E_Config_Gadcon E_Config_Gadcon;
|
||||||
typedef struct _E_Config_Gadcon_Client E_Config_Gadcon_Client;
|
typedef struct _E_Config_Gadcon_Client E_Config_Gadcon_Client;
|
||||||
typedef struct _E_Config_Shelf E_Config_Shelf;
|
typedef struct _E_Config_Shelf E_Config_Shelf;
|
||||||
typedef struct _E_Config_Shelf_Config E_Config_Shelf_Config;
|
|
||||||
|
|
||||||
typedef Eet_Data_Descriptor E_Config_DD;
|
typedef Eet_Data_Descriptor E_Config_DD;
|
||||||
|
|
||||||
|
@ -316,6 +315,8 @@ struct _E_Config_Gadcon_Client
|
||||||
struct {
|
struct {
|
||||||
int pos, size, res;
|
int pos, size, res;
|
||||||
} geom;
|
} geom;
|
||||||
|
const char *style;
|
||||||
|
unsigned char autoscroll;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _E_Config_Shelf
|
struct _E_Config_Shelf
|
||||||
|
@ -324,19 +325,11 @@ struct _E_Config_Shelf
|
||||||
int container, zone;
|
int container, zone;
|
||||||
int layer;
|
int layer;
|
||||||
unsigned char popup;
|
unsigned char popup;
|
||||||
Evas_List *configs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _E_Config_Shelf_Config
|
|
||||||
{
|
|
||||||
struct {
|
|
||||||
int w, h;
|
|
||||||
} res;
|
|
||||||
int x, y, w, h;
|
|
||||||
int orient;
|
int orient;
|
||||||
const char *style;
|
|
||||||
unsigned char fit_along;
|
unsigned char fit_along;
|
||||||
unsigned char fit_size;
|
unsigned char fit_size;
|
||||||
|
const char *style;
|
||||||
|
int size;
|
||||||
};
|
};
|
||||||
|
|
||||||
EAPI int e_config_init(void);
|
EAPI int e_config_init(void);
|
||||||
|
|
|
@ -8,7 +8,7 @@ static void _e_gadcon_client_free(E_Gadcon_Client *gcc);
|
||||||
|
|
||||||
static void _e_gadcon_client_save(E_Gadcon_Client *gcc);
|
static void _e_gadcon_client_save(E_Gadcon_Client *gcc);
|
||||||
|
|
||||||
static void _e_gadcon_cb_size_request(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
static void _e_gadcon_cb_size_request(void *data, Evas_Object *obj, void *event_info);
|
||||||
static void _e_gadcon_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
static void _e_gadcon_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||||
static void _e_gadcon_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
static void _e_gadcon_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||||
static void _e_gadcon_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
static void _e_gadcon_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||||
|
@ -51,17 +51,17 @@ static Evas_Hash *providers = NULL;
|
||||||
static Evas_List *gadcons = NULL;
|
static Evas_List *gadcons = NULL;
|
||||||
|
|
||||||
static E_Gadcon_Client *
|
static E_Gadcon_Client *
|
||||||
__test(E_Gadcon *gc, char *name, char *id)
|
__test(E_Gadcon *gc, char *name, char *id, char *style)
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
E_Gadcon_Client *gcc;
|
E_Gadcon_Client *gcc;
|
||||||
|
|
||||||
printf("create gadcon client \"%s\" \"%s\" for \"%s\" \"%s\"\n",
|
printf("create gadcon client \"%s\" \"%s\" \"%s\" for \"%s\" \"%s\"\n",
|
||||||
name, id,
|
name, id, style,
|
||||||
gc->name, gc->id);
|
gc->name, gc->id);
|
||||||
o = evas_object_rectangle_add(gc->evas);
|
o = evas_object_rectangle_add(gc->evas);
|
||||||
evas_object_color_set(o, rand() & 0xff, rand() & 0xff, rand() & 0xff, 150);
|
evas_object_color_set(o, rand() & 0xff, rand() & 0xff, rand() & 0xff, 150);
|
||||||
gcc = e_gadcon_client_new(gc, name, id, o);
|
gcc = e_gadcon_client_new(gc, name, id, style, o);
|
||||||
gcc->data = NULL; // this is where a module would hook private data
|
gcc->data = NULL; // this is where a module would hook private data
|
||||||
return gcc;
|
return gcc;
|
||||||
}
|
}
|
||||||
|
@ -181,6 +181,16 @@ e_gadcon_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gad
|
||||||
gc->resize_request.data = data;
|
gc->resize_request.data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_gadcon_frame_request_callback_set(E_Gadcon *gc, Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char *style), void *data)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(gc);
|
||||||
|
E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE);
|
||||||
|
|
||||||
|
gc->frame_request.func = func;
|
||||||
|
gc->frame_request.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy)
|
e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy)
|
||||||
{
|
{
|
||||||
|
@ -227,17 +237,24 @@ e_gadcon_populate(E_Gadcon *gc)
|
||||||
{
|
{
|
||||||
E_Gadcon_Client *gcc;
|
E_Gadcon_Client *gcc;
|
||||||
|
|
||||||
gcc = cc->func.init(gc, cf_gcc->name, cf_gcc->id);
|
gcc = cc->func.init(gc, cf_gcc->name, cf_gcc->id,
|
||||||
|
cf_gcc->style);
|
||||||
if (gcc)
|
if (gcc)
|
||||||
{
|
{
|
||||||
gcc->client_class = *cc;
|
gcc->client_class = *cc;
|
||||||
gcc->config.pos = cf_gcc->geom.pos;
|
gcc->config.pos = cf_gcc->geom.pos;
|
||||||
gcc->config.size = cf_gcc->geom.size;
|
gcc->config.size = cf_gcc->geom.size;
|
||||||
gcc->config.res = cf_gcc->geom.res;
|
gcc->config.res = cf_gcc->geom.res;
|
||||||
e_gadcon_layout_pack_options_set(gcc->o_base,
|
if (gcc->o_frame)
|
||||||
gcc->config.pos,
|
e_gadcon_layout_pack_options_set(gcc->o_frame,
|
||||||
gcc->config.size,
|
gcc->config.pos,
|
||||||
gcc->config.res);
|
gcc->config.size,
|
||||||
|
gcc->config.res);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_options_set(gcc->o_base,
|
||||||
|
gcc->config.pos,
|
||||||
|
gcc->config.size,
|
||||||
|
gcc->config.res);
|
||||||
if (gcc->client_class.func.orient)
|
if (gcc->client_class.func.orient)
|
||||||
gcc->client_class.func.orient(gcc);
|
gcc->client_class.func.orient(gcc);
|
||||||
}
|
}
|
||||||
|
@ -372,7 +389,7 @@ e_gadcon_canvas_zone_geometry_get(E_Gadcon *gc, int *x, int *y, int *w, int *h)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI E_Gadcon_Client *
|
EAPI E_Gadcon_Client *
|
||||||
e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, Evas_Object *base_obj)
|
e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, char *style, Evas_Object *base_obj)
|
||||||
{
|
{
|
||||||
E_Gadcon_Client *gcc;
|
E_Gadcon_Client *gcc;
|
||||||
|
|
||||||
|
@ -385,7 +402,20 @@ e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, Evas_Object *base_obj)
|
||||||
gcc->name = evas_stringshare_add(name);
|
gcc->name = evas_stringshare_add(name);
|
||||||
gcc->id = evas_stringshare_add(id);
|
gcc->id = evas_stringshare_add(id);
|
||||||
gc->clients = evas_list_append(gc->clients, gcc);
|
gc->clients = evas_list_append(gc->clients, gcc);
|
||||||
e_gadcon_layout_pack(gc->o_container, gcc->o_base);
|
if ((gc->frame_request.func) && (style))
|
||||||
|
{
|
||||||
|
gcc->o_frame = gc->frame_request.func(gc->frame_request.data, gcc,
|
||||||
|
style);
|
||||||
|
if (gcc->o_frame)
|
||||||
|
{
|
||||||
|
edje_object_part_swallow(gcc->o_frame, "items", gcc->o_base);
|
||||||
|
evas_object_show(gcc->o_frame);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack(gc->o_container, gcc->o_frame);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack(gc->o_container, gcc->o_base);
|
||||||
evas_object_show(gcc->o_base);
|
evas_object_show(gcc->o_base);
|
||||||
return gcc;
|
return gcc;
|
||||||
}
|
}
|
||||||
|
@ -402,7 +432,10 @@ e_gadcon_client_edit_begin(E_Gadcon_Client *gcc)
|
||||||
|
|
||||||
gcc->o_control = edje_object_add(gcc->gadcon->evas);
|
gcc->o_control = edje_object_add(gcc->gadcon->evas);
|
||||||
evas_object_layer_set(gcc->o_control, 100);
|
evas_object_layer_set(gcc->o_control, 100);
|
||||||
evas_object_geometry_get(gcc->o_base, &x, &y, &w, &h);
|
if (gcc->o_frame)
|
||||||
|
evas_object_geometry_get(gcc->o_frame, &x, &y, &w, &h);
|
||||||
|
else
|
||||||
|
evas_object_geometry_get(gcc->o_base, &x, &y, &w, &h);
|
||||||
evas_object_move(gcc->o_control, x, y);
|
evas_object_move(gcc->o_control, x, y);
|
||||||
evas_object_resize(gcc->o_control, w, h);
|
evas_object_resize(gcc->o_control, w, h);
|
||||||
e_theme_edje_object_set(gcc->o_control, "base/theme/gadman",
|
e_theme_edje_object_set(gcc->o_control, "base/theme/gadman",
|
||||||
|
@ -467,6 +500,10 @@ e_gadcon_client_edit_end(E_Gadcon_Client *gcc)
|
||||||
{
|
{
|
||||||
E_OBJECT_CHECK(gcc);
|
E_OBJECT_CHECK(gcc);
|
||||||
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
||||||
|
|
||||||
|
evas_object_event_callback_del(gcc->o_base, EVAS_CALLBACK_MOVE, _e_gadcon_cb_move);
|
||||||
|
evas_object_event_callback_del(gcc->o_base, EVAS_CALLBACK_RESIZE, _e_gadcon_cb_resize);
|
||||||
|
|
||||||
if (gcc->moving)
|
if (gcc->moving)
|
||||||
{
|
{
|
||||||
gcc->moving = 0;
|
gcc->moving = 0;
|
||||||
|
@ -488,12 +525,18 @@ e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h)
|
||||||
case E_GADCON_ORIENT_HORIZ:
|
case E_GADCON_ORIENT_HORIZ:
|
||||||
case E_GADCON_ORIENT_TOP:
|
case E_GADCON_ORIENT_TOP:
|
||||||
case E_GADCON_ORIENT_BOTTOM:
|
case E_GADCON_ORIENT_BOTTOM:
|
||||||
e_gadcon_layout_pack_size_set(gcc->o_base, w);
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack_size_set(gcc->o_frame, w);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_size_set(gcc->o_base, w);
|
||||||
break;
|
break;
|
||||||
case E_GADCON_ORIENT_VERT:
|
case E_GADCON_ORIENT_VERT:
|
||||||
case E_GADCON_ORIENT_LEFT:
|
case E_GADCON_ORIENT_LEFT:
|
||||||
case E_GADCON_ORIENT_RIGHT:
|
case E_GADCON_ORIENT_RIGHT:
|
||||||
e_gadcon_layout_pack_size_set(gcc->o_base, h);
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack_size_set(gcc->o_frame, h);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_size_set(gcc->o_base, h);
|
||||||
break;
|
break;
|
||||||
case E_GADCON_ORIENT_FLOAT:
|
case E_GADCON_ORIENT_FLOAT:
|
||||||
case E_GADCON_ORIENT_CORNER_TL:
|
case E_GADCON_ORIENT_CORNER_TL:
|
||||||
|
@ -510,7 +553,10 @@ e_gadcon_client_min_size_set(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h)
|
||||||
{
|
{
|
||||||
E_OBJECT_CHECK(gcc);
|
E_OBJECT_CHECK(gcc);
|
||||||
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
||||||
e_gadcon_layout_pack_min_size_set(gcc->o_base, w, h);
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack_min_size_set(gcc->o_frame, w, h);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_min_size_set(gcc->o_base, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -518,7 +564,10 @@ e_gadcon_client_aspect_set(E_Gadcon_Client *gcc, int w, int h)
|
||||||
{
|
{
|
||||||
E_OBJECT_CHECK(gcc);
|
E_OBJECT_CHECK(gcc);
|
||||||
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
||||||
e_gadcon_layout_pack_aspect_set(gcc->o_base, w, h);
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack_aspect_set(gcc->o_frame, w, h);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_aspect_set(gcc->o_base, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
@ -536,7 +585,9 @@ _e_gadcon_free(E_Gadcon *gc)
|
||||||
static void
|
static void
|
||||||
_e_gadcon_client_free(E_Gadcon_Client *gcc)
|
_e_gadcon_client_free(E_Gadcon_Client *gcc)
|
||||||
{
|
{
|
||||||
|
e_gadcon_client_edit_end(gcc);
|
||||||
gcc->gadcon->clients = evas_list_remove(gcc->gadcon->clients, gcc);
|
gcc->gadcon->clients = evas_list_remove(gcc->gadcon->clients, gcc);
|
||||||
|
if (gcc->o_frame) evas_object_del(gcc->o_frame);
|
||||||
evas_stringshare_del(gcc->name);
|
evas_stringshare_del(gcc->name);
|
||||||
evas_stringshare_del(gcc->id);
|
evas_stringshare_del(gcc->id);
|
||||||
free(gcc);
|
free(gcc);
|
||||||
|
@ -598,7 +649,7 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_gadcon_cb_size_request(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
_e_gadcon_cb_size_request(void *data, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
E_Gadcon *gc;
|
E_Gadcon *gc;
|
||||||
|
|
||||||
|
@ -722,7 +773,10 @@ _e_gadcon_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission,
|
||||||
evas_object_geometry_get(gcc->o_base, NULL, NULL, &w, &h);
|
evas_object_geometry_get(gcc->o_base, NULL, NULL, &w, &h);
|
||||||
if (e_gadcon_layout_orientation_get(gcc->gadcon->o_container))
|
if (e_gadcon_layout_orientation_get(gcc->gadcon->o_container))
|
||||||
{
|
{
|
||||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->sx + x, w);
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->sx + x, w);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->sx + x, w);
|
||||||
gcc->config.pos = gcc->sx + x;
|
gcc->config.pos = gcc->sx + x;
|
||||||
gcc->config.size = w;
|
gcc->config.size = w;
|
||||||
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
||||||
|
@ -730,7 +784,10 @@ _e_gadcon_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->sy + y, h);
|
if (gcc->o_frame)
|
||||||
|
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->sy + y, h);
|
||||||
|
else
|
||||||
|
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->sy + y, h);
|
||||||
gcc->config.pos = gcc->sy + y;
|
gcc->config.pos = gcc->sy + y;
|
||||||
gcc->config.size = h;
|
gcc->config.size = h;
|
||||||
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
||||||
|
@ -947,12 +1004,17 @@ static void
|
||||||
e_gadcon_layout_min_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
|
e_gadcon_layout_min_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
|
||||||
{
|
{
|
||||||
E_Smart_Data *sd;
|
E_Smart_Data *sd;
|
||||||
|
/*
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
Evas_Coord tw = 0, th = 0;
|
Evas_Coord tw = 0, th = 0;
|
||||||
|
*/
|
||||||
|
|
||||||
sd = evas_object_smart_data_get(obj);
|
sd = evas_object_smart_data_get(obj);
|
||||||
if (!sd) return;
|
if (!sd) return;
|
||||||
|
|
||||||
|
if (w) *w = sd->minw;
|
||||||
|
if (h) *h = sd->minh;
|
||||||
|
/*
|
||||||
for (l = sd->items; l; l = l->next)
|
for (l = sd->items; l; l = l->next)
|
||||||
{
|
{
|
||||||
E_Gadcon_Layout_Item *bi;
|
E_Gadcon_Layout_Item *bi;
|
||||||
|
@ -973,6 +1035,7 @@ e_gadcon_layout_min_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
|
||||||
}
|
}
|
||||||
if (w) *w = tw;
|
if (w) *w = tw;
|
||||||
if (h) *h = th;
|
if (h) *h = th;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1266,10 +1329,14 @@ _e_gadcon_layout_smart_reconfigure(E_Smart_Data *sd)
|
||||||
if (sd->horizontal)
|
if (sd->horizontal)
|
||||||
{
|
{
|
||||||
bi->ask.size2 = (h * bi->aspect.w) / bi->aspect.h;
|
bi->ask.size2 = (h * bi->aspect.w) / bi->aspect.h;
|
||||||
|
if (bi->ask.size2 > bi->min.w)
|
||||||
|
min += (bi->ask.size2 - bi->min.w);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bi->ask.size2 = (w * bi->aspect.h) / bi->aspect.w;
|
bi->ask.size2 = (w * bi->aspect.h) / bi->aspect.w;
|
||||||
|
if (bi->ask.size2 > bi->min.h)
|
||||||
|
min += (bi->ask.size2 - bi->min.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,10 @@ struct _E_Gadcon
|
||||||
void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||||
void *data;
|
void *data;
|
||||||
} resize_request;
|
} resize_request;
|
||||||
|
struct {
|
||||||
|
Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char *style);
|
||||||
|
void *data;
|
||||||
|
} frame_request;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define GADCON_CLIENT_CLASS_VERSION 1
|
#define GADCON_CLIENT_CLASS_VERSION 1
|
||||||
|
@ -70,7 +74,7 @@ struct _E_Gadcon_Client_Class
|
||||||
int version;
|
int version;
|
||||||
char *name;
|
char *name;
|
||||||
struct {
|
struct {
|
||||||
E_Gadcon_Client *(*init) (E_Gadcon *gc, char *name, char *id);
|
E_Gadcon_Client *(*init) (E_Gadcon *gc, char *name, char *id, char *style);
|
||||||
void (*shutdown) (E_Gadcon_Client *gcc);
|
void (*shutdown) (E_Gadcon_Client *gcc);
|
||||||
void (*orient) (E_Gadcon_Client *gcc);
|
void (*orient) (E_Gadcon_Client *gcc);
|
||||||
} func;
|
} func;
|
||||||
|
@ -83,6 +87,7 @@ struct _E_Gadcon_Client
|
||||||
char *name;
|
char *name;
|
||||||
char *id;
|
char *id;
|
||||||
Evas_Object *o_base;
|
Evas_Object *o_base;
|
||||||
|
Evas_Object *o_frame;
|
||||||
Evas_Object *o_control;
|
Evas_Object *o_control;
|
||||||
Evas_Object *o_event;
|
Evas_Object *o_event;
|
||||||
E_Gadcon_Client_Class client_class;
|
E_Gadcon_Client_Class client_class;
|
||||||
|
@ -102,6 +107,7 @@ EAPI void e_gadcon_provider_unregister(E_Gadcon_Client_Class *cc);
|
||||||
EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, char *id, Evas_Object *obj, char *swallow_name);
|
EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, char *id, Evas_Object *obj, char *swallow_name);
|
||||||
EAPI void e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
EAPI void e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||||
EAPI void e_gadcon_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
|
EAPI void e_gadcon_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
|
||||||
|
EAPI void e_gadcon_frame_request_callback_set(E_Gadcon *gc, Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char *style), void *data);
|
||||||
EAPI void e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy);
|
EAPI void e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy);
|
||||||
EAPI void e_gadcon_populate(E_Gadcon *gc);
|
EAPI void e_gadcon_populate(E_Gadcon *gc);
|
||||||
EAPI void e_gadcon_orient(E_Gadcon *gc, E_Gadcon_Orient orient);
|
EAPI void e_gadcon_orient(E_Gadcon *gc, E_Gadcon_Orient orient);
|
||||||
|
@ -114,7 +120,7 @@ EAPI E_Zone *e_gadcon_zone_get(E_Gadcon *gc);
|
||||||
EAPI void e_gadcon_ecore_evas_set(E_Gadcon *gc, Ecore_Evas *ee);
|
EAPI void e_gadcon_ecore_evas_set(E_Gadcon *gc, Ecore_Evas *ee);
|
||||||
EAPI int e_gadcon_canvas_zone_geometry_get(E_Gadcon *gc, int *x, int *y, int *w, int *h);
|
EAPI int e_gadcon_canvas_zone_geometry_get(E_Gadcon *gc, int *x, int *y, int *w, int *h);
|
||||||
|
|
||||||
EAPI E_Gadcon_Client *e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, Evas_Object *base_obj);
|
EAPI E_Gadcon_Client *e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, char *style, Evas_Object *base_obj);
|
||||||
EAPI void e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h);
|
EAPI void e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h);
|
||||||
EAPI void e_gadcon_client_min_size_set(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h);
|
EAPI void e_gadcon_client_min_size_set(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h);
|
||||||
EAPI void e_gadcon_client_aspect_set(E_Gadcon_Client *gcc, int w, int h);
|
EAPI void e_gadcon_client_aspect_set(E_Gadcon_Client *gcc, int w, int h);
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
static void _e_shelf_free(E_Shelf *es);
|
static void _e_shelf_free(E_Shelf *es);
|
||||||
static void _e_shelf_config_port(E_Config_Shelf_Config *cf1, E_Config_Shelf_Config *cf2);
|
static void _e_shelf_position_calc(E_Shelf *es);
|
||||||
static void _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
static void _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||||
|
static Evas_Object *_e_shelf_gadcon_frame_request(void *data, E_Gadcon_Client *gcc, const char *style);
|
||||||
|
|
||||||
static Evas_List *shelves = NULL;
|
static Evas_List *shelves = NULL;
|
||||||
static int shelf_id = 0;
|
static int shelf_id = 0;
|
||||||
|
@ -38,7 +39,6 @@ e_shelf_config_init(void)
|
||||||
for (l = e_config->shelves; l; l = l->next)
|
for (l = e_config->shelves; l; l = l->next)
|
||||||
{
|
{
|
||||||
E_Config_Shelf *cf_es;
|
E_Config_Shelf *cf_es;
|
||||||
E_Config_Shelf_Config *cf_escf, *cf_escf2;
|
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
int closeness;
|
int closeness;
|
||||||
|
|
||||||
|
@ -46,60 +46,17 @@ e_shelf_config_init(void)
|
||||||
zone = e_util_container_zone_number_get(cf_es->container, cf_es->zone);
|
zone = e_util_container_zone_number_get(cf_es->container, cf_es->zone);
|
||||||
if (zone)
|
if (zone)
|
||||||
{
|
{
|
||||||
cf_escf2 = NULL;
|
E_Shelf *es;
|
||||||
closeness = 0x7fffffff;
|
|
||||||
for (l2 = cf_es->configs; l2; l2 = l2->next)
|
es = e_shelf_zone_new(zone, cf_es->name, cf_es->style,
|
||||||
|
cf_es->popup, cf_es->layer);
|
||||||
|
if (es)
|
||||||
{
|
{
|
||||||
cf_escf = l2->data;
|
es->cfg = cf_es;
|
||||||
if ((cf_escf->res.w == zone->w) &&
|
e_shelf_orient(es, cf_es->orient);
|
||||||
(cf_escf->res.h == zone->h))
|
_e_shelf_position_calc(es);
|
||||||
{
|
e_shelf_populate(es);
|
||||||
cf_escf2 = cf_escf;
|
e_shelf_show(es);
|
||||||
closeness = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int difx, dify;
|
|
||||||
|
|
||||||
difx = cf_escf->res.w - zone->w;
|
|
||||||
if (difx < 0) difx = -difx;
|
|
||||||
dify = cf_escf->res.h - zone->h;
|
|
||||||
if (dify < 0) dify = -dify;
|
|
||||||
difx = difx * dify;
|
|
||||||
if (difx < closeness)
|
|
||||||
{
|
|
||||||
closeness = difx;
|
|
||||||
cf_escf2 = cf_escf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((closeness != 0) && (cf_escf2))
|
|
||||||
{
|
|
||||||
cf_escf = E_NEW(E_Config_Shelf_Config, 1);
|
|
||||||
cf_escf->res.w = zone->w;
|
|
||||||
cf_escf->res.h = zone->h;
|
|
||||||
cf_escf->orient = cf_escf2->orient;
|
|
||||||
cf_escf->style = evas_stringshare_add(cf_escf2->style);
|
|
||||||
_e_shelf_config_port(cf_escf2, cf_escf);
|
|
||||||
cf_escf2 = cf_escf;
|
|
||||||
e_config_save_queue();
|
|
||||||
}
|
|
||||||
if (cf_escf2)
|
|
||||||
{
|
|
||||||
E_Shelf *es;
|
|
||||||
|
|
||||||
es = e_shelf_zone_new(zone, cf_es->name, cf_escf2->style,
|
|
||||||
cf_es->popup, cf_es->layer);
|
|
||||||
if (es)
|
|
||||||
{
|
|
||||||
es->cfg = cf_es;
|
|
||||||
e_shelf_move_resize(es, cf_escf2->x, cf_escf2->y,
|
|
||||||
cf_escf2->w, cf_escf2->h);
|
|
||||||
e_shelf_orient(es, cf_escf2->orient);
|
|
||||||
e_shelf_populate(es);
|
|
||||||
e_shelf_show(es);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -156,8 +113,12 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
|
||||||
snprintf(buf, sizeof(buf), "%i", shelf_id);
|
snprintf(buf, sizeof(buf), "%i", shelf_id);
|
||||||
shelf_id++;
|
shelf_id++;
|
||||||
es->gadcon = e_gadcon_swallowed_new(es->name, buf, es->o_base, "items");
|
es->gadcon = e_gadcon_swallowed_new(es->name, buf, es->o_base, "items");
|
||||||
e_gadcon_size_request_callback_set(es->gadcon, _e_shelf_gadcon_size_request,
|
e_gadcon_size_request_callback_set(es->gadcon,
|
||||||
|
_e_shelf_gadcon_size_request,
|
||||||
es);
|
es);
|
||||||
|
e_gadcon_frame_request_callback_set(es->gadcon,
|
||||||
|
_e_shelf_gadcon_frame_request,
|
||||||
|
es);
|
||||||
e_gadcon_orient(es->gadcon, E_GADCON_ORIENT_TOP);
|
e_gadcon_orient(es->gadcon, E_GADCON_ORIENT_TOP);
|
||||||
edje_object_signal_emit(es->o_base, "set_orientation", "top");
|
edje_object_signal_emit(es->o_base, "set_orientation", "top");
|
||||||
e_gadcon_zone_set(es->gadcon, zone);
|
e_gadcon_zone_set(es->gadcon, zone);
|
||||||
|
@ -266,42 +227,13 @@ e_shelf_save(E_Shelf *es)
|
||||||
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
E_OBJECT_TYPE_CHECK(es, E_GADMAN_SHELF_TYPE);
|
||||||
if (es->cfg)
|
if (es->cfg)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
es->cfg->orient = es->gadcon->orient;
|
||||||
E_Config_Shelf_Config *cf_escf = NULL;
|
if (es->cfg->style) evas_stringshare_del(es->cfg->style);
|
||||||
|
es->cfg->style = evas_stringshare_add(es->style);
|
||||||
for (l = es->cfg->configs; l; l = l->next)
|
|
||||||
{
|
|
||||||
cf_escf = l->data;
|
|
||||||
if ((cf_escf->res.w == es->zone->w) &&
|
|
||||||
(cf_escf->res.h == es->zone->h))
|
|
||||||
break;
|
|
||||||
cf_escf = NULL;
|
|
||||||
}
|
|
||||||
if (!cf_escf)
|
|
||||||
{
|
|
||||||
cf_escf = E_NEW(E_Config_Shelf_Config, 1);
|
|
||||||
if (cf_escf)
|
|
||||||
{
|
|
||||||
cf_escf->res.w = es->zone->w;
|
|
||||||
cf_escf->res.h = es->zone->h;
|
|
||||||
es->cfg->configs = evas_list_append(es->cfg->configs, cf_escf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cf_escf)
|
|
||||||
{
|
|
||||||
cf_escf->x = es->x;
|
|
||||||
cf_escf->y = es->y;
|
|
||||||
cf_escf->w = es->w;
|
|
||||||
cf_escf->h = es->h;
|
|
||||||
cf_escf->orient = es->gadcon->orient;
|
|
||||||
if (cf_escf->style) evas_stringshare_del(cf_escf->style);
|
|
||||||
cf_escf->style = evas_stringshare_add(es->style);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
E_Config_Shelf *cf_es;
|
E_Config_Shelf *cf_es;
|
||||||
E_Config_Shelf_Config *cf_escf = NULL;
|
|
||||||
|
|
||||||
cf_es = E_NEW(E_Config_Shelf, 1);
|
cf_es = E_NEW(E_Config_Shelf, 1);
|
||||||
cf_es->name = evas_stringshare_add(es->name);
|
cf_es->name = evas_stringshare_add(es->name);
|
||||||
|
@ -310,18 +242,11 @@ e_shelf_save(E_Shelf *es)
|
||||||
if (es->popup) cf_es->popup = 1;
|
if (es->popup) cf_es->popup = 1;
|
||||||
cf_es->layer = es->layer;
|
cf_es->layer = es->layer;
|
||||||
e_config->shelves = evas_list_append(e_config->shelves, cf_es);
|
e_config->shelves = evas_list_append(e_config->shelves, cf_es);
|
||||||
|
cf_es->orient = es->gadcon->orient;
|
||||||
|
cf_es->style = evas_stringshare_add(es->style);
|
||||||
|
cf_es->fit_along = es->fit_along;
|
||||||
|
cf_es->fit_size = es->fit_size;
|
||||||
es->cfg = cf_es;
|
es->cfg = cf_es;
|
||||||
|
|
||||||
cf_escf = E_NEW(E_Config_Shelf_Config, 1);
|
|
||||||
cf_escf->res.w = es->zone->w;
|
|
||||||
cf_escf->res.h = es->zone->h;
|
|
||||||
cf_escf->x = es->x;
|
|
||||||
cf_escf->y = es->y;
|
|
||||||
cf_escf->w = es->w;
|
|
||||||
cf_escf->h = es->h;
|
|
||||||
cf_escf->orient = es->gadcon->orient;
|
|
||||||
cf_escf->style = evas_stringshare_add(es->style);
|
|
||||||
cf_es->configs = evas_list_append(cf_es->configs, cf_escf);
|
|
||||||
}
|
}
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
}
|
}
|
||||||
|
@ -335,15 +260,7 @@ e_shelf_unsave(E_Shelf *es)
|
||||||
{
|
{
|
||||||
e_config->shelves = evas_list_remove(e_config->shelves, es->cfg);
|
e_config->shelves = evas_list_remove(e_config->shelves, es->cfg);
|
||||||
evas_stringshare_del(es->cfg->name);
|
evas_stringshare_del(es->cfg->name);
|
||||||
while (es->cfg->configs)
|
if (es->cfg->style) evas_stringshare_del(es->cfg->style);
|
||||||
{
|
|
||||||
E_Config_Shelf_Config *cf_escf;
|
|
||||||
|
|
||||||
cf_escf = es->cfg->configs->data;
|
|
||||||
if (cf_escf->style) evas_stringshare_del(cf_escf->style);
|
|
||||||
free(cf_escf);
|
|
||||||
es->cfg->configs = evas_list_remove_list(es->cfg->configs, es->cfg->configs);
|
|
||||||
}
|
|
||||||
free(es->cfg);
|
free(es->cfg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -408,43 +325,54 @@ _e_shelf_free(E_Shelf *es)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_shelf_config_port(E_Config_Shelf_Config *cf1, E_Config_Shelf_Config *cf2)
|
_e_shelf_position_calc(E_Shelf *es)
|
||||||
{
|
{
|
||||||
int px[4], py[4];
|
E_Gadcon_Orient orient = E_GADCON_ORIENT_FLOAT;
|
||||||
int i;
|
int size = 40;
|
||||||
|
|
||||||
/*
|
if (es->cfg)
|
||||||
* We have 4 corners. figure out what gravity zone (3x3 grid) they are in
|
|
||||||
* then lock them in relative to the edge or middle of that zone and re
|
|
||||||
* calculate it all then.
|
|
||||||
*/
|
|
||||||
px[0] = cf1->x;
|
|
||||||
px[1] = cf1->x + cf1->w - 1;
|
|
||||||
px[2] = cf1->x;
|
|
||||||
px[3] = cf1->x + cf1->w - 1;
|
|
||||||
py[0] = cf1->y;
|
|
||||||
py[1] = cf1->y;
|
|
||||||
py[2] = cf1->y + cf1->h - 1;
|
|
||||||
py[3] = cf1->y + cf1->h - 1;
|
|
||||||
for (i = 0; i < 4; i++)
|
|
||||||
{
|
{
|
||||||
if (px[i] < (cf1->res.w / 3))
|
orient = es->cfg->orient;
|
||||||
px[i] = px[i];
|
size = es->cfg->size;
|
||||||
else if (px[i] > ((2 * cf1->res.w) / 3))
|
|
||||||
px[i] = (cf2->res.w) + (px[i] - cf1->res.w);
|
|
||||||
else
|
|
||||||
px[i] = (cf2->res.w / 2) + (px[i] - (cf1->res.w / 2));
|
|
||||||
if (py[i] < (cf1->res.h / 3))
|
|
||||||
py[i] = py[i];
|
|
||||||
else if (py[i] > ((2 * cf1->res.h) / 3))
|
|
||||||
py[i] = (cf2->res.h) + (py[i] - cf1->res.h);
|
|
||||||
else
|
|
||||||
py[i] = (cf2->res.h / 2) + (py[i] - (cf1->res.h / 2));
|
|
||||||
}
|
}
|
||||||
cf2->x = px[0];
|
else
|
||||||
cf2->y = py[0];
|
orient = es->gadcon->orient;
|
||||||
cf2->w = px[3] - px[0] + 1;
|
switch (orient)
|
||||||
cf2->h = py[3] = py[0] + 1;
|
{
|
||||||
|
case E_GADCON_ORIENT_FLOAT:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_HORIZ:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_VERT:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_LEFT:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_RIGHT:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_TOP:
|
||||||
|
if (!es->fit_along) es->w = es->zone->w;
|
||||||
|
if (!es->fit_size) es->h = size;
|
||||||
|
es->x = (es->zone->w - es->w) / 2;
|
||||||
|
es->y = 0;
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_BOTTOM:
|
||||||
|
if (!es->fit_along) es->w = es->zone->w;
|
||||||
|
if (!es->fit_size) es->h = size;
|
||||||
|
es->x = (es->zone->w - es->w) / 2;
|
||||||
|
es->y = es->zone->h - es->h;
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_CORNER_TL:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_CORNER_TR:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_CORNER_BL:
|
||||||
|
break;
|
||||||
|
case E_GADCON_ORIENT_CORNER_BR:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
e_shelf_move_resize(es, es->x, es->y, es->w, es->h);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -537,3 +465,21 @@ _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord
|
||||||
}
|
}
|
||||||
e_shelf_move_resize(es, nx, ny, nw, nh);
|
e_shelf_move_resize(es, nx, ny, nw, nh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_e_shelf_gadcon_frame_request(void *data, E_Gadcon_Client *gcc, const char *style)
|
||||||
|
{
|
||||||
|
E_Shelf *es;
|
||||||
|
Evas_Object *o;
|
||||||
|
char buf[4096];
|
||||||
|
|
||||||
|
es = data;
|
||||||
|
o = edje_object_add(gcc->gadcon->evas);
|
||||||
|
snprintf(buf, sizeof(buf), "shelf/%s/%s", es->style, style);
|
||||||
|
if (!e_theme_edje_object_set(o, "base/theme/shelf", buf))
|
||||||
|
{
|
||||||
|
evas_object_del(o);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ struct _E_Shelf
|
||||||
E_Config_Shelf *cfg;
|
E_Config_Shelf *cfg;
|
||||||
unsigned char fit_along : 1;
|
unsigned char fit_along : 1;
|
||||||
unsigned char fit_size : 1;
|
unsigned char fit_size : 1;
|
||||||
|
int size;
|
||||||
};
|
};
|
||||||
|
|
||||||
EAPI int e_shelf_init(void);
|
EAPI int e_shelf_init(void);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/**/
|
/**/
|
||||||
/* gadcon requirements */
|
/* gadcon requirements */
|
||||||
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, char *name, char *id);
|
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, char *name, char *id, char *style);
|
||||||
static void _gc_shutdown(E_Gadcon_Client *gcc);
|
static void _gc_shutdown(E_Gadcon_Client *gcc);
|
||||||
static void _gc_orient(E_Gadcon_Client *gcc);
|
static void _gc_orient(E_Gadcon_Client *gcc);
|
||||||
/* and actually define the gadcon class that this module provides (just 1) */
|
/* and actually define the gadcon class that this module provides (just 1) */
|
||||||
|
@ -39,7 +39,7 @@ static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *e
|
||||||
static void _menu_cb_post(void *data, E_Menu *m);
|
static void _menu_cb_post(void *data, E_Menu *m);
|
||||||
|
|
||||||
static E_Gadcon_Client *
|
static E_Gadcon_Client *
|
||||||
_gc_init(E_Gadcon *gc, char *name, char *id)
|
_gc_init(E_Gadcon *gc, char *name, char *id, char *style)
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
E_Gadcon_Client *gcc;
|
E_Gadcon_Client *gcc;
|
||||||
|
@ -52,7 +52,7 @@ _gc_init(E_Gadcon *gc, char *name, char *id)
|
||||||
e_theme_edje_object_set(o, "base/theme/modules/start", "modules/start/main");
|
e_theme_edje_object_set(o, "base/theme/modules/start", "modules/start/main");
|
||||||
edje_object_signal_emit(o, "passive", "");
|
edje_object_signal_emit(o, "passive", "");
|
||||||
|
|
||||||
gcc = e_gadcon_client_new(gc, name, id, o);
|
gcc = e_gadcon_client_new(gc, name, id, style, o);
|
||||||
gcc->data = inst;
|
gcc->data = inst;
|
||||||
|
|
||||||
inst->gcc = gcc;
|
inst->gcc = gcc;
|
||||||
|
@ -85,6 +85,7 @@ _gc_orient(E_Gadcon_Client *gcc)
|
||||||
|
|
||||||
inst = gcc->data;
|
inst = gcc->data;
|
||||||
printf("OREINT to %i\n", gcc->gadcon->orient);
|
printf("OREINT to %i\n", gcc->gadcon->orient);
|
||||||
|
e_gadcon_client_aspect_set(gcc, 20, 20);
|
||||||
e_gadcon_client_min_size_set(gcc, 20, 20);
|
e_gadcon_client_min_size_set(gcc, 20, 20);
|
||||||
}
|
}
|
||||||
/**/
|
/**/
|
||||||
|
|
Loading…
Reference in New Issue