diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 13096a56b..373f98580 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -803,6 +803,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, border_raise_on_focus, INT); E_CONFIG_VAL(D, T, desk_flip_wrap, INT); E_CONFIG_VAL(D, T, fullscreen_flip, INT); + E_CONFIG_VAL(D, T, multiscreen_flip, INT); E_CONFIG_VAL(D, T, icon_theme, STR); E_CONFIG_VAL(D, T, icon_theme_overrides, UCHAR); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 377e3f0b5..57b31dfe6 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -36,7 +36,7 @@ typedef struct _E_Event_Config_Icon_Theme E_Event_Config_Icon_Theme; /* increment this whenever a new set of config values are added but the users * config doesn't need to be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 0x0149 +#define E_CONFIG_FILE_GENERATION 0x0150 #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION) struct _E_Config @@ -230,6 +230,7 @@ struct _E_Config int border_raise_on_focus; // GUI int desk_flip_wrap; // GUI int fullscreen_flip; // GUI + int multiscreen_flip; // GUI const char *icon_theme; // GUI unsigned char icon_theme_overrides; // GUI diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 70165bc0a..c1814385b 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -992,10 +992,10 @@ e_zone_edge_new(E_Zone_Edge edge) E_Zone *zone; int cw, ch; - // explicitly disallow edge bindings when we have more than 1 root + // configurably disallow edge bindings when we have more than 1 root // window (ie pure old multihead) since we don't know which direction // other root windows are in - if (eina_list_count(e_manager_list()) > 1) return; + if ((!e_config->multiscreen_flip) && (eina_list_count(e_manager_list()) > 1)) return; EINA_LIST_FOREACH(e_manager_list(), l, man) { EINA_LIST_FOREACH(man->containers, ll, con) diff --git a/src/modules/conf_edgebindings/e_int_config_edgebindings.c b/src/modules/conf_edgebindings/e_int_config_edgebindings.c index e75bc91d5..df6d09f56 100644 --- a/src/modules/conf_edgebindings/e_int_config_edgebindings.c +++ b/src/modules/conf_edgebindings/e_int_config_edgebindings.c @@ -81,6 +81,7 @@ struct _E_Config_Dialog_Data const char *params; int fullscreen_flip; + int multiscreen_flip; E_Config_Dialog *cfd; }; @@ -144,6 +145,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) } cfdata->fullscreen_flip = e_config->fullscreen_flip; + cfdata->multiscreen_flip = e_config->multiscreen_flip; } static void * @@ -200,6 +202,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) E_FREE(bi); } + e_config->multiscreen_flip = cfdata->multiscreen_flip; EINA_LIST_FOREACH(cfdata->binding.edge, l, bi2) { bi = E_NEW(E_Config_Binding_Edge, 1); @@ -296,6 +299,8 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf of = e_widget_framelist_add(evas, _("General Options"), 0); ob = e_widget_check_add(evas, _("Allow binding activation with fullscreen windows"), &(cfdata->fullscreen_flip)); e_widget_framelist_object_append(of, ob); + ob = e_widget_check_add(evas, _("Allow binding activation with multiple screens (DANGEROUS!)"), &(cfdata->multiscreen_flip)); + e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 0, 0.5); _update_edge_binding_list(cfdata);