diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index 97163ec589..1443957df5 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -337,6 +337,20 @@ typedef enum _Ecore_X_Randr_Property_Change ECORE_X_RANDR_PROPERTY_CHANGE_DEL } Ecore_X_Randr_Property_Change; +typedef enum _Ecore_X_Netwm_Direction +{ + ECORE_X_NETWM_DIRECTION_SIZE_TL = 0, + ECORE_X_NETWM_DIRECTION_SIZE_T = 1, + ECORE_X_NETWM_DIRECTION_SIZE_TR = 2, + ECORE_X_NETWM_DIRECTION_SIZE_R = 3, + ECORE_X_NETWM_DIRECTION_SIZE_BR = 4, + ECORE_X_NETWM_DIRECTION_SIZE_B = 5, + ECORE_X_NETWM_DIRECTION_SIZE_BL = 6, + ECORE_X_NETWM_DIRECTION_SIZE_L = 7, + ECORE_X_NETWM_DIRECTION_MOVE = 8, + ECORE_X_NETWM_DIRECTION_CANCEL = 11, +} Ecore_X_Netwm_Direction; + /** * @typedef _Ecore_X_Error_Code * Defines the error codes of Ecore_X which wraps the X Window Systems @@ -866,6 +880,63 @@ struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Time time; }; +struct _Ecore_X_Event_Window_Prop_Title_Change +{ + Ecore_X_Window win; + char *title; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Visible_Title_Change +{ + Ecore_X_Window win; + char *title; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Icon_Name_Change +{ + Ecore_X_Window win; + char *name; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change +{ + Ecore_X_Window win; + char *name; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Client_Machine_Change +{ + Ecore_X_Window win; + char *name; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Name_Class_Change +{ + Ecore_X_Window win; + char *name; + char *clas; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Pid_Change +{ + Ecore_X_Window win; + pid_t pid; + Ecore_X_Time time; +}; + +struct _Ecore_X_Event_Window_Prop_Desktop_Change +{ + Ecore_X_Window win; + long desktop; + Ecore_X_Time time; +}; + struct _Ecore_X_Event_Startup_Sequence { Ecore_X_Window win; @@ -1157,6 +1228,12 @@ typedef enum _Ecore_X_Illume_Indicator_Opacity_Mode ECORE_X_ILLUME_INDICATOR_TRANSPARENT } Ecore_X_Illume_Indicator_Opacity_Mode; +typedef enum _Ecore_X_Illume_Window_State +{ + ECORE_X_ILLUME_WINDOW_STATE_NORMAL = 0, + ECORE_X_ILLUME_WINDOW_STATE_FLOATING +} Ecore_X_Illume_Window_State; + /* Window layer constants */ #define ECORE_X_WINDOW_LAYER_BELOW 2 #define ECORE_X_WINDOW_LAYER_NORMAL 4 @@ -2288,6 +2365,13 @@ EAPI Ecore_X_Illume_Indicator_Opacity_Mode ecore_x_e_illume_indicator_opacity_ge 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_window_state_set(Ecore_X_Window win, + Ecore_X_Illume_Window_State state); + +EAPI Ecore_X_Illume_Window_State +ecore_x_e_illume_window_state_get(Ecore_X_Window win); + #ifdef __cplusplus } #endif // ifdef __cplusplus diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h b/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h index fdac658aa5..c9af5bf14a 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X_Atoms.h @@ -252,6 +252,9 @@ EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY; +EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_WINDOW_STATE; +EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL; +EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_NEXT; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_PREV; @@ -273,4 +276,15 @@ EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_PARENT; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_POSITION; +/* currently elementary and E specific extension */ +EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_PROFILE; +EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_PROFILE_LIST; + +/* for sliding window */ +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 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; #endif /* _ECORE_X_ATOMS_H */ diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_atoms_decl.h b/legacy/ecore/src/lib/ecore_x/ecore_x_atoms_decl.h index 66800ee23a..706fccdc90 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_atoms_decl.h +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_atoms_decl.h @@ -278,6 +278,9 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF = 0; +EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_WINDOW_STATE = 0; +EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL = 0; +EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_NEXT = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_PREV = 0; @@ -301,6 +304,18 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_PARENT = 0; EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_POSITION = 0; +/* for sliding window */ +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 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; + +/* currently elementary and E specific extension */ +EAPI Ecore_X_Atom ECORE_X_ATOM_E_PROFILE = 0; +EAPI Ecore_X_Atom ECORE_X_ATOM_E_PROFILE_LIST = 0; + typedef struct _Atom_Item Atom_Item; struct _Atom_Item diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c index 93b8cd933f..d86d0c7df7 100644 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c +++ b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_e.c @@ -125,6 +125,124 @@ ecore_x_e_comp_sync_supported_get(Ecore_X_Window root) return EINA_FALSE; } +EAPI void +ecore_x_e_window_profile_list_set(Ecore_X_Window win, + const char **profiles, + unsigned int num_profiles) +{ + Ecore_X_Atom *atoms; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!win) + return; + + if (!num_profiles) + ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_PROFILE_LIST); + else + { + atoms = alloca(num_profiles * sizeof(Ecore_X_Atom)); + ecore_x_atoms_get(profiles, num_profiles, atoms); + ecore_x_window_prop_property_set(win, + ECORE_X_ATOM_E_PROFILE_LIST, + ECORE_X_ATOM_ATOM, 32, (void *)atoms, + num_profiles); + } +} + +EAPI Eina_Bool +ecore_x_e_window_profile_list_get(Ecore_X_Window win, + const char ***profiles, + int *ret_num) +{ + unsigned char *data = NULL; + Ecore_X_Atom *atoms; + int num, i; + + if (ret_num) + *ret_num = 0; + + if (profiles) + *profiles = NULL; + + if (!win) + return EINA_FALSE; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!ecore_x_window_prop_property_get(win, + ECORE_X_ATOM_E_PROFILE_LIST, + ECORE_X_ATOM_ATOM, 32, &data, &num)) + return EINA_FALSE; + + if (ret_num) + *ret_num = num; + + if (profiles) + { + (*profiles) = calloc(num, sizeof(char *)); + if (!(*profiles)) + { + if (ret_num) + *ret_num = 0; + + if (data) + free(data); + + return EINA_FALSE; + } + + atoms = (Ecore_X_Atom *)data; + for (i = 0; i < num; i++) + (*profiles)[i] = ecore_x_atom_name_get(atoms[i]); + } + + if (data) + free(data); + + return EINA_TRUE; +} + +EAPI void +ecore_x_e_window_profile_set(Ecore_X_Window win, + const char *profile) +{ + Ecore_X_Atom atom; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!win) + return; + + if (!profile) + ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_PROFILE); + else + { + atom = ecore_x_atom_get(profile); + ecore_x_window_prop_property_set(win, ECORE_X_ATOM_E_PROFILE, + ECORE_X_ATOM_ATOM, 32, (void *)&atom, 1); + } +} + +EAPI char * +ecore_x_e_window_profile_get(Ecore_X_Window win) +{ + Ecore_X_Atom *atom = NULL; + unsigned char *data; + char *profile = NULL; + int num; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_E_PROFILE, + ECORE_X_ATOM_ATOM, 32, &data, &num)) + return NULL; + + if (data) + atom = (Ecore_X_Atom *)data; + + if (atom) + profile = ecore_x_atom_name_get(atom[0]); + + return profile; +} + EAPI void ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled) @@ -1377,3 +1495,58 @@ ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win, 0, 0, 0, 0); } +static Ecore_X_Atom +_ecore_x_e_illume_window_state_atom_get(Ecore_X_Illume_Window_State state) +{ + switch (state) + { + case ECORE_X_ILLUME_WINDOW_STATE_NORMAL: + return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL; + + case ECORE_X_ILLUME_WINDOW_STATE_FLOATING: + return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING; + + default: + break; + } + return 0; +} + +static Ecore_X_Illume_Window_State +_ecore_x_e_illume_window_state_get(Ecore_X_Atom atom) +{ + if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL) + return ECORE_X_ILLUME_WINDOW_STATE_NORMAL; + + if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING) + return ECORE_X_ILLUME_WINDOW_STATE_FLOATING; + + return ECORE_X_ILLUME_WINDOW_STATE_NORMAL; +} + +EAPI void +ecore_x_e_illume_window_state_set(Ecore_X_Window win, + Ecore_X_Illume_Window_State state) +{ + Ecore_X_Atom atom = 0; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + atom = _ecore_x_e_illume_window_state_atom_get(state); + ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_WINDOW_STATE, + &atom, 1); +} + +EAPI Ecore_X_Illume_Window_State +ecore_x_e_illume_window_state_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_WINDOW_STATE, + &atom, 1)) + return ECORE_X_ILLUME_WINDOW_STATE_NORMAL; + + return _ecore_x_e_illume_window_state_get(atom); +} + diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_netwm.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_netwm.c index 53869aab4e..954e663a35 100644 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_netwm.c +++ b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_netwm.c @@ -793,6 +793,35 @@ ecore_x_netwm_desktop_request_send(Ecore_X_Window win, // ecore_x_flush(); } +EAPI void +ecore_x_netwm_moveresize_request_send(Ecore_X_Window win, + int x, + int y, + Ecore_X_Netwm_Direction direction, + unsigned int button) +{ + xcb_client_message_event_t ev; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + CHECK_XCB_CONN; + + memset(&ev, 0, sizeof(xcb_client_message_event_t)); + + ev.response_type = XCB_CLIENT_MESSAGE; + ev.format = 32; + ev.window = win; + ev.type = ECORE_X_ATOM_NET_WM_MOVERESIZE; + ev.data.data32[0] = x; + ev.data.data32[1] = y; + ev.data.data32[2] = direction; + ev.data.data32[3] = button; + ev.data.data32[4] = 1; + + xcb_send_event(_ecore_xcb_conn, 0, win, + (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev); +} + EAPI void ecore_x_netwm_handled_icons_set(Ecore_X_Window win) { diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_e.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_e.c index 3930c41f78..2998c5d1ca 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_e.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_e.c @@ -927,6 +927,83 @@ ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win, return EINA_TRUE; } +/* for sliding window */ +EAPI void +ecore_x_e_illume_sliding_win_state_set(Ecore_X_Window win, + unsigned int is_visible) +{ + LOGFN(__FILE__, __LINE__, __FUNCTION__); + ecore_x_window_prop_card32_set(win, + ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE, + &is_visible, 1); +} /* ecore_x_e_illume_sliding_win_state_set */ + +EAPI int +ecore_x_e_illume_sliding_win_state_get(Ecore_X_Window win) +{ + unsigned int is_visible = 0; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!ecore_x_window_prop_card32_get(win, + ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE, + &is_visible, 1)) + return 0; + + return is_visible; +} + +EAPI void +ecore_x_e_illume_sliding_win_geometry_set(Ecore_X_Window win, + int x, + int y, + int w, + int h) +{ + unsigned int geom[4]; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + geom[0] = x; + geom[1] = y; + geom[2] = w; + geom[3] = h; + ecore_x_window_prop_card32_set(win, + ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY, + geom, 4); +} /* ecore_x_e_illume_sliding_win_geometry_set */ + +EAPI int +ecore_x_e_illume_sliding_win_geometry_get(Ecore_X_Window win, + int *x, + int *y, + int *w, + int *h) +{ + int ret = 0; + unsigned int geom[4]; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + ret = + ecore_x_window_prop_card32_get(win, + ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY, + geom, 4); + if (ret != 4) + return 0; + + if (x) + *x = geom[0]; + + if (y) + *y = geom[1]; + + if (w) + *w = geom[2]; + + if (h) + *h = geom[3]; + + return 1; +}/* ecore_x_e_illume_sliding_win_geometry_get */ + EAPI void ecore_x_e_comp_sync_counter_set(Ecore_X_Window win, Ecore_X_Sync_Counter counter) @@ -1011,6 +1088,124 @@ ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root, &xev); } +EAPI void +ecore_x_e_window_profile_list_set(Ecore_X_Window win, + const char **profiles, + unsigned int num_profiles) +{ + Ecore_X_Atom *atoms; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!win) + return; + + if (!num_profiles) + ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_PROFILE_LIST); + else + { + atoms = alloca(num_profiles * sizeof(Ecore_X_Atom)); + ecore_x_atoms_get(profiles, num_profiles, atoms); + ecore_x_window_prop_property_set(win, + ECORE_X_ATOM_E_PROFILE_LIST, + XA_ATOM, 32, (void *)atoms, + num_profiles); + } +} + +EAPI Eina_Bool +ecore_x_e_window_profile_list_get(Ecore_X_Window win, + const char ***profiles, + int *ret_num) +{ + unsigned char *data; + Ecore_X_Atom *atoms; + int num, i; + + if (ret_num) + *ret_num = 0; + + if (profiles) + *profiles = NULL; + + if (!win) + return EINA_FALSE; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!ecore_x_window_prop_property_get(win, + ECORE_X_ATOM_E_PROFILE_LIST, + XA_ATOM, 32, &data, &num)) + return EINA_FALSE; + + if (ret_num) + *ret_num = num; + + if (profiles) + { + (*profiles) = calloc(num, sizeof(char *)); + if (!(*profiles)) + { + if (ret_num) + *ret_num = 0; + + if (data) + free(data); + + return EINA_FALSE; + } + + atoms = (Ecore_X_Atom *)data; + for (i = 0; i < num; i++) + (*profiles)[i] = ecore_x_atom_name_get(atoms[i]); + } + + if (data) + XFree(data); + + return EINA_TRUE; +} + +EAPI void +ecore_x_e_window_profile_set(Ecore_X_Window win, + const char *profile) +{ + Ecore_X_Atom atom; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!win) + return; + + if (!profile) + ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_PROFILE); + else + { + atom = ecore_x_atom_get(profile); + ecore_x_window_prop_property_set(win, ECORE_X_ATOM_E_PROFILE, + XA_ATOM, 32, (void *)&atom, 1); + } +} + +EAPI char * +ecore_x_e_window_profile_get(Ecore_X_Window win) +{ + Ecore_X_Atom *atom = NULL; + unsigned char *data; + char *profile = NULL; + int num; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_E_PROFILE, + XA_ATOM, 32, &data, &num)) + return NULL; + + if (data) + atom = (Ecore_X_Atom *)data; + + if (atom) + profile = ecore_x_atom_name_get(atom[0]); + + return profile; +} + EAPI void ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled) @@ -1357,3 +1552,58 @@ ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win, 0, 0, 0, 0); } +static Ecore_X_Atom +_ecore_x_e_illume_window_state_atom_get(Ecore_X_Illume_Window_State state) +{ + switch (state) + { + case ECORE_X_ILLUME_WINDOW_STATE_NORMAL: + return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL; + + case ECORE_X_ILLUME_WINDOW_STATE_FLOATING: + return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING; + + default: + break; + } + return 0; +} + +static Ecore_X_Illume_Window_State +_ecore_x_e_illume_window_state_get(Ecore_X_Atom atom) +{ + if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL) + return ECORE_X_ILLUME_WINDOW_STATE_NORMAL; + + if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING) + return ECORE_X_ILLUME_WINDOW_STATE_FLOATING; + + return ECORE_X_ILLUME_WINDOW_STATE_NORMAL; +} + +EAPI void +ecore_x_e_illume_window_state_set(Ecore_X_Window win, + Ecore_X_Illume_Window_State state) +{ + Ecore_X_Atom atom = 0; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + atom = _ecore_x_e_illume_window_state_atom_get(state); + ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_WINDOW_STATE, + &atom, 1); +} + +EAPI Ecore_X_Illume_Window_State +ecore_x_e_illume_window_state_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_WINDOW_STATE, + &atom, 1)) + return ECORE_X_ILLUME_WINDOW_STATE_NORMAL; + + return _ecore_x_e_illume_window_state_get(atom); +} + diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_netwm.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_netwm.c index 5fc580e269..5a23a1b687 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_netwm.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_netwm.c @@ -1605,6 +1605,33 @@ ecore_x_netwm_desktop_request_send(Ecore_X_Window win, SubstructureNotifyMask | SubstructureRedirectMask, &xev); } +EAPI void +ecore_x_netwm_moveresize_request_send(Ecore_X_Window win, + int x, + int y, + Ecore_X_Netwm_Direction direction, + unsigned int button) +{ + XEvent xev; + + if (!win) + return; + + LOGFN(__FILE__, __LINE__, __FUNCTION__); + xev.xclient.window = win; + xev.xclient.type = ClientMessage; + xev.xclient.message_type = ECORE_X_ATOM_NET_WM_MOVERESIZE; + xev.xclient.format = 32; + xev.xclient.data.l[0] = x; + xev.xclient.data.l[1] = y; + xev.xclient.data.l[2] = direction; + xev.xclient.data.l[3] = button; + xev.xclient.data.l[4] = 1; + + XSendEvent(_ecore_x_disp, win, False, + SubstructureNotifyMask | SubstructureRedirectMask, &xev); +} + int _ecore_x_netwm_startup_info_begin(Ecore_X_Window win __UNUSED__, char *data __UNUSED__)