forked from enlightenment/enlightenment
buttom patch from lok and seb's shelf bug fix.
SVN revision: 31974
This commit is contained in:
parent
74ddafcfee
commit
43a5794c88
10
TODO
10
TODO
|
@ -8,6 +8,11 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
BUGS / FIXES
|
BUGS / FIXES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
* when VLC goes full screen nothing happens, the main window stays
|
||||||
|
in place and the fullscreen window is invisible... Restart E and the
|
||||||
|
fullscreen window with the movie appears in the background
|
||||||
|
this does happens randomly with kmplayer / gmplayer but everytime with
|
||||||
|
VLC
|
||||||
* screen res change with shaded windows that are bigger than the screen (eg
|
* screen res change with shaded windows that are bigger than the screen (eg
|
||||||
you go from 1600x1200 ro 800x600 and some windows are "temporarily resized"
|
you go from 1600x1200 ro 800x600 and some windows are "temporarily resized"
|
||||||
down doesn't work right. shaded windows get resizes to widthx1 and unshaded
|
down doesn't work right. shaded windows get resizes to widthx1 and unshaded
|
||||||
|
@ -23,9 +28,6 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
trap on the region the shelf would normally be in. also need a way to lock
|
trap on the region the shelf would normally be in. also need a way to lock
|
||||||
the gadcon and thus gadcon asks shelf to lock in (stay visible) for things
|
the gadcon and thus gadcon asks shelf to lock in (stay visible) for things
|
||||||
like popping up menus, popups etc.
|
like popping up menus, popups etc.
|
||||||
* shelves seem to get confused with their contents if you have 3 shelves over
|
|
||||||
2 screens/zones - when you go back to 1 screen form 2, one of the shelves
|
|
||||||
gts the contents from the now non-existant shelf.
|
|
||||||
* gkrellm options to "dont show in pager or taskber" only work if gkrellem is
|
* gkrellm options to "dont show in pager or taskber" only work if gkrellem is
|
||||||
moved to one monitor and back again - doesn't seem to work on e boot/start
|
moved to one monitor and back again - doesn't seem to work on e boot/start
|
||||||
if it is started at e start time
|
if it is started at e start time
|
||||||
|
@ -33,8 +35,6 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
instead of in a straight line
|
instead of in a straight line
|
||||||
* exebuf on other zones doesn't allow mouse to work properly (only
|
* exebuf on other zones doesn't allow mouse to work properly (only
|
||||||
zone/screen 0 works properly)
|
zone/screen 0 works properly)
|
||||||
* Need global unique identifier for gadcons, so that their config will move
|
|
||||||
with them from one shelf to another.
|
|
||||||
]]]
|
]]]
|
||||||
|
|
||||||
[[[
|
[[[
|
||||||
|
|
|
@ -78,7 +78,7 @@ group {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
description {
|
description {
|
||||||
state: "visible" 0.0;
|
state: "combo" 0.0;
|
||||||
inherit: "default" 0.0;
|
inherit: "default" 0.0;
|
||||||
aspect: 1.0 1.0;
|
aspect: 1.0 1.0;
|
||||||
aspect_preference: VERTICAL;
|
aspect_preference: VERTICAL;
|
||||||
|
@ -94,6 +94,23 @@ group {
|
||||||
to: "button_image";
|
to: "button_image";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
description {
|
||||||
|
state: "icon" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
aspect: 1.0 1.0;
|
||||||
|
aspect_preference: BOTH;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 8 8;
|
||||||
|
to: "button_image";
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -9 -9;
|
||||||
|
to: "button_image";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
part {
|
part {
|
||||||
name: "e.text.label";
|
name: "e.text.label";
|
||||||
|
@ -117,7 +134,7 @@ group {
|
||||||
color3: 255 255 255 128;
|
color3: 255 255 255 128;
|
||||||
color_class: "button_text";
|
color_class: "button_text";
|
||||||
text {
|
text {
|
||||||
text: "OK";
|
text: "";
|
||||||
font: "Edje-Vera";
|
font: "Edje-Vera";
|
||||||
size: 10;
|
size: 10;
|
||||||
min: 1 1;
|
min: 1 1;
|
||||||
|
@ -132,6 +149,11 @@ group {
|
||||||
color3: 255 255 255 64;
|
color3: 255 255 255 64;
|
||||||
color_class: "button_text_disabled";
|
color_class: "button_text_disabled";
|
||||||
}
|
}
|
||||||
|
description {
|
||||||
|
state: "icon" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
part {
|
part {
|
||||||
name: "glint_clip";
|
name: "glint_clip";
|
||||||
|
@ -330,18 +352,28 @@ group {
|
||||||
action: SIGNAL_EMIT "e,action,click" "";
|
action: SIGNAL_EMIT "e,action,click" "";
|
||||||
}
|
}
|
||||||
program {
|
program {
|
||||||
name: "icon_visible";
|
name: "text_state";
|
||||||
signal: "e,action,show,icon";
|
signal: "e,state,text";
|
||||||
source: "e";
|
|
||||||
action: STATE_SET "visible" 0.0;
|
|
||||||
target: "e.swallow.icon";
|
|
||||||
}
|
|
||||||
program {
|
|
||||||
name: "icon_invisible";
|
|
||||||
signal: "e,action,hide,icon";
|
|
||||||
source: "e";
|
source: "e";
|
||||||
action: STATE_SET "default" 0.0;
|
action: STATE_SET "default" 0.0;
|
||||||
target: "e.swallow.icon";
|
target: "e.swallow.icon";
|
||||||
|
target: "e.text.label";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "icon_state";
|
||||||
|
signal: "e,state,icon";
|
||||||
|
source: "e";
|
||||||
|
action: STATE_SET "icon" 0.0;
|
||||||
|
target: "e.swallow.icon";
|
||||||
|
target: "e.text.label";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "combo_state";
|
||||||
|
signal: "e,state,combo";
|
||||||
|
source: "e";
|
||||||
|
action: STATE_SET "combo" 0.0;
|
||||||
|
target: "e.swallow.icon";
|
||||||
|
target: "e.text.label";
|
||||||
}
|
}
|
||||||
program {
|
program {
|
||||||
name: "button_in";
|
name: "button_in";
|
||||||
|
|
|
@ -107,7 +107,7 @@ e_config_init(void)
|
||||||
#define T E_Config_Gadcon
|
#define T E_Config_Gadcon
|
||||||
#define D _e_config_gadcon_edd
|
#define D _e_config_gadcon_edd
|
||||||
E_CONFIG_VAL(D, T, name, STR);
|
E_CONFIG_VAL(D, T, name, STR);
|
||||||
E_CONFIG_VAL(D, T, id, STR);
|
E_CONFIG_VAL(D, T, id, INT);
|
||||||
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_desk_edd = E_CONFIG_DD_NEW("E_Config_Shelf_Desk", E_Config_Shelf_Desk);
|
_e_config_shelf_desk_edd = E_CONFIG_DD_NEW("E_Config_Shelf_Desk", E_Config_Shelf_Desk);
|
||||||
|
@ -124,6 +124,7 @@ e_config_init(void)
|
||||||
#define T E_Config_Shelf
|
#define T E_Config_Shelf
|
||||||
#define D _e_config_shelf_edd
|
#define D _e_config_shelf_edd
|
||||||
E_CONFIG_VAL(D, T, name, STR);
|
E_CONFIG_VAL(D, T, name, STR);
|
||||||
|
E_CONFIG_VAL(D, T, id, INT);
|
||||||
E_CONFIG_VAL(D, T, container, INT);
|
E_CONFIG_VAL(D, T, container, INT);
|
||||||
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);
|
||||||
|
@ -1231,10 +1232,12 @@ e_config_init(void)
|
||||||
e_config->gadcons = NULL;
|
e_config->gadcons = NULL;
|
||||||
{
|
{
|
||||||
E_Config_Shelf *cf_es;
|
E_Config_Shelf *cf_es;
|
||||||
|
int id = 0;
|
||||||
|
|
||||||
#define CFG_SHELF(_name, _con, _zone, _pop, _lay, _orient, _fita, _fits, _style, _size, _overlap, _autohide, _autohide_show_action, _hide_timeout, _hide_duration, _desk_show_mode, _desk_list) \
|
#define CFG_SHELF(_name, _con, _zone, _pop, _lay, _orient, _fita, _fits, _style, _size, _overlap, _autohide, _autohide_show_action, _hide_timeout, _hide_duration, _desk_show_mode, _desk_list) \
|
||||||
cf_es = E_NEW(E_Config_Shelf, 1); \
|
cf_es = E_NEW(E_Config_Shelf, 1); \
|
||||||
cf_es->name = evas_stringshare_add(_name); \
|
cf_es->name = evas_stringshare_add(_name); \
|
||||||
|
cf_es->id = ++id; \
|
||||||
cf_es->container = _con; \
|
cf_es->container = _con; \
|
||||||
cf_es->zone = _zone; \
|
cf_es->zone = _zone; \
|
||||||
cf_es->popup = _pop; \
|
cf_es->popup = _pop; \
|
||||||
|
@ -1252,20 +1255,9 @@ e_config_init(void)
|
||||||
cf_es->desk_show_mode = _desk_show_mode; \
|
cf_es->desk_show_mode = _desk_show_mode; \
|
||||||
cf_es->desk_list = evas_list_append(cf_es->desk_list, cf_es); \
|
cf_es->desk_list = evas_list_append(cf_es->desk_list, cf_es); \
|
||||||
e_config->shelves = evas_list_append(e_config->shelves, cf_es)
|
e_config->shelves = evas_list_append(e_config->shelves, cf_es)
|
||||||
/* shelves for 4 zones on head 0 by default */
|
|
||||||
CFG_SHELF("shelf", 0, 0,
|
CFG_SHELF("shelf", 0, 0,
|
||||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||||
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
||||||
CFG_SHELF("shelf", 0, 1,
|
|
||||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
|
||||||
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
|
||||||
CFG_SHELF("shelf", 0, 2,
|
|
||||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
|
||||||
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
|
||||||
CFG_SHELF("shelf", 0, 3,
|
|
||||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
|
||||||
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
|
||||||
/* shelves for heada 1, 2, and 3 by default */
|
|
||||||
CFG_SHELF("shelf", 1, 0,
|
CFG_SHELF("shelf", 1, 0,
|
||||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||||
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
|
||||||
|
@ -1346,16 +1338,17 @@ e_config_init(void)
|
||||||
e_config->desklock_custom_desklock_cmd = NULL;
|
e_config->desklock_custom_desklock_cmd = NULL;
|
||||||
IFCFGEND;
|
IFCFGEND;
|
||||||
|
|
||||||
IFCFG(0x0107); /* the version # where this value(s) was introduced */
|
IFCFG(0x0121);
|
||||||
{
|
{
|
||||||
E_Config_Gadcon *cf_gc;
|
E_Config_Gadcon *cf_gc;
|
||||||
E_Config_Gadcon_Client *cf_gcc;
|
E_Config_Gadcon_Client *cf_gcc;
|
||||||
|
int id = 0;
|
||||||
|
|
||||||
e_config->gadcons = NULL;
|
e_config->gadcons = NULL;
|
||||||
#define CFG_GADCON(_name, _id) \
|
#define CFG_GADCON(_name) \
|
||||||
cf_gc = E_NEW(E_Config_Gadcon, 1);\
|
cf_gc = E_NEW(E_Config_Gadcon, 1);\
|
||||||
cf_gc->name = evas_stringshare_add(_name); \
|
cf_gc->name = evas_stringshare_add(_name); \
|
||||||
cf_gc->id = evas_stringshare_add(_id); \
|
cf_gc->id = ++id; \
|
||||||
e_config->gadcons = evas_list_append(e_config->gadcons, cf_gc)
|
e_config->gadcons = evas_list_append(e_config->gadcons, cf_gc)
|
||||||
#define CFG_GADCON_CLIENT(_name, _res, _size, _pos, _style, _autoscr, _resizable) \
|
#define CFG_GADCON_CLIENT(_name, _res, _size, _pos, _style, _autoscr, _resizable) \
|
||||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1); \
|
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1); \
|
||||||
|
@ -1373,7 +1366,7 @@ e_config_init(void)
|
||||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc)
|
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc)
|
||||||
|
|
||||||
/* the default shelf on the default head/zone */
|
/* the default shelf on the default head/zone */
|
||||||
CFG_GADCON("shelf", "0");
|
CFG_GADCON("shelf");
|
||||||
CFG_GADCON_CLIENT("start", 800, 32,
|
CFG_GADCON_CLIENT("start", 800, 32,
|
||||||
0, NULL, 0, 0);
|
0, NULL, 0, 0);
|
||||||
CFG_GADCON_CLIENT("pager", 800, 120,
|
CFG_GADCON_CLIENT("pager", 800, 120,
|
||||||
|
@ -1391,19 +1384,19 @@ e_config_init(void)
|
||||||
CFG_GADCON_CLIENT("clock", 800, 32,
|
CFG_GADCON_CLIENT("clock", 800, 32,
|
||||||
800 - 32, NULL, 0, 0);
|
800 - 32, NULL, 0, 0);
|
||||||
/* additional shelves for up to 3 more heads by default */
|
/* additional shelves for up to 3 more heads by default */
|
||||||
CFG_GADCON("shelf", "1");
|
CFG_GADCON("shelf");
|
||||||
CFG_GADCON_CLIENT("pager", 800, 120,
|
CFG_GADCON_CLIENT("pager", 800, 120,
|
||||||
0, NULL, 0, 0);
|
0, NULL, 0, 0);
|
||||||
CFG_GADCON_CLIENT("ibox", 800, 32,
|
CFG_GADCON_CLIENT("ibox", 800, 32,
|
||||||
800 - 32, NULL, 0, 0);
|
800 - 32, NULL, 0, 0);
|
||||||
|
|
||||||
CFG_GADCON("shelf", "2");
|
CFG_GADCON("shelf");
|
||||||
CFG_GADCON_CLIENT("pager", 800, 120,
|
CFG_GADCON_CLIENT("pager", 800, 120,
|
||||||
0, NULL, 0, 0);
|
0, NULL, 0, 0);
|
||||||
CFG_GADCON_CLIENT("ibox", 800, 32,
|
CFG_GADCON_CLIENT("ibox", 800, 32,
|
||||||
800 - 32, NULL, 0, 0);
|
800 - 32, NULL, 0, 0);
|
||||||
|
|
||||||
CFG_GADCON("shelf", "3");
|
CFG_GADCON("shelf");
|
||||||
CFG_GADCON_CLIENT("pager", 800, 120,
|
CFG_GADCON_CLIENT("pager", 800, 120,
|
||||||
0, NULL, 0, 0);
|
0, NULL, 0, 0);
|
||||||
CFG_GADCON_CLIENT("ibox", 800, 32,
|
CFG_GADCON_CLIENT("ibox", 800, 32,
|
||||||
|
|
|
@ -33,7 +33,7 @@ typedef struct _E_Event_Config_Icon_Theme E_Event_Config_Icon_Theme;
|
||||||
/* increment this whenever a new set of config values are added but the users
|
/* increment this whenever a new set of config values are added but the users
|
||||||
* config doesn't need to be wiped - simply new values need to be put in
|
* config doesn't need to be wiped - simply new values need to be put in
|
||||||
*/
|
*/
|
||||||
#define E_CONFIG_FILE_GENERATION 0x0120
|
#define E_CONFIG_FILE_GENERATION 0x0121
|
||||||
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
|
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
|
||||||
|
|
||||||
#define E_EVAS_ENGINE_DEFAULT 0
|
#define E_EVAS_ENGINE_DEFAULT 0
|
||||||
|
@ -356,7 +356,7 @@ struct _E_Config_Desktop_Name
|
||||||
struct _E_Config_Gadcon
|
struct _E_Config_Gadcon
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *id;
|
int id;
|
||||||
Evas_List *clients;
|
Evas_List *clients;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -378,6 +378,7 @@ struct _E_Config_Gadcon_Client
|
||||||
struct _E_Config_Shelf
|
struct _E_Config_Shelf
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
|
int id;
|
||||||
int container, zone;
|
int container, zone;
|
||||||
int layer;
|
int layer;
|
||||||
unsigned char popup;
|
unsigned char popup;
|
||||||
|
|
|
@ -237,7 +237,7 @@ e_gadcon_provider_list(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI E_Gadcon *
|
EAPI E_Gadcon *
|
||||||
e_gadcon_swallowed_new(const char *name, const char *id, Evas_Object *obj, char *swallow_name)
|
e_gadcon_swallowed_new(const char *name, int id, Evas_Object *obj, char *swallow_name)
|
||||||
{
|
{
|
||||||
E_Gadcon *gc;
|
E_Gadcon *gc;
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
@ -248,7 +248,7 @@ e_gadcon_swallowed_new(const char *name, const char *id, Evas_Object *obj, char
|
||||||
if (!gc) return NULL;
|
if (!gc) return NULL;
|
||||||
|
|
||||||
gc->name = evas_stringshare_add(name);
|
gc->name = evas_stringshare_add(name);
|
||||||
gc->id = evas_stringshare_add(id);
|
gc->id = id;
|
||||||
gc->layout_policy = E_GADCON_LAYOUT_POLICY_PANEL;
|
gc->layout_policy = E_GADCON_LAYOUT_POLICY_PANEL;
|
||||||
|
|
||||||
gc->edje.o_parent = obj;
|
gc->edje.o_parent = obj;
|
||||||
|
@ -282,7 +282,7 @@ e_gadcon_swallowed_new(const char *name, const char *id, Evas_Object *obj, char
|
||||||
|
|
||||||
cf_gc = l->data;
|
cf_gc = l->data;
|
||||||
if ((!strcmp(cf_gc->name, gc->name)) &&
|
if ((!strcmp(cf_gc->name, gc->name)) &&
|
||||||
(!strcmp(cf_gc->id, gc->id)))
|
(cf_gc->id == gc->id))
|
||||||
{
|
{
|
||||||
gc->cf = cf_gc;
|
gc->cf = cf_gc;
|
||||||
break;
|
break;
|
||||||
|
@ -292,7 +292,7 @@ e_gadcon_swallowed_new(const char *name, const char *id, Evas_Object *obj, char
|
||||||
{
|
{
|
||||||
gc->cf = E_NEW(E_Config_Gadcon, 1);
|
gc->cf = E_NEW(E_Config_Gadcon, 1);
|
||||||
gc->cf->name = evas_stringshare_add(gc->name);
|
gc->cf->name = evas_stringshare_add(gc->name);
|
||||||
gc->cf->id = evas_stringshare_add(gc->id);
|
gc->cf->id = gc->id;
|
||||||
e_config->gadcons = evas_list_append(e_config->gadcons, gc->cf);
|
e_config->gadcons = evas_list_append(e_config->gadcons, gc->cf);
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
}
|
}
|
||||||
|
@ -1332,7 +1332,6 @@ _e_gadcon_free(E_Gadcon *gc)
|
||||||
gadcons = evas_list_remove(gadcons, gc);
|
gadcons = evas_list_remove(gadcons, gc);
|
||||||
if (gc->o_container) evas_object_del(gc->o_container);
|
if (gc->o_container) evas_object_del(gc->o_container);
|
||||||
evas_stringshare_del(gc->name);
|
evas_stringshare_del(gc->name);
|
||||||
evas_stringshare_del(gc->id);
|
|
||||||
evas_stringshare_del(gc->edje.swallow_name);
|
evas_stringshare_del(gc->edje.swallow_name);
|
||||||
if (gc->config_dialog) e_object_del(E_OBJECT(gc->config_dialog));
|
if (gc->config_dialog) e_object_del(E_OBJECT(gc->config_dialog));
|
||||||
if (gc->drop_handler) e_drop_handler_del(gc->drop_handler);
|
if (gc->drop_handler) e_drop_handler_del(gc->drop_handler);
|
||||||
|
|
|
@ -50,7 +50,7 @@ struct _E_Gadcon
|
||||||
E_Object e_obj_inherit;
|
E_Object e_obj_inherit;
|
||||||
|
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *id;
|
int id;
|
||||||
|
|
||||||
E_Gadcon_Layout_Policy layout_policy;
|
E_Gadcon_Layout_Policy layout_policy;
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ EAPI int e_gadcon_shutdown(void);
|
||||||
EAPI void e_gadcon_provider_register(const E_Gadcon_Client_Class *cc);
|
EAPI void e_gadcon_provider_register(const E_Gadcon_Client_Class *cc);
|
||||||
EAPI void e_gadcon_provider_unregister(const E_Gadcon_Client_Class *cc);
|
EAPI void e_gadcon_provider_unregister(const E_Gadcon_Client_Class *cc);
|
||||||
EAPI Evas_List *e_gadcon_provider_list(void);
|
EAPI Evas_List *e_gadcon_provider_list(void);
|
||||||
EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, const char *id, Evas_Object *obj, char *swallow_name);
|
EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, int 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_min_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_min_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_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
|
||||||
|
|
|
@ -224,7 +224,6 @@ static int
|
||||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
int id;
|
|
||||||
|
|
||||||
switch (cfdata->mode)
|
switch (cfdata->mode)
|
||||||
{
|
{
|
||||||
|
@ -276,13 +275,13 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
cfdata->size = cfdata->basic_size;
|
cfdata->size = cfdata->basic_size;
|
||||||
|
|
||||||
zone = cfdata->es->zone;
|
zone = cfdata->es->zone;
|
||||||
id = cfdata->es->id;
|
|
||||||
cfdata->es->config_dialog = NULL;
|
cfdata->es->config_dialog = NULL;
|
||||||
e_object_del(E_OBJECT(cfdata->es));
|
e_object_del(E_OBJECT(cfdata->es));
|
||||||
cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name,
|
cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name,
|
||||||
cfdata->escfg->style,
|
cfdata->escfg->style,
|
||||||
cfdata->escfg->popup,
|
cfdata->escfg->popup,
|
||||||
cfdata->escfg->layer, id);
|
cfdata->escfg->layer,
|
||||||
|
cfdata->escfg->id);
|
||||||
cfdata->es->cfg = cfdata->escfg;
|
cfdata->es->cfg = cfdata->escfg;
|
||||||
cfdata->es->fit_along = cfdata->escfg->fit_along;
|
cfdata->es->fit_along = cfdata->escfg->fit_along;
|
||||||
cfdata->es->fit_size = cfdata->escfg->fit_size;
|
cfdata->es->fit_size = cfdata->escfg->fit_size;
|
||||||
|
@ -300,7 +299,7 @@ static int
|
||||||
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
int id, idx;
|
int idx;
|
||||||
int restart = 0;
|
int restart = 0;
|
||||||
|
|
||||||
/* Only change style is we need to */
|
/* Only change style is we need to */
|
||||||
|
@ -430,14 +429,14 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
if (restart)
|
if (restart)
|
||||||
{
|
{
|
||||||
zone = cfdata->es->zone;
|
zone = cfdata->es->zone;
|
||||||
id = cfdata->es->id;
|
|
||||||
cfdata->es->config_dialog = NULL;
|
cfdata->es->config_dialog = NULL;
|
||||||
e_object_del(E_OBJECT(cfdata->es));
|
e_object_del(E_OBJECT(cfdata->es));
|
||||||
|
|
||||||
cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name,
|
cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name,
|
||||||
cfdata->escfg->style,
|
cfdata->escfg->style,
|
||||||
cfdata->escfg->popup,
|
cfdata->escfg->popup,
|
||||||
cfdata->escfg->layer, id);
|
cfdata->escfg->layer,
|
||||||
|
cfdata->escfg->id);
|
||||||
cfdata->es->cfg = cfdata->escfg;
|
cfdata->es->cfg = cfdata->escfg;
|
||||||
cfdata->es->fit_along = cfdata->escfg->fit_along;
|
cfdata->es->fit_along = cfdata->escfg->fit_along;
|
||||||
cfdata->es->fit_size = cfdata->escfg->fit_size;
|
cfdata->es->fit_size = cfdata->escfg->fit_size;
|
||||||
|
|
|
@ -54,6 +54,7 @@ EAPI void
|
||||||
e_shelf_config_init(void)
|
e_shelf_config_init(void)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
int id = 0;
|
||||||
|
|
||||||
while (shelves)
|
while (shelves)
|
||||||
{
|
{
|
||||||
|
@ -69,13 +70,15 @@ e_shelf_config_init(void)
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
|
|
||||||
cf_es = l->data;
|
cf_es = l->data;
|
||||||
|
if (cf_es->id <= 0) cf_es->id = id + 1;
|
||||||
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);
|
||||||
|
id = cf_es->id;
|
||||||
if (zone)
|
if (zone)
|
||||||
{
|
{
|
||||||
E_Shelf *es;
|
E_Shelf *es;
|
||||||
|
|
||||||
es = e_shelf_zone_new(zone, cf_es->name, cf_es->style,
|
es = e_shelf_zone_new(zone, cf_es->name, cf_es->style,
|
||||||
cf_es->popup, cf_es->layer, -1);
|
cf_es->popup, cf_es->layer, cf_es->id);
|
||||||
if (es)
|
if (es)
|
||||||
{
|
{
|
||||||
if (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0;
|
if (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0;
|
||||||
|
@ -132,6 +135,7 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
|
||||||
|
|
||||||
es = E_OBJECT_ALLOC(E_Shelf, E_SHELF_TYPE, _e_shelf_free);
|
es = E_OBJECT_ALLOC(E_Shelf, E_SHELF_TYPE, _e_shelf_free);
|
||||||
if (!es) return NULL;
|
if (!es) return NULL;
|
||||||
|
es->id = id;
|
||||||
|
|
||||||
es->x = 0;
|
es->x = 0;
|
||||||
es->y = 0;
|
es->y = 0;
|
||||||
|
@ -192,13 +196,8 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
|
||||||
evas_object_layer_set(es->o_event, layer);
|
evas_object_layer_set(es->o_event, layer);
|
||||||
evas_object_layer_set(es->o_base, layer);
|
evas_object_layer_set(es->o_base, layer);
|
||||||
}
|
}
|
||||||
if (id < 0)
|
|
||||||
es->id = evas_list_count(shelves);
|
|
||||||
else
|
|
||||||
es->id = id;
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%i", es->id);
|
es->gadcon = e_gadcon_swallowed_new(es->name, es->id, es->o_base, "e.swallow.content");
|
||||||
es->gadcon = e_gadcon_swallowed_new(es->name, buf, es->o_base, "e.swallow.content");
|
|
||||||
e_gadcon_min_size_request_callback_set(es->gadcon,
|
e_gadcon_min_size_request_callback_set(es->gadcon,
|
||||||
_e_shelf_gadcon_min_size_request, es);
|
_e_shelf_gadcon_min_size_request, es);
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,13 @@
|
||||||
*/
|
*/
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
|
typedef enum _E_Widget_Button_Type E_Widget_Button_Type;
|
||||||
|
enum _E_Widget_Button_Type
|
||||||
|
{
|
||||||
|
E_WIDGET_BUTTON_TEXT = 1 << 0,
|
||||||
|
E_WIDGET_BUTTON_ICON = 1 << 1
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct _E_Widget_Data E_Widget_Data;
|
typedef struct _E_Widget_Data E_Widget_Data;
|
||||||
struct _E_Widget_Data
|
struct _E_Widget_Data
|
||||||
{
|
{
|
||||||
|
@ -11,6 +18,7 @@ struct _E_Widget_Data
|
||||||
void (*func) (void *data, void *data2);
|
void (*func) (void *data, void *data2);
|
||||||
void *data;
|
void *data;
|
||||||
void *data2;
|
void *data2;
|
||||||
|
E_Widget_Button_Type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void _e_wid_del_hook(Evas_Object *obj);
|
static void _e_wid_del_hook(Evas_Object *obj);
|
||||||
|
@ -19,6 +27,7 @@ static void _e_wid_activate_hook(Evas_Object *obj);
|
||||||
static void _e_wid_disable_hook(Evas_Object *obj);
|
static void _e_wid_disable_hook(Evas_Object *obj);
|
||||||
static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source);
|
static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||||
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||||
|
static void _e_wid_button_state_send(E_Widget_Data *wd);
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
|
@ -46,7 +55,11 @@ e_widget_button_add(Evas *evas, const char *label, const char *icon, void (*func
|
||||||
e_theme_edje_object_set(o, "base/theme/widgets",
|
e_theme_edje_object_set(o, "base/theme/widgets",
|
||||||
"e/widgets/button");
|
"e/widgets/button");
|
||||||
edje_object_signal_callback_add(o, "e,action,click", "", _e_wid_signal_cb1, obj);
|
edje_object_signal_callback_add(o, "e,action,click", "", _e_wid_signal_cb1, obj);
|
||||||
edje_object_part_text_set(o, "e.text.label", label);
|
if (label && label[0] != 0)
|
||||||
|
{
|
||||||
|
edje_object_part_text_set(o, "e.text.label", label);
|
||||||
|
wd->type |= E_WIDGET_BUTTON_TEXT;
|
||||||
|
}
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
|
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
|
@ -59,12 +72,12 @@ e_widget_button_add(Evas *evas, const char *label, const char *icon, void (*func
|
||||||
wd->o_icon = o;
|
wd->o_icon = o;
|
||||||
e_util_edje_icon_set(o, icon);
|
e_util_edje_icon_set(o, icon);
|
||||||
edje_object_part_swallow(wd->o_button, "e.swallow.icon", o);
|
edje_object_part_swallow(wd->o_button, "e.swallow.icon", o);
|
||||||
edje_object_signal_emit(wd->o_button, "e,action,show,icon", "e");
|
|
||||||
edje_object_message_signal_process(wd->o_button);
|
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
|
wd->type |= E_WIDGET_BUTTON_ICON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_e_wid_button_state_send(wd);
|
||||||
edje_object_size_min_calc(wd->o_button, &mw, &mh);
|
edje_object_size_min_calc(wd->o_button, &mw, &mh);
|
||||||
e_widget_min_size_set(obj, mw, mh);
|
e_widget_min_size_set(obj, mw, mh);
|
||||||
|
|
||||||
|
@ -78,6 +91,11 @@ e_widget_button_label_set(Evas_Object *obj, const char *label)
|
||||||
|
|
||||||
wd = e_widget_data_get(obj);
|
wd = e_widget_data_get(obj);
|
||||||
edje_object_part_text_set(wd->o_button, "e.text.label", label);
|
edje_object_part_text_set(wd->o_button, "e.text.label", label);
|
||||||
|
if (label && label[0] != 0)
|
||||||
|
wd->type |= E_WIDGET_BUTTON_TEXT;
|
||||||
|
else
|
||||||
|
wd->type = ~(wd->type & E_WIDGET_BUTTON_TEXT);
|
||||||
|
_e_wid_button_state_send(wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -90,8 +108,6 @@ e_widget_button_icon_set(Evas_Object *obj, Evas_Object *icon)
|
||||||
{
|
{
|
||||||
e_widget_sub_object_del(obj, wd->o_icon);
|
e_widget_sub_object_del(obj, wd->o_icon);
|
||||||
evas_object_hide(wd->o_icon);
|
evas_object_hide(wd->o_icon);
|
||||||
edje_object_signal_emit(wd->o_button, "e,action,hide,icon", "e");
|
|
||||||
edje_object_message_signal_process(wd->o_button);
|
|
||||||
edje_object_part_unswallow(wd->o_button, wd->o_icon);
|
edje_object_part_unswallow(wd->o_button, wd->o_icon);
|
||||||
evas_object_del(wd->o_icon);
|
evas_object_del(wd->o_icon);
|
||||||
wd->o_icon = NULL;
|
wd->o_icon = NULL;
|
||||||
|
@ -100,12 +116,14 @@ e_widget_button_icon_set(Evas_Object *obj, Evas_Object *icon)
|
||||||
{
|
{
|
||||||
wd->o_icon = icon;
|
wd->o_icon = icon;
|
||||||
edje_object_part_swallow(wd->o_button, "e.swallow.icon", icon);
|
edje_object_part_swallow(wd->o_button, "e.swallow.icon", icon);
|
||||||
edje_object_signal_emit(wd->o_button, "e,action,show,icon", "e");
|
|
||||||
edje_object_message_signal_process(wd->o_button);
|
|
||||||
evas_object_pass_events_set(icon, 1);
|
evas_object_pass_events_set(icon, 1);
|
||||||
evas_object_show(icon);
|
evas_object_show(icon);
|
||||||
e_widget_sub_object_add(obj, icon);
|
e_widget_sub_object_add(obj, icon);
|
||||||
|
wd->type |= E_WIDGET_BUTTON_ICON;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
wd->type = ~(wd->type & E_WIDGET_BUTTON_ICON);
|
||||||
|
_e_wid_button_state_send(wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -173,3 +191,25 @@ _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
e_widget_focus_steal(data);
|
e_widget_focus_steal(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_wid_button_state_send(E_Widget_Data *wd)
|
||||||
|
{
|
||||||
|
if (!wd || !wd->o_button) return;
|
||||||
|
if (wd->type & E_WIDGET_BUTTON_TEXT)
|
||||||
|
{
|
||||||
|
if (wd->type & E_WIDGET_BUTTON_ICON)
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(wd->o_button, "e,state,combo", "e");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(wd->o_button, "e,state,text", "e");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (wd->type & E_WIDGET_BUTTON_ICON)
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(wd->o_button, "e,state,icon", "e");
|
||||||
|
}
|
||||||
|
edje_object_message_signal_process(wd->o_button);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue