e_desk: add E_EVENT_DESK_GEOMETRY_CHANGE event 87/189087/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Mon, 10 Sep 2018 02:25:33 +0000 (11:25 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Thu, 13 Sep 2018 08:54:32 +0000 (17:54 +0900)
Change-Id: I27b01570ed2ae2ba3a1c807ba951573de3a5cb1b

src/bin/e_desk.c
src/bin/e_desk.h

index cccda76..068a0b5 100644 (file)
@@ -37,6 +37,7 @@ static void      _e_desk_event_desk_name_change_free(void *data, void *ev);
 static void      _e_desk_show_begin(E_Desk *desk, int dx, int dy);
 static void      _e_desk_hide_begin(E_Desk *desk, int dx, int dy);
 static void      _e_desk_event_desk_window_profile_change_free(void *data, void *ev);
+static void      _e_desk_event_desk_geometry_change_free(void *data, void *ev);
 static Eina_Bool _e_desk_cb_zone_move_resize(void *data, int type EINA_UNUSED, void *event);
 
 static void      _e_desk_smart_init(E_Desk *desk);
@@ -61,6 +62,7 @@ E_API int E_EVENT_DESK_AFTER_SHOW = 0;
 E_API int E_EVENT_DESK_DESKSHOW = 0;
 E_API int E_EVENT_DESK_NAME_CHANGE = 0;
 E_API int E_EVENT_DESK_WINDOW_PROFILE_CHANGE = 0;
+E_API int E_EVENT_DESK_GEOMETRY_CHANGE = 0;
 
 EINTERN int
 e_desk_init(void)
@@ -71,6 +73,7 @@ e_desk_init(void)
    E_EVENT_DESK_DESKSHOW = ecore_event_type_new();
    E_EVENT_DESK_NAME_CHANGE = ecore_event_type_new();
    E_EVENT_DESK_WINDOW_PROFILE_CHANGE = ecore_event_type_new();
+   E_EVENT_DESK_GEOMETRY_CHANGE = ecore_event_type_new();
    return 1;
 }
 
@@ -801,6 +804,7 @@ e_desk_geometry_set(E_Desk *desk, int x, int y, int w, int h)
    E_Maximize max;
    Eina_List *l = NULL, *ll = NULL;
    Evas_Object *m;
+   E_Event_Desk_Geometry_Change *ev = NULL;
 
    int cx, cy, dx, dy;
 
@@ -864,6 +868,20 @@ e_desk_geometry_set(E_Desk *desk, int x, int y, int w, int h)
 
    // apply geometry on smart obj
    evas_object_geometry_set(desk->smart_obj, x, y, w, h);
+
+   ev = E_NEW(E_Event_Desk_Geometry_Change, 1);
+   if (ev)
+     {
+        ev->desk = desk;
+        ev->x = x;
+        ev->y = y;
+        ev->w = w;
+        ev->h = h;
+        e_object_ref(E_OBJECT(desk));
+        ecore_event_add(E_EVENT_DESK_GEOMETRY_CHANGE, ev,
+                        _e_desk_event_desk_geometry_change_free, NULL);
+     }
+
    e_comp_render_queue();
 }
 
@@ -1119,6 +1137,14 @@ _e_desk_event_desk_window_profile_change_free(void *data EINA_UNUSED, void *even
    E_FREE(ev);
 }
 
+static void
+_e_desk_event_desk_geometry_change_free(void *data EINA_UNUSED, void *event)
+{
+   E_Event_Desk_Geometry_Change *ev = event;
+   e_object_unref(E_OBJECT(ev->desk));
+   E_FREE(ev);
+}
+
 static Eina_Bool
 _e_desk_cb_zone_move_resize(void *data, int type EINA_UNUSED, void *event)
 {
index 41a0559..07ee36c 100644 (file)
@@ -6,6 +6,7 @@ typedef struct _E_Event_Desk_Before_Show E_Event_Desk_Before_Show;
 typedef struct _E_Event_Desk_After_Show E_Event_Desk_After_Show;
 typedef struct _E_Event_Desk_Name_Change E_Event_Desk_Name_Change;
 typedef struct _E_Event_Desk_Window_Profile_Change E_Event_Desk_Window_Profile_Change;
+typedef struct _E_Event_Desk_Geometry_Change E_Event_Desk_Geometry_Change;
 
 typedef void (*E_Desk_Flip_Cb)(void *data, E_Desk *desk, int dx, int dy, Eina_Bool show);
 
@@ -70,6 +71,12 @@ struct _E_Event_Desk_Window_Profile_Change
    E_Desk   *desk;
 };
 
+struct _E_Event_Desk_Geometry_Change
+{
+   E_Desk   *desk;
+   int x, y, w, h;
+};
+
 EINTERN int          e_desk_init(void);
 EINTERN int          e_desk_shutdown(void);
 E_API E_Desk      *e_desk_new(E_Zone *zone, int x, int y);
@@ -117,6 +124,7 @@ extern E_API int E_EVENT_DESK_AFTER_SHOW;
 extern E_API int E_EVENT_DESK_DESKSHOW;
 extern E_API int E_EVENT_DESK_NAME_CHANGE;
 extern E_API int E_EVENT_DESK_WINDOW_PROFILE_CHANGE;
+extern E_API int E_EVENT_DESK_GEOMETRY_CHANGE;
 
 #endif
 #endif