forked from enlightenment/enlightenment
Implement rudamentary monitor snapping after move.
After a monitor has been moved, snap it to the closest monitor. NB: This should fix cases where a monitor could not be positioned next to another monitor which had a resolution of 1368. Previously, the second monitor could only move to 1366 due to a rounding issue when converting coordinates to virtual. Now, the second monitor (when finished moving) will Snap to the proper position. NB: (Currently) In order for the snapping to work, either the monitors' X axis or Y axis must be equal. Ideally, this should be fixed to allow for some percentage of position flexibility. Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
b566b6b2ce
commit
b0e360599b
|
@ -656,7 +656,8 @@ static void
|
|||
_e_smart_randr_monitor_cb_moved(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
||||
{
|
||||
E_Smart_Data *sd;
|
||||
Evas_Object *randr;
|
||||
Evas_Object *randr, *mon;
|
||||
Eina_List *l = NULL;
|
||||
|
||||
if (!(randr = data)) return;
|
||||
|
||||
|
@ -667,6 +668,22 @@ _e_smart_randr_monitor_cb_moved(void *data, Evas_Object *obj EINA_UNUSED, void *
|
|||
* outputs is at 0,0 */
|
||||
_e_smart_randr_monitor_position_normalize(sd);
|
||||
|
||||
/* move any monitors which are adjacent to this one to their new
|
||||
* positions due to the resize, specifying this resized monitor as
|
||||
* the one to skip */
|
||||
_e_smart_randr_monitor_position_update(sd, randr, randr);
|
||||
|
||||
EINA_LIST_FOREACH(sd->monitors, l, mon)
|
||||
{
|
||||
/* skip the monitor which was currently resized */
|
||||
if ((mon == randr)) continue;
|
||||
|
||||
/* move any monitors which are adjacent to this one to their new
|
||||
* positions due to the resize, specifying this resized monitor as
|
||||
* the one to skip */
|
||||
_e_smart_randr_monitor_position_update(sd, mon, randr);
|
||||
}
|
||||
|
||||
/* tell main dialog that something changed and to enable apply button */
|
||||
evas_object_smart_callback_call(randr, "randr_changed", NULL);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue