forked from enlightenment/enlightenment
Add function for setting monitor position text.
Fix some comments. When the monitor object gets moved, update the position text. NB: Hopefully this helps a little for people having monitor "black out" issues after moving things around. At least now you can See what the position will be. Signed-off-by: Christopher Michael <cp.michael@samsung.com> SVN revision: 82887
This commit is contained in:
parent
f47f526805
commit
f117b3de1d
|
@ -137,6 +137,7 @@ static void _e_smart_monitor_background_set(E_Smart_Data *sd, Evas_Coord dx, Eva
|
||||||
static Eina_Bool _e_smart_monitor_background_update(void *data, int type, void *event);
|
static Eina_Bool _e_smart_monitor_background_update(void *data, int type, void *event);
|
||||||
static Ecore_X_Randr_Mode_Info *_e_smart_monitor_resolution_get(E_Smart_Data *sd, Evas_Coord w, Evas_Coord h, Eina_Bool skip_rate_check);
|
static Ecore_X_Randr_Mode_Info *_e_smart_monitor_resolution_get(E_Smart_Data *sd, Evas_Coord w, Evas_Coord h, Eina_Bool skip_rate_check);
|
||||||
static void _e_smart_monitor_resolution_set(E_Smart_Data *sd, Evas_Coord width, Evas_Coord height);
|
static void _e_smart_monitor_resolution_set(E_Smart_Data *sd, Evas_Coord width, Evas_Coord height);
|
||||||
|
static void _e_smart_monitor_position_set(E_Smart_Data *sd, Evas_Coord x, Evas_Coord y);
|
||||||
static int _e_smart_monitor_rotation_get(Ecore_X_Randr_Orientation orient);
|
static int _e_smart_monitor_rotation_get(Ecore_X_Randr_Orientation orient);
|
||||||
static int _e_smart_monitor_rotation_amount_get(E_Smart_Data *sd, Evas_Event_Mouse_Move *ev);
|
static int _e_smart_monitor_rotation_amount_get(E_Smart_Data *sd, Evas_Event_Mouse_Move *ev);
|
||||||
static Ecore_X_Randr_Orientation _e_smart_monitor_orientation_get(int rotation);
|
static Ecore_X_Randr_Orientation _e_smart_monitor_orientation_get(int rotation);
|
||||||
|
@ -366,7 +367,10 @@ e_smart_monitor_setup(Evas_Object *obj)
|
||||||
edje_object_part_text_set(sd->o_frame, "e.text.name", name);
|
edje_object_part_text_set(sd->o_frame, "e.text.name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set the resolution name */
|
/* set the position text */
|
||||||
|
_e_smart_monitor_position_set(sd, sd->orig.x, sd->orig.y);
|
||||||
|
|
||||||
|
/* set the resolution text */
|
||||||
_e_smart_monitor_resolution_set(sd, sd->orig.w, sd->orig.h);
|
_e_smart_monitor_resolution_set(sd, sd->orig.w, sd->orig.h);
|
||||||
|
|
||||||
/* send enabled/disabled signals */
|
/* send enabled/disabled signals */
|
||||||
|
@ -1020,6 +1024,8 @@ _e_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
||||||
E_Smart_Data *sd;
|
E_Smart_Data *sd;
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
Evas_Object *mclone;
|
Evas_Object *mclone;
|
||||||
|
Evas_Coord fx = 0, fy = 0;
|
||||||
|
Evas_Coord cx = 0, cy = 0;
|
||||||
|
|
||||||
/* try to get the objects smart data */
|
/* try to get the objects smart data */
|
||||||
if (!(sd = evas_object_smart_data_get(obj))) return;
|
if (!(sd = evas_object_smart_data_get(obj))) return;
|
||||||
|
@ -1035,6 +1041,15 @@ _e_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
||||||
/* if we are not visible, no need to update map */
|
/* if we are not visible, no need to update map */
|
||||||
if (!sd->visible) return;
|
if (!sd->visible) return;
|
||||||
|
|
||||||
|
/* grab geometry of the frame */
|
||||||
|
evas_object_geometry_get(sd->o_frame, &fx, &fy, NULL, NULL);
|
||||||
|
|
||||||
|
/* convert to virtual coordinates */
|
||||||
|
e_layout_coord_canvas_to_virtual(sd->layout.obj, fx, fy, &cx, &cy);
|
||||||
|
|
||||||
|
/* set monitor position text */
|
||||||
|
_e_smart_monitor_position_set(sd, cx, cy);
|
||||||
|
|
||||||
/* apply any existing rotation */
|
/* apply any existing rotation */
|
||||||
_e_smart_monitor_map_apply(sd->o_frame, sd->current.rotation);
|
_e_smart_monitor_map_apply(sd->o_frame, sd->current.rotation);
|
||||||
|
|
||||||
|
@ -1371,6 +1386,19 @@ _e_smart_monitor_resolution_set(E_Smart_Data *sd, Evas_Coord width, Evas_Coord h
|
||||||
edje_object_part_text_set(sd->o_frame, "e.text.resolution", buff);
|
edje_object_part_text_set(sd->o_frame, "e.text.resolution", buff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_smart_monitor_position_set(E_Smart_Data *sd, Evas_Coord x, Evas_Coord y)
|
||||||
|
{
|
||||||
|
char buff[1024];
|
||||||
|
|
||||||
|
if (!sd) return;
|
||||||
|
|
||||||
|
snprintf(buff, sizeof(buff), "%d + %d", x, y);
|
||||||
|
|
||||||
|
/* set the frame's resolution text */
|
||||||
|
edje_object_part_text_set(sd->o_frame, "e.text.position", buff);
|
||||||
|
}
|
||||||
|
|
||||||
static Ecore_X_Randr_Mode_Info *
|
static Ecore_X_Randr_Mode_Info *
|
||||||
_e_smart_monitor_resolution_get(E_Smart_Data *sd, Evas_Coord w, Evas_Coord h, Eina_Bool skip_rate_check)
|
_e_smart_monitor_resolution_get(E_Smart_Data *sd, Evas_Coord w, Evas_Coord h, Eina_Bool skip_rate_check)
|
||||||
{
|
{
|
||||||
|
@ -1696,7 +1724,7 @@ _e_smart_monitor_move_event(E_Smart_Data *sd, Evas_Object *mon, void *event)
|
||||||
e_layout_coord_canvas_to_virtual(sd->layout.obj, (sd->layout.x + dx),
|
e_layout_coord_canvas_to_virtual(sd->layout.obj, (sd->layout.x + dx),
|
||||||
(sd->layout.y + dy), &nx, &ny);
|
(sd->layout.y + dy), &nx, &ny);
|
||||||
|
|
||||||
/* factor monitor size into mouse movement */
|
/* factor monitor position into mouse movement */
|
||||||
nx += mx;
|
nx += mx;
|
||||||
ny += my;
|
ny += my;
|
||||||
|
|
||||||
|
@ -2316,10 +2344,24 @@ static void
|
||||||
_e_smart_monitor_layout_cb_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
_e_smart_monitor_layout_cb_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
||||||
{
|
{
|
||||||
E_Smart_Data *sd;
|
E_Smart_Data *sd;
|
||||||
|
Evas_Coord fx = 0, fy = 0, cx = 0, cy = 0;
|
||||||
|
|
||||||
if (!(sd = data)) return;
|
if (!(sd = data)) return;
|
||||||
|
|
||||||
/* get the layout's geometry and store it in our smart data structure */
|
/* get the layout's geometry and store it in our smart data structure */
|
||||||
evas_object_geometry_get(sd->layout.obj,
|
evas_object_geometry_get(sd->layout.obj,
|
||||||
&sd->layout.x, &sd->layout.y, NULL, NULL);
|
&sd->layout.x, &sd->layout.y, NULL, NULL);
|
||||||
|
|
||||||
|
/* NB: This whole block below is needed because the layout may move
|
||||||
|
* AFTER the monitors have been placed, thus providing invalid
|
||||||
|
* monitor position text */
|
||||||
|
|
||||||
|
/* grab geometry of the frame */
|
||||||
|
evas_object_geometry_get(sd->o_frame, &fx, &fy, NULL, NULL);
|
||||||
|
|
||||||
|
/* convert to virtual coordinates */
|
||||||
|
e_layout_coord_canvas_to_virtual(sd->layout.obj, fx, fy, &cx, &cy);
|
||||||
|
|
||||||
|
/* set monitor position text */
|
||||||
|
_e_smart_monitor_position_set(sd, cx, cy);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue