From 6cca89c83f98439dc0bf5230efefc2ffd9b1b928 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Mon, 8 Oct 2012 09:13:30 +0000 Subject: [PATCH] Make on/off indicator toggling also send a changed event to the RandR widget. Signed-off-by: Christopher Michael SVN revision: 77570 --- src/modules/conf_randr/e_smart_monitor.c | 9 +++++++-- src/modules/conf_randr/e_smart_randr.c | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/modules/conf_randr/e_smart_monitor.c b/src/modules/conf_randr/e_smart_monitor.c index 59d0e7efc..29d81c85b 100644 --- a/src/modules/conf_randr/e_smart_monitor.c +++ b/src/modules/conf_randr/e_smart_monitor.c @@ -452,7 +452,7 @@ _e_smart_add(Evas_Object *obj) _e_smart_cb_indicator_mouse_out, NULL); edje_object_signal_callback_add(sd->o_frame, "e,action,indicator,toggle", "e", - _e_smart_cb_indicator_toggle, sd); + _e_smart_cb_indicator_toggle, obj); /* create event handlers */ sd->hdls = @@ -824,9 +824,11 @@ _e_smart_cb_indicator_mouse_out(void *data __UNUSED__, Evas_Object *obj, const c static void _e_smart_cb_indicator_toggle(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { + Evas_Object *mon; E_Smart_Data *sd; - if (!(sd = data)) return; + if (!(mon = data)) return; + if (!(sd = evas_object_smart_data_get(mon))) return; if (sd->connected) { @@ -840,6 +842,9 @@ _e_smart_cb_indicator_toggle(void *data, Evas_Object *obj __UNUSED__, const char edje_object_signal_emit(sd->o_base, "e,state,enabled", "e"); edje_object_signal_emit(sd->o_frame, "e,state,enabled", "e"); } + + /* tell randr widget that we enabled/disabled this monitor */ + evas_object_smart_callback_call(mon, "monitor_toggled", NULL); } static void diff --git a/src/modules/conf_randr/e_smart_randr.c b/src/modules/conf_randr/e_smart_randr.c index cfe8db0c9..58177ea6f 100644 --- a/src/modules/conf_randr/e_smart_randr.c +++ b/src/modules/conf_randr/e_smart_randr.c @@ -37,6 +37,7 @@ static void _e_smart_randr_layout_reposition(E_Smart_Data *sd, Evas_Object *obj) static void _e_smart_cb_monitor_resized(void *data, Evas_Object *obj, void *event __UNUSED__); static void _e_smart_cb_monitor_rotated(void *data, Evas_Object *obj, void *event __UNUSED__); static void _e_smart_cb_monitor_moved(void *data, Evas_Object *obj, void *event __UNUSED__); +static void _e_smart_cb_monitor_toggled(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__); static void _e_smart_cb_monitor_deleted(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event __UNUSED__); /* public functions */ @@ -90,6 +91,8 @@ e_smart_randr_monitor_add(Evas_Object *obj, Evas_Object *mon) _e_smart_cb_monitor_rotated, obj); evas_object_smart_callback_add(mon, "monitor_moved", _e_smart_cb_monitor_moved, obj); + evas_object_smart_callback_add(mon, "monitor_toggled", + _e_smart_cb_monitor_toggled, obj); /* add listener for when this monitor gets removed */ evas_object_event_callback_add(mon, EVAS_CALLBACK_DEL, @@ -426,6 +429,20 @@ _e_smart_cb_monitor_moved(void *data, Evas_Object *obj, void *event __UNUSED__) sd->changed = EINA_FALSE; } +static void +_e_smart_cb_monitor_toggled(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__) +{ + Evas_Object *o_randr; + E_Smart_Data *sd; + + if (!(o_randr = data)) return; + if (!(sd = evas_object_smart_data_get(o_randr))) + return; + + evas_object_smart_callback_call(o_randr, "changed", NULL); + sd->changed = EINA_FALSE; +} + /* callback received from the monitor object to let us know that it was * deleted, and we should cleanup */ static void @@ -437,4 +454,6 @@ _e_smart_cb_monitor_deleted(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_O _e_smart_cb_monitor_rotated); evas_object_smart_callback_del(obj, "monitor_moved", _e_smart_cb_monitor_moved); + evas_object_smart_callback_del(obj, "monitor_toggled", + _e_smart_cb_monitor_toggled); }