Fix a bunch of leftovers from porting, add debug
This commit is contained in:
parent
20e9241c3a
commit
acba1e9471
@ -33,8 +33,6 @@
|
|||||||
#include <QQmlContext>
|
#include <QQmlContext>
|
||||||
#include <QQuickWindow>
|
#include <QQuickWindow>
|
||||||
|
|
||||||
#include <KMimeType>
|
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -44,7 +42,7 @@
|
|||||||
DeclarativeDragArea::DeclarativeDragArea(QQuickItem *parent)
|
DeclarativeDragArea::DeclarativeDragArea(QQuickItem *parent)
|
||||||
: QQuickItem(parent),
|
: QQuickItem(parent),
|
||||||
m_delegate(0),
|
m_delegate(0),
|
||||||
m_source(0),
|
m_source(parent),
|
||||||
m_target(0),
|
m_target(0),
|
||||||
m_enabled(true),
|
m_enabled(true),
|
||||||
m_draggingJustStarted(false),
|
m_draggingJustStarted(false),
|
||||||
@ -54,7 +52,9 @@ DeclarativeDragArea::DeclarativeDragArea(QQuickItem *parent)
|
|||||||
{
|
{
|
||||||
m_startDragDistance = QApplication::startDragDistance();
|
m_startDragDistance = QApplication::startDragDistance();
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
//setFiltersChildEvents(true);
|
// setFiltersChildEvents(true);
|
||||||
|
setFlag(ItemAcceptsDrops, m_enabled);
|
||||||
|
setAcceptHoverEvents(true);
|
||||||
setFiltersChildMouseEvents(true);
|
setFiltersChildMouseEvents(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,51 +209,56 @@ void DeclarativeDragArea::mouseMoveEvent(QMouseEvent *event)
|
|||||||
{
|
{
|
||||||
if ( !m_enabled
|
if ( !m_enabled
|
||||||
|| QLineF(event->screenPos(), m_buttonDownPos).length()
|
|| QLineF(event->screenPos(), m_buttonDownPos).length()
|
||||||
< m_startDragDistance && false) {
|
< m_startDragDistance) {
|
||||||
qDebug() << "return";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_draggingJustStarted) {
|
if (m_draggingJustStarted) {
|
||||||
m_draggingJustStarted = false;
|
m_draggingJustStarted = false;
|
||||||
qDebug() << "DDDD DRag";
|
qDebug() << "************ DDDD new QDrag" << objectName();
|
||||||
QDrag *drag = new QDrag(parent());
|
QDrag *drag = new QDrag(this);
|
||||||
DeclarativeMimeData* dataCopy = new DeclarativeMimeData(m_data); //Qt will take ownership of this copy and delete it.
|
DeclarativeMimeData* dataCopy = new DeclarativeMimeData(m_data); //Qt will take ownership of this copy and delete it.
|
||||||
|
dataCopy->setText(objectName());
|
||||||
drag->setMimeData(dataCopy);
|
drag->setMimeData(dataCopy);
|
||||||
|
//qDebug() << "-----> data: dragarea: " << this << x() << y() << " mimedata: " << m_data << (dataCopy->hasColor() ? dataCopy->color().name() : " no color") ;
|
||||||
|
|
||||||
const QSize _s(48,48); // FIXME: smarter, please
|
const QSize _s(48,48); // FIXME: smarter, please
|
||||||
|
|
||||||
if (!m_delegateImage.isNull()) {
|
if (!m_delegateImage.isNull()) {
|
||||||
drag->setPixmap(QPixmap::fromImage(m_delegateImage));
|
drag->setPixmap(QPixmap::fromImage(m_delegateImage));
|
||||||
qDebug() << "++++++delegateImage";
|
// qDebug() << "++++++delegateImage";
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "DDD NO Delegte image";
|
// qDebug() << "DDD NO Delegte image";
|
||||||
if (m_delegate) {
|
if (m_delegate) {
|
||||||
QRectF rf;
|
// This is just highly unreliable, let's completely skip this
|
||||||
qDebug() << "DDD +++ delegate" << m_delegate;
|
// until we have a non-digusting way of "attaching an item to
|
||||||
rf = QRectF(0, 0, m_delegate->width(), m_delegate->height());
|
// the cursor
|
||||||
rf = m_delegate->mapRectToScene(rf);
|
// QRectF rf;
|
||||||
QImage grabbed = window()->grabWindow();
|
// qDebug() << "DDD +++ delegate" << m_delegate;
|
||||||
//rf = rf.intersected(QRectF(0, 0, grabbed.width(), grabbed.height()));
|
// rf = QRectF(0, 0, m_delegate->width(), m_delegate->height());
|
||||||
grabbed = grabbed.copy(rf.toAlignedRect());
|
// rf = m_delegate->mapRectToScene(rf);
|
||||||
qDebug() << " +++++++++++++++++++++++ dim: " << rf;
|
// QImage grabbed = window()->grabWindow();
|
||||||
grabbed.save("file:///tmp/grabbed.png");
|
// //rf = rf.intersected(QRectF(0, 0, grabbed.width(), grabbed.height()));
|
||||||
QPixmap pm = QPixmap::fromImage(grabbed);
|
// grabbed = grabbed.copy(rf.toAlignedRect());
|
||||||
qDebug() << " set new pixmap" << grabbed.size();
|
// // qDebug() << " +++++++++++++++++++++++ dim: " << rf;
|
||||||
drag->setPixmap(pm);
|
// grabbed.save("file:///tmp/grabbed.png");
|
||||||
|
// QPixmap pm = QPixmap::fromImage(grabbed);
|
||||||
|
// qDebug() << " set new pixmap" << grabbed.size();
|
||||||
|
// drag->setPixmap(pm);
|
||||||
|
|
||||||
} else if (mimeData()->hasImage()) {
|
} else if (mimeData()->hasImage()) {
|
||||||
qDebug() << "++++++hasImage";
|
// qDebug() << "++++++hasImage";
|
||||||
QImage im = qvariant_cast<QImage>(mimeData()->imageData());
|
QImage im = qvariant_cast<QImage>(mimeData()->imageData());
|
||||||
drag->setPixmap(QPixmap::fromImage(im));
|
drag->setPixmap(QPixmap::fromImage(im));
|
||||||
} else if (mimeData()->hasColor()) {
|
} else if (mimeData()->hasColor()) {
|
||||||
qDebug() << "++++++color";
|
// qDebug() << "++++++color";
|
||||||
QPixmap px(_s);
|
QPixmap px(_s);
|
||||||
px.fill(mimeData()->color());
|
px.fill(mimeData()->color());
|
||||||
drag->setPixmap(px);
|
drag->setPixmap(px);
|
||||||
} else {
|
} else {
|
||||||
// icons otherwise
|
// icons otherwise
|
||||||
QStringList icons;
|
QStringList icons;
|
||||||
qDebug() << "DDD adding icons dan maar";
|
// qDebug() << "DDD adding icons dan maar";
|
||||||
if (mimeData()->hasText()) {
|
if (mimeData()->hasText()) {
|
||||||
icons << "text-plain";
|
icons << "text-plain";
|
||||||
}
|
}
|
||||||
@ -262,11 +267,12 @@ void DeclarativeDragArea::mouseMoveEvent(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
if (mimeData()->hasUrls()) {
|
if (mimeData()->hasUrls()) {
|
||||||
foreach (const QVariant &u, mimeData()->urls()) {
|
foreach (const QVariant &u, mimeData()->urls()) {
|
||||||
|
Q_UNUSED(u);
|
||||||
icons << "text-html";
|
icons << "text-html";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (icons.count()) {
|
if (icons.count()) {
|
||||||
const int _w = 32;
|
const int _w = 48;
|
||||||
QPixmap pm(_w*icons.count(), _w);
|
QPixmap pm(_w*icons.count(), _w);
|
||||||
pm.fill(Qt::transparent);
|
pm.fill(Qt::transparent);
|
||||||
QPainter p(&pm);
|
QPainter p(&pm);
|
||||||
@ -283,7 +289,7 @@ void DeclarativeDragArea::mouseMoveEvent(QMouseEvent *event)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height()/2)); // TODO: Make a property for that
|
//drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height()/2)); // TODO: Make a property for that
|
||||||
//setCursor(Qt::OpenHandCursor); //TODO? Make a property for the cursor
|
//setCursor(Qt::OpenHandCursor); //TODO? Make a property for the cursor
|
||||||
|
|
||||||
emit dragStarted();
|
emit dragStarted();
|
||||||
@ -291,7 +297,6 @@ void DeclarativeDragArea::mouseMoveEvent(QMouseEvent *event)
|
|||||||
Qt::DropAction action = drag->exec(m_supportedActions, m_defaultAction);
|
Qt::DropAction action = drag->exec(m_supportedActions, m_defaultAction);
|
||||||
emit drop(action);
|
emit drop(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DeclarativeDragArea::childMouseEventFilter(QQuickItem *item, QEvent *event)
|
bool DeclarativeDragArea::childMouseEventFilter(QQuickItem *item, QEvent *event)
|
||||||
|
@ -57,5 +57,6 @@ DeclarativeDragDropEvent::DeclarativeDragDropEvent(QDragLeaveEvent* e, Declarati
|
|||||||
void DeclarativeDragDropEvent::accept(int action)
|
void DeclarativeDragDropEvent::accept(int action)
|
||||||
{
|
{
|
||||||
m_event->setDropAction( (Qt::DropAction) action );
|
m_event->setDropAction( (Qt::DropAction) action );
|
||||||
|
qDebug() << "-----> Accepting event: " << this << m_data.urls() << m_data.text() << m_data.html() << ( m_data.hasColor() ? m_data.color().name() : " no color");
|
||||||
m_event->accept();
|
m_event->accept();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user