summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/elementary/efl_ui_collection.c7
-rw-r--r--src/lib/elementary/efl_ui_layout.c10
-rw-r--r--src/lib/evas/canvas/evas_object_image.c2
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_image.c4
4 files changed, 17 insertions, 6 deletions
diff --git a/src/lib/elementary/efl_ui_collection.c b/src/lib/elementary/efl_ui_collection.c
index bd3123a70f..2161181687 100644
--- a/src/lib/elementary/efl_ui_collection.c
+++ b/src/lib/elementary/efl_ui_collection.c
@@ -147,6 +147,7 @@ typedef struct {
Efl_Gfx_Entity *sizer;
unsigned int start_id, end_id;
Eina_Bool allow_manual_deselection : 1;
+ Eina_Bool api_selection_change : 1;
} Efl_Ui_Collection_Data;
static Eina_Bool register_item(Eo *obj, Efl_Ui_Collection_Data *pd, Efl_Ui_Item *item);
@@ -579,7 +580,7 @@ _selection_changed(void *data, const Efl_Event *ev)
{
_single_selection_behaviour(obj, pd, ev->object);
}
- else if (pd->mode == EFL_UI_SELECT_MODE_MULTI && _elm_config->desktop_entry)
+ else if (pd->mode == EFL_UI_SELECT_MODE_MULTI && _elm_config->desktop_entry && !pd->api_selection_change)
{
const Evas_Modifier *mod = evas_key_modifier_get(evas_object_evas_get(ev->object));
if (!(efl_input_clickable_interaction_get(ev->object)
@@ -1111,13 +1112,17 @@ _selectable_range_apply(Eina_List *start, Eina_Bool flag)
EOLIAN static void
_efl_ui_collection_efl_ui_multi_selectable_all_select(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd)
{
+ pd->api_selection_change = EINA_TRUE;
_selectable_range_apply(pd->items, EINA_TRUE);
+ pd->api_selection_change = EINA_FALSE;
}
EOLIAN static void
_efl_ui_collection_efl_ui_multi_selectable_all_unselect(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd)
{
+ pd->api_selection_change = EINA_TRUE;
_selectable_range_apply(pd->items, EINA_FALSE);
+ pd->api_selection_change = EINA_FALSE;
}
static void
diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c
index f912043397..ae757b1bb4 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -1463,9 +1463,10 @@ _efl_ui_layout_text_generic_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *par
{
if ((sub_d->type == TEXT) && (!strcmp(part, sub_d->part)))
{
- if (!text)
+ if ((!text) || (text[0] == 0))
{
- _text_signal_emit(sd, sub_d, EINA_FALSE);
+ if ((!strcmp(part, "elm.text") || !strcmp(part, "efl.text")))
+ _text_signal_emit(sd, sub_d, EINA_FALSE);
eina_stringshare_del(sub_d->part);
free(sub_d);
edje_object_part_text_escaped_set
@@ -1479,7 +1480,7 @@ _efl_ui_layout_text_generic_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *par
}
}
- if (!text) return EINA_TRUE;
+ if ((!text) || (text[0] == 0)) return EINA_TRUE;
if (elm_widget_is_legacy(obj))
{
@@ -1505,7 +1506,8 @@ _efl_ui_layout_text_generic_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *par
sd->subs = eina_list_append(sd->subs, sub_d);
}
- _text_signal_emit(sd, sub_d, EINA_TRUE);
+ if ((!strcmp(part, "elm.text") || !strcmp(part, "efl.text")))
+ _text_signal_emit(sd, sub_d, EINA_TRUE);
efl_canvas_group_change(obj);
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index 1e8e32cd94..84e08fcce1 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -284,8 +284,8 @@ _evas_image_init_set(const Eina_File *f, const char *key,
ENFN->image_data_preload_cancel(ENC, o->engine_data, eo_obj, EINA_FALSE);
}
ENFN->image_free(ENC, o->engine_data);
+ o->engine_data = NULL;
}
- o->engine_data = NULL;
o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_NONE;
if (!lo) return;
lo->emile.scale_down_by = o->load_opts->scale_down_by;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_image.c b/src/modules/evas/engines/gl_common/evas_gl_image.c
index c63e22ecc3..7d05cab15d 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_image.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_image.c
@@ -702,6 +702,10 @@ evas_gl_common_image_free(Evas_GL_Image *im)
im->fglyph->ext_dat = NULL;
im->fglyph->ext_dat_free = NULL;
}
+ else if ((im->gc) && (im->gc->shared))
+ {
+ im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
+ }
if (im->gc)
evas_gl_common_context_flush(im->gc);