e_zone: add Event for useful_geometry_change 12/292212/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Fri, 28 Apr 2023 05:13:36 +0000 (14:13 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 2 May 2023 02:54:52 +0000 (11:54 +0900)
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
src/bin/e_zone.h

index 139e55a2d960420f012d13a6aceaf6071d761c0a..2017dce0ceabe0e4656da00bb5a6874cbe2c0130 100644 (file)
@@ -39,6 +39,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)
@@ -78,6 +79,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;
 }
@@ -1162,6 +1164,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;
 }
 
@@ -1212,9 +1216,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;
 }
@@ -1239,6 +1241,8 @@ e_zone_obstacle_remove(E_Zone *zone, E_Client *ec)
              break;
           }
      }
+
+   e_zone_useful_geometry_dirty(zone);
 }
 
 static void
@@ -1340,16 +1344,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
index 8472ec5862ea7f71b4ca78f6c4cbc5eb4eed786e..50e56d24dfc84a09fb36c464b204fcf1a0e33087 100644 (file)
@@ -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? */
@@ -284,6 +285,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