jypark pushed a commit to branch master.
commit d70feacf9bf6c165ecca8e5756e721320cf12a11
Author: Jiyoun Park <[email protected]>
Date: Tue Mar 5 14:25:50 2013 +0900
Ecore_x: Add atom related with indicator type.
It can support several types of indicator
---
ChangeLog | 7 +++-
NEWS | 1 +
src/lib/ecore_x/Ecore_X.h | 13 +++++--
src/lib/ecore_x/Ecore_X_Atoms.h | 3 ++
src/lib/ecore_x/ecore_x_atoms_decl.h | 6 ++++
src/lib/ecore_x/xcb/ecore_xcb_e.c | 68 ++++++++++++++++++++++++++++++++++++
src/lib/ecore_x/xlib/ecore_x_e.c | 68 ++++++++++++++++++++++++++++++++++++
7 files changed, 163 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d91c74b..e936fe5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-2013-03-05 Jiyoun Park (Jypar)
+2013-03-05 Jiyoun Park (Jypark)
+
+ * Ecore_x: Add atom related with indicator type.
+ It can support several types of indicator
+
+2013-03-05 Jiyoun Park (Jypark)
* Ecore_x: Fix dangling pointer problem related with shmget fail
diff --git a/NEWS b/NEWS
index a2100bd..45b0ef4 100644
--- a/NEWS
+++ b/NEWS
@@ -68,6 +68,7 @@ Additions:
* Add infrastructure to handle buggy touchscreen in Ecore_Input_Evas.
* Add infrastructure to handle message between ecore and parent ecore in
Ecore_Evas.
* Edje textblock: Added support for size_range.
+ * Ecore_x: Add atom related with indicator type.
Deprecations:
* ecore_x:
diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 64f2427..16fc338 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -1266,6 +1266,13 @@ typedef enum _Ecore_X_Illume_Indicator_Opacity_Mode
ECORE_X_ILLUME_INDICATOR_TRANSPARENT
} Ecore_X_Illume_Indicator_Opacity_Mode;
+typedef enum _Ecore_X_Illume_Indicator_Type_Mode
+{
+ ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN = 0,
+ ECORE_X_ILLUME_INDICATOR_TYPE_1,
+ ECORE_X_ILLUME_INDICATOR_TYPE_2
+} Ecore_X_Illume_Indicator_Type_Mode; /**< @since 1.8 */
+
typedef enum _Ecore_X_Illume_Window_State
{
ECORE_X_ILLUME_WINDOW_STATE_NORMAL = 0,
@@ -2537,11 +2544,13 @@ EAPI Ecore_X_Illume_Indicator_State
ecore_x_e_illume_indicator_state_get(
EAPI void
ecore_x_e_illume_indicator_state_send(Ecore_X_Window win,
Ecore_X_Illume_Indicator_State state);
EAPI void
ecore_x_e_illume_indicator_opacity_set(Ecore_X_Window win,
Ecore_X_Illume_Indicator_Opacity_Mode mode);
-
EAPI Ecore_X_Illume_Indicator_Opacity_Mode
ecore_x_e_illume_indicator_opacity_get(Ecore_X_Window win);
-
EAPI void
ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win,
Ecore_X_Illume_Indicator_Opacity_Mode mode);
+EAPI void
ecore_x_e_illume_indicator_type_set(Ecore_X_Window win,
Ecore_X_Illume_Indicator_Type_Mode mode); /**< @since 1.8 */
+EAPI Ecore_X_Illume_Indicator_Type_Mode
ecore_x_e_illume_indicator_type_get(Ecore_X_Window win); /**< @since 1.8 */
+EAPI void
ecore_x_e_illume_indicator_type_send(Ecore_X_Window win,
Ecore_X_Illume_Indicator_Type_Mode mode); /**< @since 1.8 */
+
EAPI void
ecore_x_e_illume_window_state_set(Ecore_X_Window win,
Ecore_X_Illume_Window_State state);
diff --git a/src/lib/ecore_x/Ecore_X_Atoms.h b/src/lib/ecore_x/Ecore_X_Atoms.h
index 22a3ff9..9f76d41 100644
--- a/src/lib/ecore_x/Ecore_X_Atoms.h
+++ b/src/lib/ecore_x/Ecore_X_Atoms.h
@@ -245,6 +245,9 @@ EAPI extern Ecore_X_Atom
ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE;
diff --git a/src/lib/ecore_x/ecore_x_atoms_decl.h
b/src/lib/ecore_x/ecore_x_atoms_decl.h
index 46311e0..1d1b2f3 100644
--- a/src/lib/ecore_x/ecore_x_atoms_decl.h
+++ b/src/lib/ecore_x/ecore_x_atoms_decl.h
@@ -271,6 +271,9 @@ EAPI Ecore_X_Atom
ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE = 0;
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE= 0;
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT = 0;
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1 = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2 = 0;
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE = 0;
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE = 0;
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE = 0;
@@ -576,6 +579,9 @@ const Atom_Item atom_items[] =
{ "_E_ILLUME_INDICATOR_OPAQUE", &ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE },
{ "_E_ILLUME_INDICATOR_TRANSLUCENT",
&ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT },
{ "_E_ILLUME_INDICATOR_TRANSPARENT",
&ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT },
+ { "_E_ILLUME_INDICATOR_TYPE", &ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE },
+ { "_E_ILLUME_INDICATOR_TYPE_0", &ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1 },
+ { "_E_ILLUME_INDICATOR_TYPE_1", &ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2 },
{ "_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLES",
&ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE },
{ "_E_ILLUME_ROTATE_WINDOW_ANGLE",
&ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE },
{ "_E_ILLUME_ROTATE_ROOT_ANGLE", &ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE },
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_e.c
b/src/lib/ecore_x/xcb/ecore_xcb_e.c
index f08b2af..784ca97 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_e.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_e.c
@@ -1789,6 +1789,74 @@ ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window
win,
}
static Ecore_X_Atom
+_ecore_x_e_indicator_type_atom_get(Ecore_X_Illume_Indicator_Type_Mode mode)
+{
+ switch (mode)
+ {
+ case ECORE_X_ILLUME_INDICATOR_TYPE_1:
+ return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1;
+
+ case ECORE_X_ILLUME_INDICATOR_TYPE_2:
+ return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2;
+
+ default:
+ break;
+ }
+ return 0;
+}
+
+static Ecore_X_Illume_Indicator_Type_Mode
+_ecore_x_e_indicator_type_get(Ecore_X_Atom atom)
+{
+ if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1)
+ return ECORE_X_ILLUME_INDICATOR_TYPE_1;
+
+ if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2)
+ return ECORE_X_ILLUME_INDICATOR_TYPE_2;
+
+ return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
+}
+
+EAPI void
+ecore_x_e_illume_indicator_type_set(Ecore_X_Window win,
+ Ecore_X_Illume_Indicator_Type_Mode mode)
+{
+ Ecore_X_Atom atom = 0;
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+ atom = _ecore_x_e_indicator_type_atom_get(mode);
+ ecore_x_window_prop_atom_set(win,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
+ &atom, 1);
+}
+
+EAPI Ecore_X_Illume_Indicator_Type_Mode
+ecore_x_e_illume_indicator_type_get(Ecore_X_Window win)
+{
+ Ecore_X_Atom atom;
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+ if (!ecore_x_window_prop_atom_get(win,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
+ &atom, 1))
+ return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
+
+ return _ecore_x_e_indicator_type_get(atom);
+}
+
+EAPI void
+ecore_x_e_illume_indicator_type_send(Ecore_X_Window win,
+ Ecore_X_Illume_Indicator_Type_Mode mode)
+{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+ ecore_x_client_message32_send(win,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
+ ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
+ _ecore_x_e_indicator_type_atom_get(mode),
+ 0, 0, 0, 0);
+}
+
+static Ecore_X_Atom
_ecore_x_e_illume_window_state_atom_get(Ecore_X_Illume_Window_State state)
{
switch (state)
diff --git a/src/lib/ecore_x/xlib/ecore_x_e.c b/src/lib/ecore_x/xlib/ecore_x_e.c
index 849f427..7c8098b 100644
--- a/src/lib/ecore_x/xlib/ecore_x_e.c
+++ b/src/lib/ecore_x/xlib/ecore_x_e.c
@@ -1840,6 +1840,74 @@ ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window
win,
}
static Ecore_X_Atom
+_ecore_x_e_indicator_type_atom_get(Ecore_X_Illume_Indicator_Type_Mode mode)
+{
+ switch (mode)
+ {
+ case ECORE_X_ILLUME_INDICATOR_TYPE_1:
+ return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1;
+
+ case ECORE_X_ILLUME_INDICATOR_TYPE_2:
+ return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2;
+
+ default:
+ break;
+ }
+ return 0;
+}
+
+static Ecore_X_Illume_Indicator_Type_Mode
+_ecore_x_e_indicator_type_get(Ecore_X_Atom atom)
+{
+ if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1)
+ return ECORE_X_ILLUME_INDICATOR_TYPE_1;
+
+ if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2)
+ return ECORE_X_ILLUME_INDICATOR_TYPE_2;
+
+ return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
+}
+
+EAPI void
+ecore_x_e_illume_indicator_type_set(Ecore_X_Window win,
+ Ecore_X_Illume_Indicator_Type_Mode mode)
+{
+ Ecore_X_Atom atom = 0;
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+ atom = _ecore_x_e_indicator_type_atom_get(mode);
+ ecore_x_window_prop_atom_set(win,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
+ &atom, 1);
+}
+
+EAPI Ecore_X_Illume_Indicator_Type_Mode
+ecore_x_e_illume_indicator_type_get(Ecore_X_Window win)
+{
+ Ecore_X_Atom atom = 0;
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+ if (!ecore_x_window_prop_atom_get(win,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
+ &atom, 1))
+ return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
+
+ return _ecore_x_e_indicator_type_get(atom);
+}
+
+EAPI void
+ecore_x_e_illume_indicator_type_send(Ecore_X_Window win,
+ Ecore_X_Illume_Indicator_Type_Mode mode)
+{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+ ecore_x_client_message32_send(win,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
+ ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
+ _ecore_x_e_indicator_type_atom_get(mode),
+ 0, 0, 0, 0);
+}
+
+static Ecore_X_Atom
_ecore_x_e_illume_window_state_atom_get(Ecore_X_Illume_Window_State state)
{
switch (state)
--
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb