diff --git a/src/bin/e_border.c b/src/bin/e_border.c index d0877adff..718933e3d 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -4757,7 +4757,7 @@ _e_border_eval(E_Border *bd) { bd_parent->transients = evas_list_append(bd_parent->transients, bd); bd->parent = bd_parent; - if (bd->client.netwm.state.modal) + if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) bd->parent->modal = bd; } } @@ -4771,7 +4771,7 @@ _e_border_eval(E_Border *bd) { bd_leader->group = evas_list_append(bd_leader->group, bd); bd->leader = bd_leader; - if (bd->client.netwm.state.modal) + if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) bd->leader->modal = bd; } } diff --git a/src/bin/e_config.c b/src/bin/e_config.c index cf1655155..092a33ed9 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -308,6 +308,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, transient.layer, INT); /**/ E_CONFIG_VAL(D, T, transient.desktop, INT); /**/ E_CONFIG_VAL(D, T, transient.iconify, INT); /**/ + E_CONFIG_VAL(D, T, modal_windows, INT); /**/ e_config = e_config_domain_load("e", _e_config_edd); if (e_config) @@ -423,6 +424,7 @@ e_config_init(void) e_config->transient.layer = 1; e_config->transient.desktop = 1; e_config->transient.iconify = 1; + e_config->modal_windows = 1; { E_Config_Module *em; diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 7a9866c7c..affe7f6ff 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -154,6 +154,7 @@ struct _E_Config int desktop; int iconify; } transient; + int modal_windows; }; struct _E_Config_Module diff --git a/src/bin/e_ipc_handlers.h b/src/bin/e_ipc_handlers.h index fa5e1832b..af0765443 100644 --- a/src/bin/e_ipc_handlers.h +++ b/src/bin/e_ipc_handlers.h @@ -4976,3 +4976,42 @@ break; END_INT; #endif #undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_MODAL_WINDOWS_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-modal-windows-set", 1, "Set if enlightenment should honour modal windows", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->modal_windows = val; + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_MODAL_WINDOWS_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-modal-windows-get", 0, "Get if enlightenment should honour modal windows", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->modal_windows, E_IPC_OP_MODAL_WINDOWS_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_MODAL_WINDOWS_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL diff --git a/src/bin/e_ipc_handlers_list.h b/src/bin/e_ipc_handlers_list.h index 345144201..5ae3e4616 100644 --- a/src/bin/e_ipc_handlers_list.h +++ b/src/bin/e_ipc_handlers_list.h @@ -253,3 +253,7 @@ #define E_IPC_OP_TRANSIENT_ICONIFY_SET 252 #define E_IPC_OP_TRANSIENT_ICONIFY_GET 253 #define E_IPC_OP_TRANSIENT_ICONIFY_GET_REPLY 254 + +#define E_IPC_OP_MODAL_WINDOWS_SET 255 +#define E_IPC_OP_MODAL_WINDOWS_GET 256 +#define E_IPC_OP_MODAL_WINDOWS_GET_REPLY 257