From 6c248ea656a9460c100e042314e171a29bd485ac Mon Sep 17 00:00:00 2001 From: sebastid Date: Sat, 4 Jun 2005 16:31:45 +0000 Subject: [PATCH] 1. Do we need to remember mouse down on all buttons? 2. Is there any problem with calling pointer_ungrab unconditionally? SVN revision: 15120 --- netwm.txt | 99 +++++++++++++------------- src/bin/e_border.c | 171 +++++++++++++++++++++++++++++++++++++++++---- src/bin/e_border.h | 1 + src/bin/e_hints.c | 118 +++++++++++++++++++------------ 4 files changed, 284 insertions(+), 105 deletions(-) diff --git a/netwm.txt b/netwm.txt index 511f16692..9adfa3f6f 100644 --- a/netwm.txt +++ b/netwm.txt @@ -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 [ ] diff --git a/src/bin/e_border.c b/src/bin/e_border.c index f3617eeb2..125af3bf3 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -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; } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index e3e1a0940..4d0384da2 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -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; diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index 21d4b63eb..988e00734 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -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); }