forked from enlightenment/efl
Ecore_X: Merge Tizen changes to upstream EFL.
SVN revision: 73203
This commit is contained in:
parent
478e94a71d
commit
bf69d7dcc6
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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__)
|
||||
|
|
Loading…
Reference in New Issue