diff --git a/config/default/e.src b/config/default/e.src index 944c90f89..aaab81dc4 100644 --- a/config/default/e.src +++ b/config/default/e.src @@ -1,5 +1,5 @@ group "E_Config" struct { - value "config_version" int: 65837; + value "config_version" int: 65838; value "show_splash" int: 0; value "init_default_theme" string: "default.edj"; value "desktop_default_name" string: "Desktop %i, %i"; @@ -481,6 +481,7 @@ group "E_Config" struct { value "border_raise_on_mouse_action" int: 1; value "border_raise_on_focus" int: 1; value "desk_flip_wrap" int: 0; + value "fullscreen_flip" int: 1; value "icon_theme" string: "Tango"; value "desk_flip_animate_mode" int: 0; value "desk_flip_animate_interpolation" int: 0; diff --git a/config/illume/e.src b/config/illume/e.src index f081e929e..8875774ef 100644 --- a/config/illume/e.src +++ b/config/illume/e.src @@ -1,5 +1,5 @@ group "E_Config" struct { - value "config_version" int: 65837; + value "config_version" int: 65838; value "show_splash" int: 1; value "init_default_theme" string: "default.edj"; value "desktop_default_name" string: "Desktop %i, %i"; @@ -691,6 +691,7 @@ group "E_Config" struct { value "border_raise_on_mouse_action" int: 1; value "border_raise_on_focus" int: 1; value "desk_flip_wrap" int: 0; + value "fullscreen_flip" int: 1; value "icon_theme" string: "openmoko-standard"; value "desk_flip_animate_mode" int: 0; value "desk_flip_animate_interpolation" int: 0; diff --git a/config/minimalist/e.src b/config/minimalist/e.src index 375c238b4..bffbe890b 100644 --- a/config/minimalist/e.src +++ b/config/minimalist/e.src @@ -1,5 +1,5 @@ group "E_Config" struct { - value "config_version" int: 65837; + value "config_version" int: 65838; value "show_splash" int: 1; value "init_default_theme" string: "default.edj"; value "desktop_default_background" string: "Light_Gradient.edj"; @@ -1895,6 +1895,7 @@ group "E_Config" struct { value "border_raise_on_mouse_action" int: 1; value "border_raise_on_focus" int: 1; value "desk_flip_wrap" int: 0; + value "fullscreen_flip" int: 1; value "icon_theme" string: "Tango"; value "desk_flip_animate_mode" int: 1; value "desk_flip_animate_interpolation" int: 0; diff --git a/config/netbook/e.src b/config/netbook/e.src index be4de28e5..cad71a074 100644 --- a/config/netbook/e.src +++ b/config/netbook/e.src @@ -1,5 +1,5 @@ group "E_Config" struct { - value "config_version" int: 65837; + value "config_version" int: 65838; value "show_splash" int: 1; value "init_default_theme" string: "default.edj"; value "desktop_default_background" string: "Dark_Gradient.edj"; @@ -1959,6 +1959,7 @@ group "E_Config" struct { value "border_raise_on_mouse_action" int: 1; value "border_raise_on_focus" int: 1; value "desk_flip_wrap" int: 0; + value "fullscreen_flip" int: 1; value "icon_theme" string: "Tango"; value "desk_flip_animate_mode" int: 1; value "desk_flip_animate_interpolation" int: 0; diff --git a/config/scaleable/e.src b/config/scaleable/e.src index cbd79e62b..87735271f 100644 --- a/config/scaleable/e.src +++ b/config/scaleable/e.src @@ -1,5 +1,5 @@ group "E_Config" struct { - value "config_version" int: 65837; + value "config_version" int: 65838; value "show_splash" int: 1; value "init_default_theme" string: "default.edj"; value "desktop_default_name" string: "Desktop %i, %i"; @@ -1982,6 +1982,7 @@ group "E_Config" struct { value "border_raise_on_mouse_action" int: 1; value "border_raise_on_focus" int: 1; value "desk_flip_wrap" int: 0; + value "fullscreen_flip" int: 1; value "icon_theme" string: "Tango"; value "desk_flip_animate_mode" int: 1; value "desk_flip_animate_interpolation" int: 0; diff --git a/config/standard/e.src b/config/standard/e.src index 9572b92c2..d1a9a5cd1 100644 --- a/config/standard/e.src +++ b/config/standard/e.src @@ -1,5 +1,5 @@ group "E_Config" struct { - value "config_version" int: 65837; + value "config_version" int: 65838; value "show_splash" int: 1; value "init_default_theme" string: "default.edj"; value "desktop_default_name" string: "Desktop %i, %i"; @@ -1992,6 +1992,7 @@ group "E_Config" struct { value "border_raise_on_mouse_action" int: 1; value "border_raise_on_focus" int: 1; value "desk_flip_wrap" int: 0; + value "fullscreen_flip" int: 1; value "icon_theme" string: "Tango"; value "desk_flip_animate_mode" int: 1; value "desk_flip_animate_interpolation" int: 0; diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index bd016822b..70ad034ba 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -1123,10 +1123,11 @@ ACT_FN_GO_EDGE(desk_flip_in_direction) zone = _e_actions_zone_get(obj); wev = E_NEW(E_Event_Pointer_Warp, 1); if ((!wev) || (!zone)) return; + prev = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current); + if (prev->fullscreen_borders && (!e_config->fullscreen_flip)) return; ecore_x_pointer_xy_get(zone->container->win, &x, &y); wev->prev.x = x; wev->prev.y = y; - prev = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current); if (params) { if (sscanf(params, "%i", &offset) != 1) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 7b57b5fc2..04c5249bb 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -2149,6 +2149,8 @@ e_border_fullscreen(E_Border *bd, E_Fullscreen policy) bd->client_inset.t = 0; bd->client_inset.b = 0; + bd->desk->fullscreen_borders++; + /* e_zone_fullscreen_set(bd->zone, 1); */ if (!e_config->allow_above_fullscreen) e_border_layer_set(bd, 200); @@ -2223,6 +2225,7 @@ e_border_unfullscreen(E_Border *bd) bd->pre_res_change.valid = 0; bd->fullscreen = 0; bd->need_fullscreen = 0; + bd->desk->fullscreen_borders--; if ((screen_size.width != -1) && (screen_size.height != -1)) { diff --git a/src/bin/e_config.c b/src/bin/e_config.c index a174b9b4b..5f1c96d1c 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -610,6 +610,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, border_raise_on_mouse_action, INT); 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, icon_theme, STR); @@ -876,6 +877,10 @@ e_config_load(void) COPYVAL(priority); IFCFGEND; + IFCFG(0x012e); + COPYVAL(fullscreen_flip); + IFCFGEND; + e_config->config_version = E_CONFIG_FILE_VERSION; _e_config_free(tcfg); } @@ -973,6 +978,7 @@ e_config_load(void) E_CONFIG_LIMIT(e_config->border_raise_on_mouse_action, 0, 1); E_CONFIG_LIMIT(e_config->border_raise_on_focus, 0, 1); E_CONFIG_LIMIT(e_config->desk_flip_wrap, 0, 1); + E_CONFIG_LIMIT(e_config->fullscreen_flip, 0, 1); E_CONFIG_LIMIT(e_config->remember_internal_windows, 0, 1); E_CONFIG_LIMIT(e_config->desk_auto_switch, 0, 1); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 98bd48951..e6de46678 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -35,7 +35,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 0x012d +#define E_CONFIG_FILE_GENERATION 0x012e #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION) #define E_EVAS_ENGINE_DEFAULT 0 @@ -259,6 +259,7 @@ struct _E_Config int border_raise_on_mouse_action; // GUI int border_raise_on_focus; // GUI int desk_flip_wrap; // GUI + int fullscreen_flip; // GUI const char *icon_theme; // GUI diff --git a/src/bin/e_desk.h b/src/bin/e_desk.h index 25f0d8502..b21fecbf5 100644 --- a/src/bin/e_desk.h +++ b/src/bin/e_desk.h @@ -25,6 +25,7 @@ struct _E_Desk int x, y; char visible : 1; unsigned int deskshow_toggle : 1; + int fullscreen_borders; Evas_Object *bg_object; diff --git a/src/modules/conf_desks/e_int_config_desks.c b/src/modules/conf_desks/e_int_config_desks.c index 2f83122a9..1a59193ef 100644 --- a/src/modules/conf_desks/e_int_config_desks.c +++ b/src/modules/conf_desks/e_int_config_desks.c @@ -23,6 +23,7 @@ struct _E_Config_Dialog_Data /*- ADVANCED -*/ int edge_flip_dragging; int flip_wrap; + int fullscreen_flip; int flip_mode; int flip_interp; double flip_speed; @@ -65,6 +66,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->flip_animate = e_config->desk_flip_animate_mode > 0; cfdata->edge_flip_dragging = e_config->edge_flip_dragging; cfdata->flip_wrap = e_config->desk_flip_wrap; + cfdata->fullscreen_flip = e_config->fullscreen_flip; cfdata->flip_mode = e_config->desk_flip_animate_mode; cfdata->flip_interp = e_config->desk_flip_animate_interpolation; cfdata->flip_speed = e_config->desk_flip_animate_time; @@ -160,6 +162,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) e_config->edge_flip_dragging = cfdata->edge_flip_dragging; e_config->desk_flip_wrap = cfdata->flip_wrap; + e_config->fullscreen_flip = cfdata->fullscreen_flip; e_config_save_queue(); return 1; /* Apply was OK */ @@ -235,6 +238,8 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data e_widget_framelist_object_append(of, ob); ob = e_widget_check_add(evas, _("Wrap desktops around when flipping"), &(cfdata->flip_wrap)); e_widget_framelist_object_append(of, ob); + ob = e_widget_check_add(evas, _("Allow flipping with fullscreen windows"), &(cfdata->fullscreen_flip)); + e_widget_framelist_object_append(of, ob); e_widget_table_object_append(ott, of, 1, 0, 1, 1, 1, 0, 1, 0); of = e_widget_framelist_add(evas, _("Flip Animation"), 0);