add edge binding config option to enable edge bindings on multihead

ticket #906


SVN revision: 73262
This commit is contained in:
Mike Blumenkrantz 2012-07-04 09:32:05 +00:00
parent 86274c429b
commit ba64e79b7c
4 changed files with 10 additions and 3 deletions

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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);