This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository enlightenment-module-penguins.

View the commit online.

commit b51262749c81c7cd7bb1585dfb894631e2062df6
Author: Dave Andreoli <d...@gurumeditation.it>
AuthorDate: Sat Dec 9 10:26:24 2023 +0100

    Fix for CSD clients
---
 src/e_mod_penguins.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/e_mod_penguins.c b/src/e_mod_penguins.c
index e24bced..444992f 100644
--- a/src/e_mod_penguins.c
+++ b/src/e_mod_penguins.c
@@ -191,7 +191,7 @@ _load_action(char *name, int id)
 
    data = "" name);
    if (!data) return NULL;
-   
+
    ret = sscanf(data, "%d %d %d", &w, &h, &speed);
    free(data);
    if (ret != 3) return NULL;
@@ -386,7 +386,7 @@ _reborn(Penguins_Actor *tux)
    tux->reverse = random() % (2);
    tux->x = tux->zone->x + (random() % (tux->zone->w - tux->action->w));
    tux->y = tux->zone->y - 100;
-   
+
    evas_object_move(tux->obj, (int)tux->x, (int)tux->y);
    _start_falling_at(tux, tux->x);
    evas_object_resize(tux->obj, tux->action->w, tux->action->h);
@@ -588,21 +588,35 @@ _cb_animator(void *data)
 static int
 _is_inside_any_win(Penguins_Actor *tux, int x, int y, int ret_value)
 {
+   Evas *canvas;
    Evas_Object *o;
+   E_Client *ec;
+   int xx, yy, ww, hh;
+   int l, r, t, b;
+
 #if E_VERSION_MAJOR >= 20
-   o = evas_object_top_get(e_comp->evas);
+   canvas = e_comp->evas;
 #else
-   o = evas_object_top_get(tux->zone->comp->evas);
+   canvas = tux->zone->comp->evas;
 #endif
+
+   o = evas_object_top_get(canvas);
    while (o)
    {
-      int xx, yy, ww, hh;
-
       if (evas_object_data_get(o, "comp_object") && evas_object_visible_get(o))
       {
          evas_object_geometry_get(o, &xx, &yy, &ww, &hh);
          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",
             //        evas_object_layer_get(o), o, evas_object_name_get(o), xx, yy, ww, hh);
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to