From: Enlightenment S. <no-...@en...> - 2012-10-02 12:24:45
|
Log: E (RandR): Implement common layout_adjust function. Used when we resize or rotate a given monitor so that the position of any adjacent monitors gets updated. Currently works when resizing or rotating. Author: devilhorns Date: 2012-10-02 05:24:35 -0700 (Tue, 02 Oct 2012) New Revision: 77315 Trac: http://trac.enlightenment.org/e/changeset/77315 Modified: trunk/e/src/modules/conf_randr/e_smart_randr.c Modified: trunk/e/src/modules/conf_randr/e_smart_randr.c =================================================================== --- trunk/e/src/modules/conf_randr/e_smart_randr.c 2012-10-02 12:16:55 UTC (rev 77314) +++ trunk/e/src/modules/conf_randr/e_smart_randr.c 2012-10-02 12:24:35 UTC (rev 77315) @@ -28,6 +28,8 @@ static void _e_smart_clip_set(Evas_Object *obj, Evas_Object *clip); static void _e_smart_clip_unset(Evas_Object *obj); static void _e_smart_reconfigure(E_Smart_Data *sd); +static void _e_smart_randr_layout_adjust(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__); @@ -241,17 +243,14 @@ e_layout_thaw(sd->o_layout); } -/* callback received from the monitor object to let us know that it was - * resized, and we should adjust position of any adjacent monitors */ static void -_e_smart_cb_monitor_resized(void *data, Evas_Object *obj, void *event __UNUSED__) +_e_smart_randr_layout_adjust(E_Smart_Data *sd, Evas_Object *obj) { - E_Smart_Data *sd; Eina_List *l = NULL; Evas_Object *mon; Eina_Rectangle o; - if (!(sd = data)) return; + if (!sd) return; /* get the geometry of this monitor */ e_layout_child_geometry_get(obj, &o.x, &o.y, &o.w, &o.h); @@ -298,11 +297,25 @@ } /* callback received from the monitor object to let us know that it was + * resized, and we should adjust position of any adjacent monitors */ +static void +_e_smart_cb_monitor_resized(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + E_Smart_Data *sd; + + if (!(sd = data)) return; + _e_smart_randr_layout_adjust(sd, obj); +} + +/* callback received from the monitor object to let us know that it was * rotated, and we should adjust position of any adjacent monitors */ static void _e_smart_cb_monitor_rotated(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event __UNUSED__) { - printf("Monitor Rotated\n"); + E_Smart_Data *sd; + + if (!(sd = data)) return; + _e_smart_randr_layout_adjust(sd, obj); } /* callback received from the monitor object to let us know that it was |