From d4b871bafd2b84a1672a7a192f805ec8d79bb00a Mon Sep 17 00:00:00 2001 From: Chidambar Zinnoury Date: Sat, 14 Jul 2012 18:00:57 +0000 Subject: [PATCH] e: add a configuration value to group new windows with others from the same app. We may want to alert the user it appeared though (make it urgent?). See r70370, fixes #40. SVN revision: 73856 --- config/default/e.src | 1 + config/illume/e.src | 1 + config/standard/e.src | 1 + src/bin/e_border.c | 2 +- src/bin/e_config.c | 6 ++++++ src/bin/e_config.h | 3 ++- .../conf_window_manipulation/e_int_config_window_display.c | 7 +++++++ 7 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config/default/e.src b/config/default/e.src index d95bc2edb..c04afc07c 100644 --- a/config/default/e.src +++ b/config/default/e.src @@ -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; diff --git a/config/illume/e.src b/config/illume/e.src index e8e6b4db0..d46f05a30 100644 --- a/config/illume/e.src +++ b/config/illume/e.src @@ -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; diff --git a/config/standard/e.src b/config/standard/e.src index 1d132f111..2260b1e80 100644 --- a/config/standard/e.src +++ b/config/standard/e.src @@ -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; diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 3266d2799..d86178ade 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -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; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index e1fc4a0c6..9303db94f 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -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); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index c1df7abf3..a248c4093 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -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 diff --git a/src/modules/conf_window_manipulation/e_int_config_window_display.c b/src/modules/conf_window_manipulation/e_int_config_window_display.c index ebf0f4c80..4f53362ad 100644 --- a/src/modules/conf_window_manipulation/e_int_config_window_display.c +++ b/src/modules/conf_window_manipulation/e_int_config_window_display.c @@ -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));