/* local subsystem functions */
static void _e_drag_end(E_Drag *drag);
static void _e_drag_free(E_Drag *drag);
+static void _e_drag_rotation_angle_map_adjust(E_Drag *drag);
static Eina_Bool _e_dnd_cb_mouse_up(void *data, int type, void *event);
static Eina_Bool _e_dnd_cb_mouse_move(void *data, int type, void *event);
evas_object_color_set(drag->object, 0, 0, 0, 0);
}
+ drag->angle = e_comp->pointer->rotation;
e_drag_move(drag, x, y);
- evas_object_resize(drag->comp_object, drag->w, drag->h);
+ e_drag_resize(drag, drag->w, drag->h);
drag->visible = 1;
evas_object_show(drag->comp_object);
evas_object_show(drag->object);
drag->h = h;
drag->w = w;
if (_drag_current == drag)
- evas_object_resize(drag->comp_object, w, h);
+ {
+ evas_object_resize(drag->comp_object, w, h);
+ _e_drag_rotation_angle_map_adjust(drag);
+ }
}
EINTERN int
_drag_win = 0;
}
+static void
+_e_drag_rotation_angle_map_adjust(E_Drag *drag)
+{
+ int angle;
+ E_Map *map;
+
+ map = e_map_new();
+ EINA_SAFETY_ON_NULL_RETURN(map);
+
+ angle = drag->angle;
+
+ if (angle)
+ {
+ if (angle == 90)
+ angle = 270;
+ else if (angle == 270)
+ angle = 90;
+
+ e_map_util_points_populate_from_object_full(map, drag->comp_object, 0);
+
+ e_map_util_rotate(map, angle, drag->x, drag->y);
+ e_map_util_object_move_sync_set(map, EINA_TRUE);
+ e_comp_object_map_set(drag->comp_object, map);
+ e_comp_object_map_enable_set(drag->comp_object, EINA_TRUE);
+ }
+ else
+ {
+ e_comp_object_map_set(drag->comp_object, NULL);
+ e_comp_object_map_enable_set(drag->comp_object, EINA_FALSE);
+ }
+
+ e_map_free(map);
+}
+
static Eina_Bool
_e_dnd_cb_mouse_up(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{