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
This commit is contained in:
Chidambar Zinnoury 2012-07-14 18:00:57 +00:00
parent 75d902e518
commit d4b871bafd
7 changed files with 19 additions and 2 deletions

View 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;

View 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;

View 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;

View 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;

View 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);

View 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

View 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));