aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/elementary/elm_win.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elementary/elm_win.c')
-rw-r--r--src/lib/elementary/elm_win.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/lib/elementary/elm_win.c b/src/lib/elementary/elm_win.c
index 04bed5ae3e..1cdf6b8fcd 100644
--- a/src/lib/elementary/elm_win.c
+++ b/src/lib/elementary/elm_win.c
@@ -3102,17 +3102,25 @@ _elm_win_frame_add(Elm_Win_Data *sd, const char *style)
evas_object_is_frame_object_set(sd->frame_obj, EINA_TRUE);
- if (!sd->icon)
+ if (sd->icon)
+ evas_object_show(sd->icon);
+ else
{
- Efreet_Desktop *d;
+ Eina_Bool set = EINA_FALSE;
sd->icon = elm_icon_add(sd->obj);
- d = efreet_util_desktop_exec_find(_elm_appname);
- if (d)
+ if (sd->icon_name)
+ set = elm_icon_standard_set(sd->icon, sd->icon_name);
+ if ((!sd->icon_name) || (!set))
{
- elm_icon_standard_set(sd->icon, d->icon);
- efreet_desktop_free(d);
+ Efreet_Desktop *d;
+ d = efreet_util_desktop_exec_find(_elm_appname);
+ if (d)
+ {
+ elm_icon_standard_set(sd->icon, d->icon);
+ efreet_desktop_free(d);
+ }
}
}
@@ -3210,6 +3218,7 @@ _elm_win_frame_del(Elm_Win_Data *sd)
ELM_SAFE_FREE(sd->frame_obj, evas_object_del);
}
+ if (sd->icon) evas_object_hide(sd->icon);
evas_output_framespace_set(sd->evas, 0, 0, 0, 0);
ecore_evas_geometry_get(sd->ee, NULL, NULL, &w, &h);
@@ -4205,12 +4214,17 @@ EOLIAN static void
_elm_win_icon_object_set(Eo *obj, Elm_Win_Data *sd, Evas_Object *icon)
{
if (sd->icon)
- evas_object_event_callback_del_full
- (sd->icon, EVAS_CALLBACK_DEL, _elm_win_on_icon_del, obj);
+ evas_object_event_callback_del_full(sd->icon, EVAS_CALLBACK_DEL,
+ _elm_win_on_icon_del, obj);
+ evas_object_del(sd->icon);
sd->icon = icon;
if (sd->icon)
- evas_object_event_callback_add
- (sd->icon, EVAS_CALLBACK_DEL, _elm_win_on_icon_del, obj);
+ {
+ evas_object_event_callback_add(sd->icon, EVAS_CALLBACK_DEL,
+ _elm_win_on_icon_del, obj);
+ if (sd->frame_obj)
+ edje_object_part_swallow(sd->frame_obj, "elm.swallow.icon", sd->icon);
+ }
#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(sd);
#endif