[*] Add new api related with get last recently requested geometry value
authorJiyoun Park <jy0703.park@samsung.com>
Mon, 31 Oct 2011 04:27:37 +0000 (13:27 +0900)
committerJiyoun Park <jy0703.park@samsung.com>
Mon, 31 Oct 2011 04:33:06 +0000 (13:33 +0900)
add this api because ecore_evas_geometry_get function can only provide value updated after X reply

Change-Id: Ia7c44939d0e1637637c561ba8a833e82cdeb1495

src/lib/ecore_evas/Ecore_Evas.h
src/lib/ecore_evas/ecore_evas.c

index b26b8d6..c29b20f 100644 (file)
@@ -279,6 +279,30 @@ EAPI Eina_Bool   ecore_evas_transparent_get(const Ecore_Evas *ee);
  */
 EAPI void        ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
 /**
+ * @brief  Get the geometry which an Ecore_Evas was latest recently requested.
+ *
+ * @param ee The Ecore_Evas whose geometry y
+ * @param x A pointer to an int to place the x coordinate in
+ * @param y A pointer to an int to place the y coordinate in
+ * @param w A pointer to an int to place the w size in
+ * @param h A pointer to an int to place the h size in
+ *
+ * This function takes four pointers to (already allocated) ints, and places
+ * the geometry which @p ee was latest recently requested . If any of the parameters is not desired you
+ * may pass NULL on them.
+ * This function can represent recently requested geomety.
+ * ecore_evas_geometry_get function returns the value is updated after engine finished request.
+ * By comparison, ecore_evas_request_geometry_get returns recently requested value.
+ *
+ * @code
+ * int x, y, w, h;
+ * ecore_evas_request_geometry_get(ee, &x, &y, &w, &h);
+ * @endcode
+ *
+ * @since 1.1
+ */
+EAPI void        ecore_evas_request_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
+/**
  * @brief Set the focus of an Ecore_Evas' window.
  *
  * @param ee The Ecore_Evas
index a7afc0d..ccb3f43 100644 (file)
@@ -1185,6 +1185,31 @@ ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h)
 }
 
 EAPI void
+ecore_evas_request_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+        ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                         "ecore_evas_request_geometry_get");
+        return;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+        if (x) *x = ee->req.x;
+        if (y) *y = ee->req.y;
+        if (w) *w = ee->req.h;
+        if (h) *h = ee->req.w;
+     }
+   else
+     {
+        if (x) *x = ee->req.x;
+        if (y) *y = ee->req.y;
+        if (w) *w = ee->req.w;
+        if (h) *h = ee->req.h;
+     }
+}
+
+EAPI void
 ecore_evas_rotation_set(Ecore_Evas *ee, int rot)
 {
    if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))