X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ecce6e87f8540aa690a2098d89e22b4ab85e325f..ac73af7bedeebe2afa451249e8a6500651a6ec00:/src/dolphindetailsview.cpp diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index d90527767..4fdb76e1a 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -46,7 +46,6 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr m_controller(controller), m_font(), m_decorationSize(), - m_clearAdditionalInfo(false), m_dragging(false), m_showElasticBand(false), m_elasticBandOrigin(), @@ -207,10 +206,13 @@ void DolphinDetailsView::mouseMoveEvent(QMouseEvent* event) // case QTreeView does no selection at all, which is not the wanted behavior // in Dolphin -> select all items within the elastic band rectangle clearSelection(); - if (mousePos.x() < header()->sectionSize(DolphinModel::Name)) { - setSelection(QRect(m_elasticBandOrigin, m_elasticBandDestination), - QItemSelectionModel::Select); - } + + const int nameColumnWidth = header()->sectionSize(DolphinModel::Name); + QRect selRect = QRect(m_elasticBandOrigin, m_elasticBandDestination).normalized(); + const QRect nameColumnsRect(0, 0, nameColumnWidth, viewport()->height()); + selRect = nameColumnsRect.intersected(selRect); + + setSelection(selRect, QItemSelectionModel::Select); } QTreeView::mouseMoveEvent(event); @@ -275,6 +277,11 @@ void DolphinDetailsView::dragMoveEvent(QDragMoveEvent* event) } setDirtyRegion(m_dropRect); } + + if (event->mimeData()->hasUrls()) { + // accept url drops, independently from the destination item + event->acceptProposedAction(); + } } void DolphinDetailsView::dropEvent(QDropEvent* event) @@ -317,7 +324,7 @@ void DolphinDetailsView::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight); - DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); + DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush); } } @@ -349,20 +356,6 @@ void DolphinDetailsView::resizeEvent(QResizeEvent* event) } } -void DolphinDetailsView::closeEvent(QCloseEvent* event) -{ - if (m_clearAdditionalInfo) { - disconnect(m_controller->dolphinView(), SIGNAL(additionalInfoChanged(const KFileItemDelegate::InformationList&)), - this, SLOT(updateColumnVisibility())); - - KFileItemDelegate::InformationList info; - info.append(KFileItemDelegate::NoInformation); - m_controller->indicateAdditionalInfoChange(info); - m_clearAdditionalInfo = false; - } - QTreeView::closeEvent(event); -} - void DolphinDetailsView::setSortIndicatorSection(DolphinView::Sorting sorting) { QHeaderView* headerView = header(); @@ -399,11 +392,12 @@ void DolphinDetailsView::slotEntered(const QModelIndex& index) void DolphinDetailsView::updateElasticBand() { - Q_ASSERT(m_showElasticBand); - QRect dirtyRegion(elasticBandRect()); - m_elasticBandDestination = viewport()->mapFromGlobal(QCursor::pos()); - dirtyRegion = dirtyRegion.united(elasticBandRect()); - setDirtyRegion(dirtyRegion); + if (m_showElasticBand) { + QRect dirtyRegion(elasticBandRect()); + m_elasticBandDestination = viewport()->mapFromGlobal(QCursor::pos()); + dirtyRegion = dirtyRegion.united(elasticBandRect()); + setDirtyRegion(dirtyRegion); + } } QRect DolphinDetailsView::elasticBandRect() const @@ -488,27 +482,12 @@ void DolphinDetailsView::configureColumns(const QPoint& pos) void DolphinDetailsView::updateColumnVisibility() { - KFileItemDelegate::InformationList list = m_controller->dolphinView()->additionalInfo(); - const bool useDefaultColumns = !isVisible() && - (list.isEmpty() || - list.contains(KFileItemDelegate::NoInformation)); - if (useDefaultColumns) { - // Using the details view without any additional information (-> additional column) - // makes no sense and leads to a usability problem as no viewport area is available - // anymore. Hence as fallback provide at least a size and date column. - list.clear(); - list.append(KFileItemDelegate::Size); - list.append(KFileItemDelegate::ModificationTime); - m_controller->indicateAdditionalInfoChange(list); - m_clearAdditionalInfo = true; - } - + const KFileItemDelegate::InformationList list = m_controller->dolphinView()->additionalInfo(); for (int i = DolphinModel::Size; i <= DolphinModel::Type; ++i) { const KFileItemDelegate::Information info = infoForColumn(i); const bool hide = !list.contains(info); if (isColumnHidden(i) != hide) { setColumnHidden(i, hide); - m_clearAdditionalInfo = false; } }