princeamd pushed a commit to branch enlightenment-0.17.

commit caa8ea5cf0496dbdea1ba01811eb315c8c377358
Author: Christopher Michael <[email protected]>
Date:   Tue Feb 19 10:57:29 2013 +0000

    Backport: 22f25b4 :: Fix variable type of "name" to be char (not const 
char). Add code to set mouse pointer on frame events (resize, rotate, etc).
    
    Signed-off-by: Christopher Michael <[email protected]>
    
    SVN revision: 84165
    Signed-off-by: Deon Thomas <[email protected]>
---
 src/modules/conf_randr/e_smart_monitor.c | 88 ++++++++++++++++++++++++++++++--
 1 file changed, 85 insertions(+), 3 deletions(-)

diff --git a/src/modules/conf_randr/e_smart_monitor.c 
b/src/modules/conf_randr/e_smart_monitor.c
index df6e4cc..7205743 100644
--- a/src/modules/conf_randr/e_smart_monitor.c
+++ b/src/modules/conf_randr/e_smart_monitor.c
@@ -85,6 +85,13 @@ static void _e_smart_monitor_thumb_cb_mouse_out(void *data 
EINA_UNUSED, Evas *ev
 static void _e_smart_monitor_thumb_cb_mouse_up(void *data EINA_UNUSED, Evas 
*evas EINA_UNUSED, Evas_Object *obj, void *event);
 static void _e_smart_monitor_thumb_cb_mouse_down(void *data EINA_UNUSED, Evas 
*evas EINA_UNUSED, Evas_Object *obj, void *event);
 
+static void _e_smart_monitor_frame_cb_resize_in(void *data EINA_UNUSED, 
Evas_Object *obj, const char *emission EINA_UNUSED, const char *source 
EINA_UNUSED);
+static void _e_smart_monitor_frame_cb_resize_out(void *data EINA_UNUSED, 
Evas_Object *obj, const char *emission EINA_UNUSED, const char *source 
EINA_UNUSED);
+static void _e_smart_monitor_frame_cb_rotate_in(void *data EINA_UNUSED, 
Evas_Object *obj, const char *emission EINA_UNUSED, const char *source 
EINA_UNUSED);
+static void _e_smart_monitor_frame_cb_rotate_out(void *data EINA_UNUSED, 
Evas_Object *obj, const char *emission EINA_UNUSED, const char *source 
EINA_UNUSED);
+static void _e_smart_monitor_frame_cb_indicator_in(void *data EINA_UNUSED, 
Evas_Object *obj, const char *emission EINA_UNUSED, const char *source 
EINA_UNUSED);
+static void _e_smart_monitor_frame_cb_indicator_out(void *data EINA_UNUSED, 
Evas_Object *obj, const char *emission EINA_UNUSED, const char *source 
EINA_UNUSED);
+
 /* external functions exposed by this widget */
 Evas_Object *
 e_smart_monitor_add(Evas *evas)
@@ -146,7 +153,7 @@ e_smart_monitor_output_set(Evas_Object *obj, 
Ecore_X_Randr_Output output)
    unsigned char *edid = NULL;
    unsigned long edid_length = 0;
    Ecore_X_Window root = 0;
-   const char *name = NULL;
+   char *name = NULL;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
@@ -313,7 +320,20 @@ _e_smart_add(Evas_Object *obj)
    e_theme_edje_object_set(sd->o_frame, "base/theme/widgets", 
                            "e/conf/randr/main/frame");
    edje_object_part_swallow(sd->o_base, "e.swallow.frame", sd->o_frame);
-   /* TODO: Add callback functions */
+
+   /* add callbacks for frame events */
+   edje_object_signal_callback_add(sd->o_frame, "e,action,resize,in", "e", 
+                                   _e_smart_monitor_frame_cb_resize_in, NULL);
+   edje_object_signal_callback_add(sd->o_frame, "e,action,resize,out", "e", 
+                                   _e_smart_monitor_frame_cb_resize_out, NULL);
+   edje_object_signal_callback_add(sd->o_frame, "e,action,rotate,in", "e", 
+                                   _e_smart_monitor_frame_cb_rotate_in, NULL);
+   edje_object_signal_callback_add(sd->o_frame, "e,action,rotate,out", "e", 
+                                   _e_smart_monitor_frame_cb_rotate_out, NULL);
+   edje_object_signal_callback_add(sd->o_frame, "e,action,indicator,in", "e", 
+                                   _e_smart_monitor_frame_cb_indicator_in, 
NULL);
+   edje_object_signal_callback_add(sd->o_frame, "e,action,indicator,out", "e", 
+                                   _e_smart_monitor_frame_cb_indicator_out, 
NULL);
 
    /* create the stand */
    sd->o_stand = edje_object_add(sd->evas);
@@ -375,7 +395,27 @@ _e_smart_del(Evas_Object *obj)
      }
 
    evas_object_del(sd->o_stand);
