]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnwidget.cpp
1) Make sure that size qprogressbar is really updated after each change
[dolphin.git] / src / dolphincolumnwidget.cpp
index e7993b975f08046f2aeccc1ebfd68375cfacc1a3..2ca4cdbbfea88fc13dc91fc53d96efd89985f1f2 100644 (file)
@@ -53,6 +53,7 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     QListView(parent),
     m_active(true),
     m_view(columnView),
+    m_selectionManager(0),
     m_url(url),
     m_childUrl(),
     m_font(),
@@ -125,11 +126,11 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     const bool useSelManager = KGlobalSettings::singleClick() &&
                                DolphinSettings::instance().generalSettings()->showSelectionToggle();
     if (useSelManager) {
-        SelectionManager* selManager = new SelectionManager(this);
-        connect(selManager, SIGNAL(selectionChanged()),
+        m_selectionManager = new SelectionManager(this);
+        connect(m_selectionManager, SIGNAL(selectionChanged()),
                 this, SLOT(requestActivation()));
         connect(m_view->m_controller, SIGNAL(urlChanged(const KUrl&)),
-                selManager, SLOT(reset()));
+                m_selectionManager, SLOT(reset()));
     }
 
     new KMimeTypeResolver(this, m_dolphinModel);
@@ -163,6 +164,9 @@ void DolphinColumnWidget::setDecorationSize(const QSize& size)
     if (m_iconManager != 0) {
         m_iconManager->updatePreviews();
     }
+    if (m_selectionManager != 0) {
+        m_selectionManager->reset();
+    }
 }
 
 void DolphinColumnWidget::setActive(bool active)
@@ -333,6 +337,14 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event)
 void DolphinColumnWidget::mousePressEvent(QMouseEvent* event)
 {
     requestActivation();
+    if (!indexAt(event->pos()).isValid()) {
+        if (QApplication::mouseButtons() & Qt::MidButton) {
+            m_view->m_controller->replaceUrlByClipboard();
+        }
+    } else if (event->button() == Qt::LeftButton) {
+        // TODO: see comment in DolphinIconsView::mousePressEvent()
+        setState(QAbstractItemView::DraggingState);
+    }
     QListView::mousePressEvent(event);
 }
 
@@ -365,14 +377,28 @@ void DolphinColumnWidget::contextMenuEvent(QContextMenuEvent* event)
 
 void DolphinColumnWidget::wheelEvent(QWheelEvent* event)
 {
+    if (m_selectionManager != 0) {
+        m_selectionManager->reset();
+    }
+
     // let Ctrl+wheel events propagate to the DolphinView for icon zooming
     if (event->modifiers() & Qt::ControlModifier) {
         event->ignore();
         return;
     }
+
     QListView::wheelEvent(event);
 }
 
+void DolphinColumnWidget::leaveEvent(QEvent* event)
+{
+    QListView::leaveEvent(event);
+    // if the mouse is above an item and moved very fast outside the widget,
+    // no viewportEntered() signal might be emitted although the mouse has been moved
+    // above the viewport
+    m_view->m_controller->emitViewportEntered();
+}
+
 void DolphinColumnWidget::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected)
 {
     QListView::selectionChanged(selected, deselected);