summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJi-Youn Park <jy0703.park@samsung.com>2016-05-27 16:43:08 +0830
committerJi-Youn Park <jy0703.park@samsung.com>2016-05-27 16:43:08 +0830
commitec464939d9b8e4daabb55fab07e369a7e00cc941 (patch)
treeedeac9649f40dd5ba6eeb9bc6f234e5860809bb9
parent589eae9a8bff9aa160df61656a7faab8bd2b9169 (diff)
downloadefl-ec464939d9b8e4daabb55fab07e369a7e00cc941.tar.gz
elm_win: clean elm apis related with rotation.
elm_win only support two kind of apis. 1. elm_win_screen_rotation_get this api is used to detect screen rotation before app doing something before rotation event. for example, app can query rotation before deciding there layout. 2. elm_win_available_rotation_set/get like video app, can set only landscape mode if they need.
-rw-r--r--src/lib/elementary/elm_win.c144
-rw-r--r--src/lib/elementary/elm_win.eo147
-rw-r--r--src/lib/elementary/elm_win_legacy.h71
3 files changed, 196 insertions, 166 deletions
diff --git a/src/lib/elementary/elm_win.c b/src/lib/elementary/elm_win.c
index 4053f6b791..d2822dc615 100644
--- a/src/lib/elementary/elm_win.c
+++ b/src/lib/elementary/elm_win.c
@@ -4906,68 +4906,13 @@ _win_rotate(Evas_Object *obj, Elm_Win_Data *sd, int rotation, Eina_Bool resize)
(obj, ELM_WIN_EVENT_ROTATION_CHANGED, NULL);
}
-EOLIAN static void
-_elm_win_rotation_set(Eo *obj, Elm_Win_Data *sd, int rotation)
-{
- _win_rotate(obj, sd, rotation, EINA_FALSE);
-}
-
-/*
- * This API does not resize the internal window (ex: X window).
- * But this resizes evas_output, elm window, and its contents.
- */
-EOLIAN static void
-_elm_win_rotation_with_resize_set(Eo *obj, Elm_Win_Data *sd, int rotation)
-{
- _win_rotate(obj, sd, rotation, EINA_TRUE);
-}
-
EOLIAN static int
-_elm_win_rotation_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
-{
- return sd->rot;
-}
-
-EOLIAN static Eina_Bool
-_elm_win_wm_rotation_supported_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
-{
- return sd->wm_rot.wm_supported;
-}
-
-/* This will unset a preferred rotation, if given preferred rotation is '-1'.
- */
-EAPI void
-elm_win_wm_rotation_preferred_rotation_set(const Evas_Object *obj,
- int rotation)
-{
- ELM_WIN_CHECK(obj);
- elm_obj_win_wm_preferred_rotation_set((Eo *) obj, rotation);
-}
-
-EOLIAN static void
-_elm_win_wm_preferred_rotation_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, int rotation)
+_elm_win_screen_rotation_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
{
- int rot;
-
- if (!sd->wm_rot.use)
- sd->wm_rot.use = EINA_TRUE;
-
- // '-1' means that elm_win doesn't use preferred rotation.
- if (rotation == -1)
- rot = -1;
- else
- rot = _win_rotation_degree_check(rotation);
-
- if (sd->wm_rot.preferred_rot == rot) return;
- sd->wm_rot.preferred_rot = rot;
-
- ecore_evas_wm_rotation_preferred_rotation_set(sd->ee, rot);
-}
+ //TODO: query to wm about device's rotation
+ (void)sd;
-EOLIAN static int
-_elm_win_wm_preferred_rotation_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
-{
- return sd->wm_rot.preferred_rot;
+ return 0;
}
EOLIAN static void
@@ -6152,4 +6097,85 @@ elm_win_wm_manual_rotation_done_manual(Evas_Object *obj)
ecore_evas_wm_rotation_manual_rotation_done(sd->ee);
}
+EAPI void
+elm_win_rotation_set(Evas_Object *obj, int rotation)
+{
+ ELM_WIN_CHECK(obj);
+ ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
+
+ _win_rotate(obj, sd, rotation, EINA_FALSE);
+}
+
+/*
+ * This API does not resize the internal window (ex: X window).
+ * But this resizes evas_output, elm window, and its contents.
+ */
+EAPI void
+elm_win_rotation_with_resize_set(Evas_Object *obj, int rotation)
+{
+ ELM_WIN_CHECK(obj);
+ ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
+
+ _win_rotate(obj, sd, rotation, EINA_TRUE);
+}
+
+EAPI int
+elm_win_rotation_get(const Evas_Object *obj)
+{
+ ELM_WIN_CHECK(obj) -1;
+ ELM_WIN_DATA_GET_OR_RETURN(obj, sd, -1);
+
+ return sd->rot;
+}
+
+EAPI void
+elm_win_wm_preferred_rotation_set(Evas_Object *obj, int rotation)
+{
+ int rot;
+
+ ELM_WIN_CHECK(obj);
+ ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
+
+ if (!sd->wm_rot.use)
+ sd->wm_rot.use = EINA_TRUE;
+
+ // '-1' means that elm_win doesn't use preferred rotation.
+ if (rotation == -1)
+ rot = -1;
+ else
+ rot = _win_rotation_degree_check(rotation);
+
+ if (sd->wm_rot.preferred_rot == rot) return;
+ sd->wm_rot.preferred_rot = rot;
+
+ ecore_evas_wm_rotation_preferred_rotation_set(sd->ee, rot);
+}
+
+EAPI int
+elm_win_wm_preferred_rotation_get(const Evas_Object *obj)
+{
+ ELM_WIN_CHECK(obj) -1;
+ ELM_WIN_DATA_GET_OR_RETURN(obj, sd, -1);
+
+ return sd->wm_rot.preferred_rot;
+}
+
+EAPI Eina_Bool
+elm_win_wm_rotation_supported_get(const Evas_Object *obj)
+{
+ ELM_WIN_CHECK(obj) EINA_FALSE;
+ ELM_WIN_DATA_GET_OR_RETURN(obj, sd, EINA_FALSE);
+
+ return sd->wm_rot.wm_supported;
+}
+
+/* This will unset a preferred rotation, if given preferred rotation is '-1'.
+ */
+EAPI void
+elm_win_wm_rotation_preferred_rotation_set(Evas_Object *obj, int rotation)
+{
+ ELM_WIN_CHECK(obj);
+ elm_win_wm_preferred_rotation_set(obj, rotation);
+}
+
#include "elm_win.eo.c"
diff --git a/src/lib/elementary/elm_win.eo b/src/lib/elementary/elm_win.eo
index e6dbedb47b..6fe5b41422 100644
--- a/src/lib/elementary/elm_win.eo
+++ b/src/lib/elementary/elm_win.eo
@@ -198,6 +198,47 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
mode: Elm.Win.Keyboard_Mode; [[The mode, one of #Elm_Win_Keyboard_Mode.]]
}
}
+ @property wm_available_rotations {
+ set {
+ [[Set the array of available window rotations.
+
+ This function is used to set the available rotations to give
+ the hints to WM. WM will refer this hints and set the
+ orientation window properly.
+
+ @since 1.9
+ ]]
+ legacy: elm_win_wm_rotation_available_rotations_set;
+ values {
+ rotations: const(int)*; [[The array of rotation value.]]
+ count: uint; [[The size of the rotations array.]]
+ }
+ }
+ get {
+ [[Get the array of available window rotations.
+
+ This function is used to get the available rotations.
+
+ @since 1.9
+ ]]
+ legacy: elm_win_wm_rotation_available_rotations_get;
+ values {
+ rotations: int*; [[The array of rotation value.]]
+ count: uint; [[The size of the rotations array.]]
+ }
+ return: bool;
+ }
+ }
+ @property screen_rotation {
+ get {
+ [[Get the rotation of the screen.
+
+ Most engines only return multiples of 90.
+ @since 1.19
+ ]]
+ return: int;
+ }
+ }
@property autodel {
set {
[[Set the window's autodel state.
@@ -259,37 +300,6 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
iconified: bool; [[If true, the window is iconified.]]
}
}
- @property wm_available_rotations {
- set {
- [[Set the array of available window rotations.
-
- This function is used to set the available rotations to give
- the hints to WM. WM will refer this hints and set the
- orientation window properly.
-
- @since 1.9
- ]]
- legacy: elm_win_wm_rotation_available_rotations_set;
- values {
- rotations: const(int)*; [[The array of rotation value.]]
- count: uint; [[The size of the rotations array.]]
- }
- }
- get {
- [[Get the array of available window rotations.
-
- This function is used to get the available rotations.
-
- @since 1.9
- ]]
- legacy: elm_win_wm_rotation_available_rotations_get;
- values {
- rotations: int*; [[The array of rotation value.]]
- count: uint; [[The size of the rotations array.]]
- }
- return: bool;
- }
- }
@property maximized {
set {
[[Set the maximized state of a window.]]
@@ -520,27 +530,6 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
urgent: bool; [[If true, the window is urgent.]]
}
}
- @property rotation {
- set {
- [[Set the rotation of the window.
-
- Most engines only work with multiples of 90.
-
- This function is used to set the orientation of the window
- $obj to match that of the screen. The window itself will be
- resized to adjust to the new geometry of its contents. If
- you want to keep the window size,
- see @.rotation_with_resize.set.
- ]]
- }
- get {
- [[Get the rotation of the window.]]
- }
- values {
- rotation: int; [[The rotation of the window, in degrees (0-360),
- counter-clockwise.]]
- }
- }
@property icon_object {
set {
[[Set a window object's icon.
@@ -633,31 +622,6 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
demand_attention: bool; [[If true, the window is demand_attention.]]
}
}
- @property wm_preferred_rotation {
- set {
- [[Set the preferred rotation value.
-
- This function is used to set the orientation of window
- $obj to spicific angle fixed.
-
- @since 1.9
- ]]
- legacy: null;
- }
- get {
- [[Get the preferred rotation value.
-
- This function is used to get the preferred rotoation value.
-
- @since 1.9
- ]]
- legacy: elm_win_wm_rotation_preferred_rotation_get;
- }
- values {
- rotation: int; [[The preferred rotation of the window in degrees
- (0-360), counter-clockwise.]]
- }
- }
@property layer {
set {
[[Set the layer of the window.
@@ -748,19 +712,6 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
h: int; [[The base height.]]
}
}
- @property rotation_with_resize {
- set {
- [[Rotates the window and resizes it.
-
- Like @.rotation.set, but it also resizes the window's
- contents so that they fit inside the current window geometry.
- ]]
- }
- values {
- rotation: int; [[The rotation of the window in degrees (0-360),
- counter-clockwise.]]
- }
- }
@property prop_focus_skip {
set {
[[Set the window to be skipped by keyboard focus.
@@ -794,22 +745,6 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
y: int; [[The int to store the y coordinate to.]]
}
}
- @property wm_rotation_supported {
- get {
- [[Query whether window manager supports window rotation or not.
-
- The window manager rotation allows the WM to controls the
- rotation of application windows. It is designed to support
- synchronized rotation for the multiple application windows
- at same time.
-
- See also @.wm_preferred_rotation, @.wm_available_rotations.
-
- @since 1.9
- ]]
- return: bool;
- }
- }
@property focus {
get {
[[Get whether a window has focus.]]
diff --git a/src/lib/elementary/elm_win_legacy.h b/src/lib/elementary/elm_win_legacy.h
index 04cc8c835b..b7f3fc22e5 100644
--- a/src/lib/elementary/elm_win_legacy.h
+++ b/src/lib/elementary/elm_win_legacy.h
@@ -259,7 +259,7 @@ EAPI Ecore_Win32_Window *elm_win_win32_window_get(const Evas_Object *obj);
* ingroup Elm_Win
* @since 1.9
*/
-EAPI void elm_win_wm_rotation_preferred_rotation_set(const Evas_Object *obj, int rotation);
+EAPI void elm_win_wm_rotation_preferred_rotation_set(Evas_Object *obj, int rotation);
/**
* Get the Ecore_Window of an Evas_Object
@@ -606,3 +606,72 @@ EAPI Eina_Bool elm_win_wm_rotation_manual_rotation_done_get(const Evas_Object *o
*/
EAPI void elm_win_wm_rotation_manual_rotation_done(Evas_Object *obj);
+/**
+ * @brief Set the rotation of the window.
+ *
+ * Most engines only work with multiples of 90.
+ *
+ * This function is used to set the orientation of the window @c obj to match
+ * that of the screen. The window itself will be resized to adjust to the new
+ * geometry of its contents. If you want to keep the window size, see
+ * @ref elm_win_rotation_with_resize_set.
+ *
+ * @param[in] rotation The rotation of the window, in degrees (0-360),
+ * counter-clockwise.
+ *
+ * @ingroup Elm_Win
+ */
+EAPI void elm_win_rotation_set(Evas_Object *obj, int rotation);
+
+/**
+ * @brief Get the rotation of the window.
+ *
+ * @return The rotation of the window, in degrees (0-360), counter-clockwise.
+ *
+ * @ingroup Elm_Win
+ */
+EAPI int elm_win_rotation_get(const Evas_Object *obj);
+
+/**
+ * @brief Rotates the window and resizes it.
+ *
+ * Like @ref elm_win_rotation_set, but it also resizes the window's contents so
+ * that they fit inside the current window geometry.
+ *
+ * @param[in] rotation The rotation of the window in degrees (0-360),
+ * counter-clockwise.
+ *
+ * @ingroup Elm_Win
+ */
+EAPI void elm_win_rotation_with_resize_set(Evas_Object *obj, int rotation);
+
+/**
+ * @brief Query whether window manager supports window rotation or not.
+ *
+ * The window manager rotation allows the WM to controls the rotation of
+ * application windows. It is designed to support synchronized rotation for the
+ * multiple application windows at same time.
+ *
+ * See also @ref elm_win_wm_rotation_preferred_rotation_get,
+ * @ref elm_win_wm_rotation_available_rotations_get.
+ *
+ * @since 1.9
+ *
+ * @ingroup Elm_Win
+ */
+EAPI Eina_Bool elm_win_wm_rotation_supported_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the preferred rotation value.
+ *
+ * This function is used to get the preferred rotoation value.
+ *
+ * @return The preferred rotation of the window in degrees (0-360),
+ * counter-clockwise.
+ *
+ * @since 1.9
+ *
+ * @ingroup Elm_Win
+ */
+EAPI int elm_win_wm_rotation_preferred_rotation_get(const Evas_Object *obj);
+