Add event for desktop change request.

SVN revision: 14809
This commit is contained in:
sebastid 2005-05-16 15:42:50 +00:00 committed by sebastid
parent f43fd99b4f
commit 11c35549e6
3 changed files with 24 additions and 0 deletions

View File

@ -240,6 +240,7 @@ typedef struct _Ecore_X_Event_Xdnd_Leave Ecore_X_Event_Xdnd_Leave;
typedef struct _Ecore_X_Event_Xdnd_Drop Ecore_X_Event_Xdnd_Drop;
typedef struct _Ecore_X_Event_Xdnd_Finished Ecore_X_Event_Xdnd_Finished;
typedef struct _Ecore_X_Event_Window_State Ecore_X_Event_Window_State;
typedef struct _Ecore_X_Event_Desktop_Change Ecore_X_Event_Desktop_Change;
typedef struct _Ecore_X_Event_Client_Message Ecore_X_Event_Client_Message;
typedef struct _Ecore_X_Event_Window_Shape Ecore_X_Event_Window_Shape;
@ -606,6 +607,13 @@ struct _Ecore_X_Event_Window_State
int source;
};
struct _Ecore_X_Event_Desktop_Change
{
Ecore_X_Window win;
int desk;
int source;
};
struct _Ecore_X_Event_Client_Message
{
Ecore_X_Window win;
@ -720,6 +728,7 @@ extern EAPI int ECORE_X_EVENT_SELECTION_CLEAR;
extern EAPI int ECORE_X_EVENT_SELECTION_REQUEST;
extern EAPI int ECORE_X_EVENT_SELECTION_NOTIFY;
extern EAPI int ECORE_X_EVENT_WINDOW_STATE;
extern EAPI int ECORE_X_EVENT_DESKTOP_CHANGE;
extern EAPI int ECORE_X_EVENT_CLIENT_MESSAGE;
extern EAPI int ECORE_X_EVENT_WINDOW_SHAPE;

View File

@ -114,6 +114,7 @@ int ECORE_X_EVENT_SELECTION_CLEAR = 0;
int ECORE_X_EVENT_SELECTION_REQUEST = 0;
int ECORE_X_EVENT_SELECTION_NOTIFY = 0;
int ECORE_X_EVENT_WINDOW_STATE = 0;
int ECORE_X_EVENT_DESKTOP_CHANGE = 0;
int ECORE_X_EVENT_CLIENT_MESSAGE = 0;
int ECORE_X_EVENT_WINDOW_SHAPE = 0;
@ -256,6 +257,7 @@ ecore_x_init(const char *name)
ECORE_X_EVENT_SELECTION_REQUEST = ecore_event_type_new();
ECORE_X_EVENT_SELECTION_NOTIFY = ecore_event_type_new();
ECORE_X_EVENT_WINDOW_STATE = ecore_event_type_new();
ECORE_X_EVENT_DESKTOP_CHANGE = ecore_event_type_new();
ECORE_X_EVENT_CLIENT_MESSAGE = ecore_event_type_new();
ECORE_X_EVENT_WINDOW_SHAPE = ecore_event_type_new();

View File

@ -1409,6 +1409,19 @@ _ecore_x_event_handle_client_message(XEvent *xevent)
ecore_event_add(ECORE_X_EVENT_WINDOW_STATE, e, NULL, NULL);
}
else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_WM_DESKTOP)
&& (xevent->xclient.format == 32))
{
Ecore_X_Event_Desktop_Change *e;
e = calloc(1, sizeof(Ecore_X_Event_Desktop_Change));
if (!e) return;
e->win = xevent->xclient.window;
e->desk = xevent->xclient.data.l[0];
e->source = xevent->xclient.data.l[1];
ecore_event_add(ECORE_X_EVENT_DESKTOP_CHANGE, e, NULL, NULL);
}
else
{
Ecore_X_Event_Client_Message *e;