added two new configuration options for the geometry_manipulation conf plugin:
authorAndreas Volz <linux@brachttal.net>
Tue, 6 Jul 2010 19:49:48 +0000 (19:49 +0000)
committerAndreas Volz <linux@brachttal.net>
Tue, 6 Jul 2010 19:49:48 +0000 (19:49 +0000)
   int         geometry_auto_move; // GUI
   int         geometry_auto_resize_limit; // GUI

This does influence the configure_request algorithm in the way that the user could disable the window
geometry move and resize feature that is useful for e.g. Gnome fileselector or gnome-terminal tabs.
There was a use case on the list where this was not nice so I created an option to disable it. If one thinks
a special e.src shouldn't activate this feature by default, please change it.

SVN revision: 50083

config/default/e.src
config/illume-home/e.src
config/illume/e.src
config/minimalist/e.src
config/netbook/e.src
config/scaleable/e.src
config/standard/e.src
src/bin/e_border.c
src/bin/e_config.c
src/bin/e_config.h
src/modules/conf_window_manipulation/e_int_config_window_geometry.c

index 3a9bd27..e1a3074 100644 (file)
@@ -366,6 +366,8 @@ group "E_Config" struct {
   value "desk_resist" int: 32;
   value "window_resist" int: 12;
   value "gadget_resist" int: 32;
+  value "geometry_auto_resize_limit" int: 1;
+  value "geometry_auto_move" int: 1;
   value "winlist_warp_while_selecting" int: 0;
   value "winlist_warp_at_end" int: 1;
   value "winlist_warp_speed" double: 0.1000000014901161193847656;
index 181db6f..62836ae 100644 (file)
@@ -1293,6 +1293,8 @@ group "E_Config" struct {
     value "desk_resist" int: 32;
     value "window_resist" int: 12;
     value "gadget_resist" int: 32;
+    value "geometry_auto_resize_limit" int: 1;
+    value "geometry_auto_move" int: 1;
     value "winlist_warp_while_selecting" int: 1;
     value "winlist_warp_at_end" int: 1;
     value "winlist_warp_speed" double: 0.1000000000000000055511151;
index df602ab..89e320f 100644 (file)
@@ -427,6 +427,8 @@ group "E_Config" struct {
   value "desk_resist" int: 32;
   value "window_resist" int: 12;
   value "gadget_resist" int: 32;
+  value "geometry_auto_resize_limit" int: 1;
+  value "geometry_auto_move" int: 1;
   value "winlist_warp_while_selecting" int: 1;
   value "winlist_warp_at_end" int: 1;
   value "winlist_warp_speed" double: 0.1000000000000000055511151;
index 49ab1ca..0b488cb 100644 (file)
@@ -1397,6 +1397,8 @@ group "E_Config" struct {
   value "desk_resist" int: 32;
   value "window_resist" int: 12;
   value "gadget_resist" int: 32;
+  value "geometry_auto_resize_limit" int: 1;
+  value "geometry_auto_move" int: 1;
   value "winlist_warp_while_selecting" int: 1;
   value "winlist_warp_at_end" int: 1;
   value "winlist_warp_speed" double: 0.1000000000000000055511151;
index 4a39aa4..8a5cda2 100644 (file)
@@ -1461,6 +1461,8 @@ group "E_Config" struct {
   value "desk_resist" int: 32;
   value "window_resist" int: 12;
   value "gadget_resist" int: 32;
+  value "geometry_auto_resize_limit" int: 1;
+  value "geometry_auto_move" int: 1;
   value "winlist_warp_while_selecting" int: 1;
   value "winlist_warp_at_end" int: 1;
   value "winlist_warp_speed" double: 0.1000000000000000055511151;
index 3bcb40c..80e7420 100644 (file)
@@ -1484,6 +1484,8 @@ group "E_Config" struct {
   value "desk_resist" int: 32;
   value "window_resist" int: 12;
   value "gadget_resist" int: 32;
+  value "geometry_auto_resize_limit" int: 1;
+  value "geometry_auto_move" int: 1;
   value "winlist_warp_while_selecting" int: 1;
   value "winlist_warp_at_end" int: 1;
   value "winlist_warp_speed" double: 0.1000000000000000055511151;
index 5540384..2b27ab1 100644 (file)
@@ -1594,6 +1594,8 @@ group "E_Config" struct {
   value "desk_resist" int: 32;
   value "window_resist" int: 12;
   value "gadget_resist" int: 32;
+  value "geometry_auto_resize_limit" int: 1;
+  value "geometry_auto_move" int: 1;
   value "winlist_warp_while_selecting" int: 1;
   value "winlist_warp_at_end" int: 1;
   value "winlist_warp_speed" double: 0.1000000000000000055511151;
index 211151c..76db95d 100644 (file)
@@ -4297,28 +4297,35 @@ _e_border_cb_window_configure_request(__UNUSED__ void *data, __UNUSED__ int ev_t
                        * X configure request into an useful geometry.
                        * This is really useful for size jumping file dialogs.
                        */
-                     
+
+
                       if (bd->zone)
-                        e_zone_useful_geometry_get(bd->zone, &zx, &zy, &zw, &zh);
+                        e_zone_useful_geometry_get(bd->zone, &zx, &zy, &zw, &zh);
 
-                      if (w > zw)
-                        w = zw;
+                      if (e_config->geometry_auto_resize_limit == 1)
+                        {
+                          if (w > zw)
+                             w = zw;
 
-                      if (h > zh)
-                        h = zh;
+                          if (h > zh)
+                             h = zh;
+                        }
                      
                       e_border_resize(bd, w, h);
 
-                      // move window horizontal if resize to not useful geometry
-                      if (bd->x + bd->w > zx + zw)
-                        rx = zx + zw - bd->w;
+                      if (e_config->geometry_auto_move == 1)
+                        {
+                           // move window horizontal if resize to not useful geometry
+                           if (bd->x + bd->w > zx + zw)
+                             rx = zx + zw - bd->w;
 
-                      // move window vertical if resize to not useful geometry
-                      if (bd->y + bd->h > zy + zh)
-                        ry = zy + zh - bd->h;
+                           // move window vertical if resize to not useful geometry
+                           if (bd->y + bd->h > zy + zh)
+                             ry = zy + zh - bd->h;
 
-                      e_border_move(bd, rx, ry);
-                   }
+                           e_border_move(bd, rx, ry);
+                        }
+                    }
               }
          }
      }
index 9639e1d..1ece473 100644 (file)
@@ -548,6 +548,8 @@ e_config_init(void)
    E_CONFIG_VAL(D, T, desk_resist, INT); /**/
    E_CONFIG_VAL(D, T, window_resist, INT); /**/
    E_CONFIG_VAL(D, T, gadget_resist, INT); /**/
+   E_CONFIG_VAL(D, T, geometry_auto_resize_limit, INT); /**/
+   E_CONFIG_VAL(D, T, geometry_auto_move, INT); /**/
    E_CONFIG_VAL(D, T, winlist_warp_while_selecting, INT); /**/
    E_CONFIG_VAL(D, T, winlist_warp_at_end, INT); /**/
    E_CONFIG_VAL(D, T, winlist_warp_speed, DOUBLE); /**/
@@ -1040,6 +1042,8 @@ e_config_load(void)
    E_CONFIG_LIMIT(e_config->desk_resist, 0, 100);
    E_CONFIG_LIMIT(e_config->window_resist, 0, 100);
    E_CONFIG_LIMIT(e_config->gadget_resist, 0, 100);
+   E_CONFIG_LIMIT(e_config->geometry_auto_move, 0, 1);   
+   E_CONFIG_LIMIT(e_config->geometry_auto_resize_limit, 0, 1); 
    E_CONFIG_LIMIT(e_config->winlist_warp_while_selecting, 0, 1);
    E_CONFIG_LIMIT(e_config->winlist_warp_at_end, 0, 1);
    E_CONFIG_LIMIT(e_config->winlist_warp_speed, 0.0, 1.0);
index 9c9f818..d2727f4 100644 (file)
@@ -127,6 +127,8 @@ struct _E_Config
    int         desk_resist; // GUI
    int         window_resist; // GUI
    int         gadget_resist; // GUI
+   int         geometry_auto_move; // GUI
+   int         geometry_auto_resize_limit; // GUI
    int         winlist_warp_while_selecting; // GUI
    int         winlist_warp_at_end; // GUI
    double      winlist_warp_speed; // GUI
index 9863243..86cd4fc 100644 (file)
@@ -18,6 +18,8 @@ struct _E_Config_Dialog_Data
    int desk_resist;
    int window_resist;
    int gadget_resist;
+   int geometry_auto_resize_limit;
+   int geometry_auto_move;
    struct
      {
         double timeout;
@@ -66,6 +68,8 @@ _create_data(E_Config_Dialog *cfd __UNUSED__)
    cfdata->desk_resist = e_config->desk_resist;
    cfdata->window_resist = e_config->window_resist;
    cfdata->gadget_resist = e_config->gadget_resist;
+   cfdata->geometry_auto_resize_limit = e_config->geometry_auto_resize_limit;
+   cfdata->geometry_auto_move = e_config->geometry_auto_move;
    cfdata->border_keyboard.timeout = e_config->border_keyboard.timeout;
    cfdata->border_keyboard.move.dx = e_config->border_keyboard.move.dx;
 //   cfdata->border_keyboard.move.dy = e_config->border_keyboard.move.dy;
@@ -88,6 +92,8 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
    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;  
    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.dy;
@@ -106,6 +112,8 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda
           (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) ||
           (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) ||
@@ -176,6 +184,15 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
    e_widget_framelist_object_append(of, ob);
    e_widget_list_object_append(o, of, 1, 0, 0.5);
 
+   of = e_widget_framelist_add(evas, _("Automatic move and resize"), 0);
+   ob = e_widget_check_add(evas, _("Limit resize on window configure request to useful geometry"), 
+                           &(cfdata->geometry_auto_resize_limit));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_check_add(evas, _("Move after resize on window configure request"), 
+                           &(cfdata->geometry_auto_move));
+   e_widget_framelist_object_append(of, ob);
+   e_widget_list_object_append(o, of, 1, 0, 0.5);
+
    return o;
 }