diff --git a/src/bin/grid.c b/src/bin/grid.c index b8cd413..776b8a5 100644 --- a/src/bin/grid.c +++ b/src/bin/grid.c @@ -40,6 +40,10 @@ struct _Grid Evas_Object *o_event; + const char *name; + + Eina_Bool noreqsize : 1; + Ecore_Timer *delayed_size_timer; }; @@ -499,14 +503,15 @@ _smart_size(Evas_Object *obj, int w, int h, Eina_Bool force) evas_event_freeze(sd->evas); evas_object_textgrid_size_set(sd->grid.obj, w, h); + sd->grid.w = w; sd->grid.h = h; evas_object_resize(sd->cursor.obj, sd->font.chw, sd->font.chh); - evas_object_size_hint_min_set(obj, sd->font.chw, sd->font.chh); - evas_object_size_hint_request_set(obj, sd->font.chw * sd->grid.w, - sd->font.chh * sd->grid.h); + if (!sd->noreqsize) + evas_object_size_hint_request_set(obj, sd->font.chw * sd->grid.w, + sd->font.chh * sd->grid.h); _smart_calculate(obj); _smart_apply(obj); @@ -570,6 +575,8 @@ _smart_cb_focus_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNU if (!(sd = evas_object_smart_data_get(data))) return; edje_object_signal_emit(sd->cursor.obj, "focus,in", "express"); + evas_object_show(sd->cursor.obj); + /* TODO: finish */ } @@ -673,6 +680,7 @@ _smart_del(Evas_Object *obj) /* try to get smart data */ if (!(sd = evas_object_smart_data_get(obj))) return; + if (sd->name) eina_stringshare_del(sd->name); if (sd->delayed_size_timer) ecore_timer_del(sd->delayed_size_timer); if (sd->cursor.obj) evas_object_del(sd->cursor.obj); if (sd->o_event) evas_object_del(sd->o_event); @@ -740,6 +748,9 @@ _grid_config_set(Grid *sd) { Evas_Coord w = 2, h = 2; + if (sd->font.name) eina_stringshare_del(sd->font.name); + sd->font.name = NULL; + if (_ex_cfg->font.bitmap) { char buff[PATH_MAX]; @@ -781,7 +792,7 @@ _grid_config_set(Grid *sd) } Evas_Object * -_grid_add(Evas_Object *parent) +_grid_add(Evas_Object *parent, const char *name) { Evas_Object *obj; Grid *sd; @@ -795,6 +806,8 @@ _grid_add(Evas_Object *parent) obj = evas_object_smart_add(evas, _smart); if (!(sd = evas_object_smart_data_get(obj))) return obj; + sd->name = eina_stringshare_add(name); + _grid_config_set(sd); _smart_size(obj, 80, 24, EINA_FALSE); @@ -880,3 +893,13 @@ _grid_colors_init(Evas_Object *obj, Evas_Object *bg) } } } + +const char * +_grid_name_get(Evas_Object *obj) +{ + Grid *sd; + + /* try to get smart data */ + if (!(sd = evas_object_smart_data_get(obj))) return NULL; + return sd->name; +}