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; +} --