Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_config.c e_config.h e_gadcon.c e_gadcon.h e_int_shelf_config.c e_shelf.c e_widget_button.c Log Message: buttom patch from lok and seb's shelf bug fix. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.273 retrieving revision 1.274 diff -u -3 -r1.273 -r1.274 --- e_config.c 2 Oct 2007 17:25:27 -0000 1.273 +++ e_config.c 5 Oct 2007 06:05:16 -0000 1.274 @@ -107,7 +107,7 @@ #define T E_Config_Gadcon #define D _e_config_gadcon_edd 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_shelf_desk_edd = E_CONFIG_DD_NEW("E_Config_Shelf_Desk", E_Config_Shelf_Desk); @@ -124,6 +124,7 @@ #define T E_Config_Shelf #define D _e_config_shelf_edd 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, zone, INT); E_CONFIG_VAL(D, T, layer, INT); @@ -1231,10 +1232,12 @@ e_config->gadcons = NULL; { 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) \ cf_es = E_NEW(E_Config_Shelf, 1); \ cf_es->name = evas_stringshare_add(_name); \ + cf_es->id = ++id; \ cf_es->container = _con; \ cf_es->zone = _zone; \ cf_es->popup = _pop; \ @@ -1252,20 +1255,9 @@ cf_es->desk_show_mode = _desk_show_mode; \ cf_es->desk_list = evas_list_append(cf_es->desk_list, 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, 1, 200, E_GADCON_ORIENT_BOTTOM, 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, 1, 200, E_GADCON_ORIENT_BOTTOM, 1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL); @@ -1346,16 +1338,17 @@ e_config->desklock_custom_desklock_cmd = NULL; 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; + int id = 0; e_config->gadcons = NULL; -#define CFG_GADCON(_name, _id) \ +#define CFG_GADCON(_name) \ cf_gc = E_NEW(E_Config_Gadcon, 1);\ 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) #define CFG_GADCON_CLIENT(_name, _res, _size, _pos, _style, _autoscr, _resizable) \ cf_gcc = E_NEW(E_Config_Gadcon_Client, 1); \ @@ -1373,7 +1366,7 @@ cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc) /* the default shelf on the default head/zone */ - CFG_GADCON("shelf", "0"); + CFG_GADCON("shelf"); CFG_GADCON_CLIENT("start", 800, 32, 0, NULL, 0, 0); CFG_GADCON_CLIENT("pager", 800, 120, @@ -1391,19 +1384,19 @@ CFG_GADCON_CLIENT("clock", 800, 32, 800 - 32, NULL, 0, 0); /* additional shelves for up to 3 more heads by default */ - CFG_GADCON("shelf", "1"); + CFG_GADCON("shelf"); CFG_GADCON_CLIENT("pager", 800, 120, 0, NULL, 0, 0); CFG_GADCON_CLIENT("ibox", 800, 32, 800 - 32, NULL, 0, 0); - CFG_GADCON("shelf", "2"); + CFG_GADCON("shelf"); CFG_GADCON_CLIENT("pager", 800, 120, 0, NULL, 0, 0); CFG_GADCON_CLIENT("ibox", 800, 32, 800 - 32, NULL, 0, 0); - CFG_GADCON("shelf", "3"); + CFG_GADCON("shelf"); CFG_GADCON_CLIENT("pager", 800, 120, 0, NULL, 0, 0); CFG_GADCON_CLIENT("ibox", 800, 32, =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.h,v retrieving revision 1.163 retrieving revision 1.164 diff -u -3 -r1.163 -r1.164 --- e_config.h 25 Sep 2007 14:26:36 -0000 1.163 +++ e_config.h 5 Oct 2007 06:05:16 -0000 1.164 @@ -33,7 +33,7 @@ /* 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 */ -#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_EVAS_ENGINE_DEFAULT 0 @@ -356,7 +356,7 @@ struct _E_Config_Gadcon { const char *name; - const char *id; + int id; Evas_List *clients; }; @@ -378,6 +378,7 @@ struct _E_Config_Shelf { const char *name; + int id; int container, zone; int layer; unsigned char popup; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.c,v retrieving revision 1.82 retrieving revision 1.83 diff -u -3 -r1.82 -r1.83 --- e_gadcon.c 16 Sep 2007 00:24:42 -0000 1.82 +++ e_gadcon.c 5 Oct 2007 06:05:16 -0000 1.83 @@ -237,7 +237,7 @@ } 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; Evas_List *l; @@ -248,7 +248,7 @@ if (!gc) return NULL; gc->name = evas_stringshare_add(name); - gc->id = evas_stringshare_add(id); + gc->id = id; gc->layout_policy = E_GADCON_LAYOUT_POLICY_PANEL; gc->edje.o_parent = obj; @@ -282,7 +282,7 @@ cf_gc = l->data; if ((!strcmp(cf_gc->name, gc->name)) && - (!strcmp(cf_gc->id, gc->id))) + (cf_gc->id == gc->id)) { gc->cf = cf_gc; break; @@ -292,7 +292,7 @@ { gc->cf = E_NEW(E_Config_Gadcon, 1); 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_save_queue(); } @@ -1332,7 +1332,6 @@ gadcons = evas_list_remove(gadcons, gc); if (gc->o_container) evas_object_del(gc->o_container); evas_stringshare_del(gc->name); - evas_stringshare_del(gc->id); evas_stringshare_del(gc->edje.swallow_name); if (gc->config_dialog) e_object_del(E_OBJECT(gc->config_dialog)); if (gc->drop_handler) e_drop_handler_del(gc->drop_handler); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -3 -r1.40 -r1.41 --- e_gadcon.h 16 Sep 2007 00:02:52 -0000 1.40 +++ e_gadcon.h 5 Oct 2007 06:05:16 -0000 1.41 @@ -50,7 +50,7 @@ E_Object e_obj_inherit; const char *name; - const char *id; + int id; E_Gadcon_Layout_Policy layout_policy; @@ -171,7 +171,7 @@ 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 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_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); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_shelf_config.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- e_int_shelf_config.c 14 Sep 2007 23:28:58 -0000 1.32 +++ e_int_shelf_config.c 5 Oct 2007 06:05:16 -0000 1.33 @@ -224,7 +224,6 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { E_Zone *zone; - int id; switch (cfdata->mode) { @@ -276,13 +275,13 @@ cfdata->size = cfdata->basic_size; zone = cfdata->es->zone; - id = cfdata->es->id; cfdata->es->config_dialog = NULL; e_object_del(E_OBJECT(cfdata->es)); cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name, cfdata->escfg->style, cfdata->escfg->popup, - cfdata->escfg->layer, id); + cfdata->escfg->layer, + cfdata->escfg->id); cfdata->es->cfg = cfdata->escfg; cfdata->es->fit_along = cfdata->escfg->fit_along; cfdata->es->fit_size = cfdata->escfg->fit_size; @@ -300,7 +299,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { E_Zone *zone; - int id, idx; + int idx; int restart = 0; /* Only change style is we need to */ @@ -430,14 +429,14 @@ if (restart) { zone = cfdata->es->zone; - id = cfdata->es->id; cfdata->es->config_dialog = NULL; e_object_del(E_OBJECT(cfdata->es)); cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name, cfdata->escfg->style, cfdata->escfg->popup, - cfdata->escfg->layer, id); + cfdata->escfg->layer, + cfdata->escfg->id); cfdata->es->cfg = cfdata->escfg; cfdata->es->fit_along = cfdata->escfg->fit_along; cfdata->es->fit_size = cfdata->escfg->fit_size; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -3 -r1.71 -r1.72 --- e_shelf.c 1 Oct 2007 21:22:51 -0000 1.71 +++ e_shelf.c 5 Oct 2007 06:05:16 -0000 1.72 @@ -54,6 +54,7 @@ e_shelf_config_init(void) { Evas_List *l; + int id = 0; while (shelves) { @@ -69,13 +70,15 @@ E_Zone *zone; 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); + id = cf_es->id; if (zone) { E_Shelf *es; - + 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 (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0; @@ -132,6 +135,7 @@ es = E_OBJECT_ALLOC(E_Shelf, E_SHELF_TYPE, _e_shelf_free); if (!es) return NULL; + es->id = id; es->x = 0; es->y = 0; @@ -192,13 +196,8 @@ evas_object_layer_set(es->o_event, 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, buf, es->o_base, "e.swallow.content"); + es->gadcon = e_gadcon_swallowed_new(es->name, es->id, es->o_base, "e.swallow.content"); e_gadcon_min_size_request_callback_set(es->gadcon, _e_shelf_gadcon_min_size_request, es); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_button.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- e_widget_button.c 7 Aug 2007 14:20:47 -0000 1.16 +++ e_widget_button.c 5 Oct 2007 06:05:16 -0000 1.17 @@ -3,6 +3,13 @@ */ #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; struct _E_Widget_Data { @@ -11,6 +18,7 @@ void (*func) (void *data, void *data2); void *data; void *data2; + E_Widget_Button_Type type; }; static void _e_wid_del_hook(Evas_Object *obj); @@ -19,6 +27,7 @@ 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_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 */ /* externally accessible functions */ @@ -46,7 +55,11 @@ e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/button"); 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); e_widget_sub_object_add(obj, o); @@ -59,12 +72,12 @@ wd->o_icon = o; e_util_edje_icon_set(o, icon); 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); 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); e_widget_min_size_set(obj, mw, mh); @@ -78,6 +91,11 @@ wd = e_widget_data_get(obj); 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 @@ -90,8 +108,6 @@ { e_widget_sub_object_del(obj, 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); evas_object_del(wd->o_icon); wd->o_icon = NULL; @@ -100,12 +116,14 @@ { wd->o_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_show(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 @@ -172,4 +190,26 @@ _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info) { 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); } ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs