]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fixed issue that sometimes the dragging from an inactive view to an active view does...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 4 May 2008 18:24:28 +0000 (18:24 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 4 May 2008 18:24:28 +0000 (18:24 +0000)
BUG: 154619

svn path=/trunk/KDE/kdebase/apps/; revision=803980

src/dolphincolumnwidget.cpp
src/dolphindetailsview.cpp
src/dolphiniconsview.cpp

index cf2ae7656b57ef15d671e2190f16c543436be12e..a380dc52bf09256d4cb36a3f1e6677c6517a13bb 100644 (file)
@@ -337,6 +337,10 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event)
 void DolphinColumnWidget::mousePressEvent(QMouseEvent* event)
 {
     requestActivation();
 void DolphinColumnWidget::mousePressEvent(QMouseEvent* event)
 {
     requestActivation();
+    if (indexAt(event->pos()).isValid() && (event->button() == Qt::LeftButton)) {
+        // TODO: see comment in DolphinIconsView::mousePressEvent()
+        setState(QAbstractItemView::DraggingState);
+    }
     QListView::mousePressEvent(event);
 }
 
     QListView::mousePressEvent(event);
 }
 
index 08d03fb0b5effc6a8b6013f70468caa7dd5d43eb..29ee90830fba5b164f4b2bd85d3b0b620dba2a15 100644 (file)
@@ -188,6 +188,11 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event)
     QTreeView::mousePressEvent(event);
 
     const QModelIndex index = indexAt(event->pos());
     QTreeView::mousePressEvent(event);
 
     const QModelIndex index = indexAt(event->pos());
+    if (index.isValid() && (event->button() == Qt::LeftButton)) {
+        // TODO: see comment in DolphinIconsView::mousePressEvent()
+        setState(QAbstractItemView::DraggingState);
+    }
+
     if (!index.isValid() || (index.column() != DolphinModel::Name)) {
         const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
         if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
     if (!index.isValid() || (index.column() != DolphinModel::Name)) {
         const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
         if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
@@ -250,6 +255,7 @@ void DolphinDetailsView::mouseReleaseEvent(QMouseEvent* event)
 void DolphinDetailsView::startDrag(Qt::DropActions supportedActions)
 {
     DragAndDropHelper::startDrag(this, supportedActions);
 void DolphinDetailsView::startDrag(Qt::DropActions supportedActions)
 {
     DragAndDropHelper::startDrag(this, supportedActions);
+    m_showElasticBand = false;
 }
 
 void DolphinDetailsView::dragEnterEvent(QDragEnterEvent* event)
 }
 
 void DolphinDetailsView::dragEnterEvent(QDragEnterEvent* event)
index a9659739a99ce3979aaec90124964268ae0e81ac..2e6d7dca6e072d3d3afe949ccd25273c73fef3cb 100644 (file)
@@ -167,7 +167,17 @@ void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event)
 void DolphinIconsView::mousePressEvent(QMouseEvent* event)
 {
     m_controller->requestActivation();
 void DolphinIconsView::mousePressEvent(QMouseEvent* event)
 {
     m_controller->requestActivation();
-    if (!indexAt(event->pos()).isValid()) {
+    const QModelIndex index = indexAt(event->pos());
+    if (index.isValid() && (event->button() == Qt::LeftButton)) {
+        // TODO: It should not be necessary to manually set the dragging state, but I could
+        // not reproduce this issue with a Qt-only example yet to find the root cause.
+        // Issue description: start Dolphin, split the view and drag an item from the
+        // inactive view to the active view by a very fast mouse movement. Result:
+        // the item gets selected instead of being dragged...
+        setState(QAbstractItemView::DraggingState);
+    }
+
+    if (!index.isValid()) {
         const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
         if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
             clearSelection();
         const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
         if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
             clearSelection();