feature: blanking options for wakeup on events (urgent + notify)
authorMike Blumenkrantz <zmike@samsung.com>
Mon, 20 Jan 2014 21:08:14 +0000 (16:08 -0500)
committerMike Blumenkrantz <zmike@samsung.com>
Mon, 20 Jan 2014 21:08:14 +0000 (16:08 -0500)
src/bin/e_client.c
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_notification.c
src/modules/conf_display/e_int_config_screensaver.c

index c31fc28..df5e4c9 100644 (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);
           }
index 6741b76..cf17aa0 100644 (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);
index 384af6f..f7bcabf 100644 (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
index 43589be..bffd867 100644 (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);
index 010f154..e963ac2 100644 (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"),