E (RandR): Allow toggle of output on/off (visually).
NB: This just implements on/off of monitor state "visually". No actual changes applied via ecore_x_randr yet. SVN revision: 77186
This commit is contained in:
parent
7d2cff204b
commit
adc5e6064c
|
@ -27,6 +27,9 @@ struct _E_Smart_Data
|
||||||
/* rotating flag */
|
/* rotating flag */
|
||||||
Eina_Bool rotating : 1;
|
Eina_Bool rotating : 1;
|
||||||
|
|
||||||
|
/* connected flag */
|
||||||
|
Eina_Bool connected : 1;
|
||||||
|
|
||||||
/* layout object (this monitors parent) */
|
/* layout object (this monitors parent) */
|
||||||
Evas_Object *o_layout;
|
Evas_Object *o_layout;
|
||||||
|
|
||||||
|
@ -85,6 +88,9 @@ static void _e_smart_cb_rotate_mouse_in(void *data, Evas_Object *obj __UNUSED__,
|
||||||
static void _e_smart_cb_rotate_mouse_out(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
static void _e_smart_cb_rotate_mouse_out(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
||||||
static void _e_smart_cb_rotate_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
static void _e_smart_cb_rotate_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
||||||
static void _e_smart_cb_rotate_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
static void _e_smart_cb_rotate_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
||||||
|
static void _e_smart_cb_indicator_mouse_in(void *data __UNUSED__, Evas_Object *obj, const char *emission __UNUSED__, const char *source __UNUSED__);
|
||||||
|
static void _e_smart_cb_indicator_mouse_out(void *data __UNUSED__, Evas_Object *obj, const char *emission __UNUSED__, const char *source __UNUSED__);
|
||||||
|
static void _e_smart_cb_indicator_toggle(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__);
|
||||||
static void _e_smart_cb_frame_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event);
|
static void _e_smart_cb_frame_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event);
|
||||||
static int _e_smart_cb_modes_sort(const void *data1, const void *data2);
|
static int _e_smart_cb_modes_sort(const void *data1, const void *data2);
|
||||||
|
|
||||||
|
@ -201,9 +207,17 @@ e_smart_monitor_crtc_set(Evas_Object *obj, E_Randr_Crtc_Info *crtc)
|
||||||
/* tell monitor object we are enabled/disabled */
|
/* tell monitor object we are enabled/disabled */
|
||||||
if (output->connection_status ==
|
if (output->connection_status ==
|
||||||
ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED)
|
ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED)
|
||||||
edje_object_signal_emit(sd->o_base, "e,state,enabled", "e");
|
{
|
||||||
|
sd->connected = EINA_TRUE;
|
||||||
|
edje_object_signal_emit(sd->o_base, "e,state,enabled", "e");
|
||||||
|
edje_object_signal_emit(sd->o_frame, "e,state,enabled", "e");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
edje_object_signal_emit(sd->o_base, "e,state,disabled", "e");
|
{
|
||||||
|
sd->connected = EINA_FALSE;
|
||||||
|
edje_object_signal_emit(sd->o_base, "e,state,disabled", "e");
|
||||||
|
edje_object_signal_emit(sd->o_frame, "e,state,disabled", "e");
|
||||||
|
}
|
||||||
|
|
||||||
/* get and display monitor name if available */
|
/* get and display monitor name if available */
|
||||||
if ((monitor = output->monitor))
|
if ((monitor = output->monitor))
|
||||||
|
@ -331,9 +345,9 @@ _e_smart_add(Evas_Object *obj)
|
||||||
|
|
||||||
/* add callbacks for 'resize' edje signals */
|
/* add callbacks for 'resize' edje signals */
|
||||||
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,in", "e",
|
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,in", "e",
|
||||||
_e_smart_cb_resize_mouse_in, sd);
|
_e_smart_cb_resize_mouse_in, NULL);
|
||||||
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,out", "e",
|
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,out", "e",
|
||||||
_e_smart_cb_resize_mouse_out, sd);
|
_e_smart_cb_resize_mouse_out, NULL);
|
||||||
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,start", "e",
|
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,start", "e",
|
||||||
_e_smart_cb_resize_start, obj);
|
_e_smart_cb_resize_start, obj);
|
||||||
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,stop", "e",
|
edje_object_signal_callback_add(sd->o_frame, "e,action,resize,stop", "e",
|
||||||
|
@ -349,6 +363,15 @@ _e_smart_add(Evas_Object *obj)
|
||||||
edje_object_signal_callback_add(sd->o_frame, "e,action,rotate,stop", "e",
|
edje_object_signal_callback_add(sd->o_frame, "e,action,rotate,stop", "e",
|
||||||
_e_smart_cb_rotate_stop, obj);
|
_e_smart_cb_rotate_stop, obj);
|
||||||
|
|
||||||
|
/* add callback for indicator edje signals */
|
||||||
|
edje_object_signal_callback_add(sd->o_frame, "e,action,indicator,in", "e",
|
||||||
|
_e_smart_cb_indicator_mouse_in, NULL);
|
||||||
|
edje_object_signal_callback_add(sd->o_frame, "e,action,indicator,out", "e",
|
||||||
|
_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);
|
||||||
|
|
||||||
/* create event handlers */
|
/* create event handlers */
|
||||||
sd->hdls =
|
sd->hdls =
|
||||||
eina_list_append(sd->hdls,
|
eina_list_append(sd->hdls,
|
||||||
|
@ -387,6 +410,15 @@ _e_smart_del(Evas_Object *obj)
|
||||||
edje_object_signal_callback_del(sd->o_frame, "e,action,rotate,stop", "e",
|
edje_object_signal_callback_del(sd->o_frame, "e,action,rotate,stop", "e",
|
||||||
_e_smart_cb_rotate_stop);
|
_e_smart_cb_rotate_stop);
|
||||||
|
|
||||||
|
/* delete callback for indicator edje signals */
|
||||||
|
edje_object_signal_callback_del(sd->o_frame, "e,action,indicator,in", "e",
|
||||||
|
_e_smart_cb_indicator_mouse_in);
|
||||||
|
edje_object_signal_callback_del(sd->o_frame, "e,action,indicator,out", "e",
|
||||||
|
_e_smart_cb_indicator_mouse_out);
|
||||||
|
edje_object_signal_callback_del(sd->o_frame,
|
||||||
|
"e,action,indicator,toggle", "e",
|
||||||
|
_e_smart_cb_indicator_toggle);
|
||||||
|
|
||||||
/* delete event handlers */
|
/* delete event handlers */
|
||||||
EINA_LIST_FREE(sd->hdls, hdl)
|
EINA_LIST_FREE(sd->hdls, hdl)
|
||||||
ecore_event_handler_del(hdl);
|
ecore_event_handler_del(hdl);
|
||||||
|
@ -640,6 +672,7 @@ _e_smart_cb_rotate_stop(void *data, Evas_Object *obj __UNUSED__, const char *emi
|
||||||
|
|
||||||
if (!(mon = data)) return;
|
if (!(mon = data)) return;
|
||||||
if (!(sd = evas_object_smart_data_get(mon))) return;
|
if (!(sd = evas_object_smart_data_get(mon))) return;
|
||||||
|
|
||||||
sd->rotating = EINA_FALSE;
|
sd->rotating = EINA_FALSE;
|
||||||
|
|
||||||
e_layout_child_lower(mon);
|
e_layout_child_lower(mon);
|
||||||
|
@ -647,6 +680,45 @@ _e_smart_cb_rotate_stop(void *data, Evas_Object *obj __UNUSED__, const char *emi
|
||||||
if (sd->map) evas_map_free(sd->map);
|
if (sd->map) evas_map_free(sd->map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_smart_cb_indicator_mouse_in(void *data __UNUSED__, Evas_Object *obj, const char *emission __UNUSED__, const char *source __UNUSED__)
|
||||||
|
{
|
||||||
|
E_Manager *man;
|
||||||
|
|
||||||
|
man = e_manager_current_get();
|
||||||
|
e_pointer_type_push(man->pointer, obj, "hand");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_smart_cb_indicator_mouse_out(void *data __UNUSED__, Evas_Object *obj, const char *emission __UNUSED__, const char *source __UNUSED__)
|
||||||
|
{
|
||||||
|
E_Manager *man;
|
||||||
|
|
||||||
|
man = e_manager_current_get();
|
||||||
|
e_pointer_type_pop(man->pointer, obj, "hand");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_smart_cb_indicator_toggle(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
|
||||||
|
{
|
||||||
|
E_Smart_Data *sd;
|
||||||
|
|
||||||
|
if (!(sd = data)) return;
|
||||||
|
|
||||||
|
if (sd->connected)
|
||||||
|
{
|
||||||
|
sd->connected = EINA_FALSE;
|
||||||
|
edje_object_signal_emit(sd->o_base, "e,state,disabled", "e");
|
||||||
|
edje_object_signal_emit(sd->o_frame, "e,state,disabled", "e");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sd->connected = EINA_TRUE;
|
||||||
|
edje_object_signal_emit(sd->o_base, "e,state,enabled", "e");
|
||||||
|
edje_object_signal_emit(sd->o_frame, "e,state,enabled", "e");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_smart_cb_frame_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event)
|
_e_smart_cb_frame_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue