diff --git a/data/themes/default_fileman.edc b/data/themes/default_fileman.edc index 447a197b1..0bd2c5f43 100644 --- a/data/themes/default_fileman.edc +++ b/data/themes/default_fileman.edc @@ -914,74 +914,6 @@ group { group { name: "fileman/icon_normal"; parts { - part { - name: "icon_box"; - type: RECT; - mouse_events: 0; - description { - state: "default" 0.0; - visible: 1; - color: 128 128 128 128; - aspect: 1.0 1.0; - color: 0 0 0 0; - rel1 { - relative: 0.0 0.0; - offset: 0 0; - } - rel2 { - to_y: "icon_title"; - relative: 1.0 0.0; - offset: -1 -1; - } - } - } - part { - name: "icon_swallow"; - type: SWALLOW; - mouse_events: 0; - description { - state: "default" 0.0; - fixed: 1 1; - rel1 { - to: "icon_box"; - relative: 0.0 0.0; - offset: 2 2; - } - rel2 { - to: "icon_box"; - relative: 1.0 1.0; - offset: -3 -3; - } - } - } - part { - name: "icon_title"; - type: TEXT; - effect: SHADOW; - description { - state: "default" 0.0; - align: 0.5 1.0; - fixed: 0 1; - rel1 { - relative: 0.0 1.0; - offset: 0 -1; - } - rel2 { - relative: 1.0 1.0; - offset: -1 -1; - } - - color: 0 0 0 255; - color3: 255 255 255 128; - text { - text: "No Title"; - align: 0.0 0.0; - size: 10; - font: "Vera"; - min: 0 1; - } - } - } part { name: "icon_overlay"; mouse_events: 1; @@ -998,8 +930,8 @@ group { } image { normal: "e17_button.png"; + border: 8 8 8 8; } - color: 255 255 255 128; } description { state: "clicked" 0.0; @@ -1007,6 +939,69 @@ group { visible: 1; } } + part { + name: "icon_box"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + aspect: 1.0 1.0; + color: 0 0 0 0; + rel1 { + relative: 0.0 0.0; + offset: 6 6; + } + rel2 { + to_y: "icon_title"; + relative: 1.0 0.0; + offset: -7 -3; + } + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "icon_box"; + offset: 2 2; + } + rel2 { + to: "icon_box"; + offset: -3 -3; + } + } + } + part { + name: "icon_title"; + type: TEXT; + effect: SHADOW; + description { + state: "default" 0.0; + align: 0.5 1.0; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + offset: 6 -7; + } + rel2 { + relative: 1.0 1.0; + offset: -7 -7; + } + color: 0 0 0 255; + color3: 255 255 255 128; + text { + text: "No Title"; + align: 0.0 0.0; + size: 10; + font: "Edje-Vera"; + min: 0 1; + } + } + } part { name: "icon_event"; type: RECT; @@ -1015,11 +1010,11 @@ group { state: "default" 0.0; rel1 { relative: 0.0 0.0; - offset: 0 0; + offset: 6 6; } rel2 { relative: 1.0 1.0; - offset: -1 -1; + offset: -7 -7; } color: 0 0 0 0; } @@ -1034,11 +1029,11 @@ group { offset: 5 -20; } rel2 { - relative: 1.0 1.0; - offset: -6 -6; + relative: 1.0 1.0; + offset: -6 -6; + } } } - } } programs { program { diff --git a/src/bin/e_fileman_icon.c b/src/bin/e_fileman_icon.c index 762e01d11..f12c9b627 100644 --- a/src/bin/e_fileman_icon.c +++ b/src/bin/e_fileman_icon.c @@ -19,7 +19,6 @@ struct _E_Smart_Data Evas_Object *icon_object; Evas_Object *image_object; Evas_Object *entry_object; - Evas_Object *title_object; Evas_Object *thumb_object; E_Fm_File *file; @@ -34,6 +33,8 @@ static void _e_fm_icon_smart_add (Evas_Object *obj); static void _e_fm_icon_smart_del (Evas_Object *obj); static void _e_fm_icon_smart_move (Evas_Object *obj, Evas_Coord x, Evas_Coord y); static void _e_fm_icon_smart_resize (Evas_Object *obj, Evas_Coord w, Evas_Coord h); +static void _e_fm_icon_smart_show (Evas_Object *obj); +static void _e_fm_icon_smart_hide (Evas_Object *obj); static void _e_fm_icon_smart_clip_set (Evas_Object *obj, Evas_Object *clip); static void _e_fm_icon_smart_clip_unset (Evas_Object *obj); @@ -91,8 +92,8 @@ e_fm_icon_add(Evas *evas) NULL, NULL, NULL, NULL, NULL, _e_fm_icon_smart_move, _e_fm_icon_smart_resize, - NULL, - NULL, + _e_fm_icon_smart_show, + _e_fm_icon_smart_hide, NULL, _e_fm_icon_smart_clip_set, _e_fm_icon_smart_clip_unset, @@ -138,12 +139,23 @@ e_fm_icon_file_set(Evas_Object *obj, E_Fm_File *file) sd->iw, sd->ih, 1); - evas_object_smart_member_add(sd->thumb_object, sd->obj); +// evas_object_geometry_get(sd->thumb_object, NULL, NULL, &icon_w, &icon_h); +// sd->iw = icon_w; +// sd->ih = icon_h; sd->image_object = edje_object_add(sd->evas); e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "fileman/icon_thumb"); + edje_extern_object_min_size_set(sd->thumb_object, sd->iw, sd->ih); + edje_extern_object_max_size_set(sd->thumb_object, sd->iw, sd->ih); edje_object_part_swallow(sd->image_object, "icon_swallow", sd->thumb_object); + edje_object_size_min_calc(sd->image_object, &icon_w, &icon_h); + sd->iw = icon_w; + sd->ih = icon_h; + edje_extern_object_min_size_set(sd->image_object, icon_w, icon_h); + edje_extern_object_max_size_set(sd->image_object, icon_w, icon_h); + edje_object_part_swallow(sd->icon_object, "icon_swallow", + sd->image_object); } else { @@ -156,11 +168,10 @@ e_fm_icon_file_set(Evas_Object *obj, E_Fm_File *file) { _e_fm_icon_icon_mime_get(sd); } - _e_fm_icon_type_set(sd); - evas_object_resize(sd->icon_object, 64, 64); - evas_object_resize(sd->event_object, 64, 64); - evas_object_resize(sd->obj, 64, 64); + edje_object_size_min_calc(sd->icon_object, &icon_w, &icon_h); + evas_object_resize(sd->obj, 0, 0); // because it still thinks its the same size + evas_object_resize(sd->obj, 64, icon_h); } void @@ -242,28 +253,6 @@ e_fm_icon_assoc_set(Evas_Object *obj, const char *assoc) return 0; } -void -e_fm_icon_image_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) -{ - E_Smart_Data *sd; - - sd = evas_object_smart_data_get(obj); - if (!sd) return; - sd->iw = w; - sd->ih = h; - evas_object_resize(sd->image_object, w, h); -} - -void -e_fm_icon_size_min_calc(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) -{ - E_Smart_Data *sd; - - sd = evas_object_smart_data_get(obj); - if (!sd) return; - edje_object_size_min_calc(sd->icon_object, w, h); -} - /* local subsystem functions */ static void _e_fm_icon_smart_add(Evas_Object *obj) @@ -281,24 +270,19 @@ _e_fm_icon_smart_add(Evas_Object *obj) sd->h = 64; sd->iw = 48; sd->ih = 48; - sd->event_object = evas_object_rectangle_add(sd->evas); - evas_object_color_set(sd->event_object, 0, 0, 0, 0); - evas_object_smart_member_add(sd->event_object, obj); - evas_object_show(sd->event_object); - evas_object_smart_data_set(obj, sd); - sd->title_object = evas_object_textblock_add(sd->evas); - evas_object_smart_member_add(sd->title_object, obj); - - sd->visible = 1; sd->icon_object = edje_object_add(sd->evas); evas_object_smart_member_add(sd->icon_object, obj); - evas_object_show(sd->icon_object); - evas_object_show(sd->event_object); + sd->event_object = evas_object_rectangle_add(sd->evas); + evas_object_color_set(sd->event_object, 0, 0, 0, 0); + evas_object_smart_member_add(sd->event_object, obj); + evas_object_smart_data_set(obj, sd); + + sd->visible = 1; + } - static void _e_fm_icon_smart_del(Evas_Object *obj) { @@ -306,32 +290,10 @@ _e_fm_icon_smart_del(Evas_Object *obj) sd = evas_object_smart_data_get(obj); if (!sd) return; - if (sd->entry_object) edje_object_part_unswallow(sd->icon_object, sd->entry_object); - if (sd->event_object) - { - evas_object_smart_member_del(sd->event_object); - evas_object_del(sd->event_object); - } - if (sd->icon_object) - { - evas_object_smart_member_del(sd->icon_object); - evas_object_del(sd->icon_object); - } - if (sd->image_object) - { - evas_object_smart_member_del(sd->image_object); - evas_object_del(sd->image_object); - } - if (sd->title_object) - { - evas_object_smart_member_del(sd->title_object); - evas_object_del(sd->title_object); - } - if (sd->thumb_object) - { - evas_object_smart_member_del(sd->thumb_object); - evas_object_del(sd->thumb_object); - } + if (sd->event_object) evas_object_del(sd->event_object); + if (sd->icon_object) evas_object_del(sd->icon_object); + if (sd->image_object) evas_object_del(sd->image_object); + if (sd->thumb_object) evas_object_del(sd->thumb_object); E_FREE(sd->saved_title); if (sd->file) e_object_unref(E_OBJECT(sd->file)); free(sd); @@ -344,14 +306,11 @@ _e_fm_icon_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) sd = evas_object_smart_data_get(obj); if (!sd) return; - - if(sd->x == x && sd->y == y) return; - - evas_object_move(sd->event_object, x, y); - if (sd->icon_object) evas_object_move(sd->icon_object, x, y); - //if (sd->image_object) evas_object_move(sd->image_object, x, y); + if ((sd->x == x) && (sd->y == y)) return; sd->x = x; sd->y = y; + evas_object_move(sd->event_object, x, y); + evas_object_move(sd->icon_object, x, y); } static void @@ -361,17 +320,33 @@ _e_fm_icon_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) sd = evas_object_smart_data_get(obj); if (!sd) return; - - if(sd->w == w && sd->h == h) return; - + if ((sd->w == w) && (sd->h == h)) return; sd->w = w; - if(sd->h < h) - sd->h = h; - + sd->h = h; evas_object_resize(sd->event_object, sd->w, sd->h); - if (sd->icon_object) evas_object_resize(sd->icon_object, sd->w, sd->h); - printf("resize to %d %d\n", sd->w, sd->h); - //if (sd->image_object) evas_object_resize(sd->image_object, w, h); + evas_object_resize(sd->icon_object, sd->w, sd->h); +} + +static void +_e_fm_icon_smart_show(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + evas_object_show(sd->icon_object); + evas_object_show(sd->event_object); +} + +static void +_e_fm_icon_smart_hide(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + evas_object_hide(sd->icon_object); + evas_object_hide(sd->event_object); } static void @@ -381,7 +356,6 @@ _e_fm_icon_smart_clip_set(Evas_Object *obj, Evas_Object *clip) sd = evas_object_smart_data_get(obj); if (!sd) return; - evas_object_clip_set(sd->event_object, clip); evas_object_clip_set(sd->icon_object, clip); } @@ -393,20 +367,19 @@ _e_fm_icon_smart_clip_unset(Evas_Object *obj) sd = evas_object_smart_data_get(obj); if (!sd) return; - evas_object_clip_unset(sd->event_object); + evas_object_clip_unset(sd->icon_object); } static void _e_fm_icon_icon_mime_get(E_Smart_Data *sd) { - sd->image_object = edje_object_add(sd->evas); + Evas_Coord icon_w, icon_h; + sd->image_object = edje_object_add(sd->evas); if (sd->file->type == E_FM_FILE_TYPE_DIRECTORY) - { - e_theme_edje_object_set(sd->image_object, "base/theme/fileman", - "icons/fileman/folder"); - } + e_theme_edje_object_set(sd->image_object, "base/theme/fileman", + "icons/fileman/folder"); else { char *ext; @@ -419,22 +392,21 @@ _e_fm_icon_icon_mime_get(E_Smart_Data *sd) ext = strdup(ext); ext2 = ext; - for (; *ext2; ext2++) - *ext2 = tolower(*ext2); + for (; *ext2; ext2++) *ext2 = tolower(*ext2); snprintf(part, PATH_MAX, "icons/fileman/%s", (ext + 1)); - if (!e_theme_edje_object_set(sd->image_object, "base/theme/fileman", part)) e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/file"); - free(ext); } else e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/file"); } - evas_object_resize(sd->image_object, sd->iw, sd->ih); + evas_object_show(sd->image_object); edje_extern_object_min_size_set(sd->image_object, sd->iw, sd->ih); edje_extern_object_max_size_set(sd->image_object, sd->iw, sd->ih); + edje_object_part_swallow(sd->icon_object, "icon_swallow", + sd->image_object); } static void @@ -480,6 +452,8 @@ _e_fm_icon_thumb_cb_exe_exit(void *data, int type, void *event) if ((ext) || (ecore_file_exists(sd->thumb_path))) { + Evas_Coord icon_w, icon_h; + if (sd->image_object) evas_object_del(sd->image_object); sd->thumb_object = e_thumb_evas_object_get(sd->file->path, @@ -487,19 +461,25 @@ _e_fm_icon_thumb_cb_exe_exit(void *data, int type, void *event) sd->iw, sd->ih, 1); - evas_object_smart_member_add(sd->thumb_object, sd->obj); - +// evas_object_geometry_get(sd->thumb_object, NULL, NULL, &icon_w, &icon_h); +// sd->iw = icon_w; +// sd->ih = icon_h; sd->image_object = edje_object_add(sd->evas); e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "fileman/icon_thumb"); + evas_object_show(sd->image_object); + evas_object_show(sd->thumb_object); + edje_extern_object_min_size_set(sd->thumb_object, sd->iw, sd->ih); + edje_extern_object_max_size_set(sd->thumb_object, sd->iw, sd->ih); edje_object_part_swallow(sd->image_object, "icon_swallow", sd->thumb_object); - edje_extern_object_min_size_set(sd->image_object, sd->iw, sd->ih); - edje_extern_object_max_size_set(sd->image_object, sd->iw, sd->ih); + edje_object_size_min_calc(sd->image_object, &icon_w, &icon_h); + sd->iw = icon_w; + sd->ih = icon_h; + edje_extern_object_min_size_set(sd->image_object, icon_w, icon_h); + edje_extern_object_max_size_set(sd->image_object, icon_w, icon_h); edje_object_part_swallow(sd->icon_object, "icon_swallow", sd->image_object); -// edje_object_part_swallow(sd->icon_object, "icon_title", -// sd->title_object); } pid = -1; @@ -510,7 +490,7 @@ _e_fm_icon_thumb_cb_exe_exit(void *data, int type, void *event) static void _e_fm_icon_type_set(E_Smart_Data *sd) { - switch(sd->type) + switch (sd->type) { case E_FM_ICON_NORMAL: e_theme_edje_object_set(sd->icon_object, "base/theme/fileman", @@ -531,13 +511,13 @@ _e_fm_icon_type_set(E_Smart_Data *sd) if (sd->image_object) { edje_extern_object_min_size_set(sd->image_object, sd->iw, sd->ih); - edje_extern_object_max_size_set(sd->image_object, sd->iw, sd->ih); - edje_object_part_swallow(sd->icon_object, "icon_swallow", sd->image_object); - evas_object_smart_member_add(sd->image_object, sd->obj); + edje_extern_object_max_size_set(sd->image_object, sd->iw, sd->ih); + edje_object_part_swallow(sd->icon_object, "icon_swallow", + sd->image_object); evas_object_show(sd->image_object); } - if(sd->saved_title) + if (sd->saved_title) { #if 0 Evas_Textblock_Style *e_editable_text_style; diff --git a/src/bin/e_fileman_smart.c b/src/bin/e_fileman_smart.c index b47190382..f548dd916 100644 --- a/src/bin/e_fileman_smart.c +++ b/src/bin/e_fileman_smart.c @@ -615,6 +615,7 @@ _e_fm_smart_del(Evas_Object *object) sd->event_handlers = evas_list_remove_list(sd->event_handlers, sd->event_handlers); } + evas_event_freeze(evas_object_evas_get(object)); while (sd->files) { _e_fm_file_free(sd->files->data); @@ -628,6 +629,8 @@ _e_fm_smart_del(Evas_Object *object) if (sd->entry_object) evas_object_del(sd->entry_object); if (sd->menu) e_object_del(E_OBJECT(sd->menu)); + evas_event_thaw(evas_object_evas_get(object)); + free(sd->dir); free(sd); } diff --git a/src/bin/e_thumb.c b/src/bin/e_thumb.c index e38b8e83e..c62bdbc8a 100644 --- a/src/bin/e_thumb.c +++ b/src/bin/e_thumb.c @@ -357,9 +357,10 @@ e_thumb_evas_object_get(char *file, Evas *evas, Evas_Coord width, Evas_Coord hei im = e_icon_add(evas); e_icon_file_key_set(im, thumb, "/thumbnail/data"); - if (shrink) + if (shrink) { Evas_Coord sw, sh; + e_icon_size_get(im, &sw, &sh); evas_object_resize(im, sw, sh); }