raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=90be06df9efa3371a8c4f82b59f43656b65a1596

commit 90be06df9efa3371a8c4f82b59f43656b65a1596
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Dec 8 18:42:34 2016 +0900

    ecore-x - add e stack type atom and api's to set and get it
---
 src/lib/ecore_x/Ecore_X.h            | 10 ++++++++++
 src/lib/ecore_x/Ecore_X_Atoms.h      |  3 +++
 src/lib/ecore_x/ecore_x_atoms_decl.h |  5 +++++
 src/lib/ecore_x/ecore_x_e.c          | 31 +++++++++++++++++++++++++++++++
 4 files changed, 49 insertions(+)

diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index e732fb9..6654d78 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -1379,6 +1379,13 @@ typedef enum _Ecore_X_Illume_Window_State
    ECORE_X_ILLUME_WINDOW_STATE_FLOATING
 } Ecore_X_Illume_Window_State;
 
+typedef enum _Ecore_X_Stack_Type
+{
+   ECORE_X_STACK_NONE = 0,
+   ECORE_X_STACK_STANDARD = 1,
+   ECORE_X_STACK_LAST
+} Ecore_X_Stack_Type;
+
 /* Window layer constants */
 #define ECORE_X_WINDOW_LAYER_BELOW  2
 #define ECORE_X_WINDOW_LAYER_NORMAL 4
@@ -2739,6 +2746,9 @@ EAPI Eina_Bool                             
ecore_x_window_keygrab_unset(Ecore_X_
 EAPI void                                  
ecore_x_e_keyrouter_set(Ecore_X_Window root, Eina_Bool on); /**< @since 1.15 */ 
//Key router set keyrouter flag using this
 EAPI Eina_Bool                             
ecore_x_e_keyrouter_get(Ecore_X_Window root); /**< @since 1.15 */ //Client 
check the existance of keyrouter using this
 
+EAPI void                                  
ecore_x_e_stack_type_set(Ecore_X_Window win, Ecore_X_Stack_Type stack_type);
+EAPI Ecore_X_Stack_Type                    
ecore_x_e_stack_type_get(Ecore_X_Window win);
+
 #include <Ecore_X_Atoms.h>
 #include <Ecore_X_Cursor.h>
 
diff --git a/src/lib/ecore_x/Ecore_X_Atoms.h b/src/lib/ecore_x/Ecore_X_Atoms.h
index 69d7f0d..014a241 100644
--- a/src/lib/ecore_x/Ecore_X_Atoms.h
+++ b/src/lib/ecore_x/Ecore_X_Atoms.h
@@ -311,6 +311,9 @@ EAPI extern Ecore_X_Atom 
ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_DONE;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY;
 
+/* for window stacks */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_STACK_TYPE;
+
 /* for SDB(Samsung Debug Bridge) */
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_CONNECT;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_DISCONNECT;
diff --git a/src/lib/ecore_x/ecore_x_atoms_decl.h 
b/src/lib/ecore_x/ecore_x_atoms_decl.h
index 4e95f2c..37da8f2 100644
--- a/src/lib/ecore_x/ecore_x_atoms_decl.h
+++ b/src/lib/ecore_x/ecore_x_atoms_decl.h
@@ -327,6 +327,9 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_POSITION = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY = 0;
 
+/* for window stacks */
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_STACK_TYPE = 0;
+
 /* for SDB(Samsung Debug Bridge) */
 EAPI Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_CONNECT = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_DISCONNECT = 0;
@@ -685,6 +688,8 @@ const Atom_Item atom_items[] =
    { "_E_WINDOW_PROFILE_CHANGE_REQUEST", 
&ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_REQUEST },
    { "_E_WINDOW_PROFILE_CHANGE_DONE", 
&ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_DONE },
 
+   { "_E_STACK_TYPE", &ECORE_X_ATOM_E_STACK_TYPE },
+
    { "_E_DEICONIFY_APPROVE", &ECORE_X_ATOM_E_DEICONIFY_APPROVE },
 
    { "_E_WINDOW_ROTATION_SUPPORTED", &ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED 
},
diff --git a/src/lib/ecore_x/ecore_x_e.c b/src/lib/ecore_x/ecore_x_e.c
index 742d9d6..a7c5b60 100644
--- a/src/lib/ecore_x/ecore_x_e.c
+++ b/src/lib/ecore_x/ecore_x_e.c
@@ -2399,3 +2399,34 @@ ecore_x_e_keyrouter_get(Ecore_X_Window win EINA_UNUSED)
 
    return val == 1 ? EINA_TRUE : EINA_FALSE;
 }
+
+EAPI void
+ecore_x_e_stack_type_set(Ecore_X_Window win,
+                         Ecore_X_Stack_Type stack_type)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
+
+   if (stack_type == ECORE_X_STACK_NONE)
+     ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_STACK_TYPE);
+   else
+     ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_STACK_TYPE,
+                                    &stack_type, 1);
+}
+
+EAPI Ecore_X_Stack_Type
+ecore_x_e_stack_type_get(Ecore_X_Window win)
+{
+   int ret;
+   unsigned int val;
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, ECORE_X_STACK_NONE);
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_STACK_TYPE,
+                                        &val, 1);
+   if (ret != 1) return ECORE_X_STACK_NONE;
+   if (val >= ECORE_X_STACK_LAST) val = ECORE_X_STACK_STANDARD;
+   return (Ecore_X_Stack_Type)val;
+}

-- 


Reply via email to