diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/elementary/efl_ui_collection.c | 7 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_layout.c | 10 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_image.c | 2 | ||||
-rw-r--r-- | src/modules/evas/engines/gl_common/evas_gl_image.c | 4 |
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); |