Fix for CSD clients
This commit is contained in:
parent
27f8152634
commit
b51262749c
|
@ -588,21 +588,35 @@ _cb_animator(void *data)
|
||||||
static int
|
static int
|
||||||
_is_inside_any_win(Penguins_Actor *tux, int x, int y, int ret_value)
|
_is_inside_any_win(Penguins_Actor *tux, int x, int y, int ret_value)
|
||||||
{
|
{
|
||||||
|
Evas *canvas;
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
|
E_Client *ec;
|
||||||
|
int xx, yy, ww, hh;
|
||||||
|
int l, r, t, b;
|
||||||
|
|
||||||
#if E_VERSION_MAJOR >= 20
|
#if E_VERSION_MAJOR >= 20
|
||||||
o = evas_object_top_get(e_comp->evas);
|
canvas = e_comp->evas;
|
||||||
#else
|
#else
|
||||||
o = evas_object_top_get(tux->zone->comp->evas);
|
canvas = tux->zone->comp->evas;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
o = evas_object_top_get(canvas);
|
||||||
while (o)
|
while (o)
|
||||||
{
|
{
|
||||||
int xx, yy, ww, hh;
|
|
||||||
|
|
||||||
if (evas_object_data_get(o, "comp_object") && evas_object_visible_get(o))
|
if (evas_object_data_get(o, "comp_object") && evas_object_visible_get(o))
|
||||||
{
|
{
|
||||||
evas_object_geometry_get(o, &xx, &yy, &ww, &hh);
|
evas_object_geometry_get(o, &xx, &yy, &ww, &hh);
|
||||||
if ((ww > 1) && (hh > 1))
|
if ((ww > 1) && (hh > 1))
|
||||||
{
|
{
|
||||||
|
// E_Clients (windows) need frame adjustment (fe: CSD)
|
||||||
|
ec = evas_object_data_get(o, "E_Client");
|
||||||
|
if (ec) {
|
||||||
|
e_comp_object_frame_geometry_get(o, &l, &r, &t, &b);
|
||||||
|
xx = ec->client.x - l;
|
||||||
|
yy = ec->client.y - t;
|
||||||
|
ww = ec->client.w + l + r;
|
||||||
|
hh = ec->client.h + t + b;
|
||||||
|
}
|
||||||
// printf("* LAYER: %d OBJ: %p - %s || %d,%d @ %dx%d\n",
|
// printf("* LAYER: %d OBJ: %p - %s || %d,%d @ %dx%d\n",
|
||||||
// evas_object_layer_get(o), o, evas_object_name_get(o), xx, yy, ww, hh);
|
// evas_object_layer_get(o), o, evas_object_name_get(o), xx, yy, ww, hh);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue