feature: ACTIVATE_EXCLUDE window active hint policy

this option causes window activation requests to only activate a window if it is on a currently visible virtual desktop, otherwise it will be set as urgent. I recall that things may have worked this way long ago...
This commit is contained in:
Mike Blumenkrantz 2014-01-30 12:44:17 -05:00
parent 3125c3a674
commit d3468dd920
4 changed files with 13 additions and 3 deletions

View File

@ -73,7 +73,9 @@ typedef enum _E_Urgency_Policy
{
E_ACTIVEHINT_POLICY_IGNORE,
E_ACTIVEHINT_POLICY_ANIMATE,
E_ACTIVEHINT_POLICY_ACTIVATE
E_ACTIVEHINT_POLICY_ACTIVATE,
E_ACTIVEHINT_POLICY_ACTIVATE_EXCLUDE,
E_ACTIVEHINT_POLICY_LAST,
} E_Urgency_Policy;
typedef enum _E_Focus_Setting

View File

@ -1898,7 +1898,13 @@ _e_comp_x_message(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Cl
break;
}
if ((!starting) && (!ec->focused))
e_client_activate(ec, EINA_TRUE);
{
if ((e_config->window_activehint_policy == E_ACTIVEHINT_POLICY_ACTIVATE_EXCLUDE) &&
(!ec->desk->visible))
e_client_urgent_set(ec, 1);
else
e_client_activate(ec, EINA_TRUE);
}
else
evas_object_raise(ec->frame);
}

View File

@ -1334,7 +1334,7 @@ e_config_load(void)
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);
E_CONFIG_LIMIT(e_config->window_activehint_policy, 0, 2);
E_CONFIG_LIMIT(e_config->window_activehint_policy, E_ACTIVEHINT_POLICY_IGNORE, E_ACTIVEHINT_POLICY_LAST - 1);
E_CONFIG_LIMIT(e_config->always_click_to_raise, 0, 1);
E_CONFIG_LIMIT(e_config->always_click_to_focus, 0, 1);
E_CONFIG_LIMIT(e_config->use_auto_raise, 0, 1);

View File

@ -311,6 +311,8 @@ _advanced_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Da
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Activate on hint"), E_ACTIVEHINT_POLICY_ACTIVATE, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Activate if on visible desk"), E_ACTIVEHINT_POLICY_ACTIVATE_EXCLUDE, rg);
e_widget_framelist_object_append(of, ob);
e_widget_toolbook_page_append(otb, NULL, _("Hints"), of,
1, 0, 1, 0, 0.5, 0.0);
/* Pointer */