diff --git a/data/config/default/e.src b/data/config/default/e.src index dbb95387f..5e66ae7e7 100644 --- a/data/config/default/e.src +++ b/data/config/default/e.src @@ -58,7 +58,8 @@ group "E_Config" struct { value "winlist_mode" int: 1; value "winlist_large_size" double: 0.6666; value "winlist_list_size" double: 0.3333; - value "winlist_list_no_miniatures" int: 0; + value "winlist_list_no_miniatures" uchar: 0; + value "no_state_hidden_desktop" uchar: 0; value "maximize_policy" int: 49; value "allow_manip" int: 0; value "border_fix_on_shelf_toggle" int: 0; diff --git a/data/config/standard/e.src b/data/config/standard/e.src index 8e982c93f..e5a1ca37e 100644 --- a/data/config/standard/e.src +++ b/data/config/standard/e.src @@ -54,7 +54,8 @@ group "E_Config" struct { value "winlist_mode" int: 1; value "winlist_large_size" double: 0.6666; value "winlist_list_size" double: 0.3333; - value "winlist_list_no_miniatures" int: 0; + value "winlist_list_no_miniatures" uchar: 0; + value "no_state_hidden_desktop" uchar: 0; value "maximize_policy" int: 50; value "allow_manip" int: 0; value "border_fix_on_shelf_toggle" int: 0; diff --git a/data/config/tiling/e.src b/data/config/tiling/e.src index 53f713500..2b0329865 100644 --- a/data/config/tiling/e.src +++ b/data/config/tiling/e.src @@ -54,7 +54,8 @@ group "E_Config" struct { value "winlist_mode" int: 1; value "winlist_large_size" double: 0.6666; value "winlist_list_size" double: 0.3333; - value "winlist_list_no_miniatures" int: 0; + value "winlist_list_no_miniatures" uchar: 0; + value "no_state_hidden_desktop" uchar: 0; value "maximize_policy" int: 50; value "allow_manip" int: 0; value "border_fix_on_shelf_toggle" int: 0; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 00bd43914..bfcfe7957 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -750,6 +750,7 @@ _e_config_edd_init(Eina_Bool old) E_CONFIG_VAL(D, T, winlist_list_size, DOUBLE); /**/ E_CONFIG_VAL(D, T, winlist_large_size, DOUBLE); /**/ E_CONFIG_VAL(D, T, winlist_list_no_miniatures, UCHAR); /**/ + E_CONFIG_VAL(D, T, no_state_hidden_desktop, UCHAR); /**/ E_CONFIG_VAL(D, T, maximize_policy, INT); /**/ E_CONFIG_VAL(D, T, allow_manip, INT); /**/ E_CONFIG_VAL(D, T, border_fix_on_shelf_toggle, INT); /**/ diff --git a/src/bin/e_config.h b/src/bin/e_config.h index d7250739b..aeb0fecdb 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -135,6 +135,7 @@ struct _E_Config double winlist_list_size; // GUI double winlist_large_size; // GUI Eina_Bool winlist_list_no_miniatures; // GUI + Eina_Bool no_state_hidden_desktop; // GUI int maximize_policy; // GUI int allow_manip; // GUI int border_fix_on_shelf_toggle; // GUI diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index daadc6c6b..0d9fdaf61 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -597,8 +597,11 @@ e_hints_window_state_set(E_Client *ec) if (ec->netwm.state.skip_pager) state[num++] = ECORE_X_WINDOW_STATE_SKIP_PAGER; } - if (ec->netwm.state.hidden) - state[num++] = ECORE_X_WINDOW_STATE_HIDDEN; + if (!e_config->no_state_hidden_desktop) + { + if (ec->netwm.state.hidden) + state[num++] = ECORE_X_WINDOW_STATE_HIDDEN; + } if (ec->netwm.state.fullscreen) state[num++] = ECORE_X_WINDOW_STATE_FULLSCREEN; diff --git a/src/modules/conf_window_manipulation/e_int_config_window_geometry.c b/src/modules/conf_window_manipulation/e_int_config_window_geometry.c index 7c33b0e63..2808ea56f 100644 --- a/src/modules/conf_window_manipulation/e_int_config_window_geometry.c +++ b/src/modules/conf_window_manipulation/e_int_config_window_geometry.c @@ -41,7 +41,8 @@ struct _E_Config_Dialog_Data int maximize_direction; int maximized_allow_manip; int border_fix_on_shelf_toggle; - int allow_above_fullscreen; + int allow_above_fullscreen; + int state_hidden_desktop; }; E_Config_Dialog * @@ -90,6 +91,7 @@ _create_data(E_Config_Dialog *cfd EINA_UNUSED) cfdata->transient.iconify = e_config->transient.iconify; cfdata->maximize_policy = (e_config->maximize_policy & E_MAXIMIZE_TYPE); cfdata->allow_above_fullscreen = e_config->allow_above_fullscreen; + cfdata->state_hidden_desktop = ! e_config->no_state_hidden_desktop; if (cfdata->maximize_policy == E_MAXIMIZE_NONE) cfdata->maximize_policy = E_MAXIMIZE_FULLSCREEN; cfdata->maximize_direction = @@ -133,6 +135,7 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) e_config->allow_manip = cfdata->maximized_allow_manip; e_config->border_fix_on_shelf_toggle = cfdata->border_fix_on_shelf_toggle; e_config->allow_above_fullscreen = cfdata->allow_above_fullscreen; + e_config->no_state_hidden_desktop = !cfdata->state_hidden_desktop; e_config_save_queue(); return 1; /* Apply was OK */ } @@ -141,16 +144,16 @@ static int _basic_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) { return ((e_config->use_resist != cfdata->use_resist) || - (e_config->desk_resist != cfdata->desk_resist) || - (e_config->window_resist != cfdata->window_resist) || - (e_config->gadget_resist != cfdata->gadget_resist) || - (e_config->geometry_auto_resize_limit != cfdata->geometry_auto_resize_limit) || + (e_config->desk_resist != cfdata->desk_resist) || + (e_config->window_resist != cfdata->window_resist) || + (e_config->gadget_resist != cfdata->gadget_resist) || + (e_config->geometry_auto_resize_limit != cfdata->geometry_auto_resize_limit) || (e_config->geometry_auto_move != cfdata->geometry_auto_move) || - (!EINA_DBL_EQ(e_config->border_keyboard.timeout, cfdata->border_keyboard.timeout)) || - (e_config->border_keyboard.move.dx != cfdata->border_keyboard.move.dx) || - (e_config->border_keyboard.move.dy != cfdata->border_keyboard.move.dx) || - (e_config->border_keyboard.resize.dx != cfdata->border_keyboard.resize.dx) || - (e_config->border_keyboard.resize.dy != cfdata->border_keyboard.resize.dx) || + (!EINA_DBL_EQ(e_config->border_keyboard.timeout, cfdata->border_keyboard.timeout)) || + (e_config->border_keyboard.move.dx != cfdata->border_keyboard.move.dx) || + (e_config->border_keyboard.move.dy != cfdata->border_keyboard.move.dx) || + (e_config->border_keyboard.resize.dx != cfdata->border_keyboard.resize.dx) || + (e_config->border_keyboard.resize.dy != cfdata->border_keyboard.resize.dx) || (e_config->transient.move != cfdata->transient.move) || (e_config->transient.resize != cfdata->transient.resize) || (e_config->transient.raise != cfdata->transient.raise) || @@ -161,7 +164,9 @@ _basic_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfd (e_config->maximize_policy != (cfdata->maximize_policy | cfdata->maximize_direction)) || (e_config->allow_manip != cfdata->maximized_allow_manip) || (e_config->border_fix_on_shelf_toggle != cfdata->border_fix_on_shelf_toggle) || - (e_config->allow_above_fullscreen != cfdata->allow_above_fullscreen)); + (e_config->allow_above_fullscreen != cfdata->allow_above_fullscreen) || + (e_config->no_state_hidden_desktop == cfdata->state_hidden_desktop) + ); } static Evas_Object * @@ -267,6 +272,9 @@ _basic_create(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dialog_Data ow = e_widget_check_add(evas, _("Adjust windows on shelf hide"), &(cfdata->border_fix_on_shelf_toggle)); e_widget_list_object_append(ol, ow, 1, 0, 0.5); + ow = e_widget_check_add(evas, _("Set hidden state when not on current desktop"), + &(cfdata->state_hidden_desktop)); + e_widget_list_object_append(ol, ow, 1, 0, 0.5); e_widget_toolbook_page_append(otb, NULL, _("Automatic"), ol, 1, 1, 1, 0, 0.0, 0.0);