From aff0af73b98871afab1a1accb856bcc0309a93fe Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Fri, 28 Apr 2023 14:13:36 +0900 Subject: [PATCH] e_zone: add Event for useful_geometry_change We add a new event - E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGE. This event is generated when an obstacle is added/removed/modified. Change-Id: I613a335f6040318172476e5cf2b46f0273536355 --- src/bin/e_zone.c | 16 ++++++++++------ src/bin/e_zone.h | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 2f3432a..3b2ab5b 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -42,6 +42,7 @@ E_API int E_EVENT_ZONE_ROTATION_EFFECT_CANCEL = 0; E_API int E_EVENT_ZONE_ROTATION_EFFECT_DONE = 0; #endif E_API int E_EVENT_ZONE_DISPLAY_STATE_CHANGE = 0; +E_API int E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGE = 0; #define E_ZONE_FLIP_LEFT(zone) (((((zone)->desk_x_count > 1)) || ((zone)->desk_x_current > 0)) && (zone)->edge.left) #define E_ZONE_FLIP_RIGHT(zone) (((((zone)->desk_x_count > 1)) || (((zone)->desk_x_current + 1) < (zone)->desk_x_count)) && (zone)->edge.right) @@ -83,6 +84,7 @@ e_zone_init(void) E_EVENT_ZONE_ROTATION_EFFECT_DONE = ecore_event_type_new(); #endif E_EVENT_ZONE_DISPLAY_STATE_CHANGE = ecore_event_type_new(); + E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGE = ecore_event_type_new(); return 1; } @@ -1167,6 +1169,8 @@ e_zone_obstacle_add(E_Zone *zone, E_Client *ec, Eina_Rectangle *geom, Eina_Bool ELOGF("E_ZONE", "ADD obstacle... geo(%d,%d,%dx%d), vertical:%d", ec, obs->x, obs->y, obs->w, obs->h, obs->vertical); zone->obstacles = eina_list_append(zone->obstacles, obs); + + e_zone_useful_geometry_dirty(zone); return EINA_TRUE; } @@ -1217,9 +1221,7 @@ e_zone_obstacle_update(E_Zone *zone, E_Client *ec, Eina_Rectangle *geom, Eina_Bo ELOGF("E_ZONE", "UPDATE obstacle... geo(%d,%d,%dx%d), vertical:%d", ec, obs->x, obs->y, obs->w, obs->h, obs->vertical); if (changed) - { - // TODO: Generate event - } + e_zone_useful_geometry_dirty(zone); return EINA_TRUE; } @@ -1244,6 +1246,8 @@ e_zone_obstacle_remove(E_Zone *zone, E_Client *ec) break; } } + + e_zone_useful_geometry_dirty(zone); } static void @@ -1345,16 +1349,16 @@ e_zone_desk_useful_geometry_get(E_Zone *zone, E_Desk *desk, int *x, int *y, int E_API void e_zone_useful_geometry_dirty(E_Zone *zone) { - E_Event_Zone_Move_Resize *ev; + E_Event_Zone_Useful_Geometry_Change *ev; E_OBJECT_CHECK(zone); E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE); - ev = E_NEW(E_Event_Zone_Move_Resize, 1); + ev = E_NEW(E_Event_Zone_Useful_Geometry_Change, 1); if (!ev) return; ev->zone = zone; e_object_ref(E_OBJECT(ev->zone)); - ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_generic_free, NULL); + ecore_event_add(E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGE, ev, _e_zone_event_generic_free, NULL); } E_API void diff --git a/src/bin/e_zone.h b/src/bin/e_zone.h index 467844b..7dfe7a4 100644 --- a/src/bin/e_zone.h +++ b/src/bin/e_zone.h @@ -24,6 +24,7 @@ typedef struct _E_Zone_Obstacle E_Zone_Obstacle; typedef struct _E_Event_Zone_Generic E_Event_Zone_Desk_Count_Set; typedef struct _E_Event_Zone_Generic E_Event_Zone_Move_Resize; +typedef struct _E_Event_Zone_Generic E_Event_Zone_Useful_Geometry_Change; typedef struct _E_Event_Zone_Generic E_Event_Zone_Add; typedef struct _E_Event_Zone_Generic E_Event_Zone_Del; /* TODO: Move this to a general place? */ @@ -294,6 +295,7 @@ extern E_API int E_EVENT_ZONE_ROTATION_EFFECT_DONE; #endif extern E_API int E_EVENT_ZONE_DISPLAY_STATE_CHANGE; +extern E_API int E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGE; #endif #endif -- 2.7.4