From 7a6f87f198f6bef2f3cb8f073a6f57be40598acf Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 14 Sep 2005 03:26:23 +0000 Subject: [PATCH] some support for launch id in netwm. SVN revision: 16706 --- .../ecore/src/lib/ecore_evas/ecore_evas_x.c | 13 +++++- legacy/ecore/src/lib/ecore_x/Ecore_X.h | 2 + legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c | 46 +++++++++++-------- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c index 481fef9f7c..971d85ff19 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c @@ -1612,7 +1612,12 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent, ee->engine.x.win_root = parent; ee->engine.x.win_container = ecore_x_window_new(parent, x, y, w, h); ee->engine.x.win = ecore_x_window_override_new(ee->engine.x.win_container, 0, 0, w, h); - + if (getenv("DESKTOP_STARTUP_ID")) + { + ecore_x_netwm_startup_id_set(ee->engine.x.win_container, + getenv("DESKTOP_STARTUP_ID")); + putenv("DESKTOP_STARTUP_ID"); + } einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas); if (einfo) { @@ -1799,6 +1804,12 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, ee->engine.x.win_root = parent; ee->engine.x.win_container = ecore_x_window_new(parent, x, y, w, h); + if (getenv("DESKTOP_STARTUP_ID")) + { + ecore_x_netwm_startup_id_set(ee->engine.x.win_container, + getenv("DESKTOP_STARTUP_ID")); + putenv("DESKTOP_STARTUP_ID"); + } einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas); if (einfo) { diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index fea6abc0ea..5e319b4717 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -1203,6 +1203,8 @@ EAPI void ecore_x_netwm_client_list_stacking_set(Ecore_X_Window r EAPI void ecore_x_netwm_client_active_set(Ecore_X_Window root, Ecore_X_Window win); EAPI void ecore_x_netwm_name_set(Ecore_X_Window win, const char *name); EAPI int ecore_x_netwm_name_get(Ecore_X_Window win, char **name); +EAPI void ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id); +EAPI int ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id); EAPI void ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name); EAPI int ecore_x_netwm_visible_name_get(Ecore_X_Window win, char **name); EAPI void ecore_x_netwm_icon_name_set(Ecore_X_Window win, const char *name); 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 76d970e05e..d9993d28d3 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_netwm.c @@ -111,6 +111,7 @@ Ecore_X_Atom ECORE_X_ATOM_NET_RESTACK_WINDOW = 0; * Application window specific NetWM hints. */ Ecore_X_Atom ECORE_X_ATOM_NET_WM_NAME = 0; +Ecore_X_Atom ECORE_X_ATOM_NET_STARTUP_ID = 0; Ecore_X_Atom ECORE_X_ATOM_NET_WM_VISIBLE_NAME = 0; Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON_NAME = 0; Ecore_X_Atom ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME = 0; @@ -197,10 +198,10 @@ ecore_x_netwm_init(void) ECORE_X_ATOM_NET_RESTACK_WINDOW = _ATOM_GET("_NET_RESTACK_WINDOW"); ECORE_X_ATOM_NET_WM_NAME = _ATOM_GET("_NET_WM_NAME"); + ECORE_X_ATOM_NET_STARTUP_ID = _ATOM_GET("_NET_STARTUP_ID"); 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_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_STRUT = _ATOM_GET("_NET_WM_STRUT"); ECORE_X_ATOM_NET_WM_STRUT_PARTIAL = _ATOM_GET("_NET_WM_STRUT_PARTIAL"); @@ -223,31 +224,22 @@ ecore_x_netwm_init(void) ECORE_X_ATOM_NET_WM_ACTION_CLOSE = _ATOM_GET("_NET_WM_ACTION_CLOSE"); ECORE_X_ATOM_NET_WM_WINDOW_TYPE = _ATOM_GET("_NET_WM_WINDOW_TYPE"); - ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP = - _ATOM_GET("_NET_WM_WINDOW_TYPE_DESKTOP"); + 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_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_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 = _ATOM_GET("_NET_WM_STATE"); 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_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_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"); @@ -460,6 +452,20 @@ ecore_x_netwm_name_get(Ecore_X_Window win, char **name) return 1; } +void +ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id) +{ + _ecore_x_window_prop_string_utf8_set(win, ECORE_X_ATOM_NET_STARTUP_ID, id); +} + +int +ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id) +{ + if (id) + *id = _ecore_x_window_prop_string_utf8_get(win, ECORE_X_ATOM_NET_STARTUP_ID); + return 1; +} + void ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name) {