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