if (ec->new_client || ec->iconic) return;
_e_client_event_simple(ec, E_EVENT_CLIENT_HIDE);
+
+ EC_CHANGED(ec);
}
static void
static void
_e_client_cb_evas_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
+ E_Client *ec = data;
_e_client_event_simple(data, E_EVENT_CLIENT_SHOW);
+ EC_CHANGED(ec);
}
static void
/* TODO: need to check whether window intersects with entire screen, not zone. */
/* if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, zone->x, zone->y, zone->w, zone->h)) continue; */
/* check if internal animation is running */
- if (e_comp_object_is_animating(ec->frame)) continue;
+ //if (e_comp_object_is_animating(ec->frame)) continue;
/* check if external animation is running */
if (evas_object_data_get(ec->frame, "effect_running")) continue;
if (_e_client_layout_cb)
_e_client_layout_cb();
+ Eina_Bool calc_visibility = EINA_FALSE;
// pass 3 - hide windows needing hide and eval (main eval)
E_CLIENT_FOREACH(ec)
{
if (ec->changed)
{
_e_client_eval(ec);
-
- /* calculate visibility of clients */
- e_client_visibility_calculate();
+ calc_visibility = EINA_TRUE;
}
if ((ec->changes.visible) && (ec->visible) && (!ec->changed))
evas_object_show(ec->frame);
ec->changes.visible = !evas_object_visible_get(ec->frame);
ec->changed = ec->changes.visible;
+ calc_visibility = EINA_TRUE;
}
}
+ if (calc_visibility)
+ {
+ /* calculate visibility of clients */
+ e_client_visibility_calculate();
+ }
+
TRACE_DS_END();
}
if ((!ec->comp_data->mapped) && (e_pixmap_usable_get(ec->pixmap)))
{
- /* map this surface if needed */
- ec->visible = EINA_TRUE;
- evas_object_show(ec->frame);
- ec->comp_data->mapped = EINA_TRUE;
+ int pw = 0;
+ int ph = 0;
+ e_pixmap_size_get(ec->pixmap, &pw, &ph);
+ if (pw != ec->w || ph != ec->h)
+ {
+ // skip. because the pixmap's size doesnot same to ec's size
+ ELOGF("SHELL",
+ "Deny Map |win:0x%08x|ec_size:%d,%d|pix_size:%d,%d",
+ ec->pixmap, ec,
+ (unsigned int)e_client_util_win_get(ec),
+ ec->w, ec->h, pw, ph);
+ }
+ else
+ {
+ /* map this surface if needed */
+ ec->visible = EINA_TRUE;
+ evas_object_show(ec->frame);
+ ec->comp_data->mapped = EINA_TRUE;
+ }
/* FIXME: sometimes popup surfaces Do Not raise above their
* respective parents... */