1. Do we need to remember mouse down on all buttons?

2. Is there any problem with calling pointer_ungrab unconditionally?


SVN revision: 15120
This commit is contained in:
sebastid 2005-06-04 16:31:45 +00:00 committed by sebastid
parent 6468e0cef0
commit 6c248ea656
4 changed files with 284 additions and 105 deletions

View File

@ -11,44 +11,46 @@
* T = For taskbar
*/
_NET_ACTIVE_WINDOW [?] /* Listen to active window requests */
/* Root Window Properties (and Related Messages) */
_NET_SUPPORTED [X]
_NET_CLIENT_LIST [X]
_NET_CLIENT_LIST_STACKING [X]
_NET_CLOSE_WINDOW [P]
_NET_CURRENT_DESKTOP [P]
_NET_DESKTOP_GEOMETRY [P]
_NET_DESKTOP_LAYOUT [P]
_NET_DESKTOP_NAMES [ ]
_NET_DESKTOP_VIEWPORT [P]
_NET_FRAME_EXTENTS [X]
_NET_MOVERESIZE_WINDOW [P]
_NET_NUMBER_OF_DESKTOPS [P]
_NET_REQUEST_FRAME_EXTENTS [X]
_NET_RESTACK_WINDOW [P]
_NET_SHOWING_DESKTOP [ ]
_NET_SUPPORTED [X]
_NET_DESKTOP_GEOMETRY [P]
_NET_DESKTOP_VIEWPORT [P]
_NET_CURRENT_DESKTOP [P]
_NET_DESKTOP_NAMES [ ]
_NET_ACTIVE_WINDOW [?] /* Listen to active window requests */
_NET_WORKAREA [ ]
_NET_SUPPORTING_WM_CHECK [X]
_NET_VIRTUAL_ROOTS [X]
_NET_WM_ACTION_CHANGE_DESKTOP [ ]
_NET_WM_ACTION_CLOSE [ ]
_NET_WM_ACTION_FULLSCREEN [ ]
_NET_WM_ACTION_MAXIMIZE_HORZ [ ]
_NET_WM_ACTION_MAXIMIZE_VERT [ ]
_NET_WM_ACTION_MINIMIZE [ ]
_NET_WM_ACTION_MOVE [ ]
_NET_WM_ACTION_RESIZE [ ]
_NET_WM_ACTION_SHADE [ ]
_NET_WM_ACTION_STICK [ ]
_NET_WM_ALLOWED_ACTIONS [ ]
_NET_WM_DESKTOP [ ]
_NET_WM_HANDLED_ICONS [T]
_NET_WM_ICON [X]
_NET_WM_ICON_GEOMETRY [T]
_NET_WM_ICON_NAME [X]
_NET_WM_MOVERESIZE [ ]
_NET_DESKTOP_LAYOUT [P]
_NET_SHOWING_DESKTOP [ ]
/* Other Root Window Messages */
_NET_CLOSE_WINDOW [P]
_NET_MOVERESIZE_WINDOW [P]
_NET_WM_MOVERESIZE [X]
_NET_RESTACK_WINDOW [P]
_NET_REQUEST_FRAME_EXTENTS [X]
/* Application Window Properties */
_NET_WM_NAME [X]
_NET_WM_PID [X]
_NET_WM_PING [ ]
_NET_WM_VISIBLE_NAME [X] /* E uses _NET_WM_NAME, doesn't need to set this */
_NET_WM_ICON_NAME [X]
_NET_WM_VISIBLE_ICON_NAME [X] /* E uses _NET_WM_ICON_NAME, doesn't need to set this */
_NET_WM_DESKTOP [ ]
/* Do we have to do anything special with these, except
* stacking order? */
_NET_WM_WINDOW_TYPE [X]
_NET_WM_WINDOW_TYPE_DESKTOP [X]
_NET_WM_WINDOW_TYPE_DOCK [X]
_NET_WM_WINDOW_TYPE_TOOLBAR [X]
_NET_WM_WINDOW_TYPE_MENU [X]
_NET_WM_WINDOW_TYPE_UTILITY [X]
_NET_WM_WINDOW_TYPE_SPLASH [X]
_NET_WM_WINDOW_TYPE_DIALOG [X]
_NET_WM_WINDOW_TYPE_NORMAL [X]
_NET_WM_STATE [X]
_NET_WM_STATE_MODAL [ ]
/* _NET_WM_STATE_STICKY indicates that the
@ -66,22 +68,25 @@ _NET_WM_STATE_FULLSCREEN [X]
_NET_WM_STATE_ABOVE [X]
_NET_WM_STATE_BELOW [X]
_NET_WM_STATE_DEMANDS_ATTENTION [ ]
_NET_WM_ALLOWED_ACTIONS [ ]
_NET_WM_ACTION_MOVE [ ]
_NET_WM_ACTION_RESIZE [ ]
_NET_WM_ACTION_MINIMIZE [ ]
_NET_WM_ACTION_SHADE [ ]
_NET_WM_ACTION_STICK [ ]
_NET_WM_ACTION_MAXIMIZE_HORZ [ ]
_NET_WM_ACTION_MAXIMIZE_VERT [ ]
_NET_WM_ACTION_FULLSCREEN [ ]
_NET_WM_ACTION_CHANGE_DESKTOP [ ]
_NET_WM_ACTION_CLOSE [ ]
_NET_WM_STRUT [X]
_NET_WM_STRUT_PARTIAL [X]
_NET_WM_ICON_GEOMETRY [T]
_NET_WM_ICON [X]
_NET_WM_PID [X]
_NET_WM_HANDLED_ICONS [T]
_NET_WM_USER_TIME [X]
_NET_FRAME_EXTENTS [X]
_NET_WM_PING [ ]
_NET_WM_SYNC_REQUEST [ ]
_NET_WM_SYNC_REQUEST_COUNTER [ ]
_NET_WM_USER_TIME [X]
_NET_WM_VISIBLE_ICON_NAME [X] /* E uses _NET_WM_ICON_NAME, doesn't need to set this */
_NET_WM_VISIBLE_NAME [X] /* E uses _NET_WM_NAME, doesn't need to set this */
/* Do we have to do anything special with these, except
* stacking order? */
_NET_WM_WINDOW_TYPE [X]
_NET_WM_WINDOW_TYPE_DESKTOP [X]
_NET_WM_WINDOW_TYPE_DOCK [X]
_NET_WM_WINDOW_TYPE_TOOLBAR [X]
_NET_WM_WINDOW_TYPE_MENU [X]
_NET_WM_WINDOW_TYPE_UTILITY [X]
_NET_WM_WINDOW_TYPE_SPLASH [X]
_NET_WM_WINDOW_TYPE_DIALOG [X]
_NET_WM_WINDOW_TYPE_NORMAL [X]
_NET_WORKAREA [ ]

