summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorViktor Kojouharov <vkojouharov@gmail.com>2009-02-27 18:36:08 +0000
committerViktor Kojouharov <vkojouharov@gmail.com>2009-02-27 18:36:08 +0000
commit82404b049e70badd069d328b7e6cc7638d7b81dc (patch)
treef05ff23459ff43ea3e95baabaa6edd5f476710e4 /src
parent6053a421dc1cf5f11506f45a796b1a846cbb61ce (diff)
downloadenlightenment-82404b049e70badd069d328b7e6cc7638d7b81dc.tar.gz
option to restrict mouse desktop flipping if there are fullscreen windows
SVN revision: 39271
Diffstat (limited to 'src')
-rw-r--r--src/bin/e_actions.c3
-rw-r--r--src/bin/e_border.c3
-rw-r--r--src/bin/e_config.c6
-rw-r--r--src/bin/e_config.h3
-rw-r--r--src/bin/e_desk.h1
-rw-r--r--src/modules/conf_desks/e_int_config_desks.c5
6 files changed, 19 insertions, 2 deletions
diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c
index bd016822bf..70ad034ba1 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 7b57b5fc26..04c5249bb3 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 a174b9b4bc..5f1c96d1c3 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 98bd489516..e6de46678f 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 25f0d8502d..b21fecbf55 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 2f83122a95..1a59193ef4 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);