not_raise = ec->exp_iconify.not_raise;
if (!not_raise)
evas_object_raise(ec->frame);
- evas_object_show(ec->frame);
+
+ if (ec->pixmap && e_pixmap_usable_get(ec->pixmap))
+ evas_object_show(ec->frame);
+
e_client_comp_hidden_set(ec, 0);
ec->deskshow = ec->iconic = 0;
- evas_object_focus_set(ec->frame, 1);
+
+ if (ec->pixmap && e_pixmap_usable_get(ec->pixmap))
+ evas_object_focus_set(ec->frame, 1);
_e_client_event_simple(ec, E_EVENT_CLIENT_UNICONIFY);
{
[E_PIXMAP_HOOK_NEW] = NULL,
[E_PIXMAP_HOOK_DEL] = NULL,
+ [E_PIXMAP_HOOK_USABLE] = NULL,
+ [E_PIXMAP_HOOK_UNUSABLE] = NULL,
};
static void
if (!cp) return 0;
if (--cp->refcount) return cp->refcount;
ELOG("PIXMAP DEL", cp, cp->client);
+ if (cp->usable)
+ e_pixmap_usable_set(cp, 0);
+
_e_pixmap_hook_call(E_PIXMAP_HOOK_DEL, cp);
e_pixmap_image_clear(cp, EINA_FALSE);
eina_hash_del_by_key(pixmaps[cp->type], &cp->win);
E_API void
e_pixmap_usable_set(E_Pixmap *cp, Eina_Bool set)
{
+ Eina_Bool tmp = !!set;
EINA_SAFETY_ON_NULL_RETURN(cp);
- cp->usable = !!set;
+
+ if (cp->usable != tmp)
+ {
+ cp->usable = tmp;
+
+ if (cp->usable)
+ _e_pixmap_hook_call(E_PIXMAP_HOOK_USABLE, cp);
+ else
+ _e_pixmap_hook_call(E_PIXMAP_HOOK_UNUSABLE, cp);
+ }
}
E_API Eina_Bool