View File

@ -6,15 +6,17 @@
//#define INOUTDEBUG_MOUSE 1
//#define INOUTDEBUG_FOCUS 1
#define RESIZE_NONE 0
#define RESIZE_TL 1
#define RESIZE_T 2
#define RESIZE_TR 3
#define RESIZE_R 4
#define RESIZE_BR 5
#define RESIZE_B 6
#define RESIZE_BL 7
#define RESIZE_L 8
/* These are compatible with netwm */
#define RESIZE_TL 0
#define RESIZE_T 1
#define RESIZE_TR 2
#define RESIZE_R 3
#define RESIZE_BR 4
#define RESIZE_B 5
#define RESIZE_BL 6
#define RESIZE_L 7
#define MOVE 8
#define RESIZE_NONE 11
/* local subsystem functions */
static void _e_border_free(E_Border *bd);
@ -37,6 +39,7 @@ static int _e_border_cb_window_shape(void *data, int ev_type, void *ev);
static int _e_border_cb_window_focus_in(void *data, int ev_type, void *ev);
static int _e_border_cb_window_focus_out(void *data, int ev_type, void *ev);
static int _e_border_cb_window_state_request(void *data, int ev_type, void *ev);
static int _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev);
static int _e_border_cb_desktop_change(void *data, int ev_type, void *ev);
static int _e_border_cb_client_message(void *data, int ev_type, void *ev);
@ -163,6 +166,7 @@ e_border_init(void)
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _e_border_cb_window_focus_in, NULL));
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _e_border_cb_window_focus_out, NULL));
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, _e_border_cb_window_state_request, NULL));
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST, _e_border_cb_window_move_resize_request, NULL));
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_DESKTOP_CHANGE, _e_border_cb_desktop_change, NULL));
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _e_border_cb_client_message, NULL));
ecore_x_passive_grab_replay_func_set(_e_border_cb_grab_replay, NULL);
@ -398,6 +402,7 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
bd->w = bd->client.w;
bd->h = bd->client.h;
bd->resize_mode = RESIZE_NONE;
bd->layer = 100;
bd->changes.size = 1;
bd->changes.shape = 1;
@ -2232,6 +2237,118 @@ _e_border_cb_window_state_request(void *data, int ev_type, void *ev)
return 1;
}
static int
_e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
{
E_Border *bd;
Ecore_X_Event_Window_Move_Resize_Request *e;
e = ev;
bd = e_border_find_by_client_window(e->win);
if (!bd) return 1;
if ((bd->shaded) || (bd->shading) || (bd->maximized) ||
(bd->moving) || (bd->resize_mode != RESIZE_NONE))
return 1;
if ((e->button >= 1) && (e->button <= 3))
{
bd->mouse.last_down[e->button - 1].mx = e->x;
bd->mouse.last_down[e->button - 1].my = e->y;
bd->mouse.last_down[e->button - 1].x = bd->x;
bd->mouse.last_down[e->button - 1].y = bd->y;
bd->mouse.last_down[e->button - 1].w = bd->w;
bd->mouse.last_down[e->button - 1].h = bd->h;
}
else
{
bd->moveinfo.down.x = bd->x;
bd->moveinfo.down.y = bd->y;
bd->moveinfo.down.w = bd->w;
bd->moveinfo.down.h = bd->h;
}
bd->mouse.current.mx = e->x;
bd->mouse.current.my = e->y;
bd->moveinfo.down.button = e->button;
bd->moveinfo.down.mx = e->x;
bd->moveinfo.down.my = e->y;
bd->grab = 1;
e_border_raise(bd);
if (e->direction == RESIZE_TL)
{
bd->resize_mode = RESIZE_TL;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_SE);
}
else if (e->direction == RESIZE_T)
{
bd->resize_mode = RESIZE_T;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_S);
}
else if (e->direction == RESIZE_TR)
{
bd->resize_mode = RESIZE_TR;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_SW);
}
else if (e->direction == RESIZE_R)
{
bd->resize_mode = RESIZE_R;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_W);
}
else if (e->direction == RESIZE_BR)
{
bd->resize_mode = RESIZE_BR;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_NW);
}
else if (e->direction == RESIZE_B)
{
bd->resize_mode = RESIZE_B;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_N);
}
else if (e->direction == RESIZE_BL)
{
bd->resize_mode = RESIZE_BL;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_NE);
}
else if (e->direction == RESIZE_L)
{
bd->resize_mode = RESIZE_L;
bd->cur_mouse_action = e_action_find("window_resize");
_e_border_resize_begin(bd);
GRAV_SET(bd, ECORE_X_GRAVITY_E);
}
else if (e->direction == MOVE)
{
bd->moving = 1;
bd->cur_mouse_action = e_action_find("window_move");
_e_border_move_begin(bd);
}
return 1;
}
static int
_e_border_cb_desktop_change(void *data, int ev_type, void *ev)
{
@ -2654,6 +2771,13 @@ _e_border_cb_mouse_down(void *data, int type, void *event)
bd->mouse.last_down[ev->button - 1].w = bd->w;
bd->mouse.last_down[ev->button - 1].h = bd->h;
}
else
{
bd->moveinfo.down.x = bd->x;
bd->moveinfo.down.y = bd->y;
bd->moveinfo.down.w = bd->w;
bd->moveinfo.down.h = bd->h;
}
bd->mouse.current.mx = ev->root.x;
bd->mouse.current.my = ev->root.y;
if (!bd->cur_mouse_action)
@ -2678,6 +2802,13 @@ _e_border_cb_mouse_down(void *data, int type, void *event)
bd->mouse.last_down[ev->button - 1].w = bd->w;
bd->mouse.last_down[ev->button - 1].h = bd->h;
}
else
{
bd->moveinfo.down.x = bd->x;
bd->moveinfo.down.y = bd->y;
bd->moveinfo.down.w = bd->w;
bd->moveinfo.down.h = bd->h;
}
bd->mouse.current.mx = ev->root.x;
bd->mouse.current.my = ev->root.y;
/*
@ -2789,9 +2920,9 @@ _e_border_cb_mouse_move(void *data, int type, void *event)
}
else
{
x = bd->x +
x = bd->moveinfo.down.x +
(bd->mouse.current.mx - bd->moveinfo.down.mx);
y = bd->y +
y = bd->moveinfo.down.y +
(bd->mouse.current.my - bd->moveinfo.down.my);
}
new_x = x;
@ -3874,7 +4005,7 @@ _e_border_resize_handle(E_Border *bd)
w = bd->mouse.last_down[bd->moveinfo.down.button - 1].w +
(bd->mouse.current.mx - bd->moveinfo.down.mx);
else
w = bd->w + (bd->mouse.current.mx - bd->moveinfo.down.mx);
w = bd->moveinfo.down.w + (bd->mouse.current.mx - bd->moveinfo.down.mx);
}
else if ((bd->resize_mode == RESIZE_TL) ||
(bd->resize_mode == RESIZE_L) ||
@ -3885,7 +4016,7 @@ _e_border_resize_handle(E_Border *bd)
w = bd->mouse.last_down[bd->moveinfo.down.button - 1].w -
(bd->mouse.current.mx - bd->moveinfo.down.mx);
else
w = bd->w - (bd->mouse.current.mx - bd->moveinfo.down.mx);
w = bd->moveinfo.down.w - (bd->mouse.current.mx - bd->moveinfo.down.mx);
}
if ((bd->resize_mode == RESIZE_TL) ||
@ -3897,7 +4028,7 @@ _e_border_resize_handle(E_Border *bd)
h = bd->mouse.last_down[bd->moveinfo.down.button - 1].h -
(bd->mouse.current.my - bd->moveinfo.down.my);
else
h = bd->h - (bd->mouse.current.my - bd->moveinfo.down.my);
h = bd->moveinfo.down.h - (bd->mouse.current.my - bd->moveinfo.down.my);
}
else if ((bd->resize_mode == RESIZE_BL) ||
(bd->resize_mode == RESIZE_B) ||
@ -3908,7 +4039,7 @@ _e_border_resize_handle(E_Border *bd)
h = bd->mouse.last_down[bd->moveinfo.down.button - 1].h +
(bd->mouse.current.my - bd->moveinfo.down.my);
else
h = bd->h + (bd->mouse.current.my - bd->moveinfo.down.my);
h = bd->moveinfo.down.h + (bd->mouse.current.my - bd->moveinfo.down.my);
}
tw = bd->w;
@ -4531,6 +4662,8 @@ _e_border_resize_begin(E_Border *bd)
w = (bd->client.w - bd->client.icccm.min_w) / bd->client.icccm.step_w;
h = (bd->client.h - bd->client.icccm.min_h) / bd->client.icccm.step_h;
}
if (bd->grab)
ecore_x_pointer_grab(bd->win);
e_resize_begin(bd->zone, w, h);
resize = bd;
}
@ -4538,6 +4671,9 @@ _e_border_resize_begin(E_Border *bd)
static void
_e_border_resize_end(E_Border *bd)
{
if (bd->grab)
ecore_x_pointer_ungrab();
bd->grab = 0;
e_resize_end();
resize = NULL;
}
@ -4564,6 +4700,8 @@ _e_border_resize_update(E_Border *bd)
static void
_e_border_move_begin(E_Border *bd)
{
if (bd->grab)
ecore_x_pointer_grab(bd->win);
e_move_begin(bd->zone, bd->x, bd->y);
move = bd;
}
@ -4571,6 +4709,9 @@ _e_border_move_begin(E_Border *bd)
static void
_e_border_move_end(E_Border *bd)
{
if (bd->grab)
ecore_x_pointer_ungrab();
bd->grab = 0;
e_move_end();
move = NULL;
}

View File

@ -247,6 +247,7 @@ struct _E_Border
unsigned char already_unparented : 1;
unsigned char need_reparent : 1;
unsigned char button_grabbed : 1;
unsigned char grab : 1;
unsigned char changed : 1;

View File

@ -17,6 +17,8 @@ e_hints_init(void)
for (i = 0; i < num; i++)
{
Ecore_X_Window win;
Ecore_X_Atom supported[35];
int num;
win = ecore_x_window_new(roots[i], -200, -200, 5, 5);
/*
@ -38,52 +40,82 @@ e_hints_init(void)
/* ecore_x_netwm_wm_identify(roots[i], win, "KWin");*/
ecore_x_netwm_wm_identify(roots[i], win, "Enlightenment");
num = 0;
/* Set what hints we support */
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_ACTIVE_WINDOW, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST_STACKING, 1);
/* Root Window Properties (and Related Messages) */
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SUPPORTED, 1);*/
supported[num++] = ECORE_X_ATOM_NET_CLIENT_LIST;
supported[num++] = ECORE_X_ATOM_NET_CLIENT_LIST_STACKING;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_DESKTOP_GEOMETRY, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_DESKTOP_VIEWPORT, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CURRENT_DESKTOP, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_DESKTOP_NAMES, 1);*/
supported[num++] = ECORE_X_ATOM_NET_ACTIVE_WINDOW;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WORKAREA, 1);*/
supported[num++] = ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK;
supported[num++] = ECORE_X_ATOM_NET_VIRTUAL_ROOTS;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_DESKTOP_LAYOUT, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SHOWING_DESKTOP, 1);*/
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_FRAME_EXTENTS, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS, 1);
/* Other Root Window Messages */
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLOSE_WINDOW, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_MOVERESIZE_WINDOW, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_MOVERESIZE;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_RESTACK_WINDOW, 1);*/
supported[num++] = ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS;
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SUPPORTED, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_VIRTUAL_ROOTS, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ICON, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ICON_NAME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_NAME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_PID, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_STICKY, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_SHADED, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_HIDDEN, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_ABOVE, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_BELOW, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STRUT, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_USER_TIME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_NAME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WORKAREA, 1);
/* Application Window Properties */
supported[num++] = ECORE_X_ATOM_NET_WM_NAME;
supported[num++] = ECORE_X_ATOM_NET_WM_VISIBLE_NAME;
supported[num++] = ECORE_X_ATOM_NET_WM_ICON_NAME;
supported[num++] = ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_DESKTOP, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG;
supported[num++] = ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_MODAL, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_STICKY;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_SHADED;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_HIDDEN;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_ABOVE;
supported[num++] = ECORE_X_ATOM_NET_WM_STATE_BELOW;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_MOVE, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_RESIZE, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_SHADE, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_STICK, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ACTION_CLOSE, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_STRUT;
supported[num++] = ECORE_X_ATOM_NET_WM_STRUT_PARTIAL;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_ICON_GEOMETRY, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_ICON;
supported[num++] = ECORE_X_ATOM_NET_WM_PID;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_HANDLED_ICONS, 1);*/
supported[num++] = ECORE_X_ATOM_NET_WM_USER_TIME;
supported[num++] = ECORE_X_ATOM_NET_FRAME_EXTENTS;
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_PING, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_SYNC_REQUEST, 1);*/
/*ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER, 1);*/
ecore_x_netwm_supported_set(roots[i], supported, num);
}
free(roots);
}