From bafe43ebaf37796b85ae24dd55e3735469be2b2b Mon Sep 17 00:00:00 2001 From: xcomputerman Date: Thu, 30 Dec 2004 05:37:53 +0000 Subject: [PATCH] Beginning of WM hints abstraction, NetWM hints SVN revision: 12644 --- src/bin/Makefile.am | 4 +++- src/bin/e_border.c | 4 +++- src/bin/e_border.h | 13 +++++++++++++ src/bin/e_main.c | 5 ++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index ee2556edb..a3f8eef60 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -36,7 +36,8 @@ e_focus.h \ e_place.h \ e_resist.h \ e_startup.h \ -e_iconify.h +e_iconify.h \ +e_hints.h enlightenment_SOURCES = \ @@ -68,6 +69,7 @@ e_place.c \ e_resist.c \ e_startup.c \ e_iconify.c \ +e_hints.c \ $(ENLIGHTENMENTHEADERS) enlightenment_LDFLAGS = -export-dynamic @e_libs@ @dlopen_libs@ diff --git a/src/bin/e_border.c b/src/bin/e_border.c index d8fb8e711..6408826fe 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -385,7 +385,9 @@ e_border_focus_set(E_Border *bd, int focus, int set) if (bd->client.icccm.take_focus) { printf("take focus!\n"); - ecore_x_icccm_take_focus_send(bd->client.win, ECORE_X_CURRENT_TIME); + /* + ecore_x_icccm_take_focus_send(bd->client.win, ECORE_X_CURRENT_TIME);*/ + e_hints_active_window_set(bd->client.win); ecore_x_window_focus(bd->client.win); } else diff --git a/src/bin/e_border.h b/src/bin/e_border.h index 9f389fb2e..26c066a66 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -120,6 +120,18 @@ struct _E_Border unsigned int pid : 1; unsigned int desktop : 1; } fetch; + + /* NetWM Window state */ + struct { + unsigned char modal : 1; + unsigned char maximized_v : 1; + unsigned char maximized_h : 1; + unsigned char skip_taskbar : 1; + unsigned char skip_pager : 1; + unsigned char fullscreen : 1; + unsigned char stacking : 2; /* 0 = None, 1 = Above, 2 = Below */ + } state; + } netwm; Ecore_X_Window_Attributes initial_attributes; } client; @@ -133,6 +145,7 @@ struct _E_Border unsigned char re_manage : 1; unsigned char shading : 1; unsigned char shaded : 1; + unsigned char sticky : 1; unsigned char maximized : 1; unsigned char iconic : 1; diff --git a/src/bin/e_main.c b/src/bin/e_main.c index a30ef7b19..14b77b136 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -112,7 +112,7 @@ main(int argc, char **argv) _e_main_shutdown(-1); } - /* an intle enterer to be called before all others */ + /* an idle enterer to be called before all others */ _e_main_idle_enterer_before = ecore_idle_enterer_add(_e_main_cb_idler_before, NULL); /* init x */ @@ -127,6 +127,9 @@ main(int argc, char **argv) ecore_x_grab(); ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL); + + /* Init window manager hints */ + e_hints_init(); /* setup menu handlers etc. FIXME: check return value */ e_menu_init();