m_viewImpl->page()->dragUpdated(dragData ,m_dragStorageName);
DragSession dragSession = m_viewImpl->page()->dragSession();
- if (dragSession.operation != DragOperationNone)
+ if (dragSession.operation != DragSourceActionNone)
handle->updateHandleIcon(true);
else
handle->updateHandleIcon(false);
m_viewImpl->page()->dragUpdated(dragData ,m_dragStorageName);
DragSession dragSession = m_viewImpl->page()->dragSession();
- if (dragSession.operation != DragOperationNone) {
+ if (dragSession.operation != DragSourceActionNone) {
m_viewImpl->page()->performDrag(dragData, m_dragStorageName);
setDragMode(false);
m_viewImpl->page()->dragEnded(viewPoint, viewPoint, m_dragData->draggingSourceOperationMask());
const int s_iconOffset = 90;
const int s_widthMargin = 20;
const int s_heightMargin = 10;
+const int s_cancelImageXMargin = 26;
+const int s_cancelImageYMargin = 36;
const double s_minIconWidth = 110;
const double s_minIconHeight = 100;
const double s_minImageLength = 90;
DragHandle::DragHandle(Evas_Object* object, const String& theme, const String& path, Drag* drag)
- : m_drag(drag)
+ : m_view(object)
+ , m_drag(drag)
, m_dragJob(0)
{
Evas_Object* topWidget = elm_object_top_widget_get(elm_object_parent_widget_get(object));
if (!elm_layout_file_set(m_icon, theme.utf8().data(), path.utf8().data()) || !elm_layout_file_set(m_cancelIcon, theme.utf8().data(), "drag_cancel"))
return;
- evas_object_smart_member_add(m_icon, object);
-
evas_object_propagate_events_set(m_icon, false);
evas_object_event_callback_add(m_icon, EVAS_CALLBACK_MOUSE_DOWN, mouseDown, this);
evas_object_event_callback_add(m_icon, EVAS_CALLBACK_MOUSE_MOVE, mouseMove, this);
void DragHandle::move(const IntPoint& point)
{
if (m_icon) {
- evas_object_move(m_icon, point.x() - m_dragImageWidth / 2, point.y() - m_dragImageHeight / 2);
- evas_object_move(m_cancelIcon, point.x() - (m_dragImageWidth / 2) - 26, point.y() - (m_dragImageHeight / 2) - 36);
+ Evas_Coord x, y, width, height;
+ evas_object_geometry_get(m_view, &x, &y, &width, &height);
+
+ double dragX, dragY;
+ if ((point.x() - m_dragImageWidth / 2) < s_cancelImageXMargin)
+ dragX = s_cancelImageXMargin;
+ else if ((point.x() - m_dragImageWidth / 2) > (width - m_dragImageWidth))
+ dragX = width - m_dragImageWidth;
+ else
+ dragX = point.x() - m_dragImageWidth / 2;
+ if ((point.y() - m_dragImageHeight / 2) < (y + s_cancelImageYMargin))
+ dragY = y + s_cancelImageYMargin;
+ else if ((point.y() - m_dragImageHeight / 2) > (y + height - m_dragImageHeight))
+ dragY = y + height - m_dragImageHeight;
+ else
+ dragY = point.y() - m_dragImageHeight / 2;
+
+ evas_object_move(m_icon, dragX, dragY);
+ evas_object_move(m_cancelIcon, dragX - s_cancelImageXMargin, dragY - s_cancelImageYMargin);
}
}
evas_object_image_filled_set(m_dragImage, EINA_TRUE);
evas_object_show(m_dragImage);
- evas_object_resize(m_icon, m_dragImageWidth + s_widthMargin, m_dragImageHeight + s_heightMargin);
+ m_dragImageWidth += s_widthMargin;
+ m_dragImageHeight += s_heightMargin;
+
+ evas_object_resize(m_icon, m_dragImageWidth, m_dragImageHeight);
elm_object_part_content_set(m_icon, "swallow", m_dragImage);
} else {
elm_object_signal_emit(m_icon, "dragndrop,image,hide", "dragndrop");