diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index ef83190e5f..009e3a204b 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -899,9 +899,8 @@ int ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom t Ecore_X_Window *window_group, int *is_urgent); -#if 0 /* ??? */ void ecore_x_netwm_init(void); -#endif + void ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check, const char *wm_name); void ecore_x_netwm_desk_count_set(Ecore_X_Window root, int n_desks); void ecore_x_netwm_desk_roots_set(Ecore_X_Window root, int n_desks, Ecore_X_Window * vroots); void ecore_x_netwm_desk_names_set(Ecore_X_Window root, int n_desks, const char **names); diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x.c b/legacy/ecore/src/lib/ecore_x/ecore_x.c index 2eada9447a..48e56dd982 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x.c @@ -26,7 +26,7 @@ int _ecore_x_event_last_root_x = 0; int _ecore_x_event_last_root_y = 0; /* - * ICCCM and Motif hints. + * ICCCM hints. */ Atom _ecore_x_atom_wm_state = 0; Atom _ecore_x_atom_wm_delete_window = 0; @@ -45,10 +45,21 @@ Atom _ecore_x_atom_wm_client_leader = 0; Atom _ecore_x_atom_wm_transient_for = 0; Atom _ecore_x_atom_wm_save_yourself = 0; +Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM]; + +/* + * Motif hints. + */ Atom _ecore_x_atom_motif_wm_hints = 0; +/* + * GNOME hints. + */ Atom _ecore_x_atom_win_layer = 0; +/* + * Other hints. + */ Atom _ecore_x_atom_selection_primary = 0; Atom _ecore_x_atom_selection_secondary = 0; Atom _ecore_x_atom_selection_clipboard = 0; @@ -75,80 +86,12 @@ Atom _ecore_x_atom_xdnd_drop = 0; Atom _ecore_x_atom_xdnd_finished = 0; Atom _ecore_x_atom_xdnd_leave = 0; -/* - * Root window NetWM hints. - */ -Atom _ecore_x_atom_net_supported = 0; -Atom _ecore_x_atom_net_client_list = 0; -Atom _ecore_x_atom_net_client_list_stacking = 0; -Atom _ecore_x_atom_net_number_of_desktops = 0; -Atom _ecore_x_atom_net_desktop_geometry = 0; -Atom _ecore_x_atom_net_desktop_viewport = 0; -Atom _ecore_x_atom_net_current_desktop = 0; -Atom _ecore_x_atom_net_desktop_names = 0; -Atom _ecore_x_atom_net_active_window = 0; -Atom _ecore_x_atom_net_workarea = 0; -Atom _ecore_x_atom_net_supporting_wm_check = 0; -Atom _ecore_x_atom_net_virtual_roots = 0; -Atom _ecore_x_atom_net_desktop_layout = 0; -Atom _ecore_x_atom_net_showing_desktop = 0; - -/* - * Client message types. - */ -Atom _ecore_x_atom_net_close_window = 0; -Atom _ecore_x_atom_net_wm_moveresize = 0; - -/* - * Application window specific NetWM hints. - */ -Atom _ecore_x_atom_net_wm_desktop = 0; -Atom _ecore_x_atom_net_wm_name = 0; -Atom _ecore_x_atom_net_wm_visible_name = 0; -Atom _ecore_x_atom_net_wm_icon_name = 0; -Atom _ecore_x_atom_net_wm_visible_icon_name = 0; -Atom _ecore_x_atom_net_wm_window_type = 0; -Atom _ecore_x_atom_net_wm_state = 0; -Atom _ecore_x_atom_net_wm_allowed_actions = 0; -Atom _ecore_x_atom_net_wm_strut = 0; -Atom _ecore_x_atom_net_wm_strut_partial = 0; -Atom _ecore_x_atom_net_wm_icon_geometry = 0; -Atom _ecore_x_atom_net_wm_icon = 0; -Atom _ecore_x_atom_net_wm_pid = 0; -Atom _ecore_x_atom_net_wm_handle_icons = 0; -Atom _ecore_x_atom_net_wm_user_time = 0; - -Atom _ecore_x_atom_net_wm_window_type_desktop = 0; -Atom _ecore_x_atom_net_wm_window_type_dock = 0; -Atom _ecore_x_atom_net_wm_window_type_toolbar = 0; -Atom _ecore_x_atom_net_wm_window_type_menu = 0; -Atom _ecore_x_atom_net_wm_window_type_utility = 0; -Atom _ecore_x_atom_net_wm_window_type_splash = 0; -Atom _ecore_x_atom_net_wm_window_type_dialog = 0; -Atom _ecore_x_atom_net_wm_window_type_normal = 0; - -Atom _ecore_x_atom_net_wm_state_modal = 0; -Atom _ecore_x_atom_net_wm_state_sticky = 0; -Atom _ecore_x_atom_net_wm_state_maximized_vert = 0; -Atom _ecore_x_atom_net_wm_state_maximized_horz = 0; -Atom _ecore_x_atom_net_wm_state_shaded = 0; -Atom _ecore_x_atom_net_wm_state_skip_taskbar = 0; -Atom _ecore_x_atom_net_wm_state_skip_pager = 0; -Atom _ecore_x_atom_net_wm_state_hidden = 0; -Atom _ecore_x_atom_net_wm_state_fullscreen = 0; -Atom _ecore_x_atom_net_wm_state_above = 0; -Atom _ecore_x_atom_net_wm_state_below = 0; - -Atom _ecore_x_atom_net_wm_window_opacity = 0; - Atom _ecore_x_atom_file_name = 0; Atom _ecore_x_atom_string = 0; Atom _ecore_x_atom_text = 0; Atom _ecore_x_atom_utf8_string = 0; Atom _ecore_x_atom_compound_text = 0; -Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM]; - /* Xdnd atoms that need to be exposed to the application interface */ Ecore_X_Atom ECORE_X_DND_ACTION_COPY = 0; Ecore_X_Atom ECORE_X_DND_ACTION_MOVE = 0; @@ -372,6 +315,13 @@ ecore_x_init(const char *name) return 0; } _ecore_x_filter_handler = ecore_event_filter_add(_ecore_x_event_filter_start, _ecore_x_event_filter_filter, _ecore_x_event_filter_end, NULL); + + _ecore_x_atom_compound_text = XInternAtom(_ecore_x_disp, "COMPOUND_TEXT", False); + _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False); + _ecore_x_atom_file_name = XInternAtom(_ecore_x_disp, "FILE_NAME", False); + _ecore_x_atom_string = XInternAtom(_ecore_x_disp, "STRING", False); + _ecore_x_atom_text = XInternAtom(_ecore_x_disp, "TEXT", False); + _ecore_x_atom_wm_state = XInternAtom(_ecore_x_disp, "WM_STATE", False); _ecore_x_atom_wm_delete_window = XInternAtom(_ecore_x_disp, "WM_DELETE_WINDOW", False); _ecore_x_atom_wm_take_focus = XInternAtom(_ecore_x_disp, "WM_TAKE_FOCUS", False); @@ -393,6 +343,9 @@ ecore_x_init(const char *name) _ecore_x_atom_win_layer = XInternAtom(_ecore_x_disp, "_WIN_LAYER", False); + /* Set up the _NET_... hints */ + ecore_x_netwm_init(); + /* This is just to be anal about naming conventions */ _ecore_x_atom_selection_primary = XA_PRIMARY; _ecore_x_atom_selection_secondary = XA_SECONDARY; @@ -425,67 +378,6 @@ ecore_x_init(const char *name) ECORE_X_DND_ACTION_LINK = _ecore_x_atom_xdnd_action_link; ECORE_X_DND_ACTION_ASK = _ecore_x_atom_xdnd_action_ask; ECORE_X_DND_ACTION_PRIVATE = _ecore_x_atom_xdnd_action_private; - - _ecore_x_atom_net_supported = XInternAtom(_ecore_x_disp, "_NET_SUPPORTED", False); - _ecore_x_atom_net_supporting_wm_check = XInternAtom(_ecore_x_disp, "_NET_SUPPORTING_WM_CHECK", False); - - _ecore_x_atom_net_number_of_desktops = XInternAtom(_ecore_x_disp, "_NET_NUMBER_OF_DESKTOPS", False); - _ecore_x_atom_net_desktop_geometry = XInternAtom(_ecore_x_disp, "_NET_DESKTOP_GEOMETRY", False); - _ecore_x_atom_net_desktop_names = XInternAtom(_ecore_x_disp, "_NET_DESKTOP_NAMES", False); - _ecore_x_atom_net_current_desktop = XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); - _ecore_x_atom_net_desktop_viewport = XInternAtom(_ecore_x_disp, "_NET_DESKTOP_VIEWPORT", False); - _ecore_x_atom_net_workarea = XInternAtom(_ecore_x_disp, "_NET_WORKAREA", False); - _ecore_x_atom_net_virtual_roots = XInternAtom(_ecore_x_disp, "_NET_VIRTUAL_ROOTS", False); - - _ecore_x_atom_net_client_list = XInternAtom(_ecore_x_disp, "_NET_CLIENT_LIST", False); - _ecore_x_atom_net_client_list_stacking = XInternAtom(_ecore_x_disp, "_NET_CLIENT_LIST_STACKING", False); - _ecore_x_atom_net_active_window = XInternAtom(_ecore_x_disp, "_NET_ACTIVE_WINDOW", False); - - _ecore_x_atom_net_close_window = XInternAtom(_ecore_x_disp, "_NET_CLOSE_WINDOW", False); - _ecore_x_atom_net_wm_moveresize = XInternAtom(_ecore_x_disp, "_NET_WM_MOVERESIZE", False); - - _ecore_x_atom_net_wm_name = XInternAtom(_ecore_x_disp, "_NET_WM_NAME", False); - _ecore_x_atom_net_wm_visible_name = XInternAtom(_ecore_x_disp, "_NET_WM_VISIBLE_NAME", False); - _ecore_x_atom_net_wm_icon_name = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_NAME", False); - _ecore_x_atom_net_wm_visible_icon_name = XInternAtom(_ecore_x_disp, "_NET_WM_VISIBLE_ICON_NAME", False); - _ecore_x_atom_net_wm_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_DESKTOP", False); - _ecore_x_atom_net_wm_window_type = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE", False); - _ecore_x_atom_net_wm_state = XInternAtom(_ecore_x_disp, "_NET_WM_STATE", False); - _ecore_x_atom_net_wm_allowed_actions = XInternAtom(_ecore_x_disp, "_NET_WM_ALLOWED_ACTIONS", False); - _ecore_x_atom_net_wm_strut = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT", False); - _ecore_x_atom_net_wm_strut_partial = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT_PARTIAL", False); - _ecore_x_atom_net_wm_icon_geometry = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_GEOMETRY", False); - _ecore_x_atom_net_wm_icon = XInternAtom(_ecore_x_disp, "_NET_WM_ICON", False); - _ecore_x_atom_net_wm_pid = XInternAtom(_ecore_x_disp, "_NET_WM_PID", False); - _ecore_x_atom_net_wm_user_time = XInternAtom(_ecore_x_disp, "_NET_WM_USER_TIME", False); - - _ecore_x_atom_net_wm_window_type_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_DESKTOP", False); - _ecore_x_atom_net_wm_window_type_dock = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_DOCK", False); - _ecore_x_atom_net_wm_window_type_toolbar = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_TOOLBAR", False); - _ecore_x_atom_net_wm_window_type_menu = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_MENU", False); - _ecore_x_atom_net_wm_window_type_utility = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_UTILITY", False); - _ecore_x_atom_net_wm_window_type_splash = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_SPLASH", False); - _ecore_x_atom_net_wm_window_type_dialog = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_DIALOG", False); - _ecore_x_atom_net_wm_window_type_normal = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_NORMAL", False); - - _ecore_x_atom_net_wm_state_modal = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_MODAL", False); - _ecore_x_atom_net_wm_state_sticky = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_STICKY", False); - _ecore_x_atom_net_wm_state_maximized_vert = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_MAXIMIZED_VERT", False); - _ecore_x_atom_net_wm_state_maximized_horz = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_MAXIMIZED_HORZ", False); - _ecore_x_atom_net_wm_state_shaded = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_SHADED", False); - _ecore_x_atom_net_wm_state_skip_taskbar = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_SKIP_TASKBAR", False); - _ecore_x_atom_net_wm_state_skip_pager = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_SKIP_PAGER", False); - _ecore_x_atom_net_wm_state_hidden = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_HIDDEN", False); - _ecore_x_atom_net_wm_state_fullscreen = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_FULLSCREEN", False); - _ecore_x_atom_net_wm_state_above = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_ABOVE", False); - _ecore_x_atom_net_wm_state_below = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_BELOW", False); - _ecore_x_atom_net_wm_window_opacity = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_OPACITY", False); - - _ecore_x_atom_compound_text = XInternAtom(_ecore_x_disp, "COMPOUND_TEXT", False); - _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False); - _ecore_x_atom_file_name = XInternAtom(_ecore_x_disp, "FILE_NAME", False); - _ecore_x_atom_string = XInternAtom(_ecore_x_disp, "STRING", False); - _ecore_x_atom_text = XInternAtom(_ecore_x_disp, "TEXT", False); _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = _ecore_x_atom_wm_delete_window; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = _ecore_x_atom_wm_take_focus; diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c b/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c index 5732ec058e..ef02618892 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c @@ -8,6 +8,9 @@ /* * Convenience macros */ +#define _ATOM_GET(name) \ + XInternAtom(_ecore_x_disp, name, False) + #define _ATOM_SET_UTF8_STRING(atom, win, string) \ XChangeProperty(_ecore_x_disp, win, atom, _ecore_x_atom_utf8_string, 8, PropModeReplace, \ (unsigned char *)string, strlen(string)) @@ -24,51 +27,150 @@ XChangeProperty(_ecore_x_disp, win, atom, XA_CARDINAL, 32, PropModeReplace, \ (unsigned char *)p_val, cnt) -#if 0 -/* - * All netwm atoms could be moved to here. Otherwise remove this. - */ -Atom _ecore_x_atom_net_number_of_desktops; -Atom _ecore_x_atom_net_virtual_roots; -Atom _ecore_x_atom_net_desktop_names; -Atom _ecore_x_atom_net_desktop_geometry; -Atom _ecore_x_atom_net_workarea; -Atom _ecore_x_atom_net_current_desktop; -Atom _ecore_x_atom_net_desktop_viewport; -Atom _ecore_x_atom_net_showing_desktop; -Atom _ecore_x_atom_net_client_list; -Atom _ecore_x_atom_net_client_list_stacking; -Atom _ecore_x_atom_net_active_window; +/* + * Root window NetWM hints. + */ +Atom _ecore_x_atom_net_supported = 0; +Atom _ecore_x_atom_net_supporting_wm_check = 0; + +Atom _ecore_x_atom_net_number_of_desktops = 0; +Atom _ecore_x_atom_net_virtual_roots = 0; +Atom _ecore_x_atom_net_desktop_names = 0; +Atom _ecore_x_atom_net_desktop_geometry = 0; +Atom _ecore_x_atom_net_desktop_viewport = 0; +Atom _ecore_x_atom_net_workarea = 0; +Atom _ecore_x_atom_net_desktop_layout = 0; + +Atom _ecore_x_atom_net_current_desktop = 0; +Atom _ecore_x_atom_net_showing_desktop = 0; + +Atom _ecore_x_atom_net_client_list = 0; +Atom _ecore_x_atom_net_client_list_stacking = 0; +Atom _ecore_x_atom_net_active_window = 0; + +/* + * Client message types. + */ +Atom _ecore_x_atom_net_close_window = 0; +Atom _ecore_x_atom_net_wm_moveresize = 0; + +/* + * Application window specific NetWM hints. + */ +Atom _ecore_x_atom_net_wm_desktop = 0; +Atom _ecore_x_atom_net_wm_name = 0; +Atom _ecore_x_atom_net_wm_visible_name = 0; +Atom _ecore_x_atom_net_wm_icon_name = 0; +Atom _ecore_x_atom_net_wm_visible_icon_name = 0; +Atom _ecore_x_atom_net_wm_window_type = 0; +Atom _ecore_x_atom_net_wm_state = 0; +Atom _ecore_x_atom_net_wm_allowed_actions = 0; +Atom _ecore_x_atom_net_wm_strut = 0; +Atom _ecore_x_atom_net_wm_strut_partial = 0; +Atom _ecore_x_atom_net_wm_icon_geometry = 0; +Atom _ecore_x_atom_net_wm_icon = 0; +Atom _ecore_x_atom_net_wm_pid = 0; +Atom _ecore_x_atom_net_wm_handle_icons = 0; +Atom _ecore_x_atom_net_wm_user_time = 0; + +Atom _ecore_x_atom_net_wm_window_type_desktop = 0; +Atom _ecore_x_atom_net_wm_window_type_dock = 0; +Atom _ecore_x_atom_net_wm_window_type_toolbar = 0; +Atom _ecore_x_atom_net_wm_window_type_menu = 0; +Atom _ecore_x_atom_net_wm_window_type_utility = 0; +Atom _ecore_x_atom_net_wm_window_type_splash = 0; +Atom _ecore_x_atom_net_wm_window_type_dialog = 0; +Atom _ecore_x_atom_net_wm_window_type_normal = 0; + +Atom _ecore_x_atom_net_wm_state_modal = 0; +Atom _ecore_x_atom_net_wm_state_sticky = 0; +Atom _ecore_x_atom_net_wm_state_maximized_vert = 0; +Atom _ecore_x_atom_net_wm_state_maximized_horz = 0; +Atom _ecore_x_atom_net_wm_state_shaded = 0; +Atom _ecore_x_atom_net_wm_state_skip_taskbar = 0; +Atom _ecore_x_atom_net_wm_state_skip_pager = 0; +Atom _ecore_x_atom_net_wm_state_hidden = 0; +Atom _ecore_x_atom_net_wm_state_fullscreen = 0; +Atom _ecore_x_atom_net_wm_state_above = 0; +Atom _ecore_x_atom_net_wm_state_below = 0; + +Atom _ecore_x_atom_net_wm_window_opacity = 0; void ecore_x_netwm_init(void) { - _ecore_x_atom_net_number_of_desktops = - XInternAtom(_ecore_x_disp, "_NET_NUMBER_OF_DESKTOPS", False); - _ecore_x_atom_net_virtual_roots = - XInternAtom(_ecore_x_disp, "_NET_VIRTUAL_ROOTS", False); - _ecore_x_atom_net_desktop_names = - XInternAtom(_ecore_x_disp, "_NET_DESKTOP_NAMES", False); - _ecore_x_atom_net_desktop_geometry = - XInternAtom(_ecore_x_disp, "_NET_DESKTOP_GEOMETRY", False); - _ecore_x_atom_net_workarea = - XInternAtom(_ecore_x_disp, "_NET_WORKAREA", False); - _ecore_x_atom_net_current_desktop = - XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); - _ecore_x_atom_net_desktop_viewport = - XInternAtom(_ecore_x_disp, "_NET_DESKTOP_VIEWPORT", False); - _ecore_x_atom_net_showing_desktop = - XInternAtom(_ecore_x_disp, "_NET_SHOWING_DESKTOP", False); + _ecore_x_atom_net_supported = _ATOM_GET("_NET_SUPPORTED"); + _ecore_x_atom_net_supporting_wm_check = _ATOM_GET("_NET_SUPPORTING_WM_CHECK"); - _ecore_x_atom_net_client_list = - XInternAtom(_ecore_x_disp, "_NET_CLIENT_LIST", False); - _ecore_x_atom_net_client_list_stacking = - XInternAtom(_ecore_x_disp, "_NET_CLIENT_LIST_STACKING", False); - _ecore_x_atom_net_active_window = - XInternAtom(_ecore_x_disp, "_NET_ACTIVE_WINDOW", False); + _ecore_x_atom_net_number_of_desktops = _ATOM_GET("_NET_NUMBER_OF_DESKTOPS"); + _ecore_x_atom_net_virtual_roots = _ATOM_GET("_NET_VIRTUAL_ROOTS"); + _ecore_x_atom_net_desktop_geometry = _ATOM_GET("_NET_DESKTOP_GEOMETRY"); + _ecore_x_atom_net_desktop_names = _ATOM_GET("_NET_DESKTOP_NAMES"); + _ecore_x_atom_net_current_desktop = _ATOM_GET("_NET_CURRENT_DESKTOP"); + _ecore_x_atom_net_desktop_viewport = _ATOM_GET("_NET_DESKTOP_VIEWPORT"); + _ecore_x_atom_net_workarea = _ATOM_GET("_NET_WORKAREA"); + + _ecore_x_atom_net_client_list = _ATOM_GET("_NET_CLIENT_LIST"); + _ecore_x_atom_net_client_list_stacking = _ATOM_GET("_NET_CLIENT_LIST_STACKING"); + _ecore_x_atom_net_active_window = _ATOM_GET("_NET_ACTIVE_WINDOW"); + + _ecore_x_atom_net_close_window = _ATOM_GET("_NET_CLOSE_WINDOW"); + _ecore_x_atom_net_wm_moveresize = _ATOM_GET("_NET_WM_MOVERESIZE"); + + _ecore_x_atom_net_wm_name = _ATOM_GET("_NET_WM_NAME"); + _ecore_x_atom_net_wm_visible_name = _ATOM_GET("_NET_WM_VISIBLE_NAME"); + _ecore_x_atom_net_wm_icon_name = _ATOM_GET("_NET_WM_ICON_NAME"); + _ecore_x_atom_net_wm_visible_icon_name = _ATOM_GET("_NET_WM_VISIBLE_ICON_NAME"); + _ecore_x_atom_net_wm_desktop = _ATOM_GET("_NET_WM_DESKTOP"); + _ecore_x_atom_net_wm_window_type = _ATOM_GET("_NET_WM_WINDOW_TYPE"); + _ecore_x_atom_net_wm_state = _ATOM_GET("_NET_WM_STATE"); + _ecore_x_atom_net_wm_allowed_actions = _ATOM_GET("_NET_WM_ALLOWED_ACTIONS"); + _ecore_x_atom_net_wm_strut = _ATOM_GET("_NET_WM_STRUT"); + _ecore_x_atom_net_wm_strut_partial = _ATOM_GET("_NET_WM_STRUT_PARTIAL"); + _ecore_x_atom_net_wm_icon_geometry = _ATOM_GET("_NET_WM_ICON_GEOMETRY"); + _ecore_x_atom_net_wm_icon = _ATOM_GET("_NET_WM_ICON"); + _ecore_x_atom_net_wm_pid = _ATOM_GET("_NET_WM_PID"); + _ecore_x_atom_net_wm_user_time = _ATOM_GET("_NET_WM_USER_TIME"); + + _ecore_x_atom_net_wm_window_type_desktop = _ATOM_GET("_NET_WM_WINDOW_TYPE_DESKTOP"); + _ecore_x_atom_net_wm_window_type_dock = _ATOM_GET("_NET_WM_WINDOW_TYPE_DOCK"); + _ecore_x_atom_net_wm_window_type_toolbar = _ATOM_GET("_NET_WM_WINDOW_TYPE_TOOLBAR"); + _ecore_x_atom_net_wm_window_type_menu = _ATOM_GET("_NET_WM_WINDOW_TYPE_MENU"); + _ecore_x_atom_net_wm_window_type_utility = _ATOM_GET("_NET_WM_WINDOW_TYPE_UTILITY"); + _ecore_x_atom_net_wm_window_type_splash = _ATOM_GET("_NET_WM_WINDOW_TYPE_SPLASH"); + _ecore_x_atom_net_wm_window_type_dialog = _ATOM_GET("_NET_WM_WINDOW_TYPE_DIALOG"); + _ecore_x_atom_net_wm_window_type_normal = _ATOM_GET("_NET_WM_WINDOW_TYPE_NORMAL"); + + _ecore_x_atom_net_wm_state_modal = _ATOM_GET("_NET_WM_STATE_MODAL"); + _ecore_x_atom_net_wm_state_sticky = _ATOM_GET("_NET_WM_STATE_STICKY"); + _ecore_x_atom_net_wm_state_maximized_vert = _ATOM_GET("_NET_WM_STATE_MAXIMIZED_VERT"); + _ecore_x_atom_net_wm_state_maximized_horz = _ATOM_GET("_NET_WM_STATE_MAXIMIZED_HORZ"); + _ecore_x_atom_net_wm_state_shaded = _ATOM_GET("_NET_WM_STATE_SHADED"); + _ecore_x_atom_net_wm_state_skip_taskbar = _ATOM_GET("_NET_WM_STATE_SKIP_TASKBAR"); + _ecore_x_atom_net_wm_state_skip_pager = _ATOM_GET("_NET_WM_STATE_SKIP_PAGER"); + _ecore_x_atom_net_wm_state_hidden = _ATOM_GET("_NET_WM_STATE_HIDDEN"); + _ecore_x_atom_net_wm_state_fullscreen = _ATOM_GET("_NET_WM_STATE_FULLSCREEN"); + _ecore_x_atom_net_wm_state_above = _ATOM_GET("_NET_WM_STATE_ABOVE"); + _ecore_x_atom_net_wm_state_below = _ATOM_GET("_NET_WM_STATE_BELOW"); + + _ecore_x_atom_net_wm_window_opacity = _ATOM_GET("_NET_WM_WINDOW_OPACITY"); } -#endif + +/* + * WM identification + */ +void +ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check, + const char *wm_name) +{ + _ATOM_SET_WINDOW(_ecore_x_atom_net_supporting_wm_check, root, &check, 1); + _ATOM_SET_WINDOW(_ecore_x_atom_net_supporting_wm_check, check, &check, 1); + _ATOM_SET_UTF8_STRING(_ecore_x_atom_net_wm_name, check, wm_name); + /* This one isn't mandatory */ + _ATOM_SET_UTF8_STRING(_ecore_x_atom_net_wm_name, root, wm_name); +} + /* * Desktop configuration and status