forked from enlightenment/enlightenment
redo shelf cfg list when shelf is deleted using its own menu
SVN revision: 72874
This commit is contained in:
parent
f1cf500e9c
commit
1e5628a2a3
|
@ -1,5 +1,6 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
|
static void _e_shelf_del_cb(void *d);
|
||||||
static void _e_shelf_free(E_Shelf *es);
|
static void _e_shelf_free(E_Shelf *es);
|
||||||
static void _e_shelf_gadcon_min_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
static void _e_shelf_gadcon_min_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 void _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||||
|
@ -106,6 +107,7 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
|
||||||
es->w = 32;
|
es->w = 32;
|
||||||
es->h = 32;
|
es->h = 32;
|
||||||
es->zone = zone;
|
es->zone = zone;
|
||||||
|
e_object_del_attach_func_set(E_OBJECT(es), _e_shelf_del_cb);
|
||||||
e_zone_useful_geometry_dirty(zone);
|
e_zone_useful_geometry_dirty(zone);
|
||||||
if (popup)
|
if (popup)
|
||||||
{
|
{
|
||||||
|
@ -850,6 +852,15 @@ e_shelf_config_new(E_Zone *zone, E_Config_Shelf *cf_es)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
static void
|
||||||
|
_e_shelf_del_cb(void *d)
|
||||||
|
{
|
||||||
|
E_Shelf *es;
|
||||||
|
|
||||||
|
es = d;
|
||||||
|
shelves = eina_list_remove(shelves, es);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_shelf_free(E_Shelf *es)
|
_e_shelf_free(E_Shelf *es)
|
||||||
{
|
{
|
||||||
|
@ -884,7 +895,6 @@ _e_shelf_free(E_Shelf *es)
|
||||||
es->menu = NULL;
|
es->menu = NULL;
|
||||||
}
|
}
|
||||||
if (es->config_dialog) e_object_del(E_OBJECT(es->config_dialog));
|
if (es->config_dialog) e_object_del(E_OBJECT(es->config_dialog));
|
||||||
shelves = eina_list_remove(shelves, es);
|
|
||||||
eina_stringshare_del(es->name);
|
eina_stringshare_del(es->name);
|
||||||
eina_stringshare_del(es->style);
|
eina_stringshare_del(es->style);
|
||||||
evas_object_del(es->o_event);
|
evas_object_del(es->o_event);
|
||||||
|
|
|
@ -4,6 +4,7 @@ static void *_create_data(E_Config_Dialog *cfd);
|
||||||
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||||
static void _ilist_fill(E_Config_Dialog_Data *cfdata);
|
static void _ilist_fill(E_Config_Dialog_Data *cfdata);
|
||||||
|
static void _ilist_empty(E_Config_Dialog_Data *cfdata);
|
||||||
static void _ilist_cb_selected(void *data);
|
static void _ilist_cb_selected(void *data);
|
||||||
static void _cb_add(void *data, void *data2);
|
static void _cb_add(void *data, void *data2);
|
||||||
static void _cb_delete(void *data, void *data2);
|
static void _cb_delete(void *data, void *data2);
|
||||||
|
@ -107,6 +108,17 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* private functions */
|
/* private functions */
|
||||||
|
static void
|
||||||
|
_ilist_refresh(E_Shelf *es)
|
||||||
|
{
|
||||||
|
E_Config_Dialog_Data *cfdata;
|
||||||
|
|
||||||
|
cfdata = evas_object_data_get(es->o_base, "cfdata");
|
||||||
|
if (!cfdata) return;
|
||||||
|
_ilist_empty(cfdata);
|
||||||
|
_ilist_fill(cfdata);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ilist_item_new(E_Config_Dialog_Data *cfdata, Eina_Bool append, E_Shelf *es)
|
_ilist_item_new(E_Config_Dialog_Data *cfdata, Eina_Bool append, E_Shelf *es)
|
||||||
{
|
{
|
||||||
|
@ -114,6 +126,8 @@ _ilist_item_new(E_Config_Dialog_Data *cfdata, Eina_Bool append, E_Shelf *es)
|
||||||
Evas_Object *ob;
|
Evas_Object *ob;
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "Shelf %s", e_shelf_orient_string_get(es));
|
snprintf(buf, sizeof(buf), "Shelf %s", e_shelf_orient_string_get(es));
|
||||||
|
e_object_del_func_set(E_OBJECT(es), (E_Object_Cleanup_Func)_ilist_refresh);
|
||||||
|
evas_object_data_set(es->o_base, "cfdata", cfdata);
|
||||||
|
|
||||||
ob = e_icon_add(evas_object_evas_get(cfdata->o_list));
|
ob = e_icon_add(evas_object_evas_get(cfdata->o_list));
|
||||||
switch (es->cfg->orient)
|
switch (es->cfg->orient)
|
||||||
|
@ -178,6 +192,39 @@ _ilist_item_new(E_Config_Dialog_Data *cfdata, Eina_Bool append, E_Shelf *es)
|
||||||
_ilist_cb_selected, cfdata, buf);
|
_ilist_cb_selected, cfdata, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ilist_empty(E_Config_Dialog_Data *cfdata)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Shelf *es;
|
||||||
|
E_Desk *desk;
|
||||||
|
E_Zone *zone;
|
||||||
|
|
||||||
|
zone = e_util_zone_current_get(cfdata->cfd->con->manager);
|
||||||
|
desk = e_desk_current_get(zone);
|
||||||
|
EINA_LIST_FOREACH(e_shelf_list(), l, es)
|
||||||
|
{
|
||||||
|
if (es->zone != zone) continue;
|
||||||
|
if (es->cfg->desk_show_mode)
|
||||||
|
{
|
||||||
|
Eina_List *ll;
|
||||||
|
E_Config_Shelf_Desk *sd;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(es->cfg->desk_list, ll, sd)
|
||||||
|
{
|
||||||
|
if ((desk->x == sd->x) && (desk->y == sd->y))
|
||||||
|
{
|
||||||
|
e_object_del_func_set(E_OBJECT(es), NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
e_object_del_func_set(E_OBJECT(es), NULL);
|
||||||
|
}
|
||||||
|
e_widget_ilist_clear(cfdata->o_list);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ilist_fill(E_Config_Dialog_Data *cfdata)
|
_ilist_fill(E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
|
@ -366,7 +413,7 @@ _cb_dialog_destroy(void *data)
|
||||||
|
|
||||||
d = data;
|
d = data;
|
||||||
e_object_unref(E_OBJECT(d->es));
|
e_object_unref(E_OBJECT(d->es));
|
||||||
_ilist_fill(d->cfdata);
|
_ilist_empty(d->cfdata);
|
||||||
E_FREE(d);
|
E_FREE(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue