feature: blanking options for wakeup on events (urgent + notify)

This commit is contained in:
Mike Blumenkrantz 2014-01-20 16:08:14 -05:00
parent aefaaea57b
commit 6ef655d2dd
5 changed files with 45 additions and 1 deletions

View File

@ -2084,6 +2084,12 @@ e_client_idler_before(void)
e_comp_object_signal_emit(ec->frame, "e,state,urgent", "e");
else
e_comp_object_signal_emit(ec->frame, "e,state,not_urgent", "e");
if (ec->icccm.urgent && e_screensaver_on_get() && e_config->screensaver_wake_on_urgent)
{
int x, y;
ecore_evas_pointer_xy_get(e_comp_get(NULL)->ee, &x, &y);
ecore_evas_pointer_warp(e_comp_get(NULL)->ee, x, y);
}
}
_e_client_hook_call(E_CLIENT_HOOK_EVAL_POST_FRAME_ASSIGN, ec);
}

View File

@ -582,6 +582,9 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, screensaver_ask_presentation, UCHAR);
E_CONFIG_VAL(D, T, screensaver_ask_presentation_timeout, DOUBLE);
E_CONFIG_VAL(D, T, screensaver_wake_on_notify, INT);
E_CONFIG_VAL(D, T, screensaver_wake_on_urgent, INT);
E_CONFIG_VAL(D, T, screensaver_suspend, UCHAR);
E_CONFIG_VAL(D, T, screensaver_suspend_on_ac, UCHAR);
E_CONFIG_VAL(D, T, screensaver_suspend_delay, DOUBLE);
@ -1432,6 +1435,9 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->screensaver_ask_presentation, 0, 1);
E_CONFIG_LIMIT(e_config->screensaver_ask_presentation_timeout, 1.0, 300.0);
E_CONFIG_LIMIT(e_config->screensaver_wake_on_notify, 0, 1);
E_CONFIG_LIMIT(e_config->screensaver_wake_on_urgent, 0, 1);
E_CONFIG_LIMIT(e_config->clientlist_group_by, 0, 2);
E_CONFIG_LIMIT(e_config->clientlist_include_all_zones, 0, 1);
E_CONFIG_LIMIT(e_config->clientlist_separate_with, 0, 2);

View File

@ -226,6 +226,9 @@ struct _E_Config
unsigned char screensaver_ask_presentation; // GUI
double screensaver_ask_presentation_timeout; // GUI
int screensaver_wake_on_notify; // GUI
int screensaver_wake_on_urgent; // GUI
unsigned char screensaver_suspend; // GUI
unsigned char screensaver_suspend_on_ac; // GUI
double screensaver_suspend_delay; // GUI

View File

@ -90,6 +90,12 @@ notify_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Messag
e_object_del(E_OBJECT(n));
return NULL;
}
if (e_screensaver_on_get() && e_config->screensaver_wake_on_notify)
{
int x, y;
ecore_evas_pointer_xy_get(e_comp_get(NULL)->ee, &x, &y);
ecore_evas_pointer_warp(e_comp_get(NULL)->ee, x, y);
}
eldbus_message_iter_dict_iterate(hints_iter, "sv", hints_dict_iter, n);
n->app_name = eina_stringshare_add(n->app_name);
n->icon.icon = eina_stringshare_add(n->icon.icon);

View File

@ -28,6 +28,9 @@ struct _E_Config_Dialog_Data
int screensaver_suspend_on_ac;
double screensaver_suspend_delay;
int wake_on_notify;
int wake_on_urgent;
struct
{
Evas_Object *ask_presentation_slider;
@ -67,6 +70,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->screensaver_suspend = e_config->screensaver_suspend;
cfdata->screensaver_suspend_on_ac = e_config->screensaver_suspend_on_ac;
cfdata->screensaver_suspend_delay = e_config->screensaver_suspend_delay;
cfdata->wake_on_notify = e_config->screensaver_wake_on_notify;
cfdata->wake_on_urgent = e_config->screensaver_wake_on_urgent;
}
static void *
@ -97,6 +103,9 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
e_config->screensaver_suspend_on_ac = cfdata->screensaver_suspend_on_ac;
e_config->screensaver_suspend_delay = cfdata->screensaver_suspend_delay;
e_config->screensaver_wake_on_notify = cfdata->wake_on_notify;
e_config->screensaver_wake_on_urgent = cfdata->wake_on_urgent;
// enough of dpms vs screensaver being different! useless
// e_config->dpms_enable = e_config->screensaver_enable;
// e_config->dpms_standby_enable = e_config->dpms_enable;
@ -135,7 +144,10 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda
(e_config->screensaver_ask_presentation_timeout != cfdata->ask_presentation_timeout) ||
(e_config->screensaver_suspend != cfdata->screensaver_suspend) ||
(e_config->screensaver_suspend_on_ac != cfdata->screensaver_suspend_on_ac) ||
(e_config->screensaver_suspend_delay != cfdata->screensaver_suspend_delay));
(e_config->screensaver_suspend_delay != cfdata->screensaver_suspend_delay) ||
(e_config->screensaver_wake_on_notify != cfdata->wake_on_notify) ||
(e_config->screensaver_wake_on_urgent != cfdata->wake_on_urgent)
);
}
static Evas_Object *
@ -178,6 +190,17 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data
e_widget_toolbook_page_append(otb, NULL, _("Blanking"), ol,
1, 0, 1, 0, 0.5, 0.0);
/* Wakeups */
ol = e_widget_list_add(evas, 0, 0);
oc = e_widget_check_add(evas, _("Wake on notification"),
&(cfdata->wake_on_notify));
e_widget_list_object_append(ol, oc, 1, 1, 0.5);
oc = e_widget_check_add(evas, _("Wake on urgency"),
&(cfdata->wake_on_urgent));
e_widget_list_object_append(ol, oc, 1, 1, 0.5);
e_widget_toolbook_page_append(otb, NULL, _("Wakeups"), ol,
1, 0, 1, 0, 0.5, 0.0);
/* Presentation */
ol = e_widget_list_add(evas, 0, 0);
oc2 = e_widget_check_add(evas, _("Suggest if deactivated before"),