-   evas_object_del(sd->o_frame);
+
+   if (sd->o_frame)
+     {
+        /* delete the event callbacks */
+        edje_object_signal_callback_del(sd->o_frame, "e,action,resize,in", 
"e", 
+                                        _e_smart_monitor_frame_cb_resize_in);
+        edje_object_signal_callback_del(sd->o_frame, "e,action,resize,out", 
"e", 
+                                        _e_smart_monitor_frame_cb_resize_out);
+        edje_object_signal_callback_del(sd->o_frame, "e,action,rotate,in", 
"e", 
+                                        _e_smart_monitor_frame_cb_rotate_in);
+        edje_object_signal_callback_del(sd->o_frame, "e,action,rotate,out", 
"e", 
+                                        _e_smart_monitor_frame_cb_rotate_out);
+        edje_object_signal_callback_del(sd->o_frame, "e,action,indicator,in", 
"e", 
+                                        
_e_smart_monitor_frame_cb_indicator_in);
+        edje_object_signal_callback_del(sd->o_frame, "e,action,indicator,out", 
"e", 
+                                        
_e_smart_monitor_frame_cb_indicator_out);
+
+        /* delete the object */
+        evas_object_del(sd->o_frame);
+     }
+
    evas_object_del(sd->o_base);
    /* evas_object_del(sd->o_bg); */
 
@@ -697,3 +737,45 @@ _e_smart_monitor_thumb_cb_mouse_down(void *data 
EINA_UNUSED, Evas *evas EINA_UNU
    /* reset mouse pointer */
    _e_smart_monitor_pointer_push(obj, "move");
 }
+
+static void 
+_e_smart_monitor_frame_cb_resize_in(void *data EINA_UNUSED, Evas_Object *obj, 
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   /* set the mouse pointer to indicate we can be resized */
+   _e_smart_monitor_pointer_push(obj, "resize_br");
+}
+
+static void 
+_e_smart_monitor_frame_cb_resize_out(void *data EINA_UNUSED, Evas_Object *obj, 
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   /* set the mouse pointer back to default */
+   _e_smart_monitor_pointer_pop(obj, "resize_br");
+}
+
+static void 
+_e_smart_monitor_frame_cb_rotate_in(void *data EINA_UNUSED, Evas_Object *obj, 
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   /* set the mouse pointer to indicate we can be rotated */
+   _e_smart_monitor_pointer_push(obj, "rotate");
+}
+
+static void 
+_e_smart_monitor_frame_cb_rotate_out(void *data EINA_UNUSED, Evas_Object *obj, 
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   /* set the mouse pointer back to default */
+   _e_smart_monitor_pointer_pop(obj, "rotate");
+}
+
+static void 
+_e_smart_monitor_frame_cb_indicator_in(void *data EINA_UNUSED, Evas_Object 
*obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   /* set the mouse pointer to indicate we can be toggled */
+   _e_smart_monitor_pointer_push(obj, "plus");
+}
+
+static void 
+_e_smart_monitor_frame_cb_indicator_out(void *data EINA_UNUSED, Evas_Object 
*obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   /* set the mouse pointer back to default */
+   _e_smart_monitor_pointer_pop(obj, "plus");
+}

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to