e: add a configuration value to group new windows with others from the same app.
authorChidambar Zinnoury <illogict@online.fr>
Sat, 14 Jul 2012 18:00:57 +0000 (18:00 +0000)
committerChidambar Zinnoury <illogict@online.fr>
Sat, 14 Jul 2012 18:00:57 +0000 (18:00 +0000)
 We may want to alert the user it appeared though (make it urgent?).

 See r70370, fixes #40.

SVN revision: 73856

config/default/e.src
config/illume/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_display.c

index d95bc2e..c04afc0 100644 (file)
@@ -343,6 +343,7 @@ group "E_Config" struct {
     }
   }
   value "window_placement_policy" int: 0;
+  value "window_grouping" int: 0;
   value "focus_policy" int: 0;
   value "focus_setting" int: 1;
   value "pass_click_on" int: 1;
index e8e6b4d..d46f05a 100644 (file)
@@ -22,6 +22,7 @@ group "E_Config" struct {
     value "use_composite" int: 0;
     value "language" string: "en_US.UTF-8";
     value "window_placement_policy" int: 0;
+    value "window_grouping" int: 0;
     value "focus_policy" int: 0;
     value "focus_setting" int: 1;
     value "pass_click_on" int: 1;
index 1d132f1..2260b1e 100644 (file)
@@ -22,6 +22,7 @@ group "E_Config" struct {
     value "use_composite" int: 0;
     value "language" string: "en_US.UTF-8";
     value "window_placement_policy" int: 0;
+    value "window_grouping" int: 0;
     value "focus_policy" int: 2;
     value "focus_setting" int: 3;
     value "pass_click_on" int: 1;
index 3266d27..d86178a 100644 (file)
@@ -7345,7 +7345,7 @@ _e_border_eval0(E_Border *bd)
              if (desk) e_border_desk_set(bd, desk);
           }
 
-        if (0) // keep all windows of one app/group on the same screen/desk
+        if (e_config->window_grouping) // FIXME: We may want to make the border "urgent" so that the user knows it appeared.
           {
              E_Border *bdl = NULL;
 
index e1fc4a0..9303db9 100644 (file)
@@ -672,6 +672,7 @@ e_config_init(void)
    E_CONFIG_LIST(D, T, path_append_modules, _e_config_path_append_edd); /**/
    E_CONFIG_LIST(D, T, path_append_backgrounds, _e_config_path_append_edd); /**/
    E_CONFIG_VAL(D, T, window_placement_policy, INT); /**/
+   E_CONFIG_VAL(D, T, window_grouping, INT); /**/
    E_CONFIG_VAL(D, T, focus_policy, INT); /**/
    E_CONFIG_VAL(D, T, focus_setting, INT); /**/
    E_CONFIG_VAL(D, T, pass_click_on, INT); /**/
@@ -1225,6 +1226,10 @@ e_config_load(void)
           tcfg->desklock_background = NULL;
           IFCFGEND;
 
+          IFCFG(0x0152);
+          COPYVAL(window_grouping);
+          IFCFGEND;
+
           e_config->config_version = E_CONFIG_FILE_VERSION;
           _e_config_free(tcfg);
        }
@@ -1249,6 +1254,7 @@ e_config_load(void)
      E_CONFIG_LIMIT(e_config->show_desktop_icons, 0, 1);
      E_CONFIG_LIMIT(e_config->edge_flip_dragging, 0, 1);
      E_CONFIG_LIMIT(e_config->window_placement_policy, E_WINDOW_PLACEMENT_SMART, E_WINDOW_PLACEMENT_MANUAL);
+     E_CONFIG_LIMIT(e_config->window_grouping, 0, 1);
      E_CONFIG_LIMIT(e_config->focus_policy, 0, 2);
      E_CONFIG_LIMIT(e_config->focus_setting, 0, 3);
      E_CONFIG_LIMIT(e_config->pass_click_on, 0, 1);
index c1df7ab..a248c40 100644 (file)
@@ -37,7 +37,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 0x0151
+#define E_CONFIG_FILE_GENERATION 0x0152
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
 
 struct _E_Config
@@ -87,6 +87,7 @@ struct _E_Config
    Eina_List  *path_append_backgrounds; // GUI
    Eina_List  *path_append_messages; // GUI
    int         window_placement_policy; // GUI
+   int         window_grouping; // GUI
    int         focus_policy; // GUI
    int         focus_setting; // GUI
    int         pass_click_on; // GUI
index ebf0f4c..4f53362 100644 (file)
@@ -19,6 +19,7 @@ struct _E_Config_Dialog_Data
    double border_shade_speed;
    int use_app_icon;
    int window_placement_policy;
+   int window_grouping;
    int desk_auto_switch;
 
    Eina_List *shading_list;
@@ -63,6 +64,7 @@ _create_data(E_Config_Dialog *cfd __UNUSED__)
 
    cfdata->window_placement_policy = 
      e_config->window_placement_policy;
+   cfdata->window_grouping = e_config->window_grouping;
    cfdata->desk_auto_switch = e_config->desk_auto_switch;
 
    cfdata->border_shade_animate = e_config->border_shade_animate;
@@ -83,6 +85,7 @@ static int
 _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
 {
    e_config->window_placement_policy = cfdata->window_placement_policy;
+   e_config->window_grouping = cfdata->window_grouping;
    e_config->move_info_visible = cfdata->move_info_visible;
    e_config->move_info_follows = cfdata->move_info_follows;
    e_config->resize_info_visible = cfdata->resize_info_visible;
@@ -101,6 +104,7 @@ static int
 _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
 {
    return ((e_config->window_placement_policy != cfdata->window_placement_policy) ||
+          (e_config->window_grouping != cfdata->window_grouping) ||
           (e_config->move_info_visible != cfdata->move_info_visible) ||
           (e_config->move_info_follows != cfdata->move_info_follows) ||
           (e_config->resize_info_visible != cfdata->resize_info_visible) ||
@@ -170,6 +174,9 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data
    ow = e_widget_radio_add(evas, _("Place manually with the mouse"), 
                            E_WINDOW_PLACEMENT_MANUAL, rg);
    e_widget_framelist_object_append(of, ow);
+   ow = e_widget_check_add(evas, _("Group with windows of the same application"), 
+                           &(cfdata->window_grouping));
+   e_widget_framelist_object_append(of, ow);
    e_widget_list_object_append(ol, of, 1, 1, 0.5);
    ow = e_widget_check_add(evas, _("Switch to desktop of new window"), 
                            &(cfdata->desk_auto_switch));