X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/baaab6d17beb78e3209c2d6fa87c04f7b97abfe2..bbfea3ccb2a3c48b4f66bd94d6cd40cd3420b107:/src/dolphincolumnview.cpp diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp index 6f1b5dc77..361ddf696 100644 --- a/src/dolphincolumnview.cpp +++ b/src/dolphincolumnview.cpp @@ -31,7 +31,6 @@ #include "draganddrophelper.h" #include "folderexpander.h" #include "tooltips/tooltipmanager.h" -#include "versioncontrolobserver.h" #include "viewextensionsfactory.h" #include "zoomlevelinfo.h" @@ -126,13 +125,6 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()), this, SLOT(updateFont())); - /*FolderExpander* folderExpander = new FolderExpander(this, m_proxyModel); - folderExpander->setEnabled(DolphinSettings::instance().generalSettings()->autoExpandFolders()); - connect (folderExpander, SIGNAL(enterDir(const QModelIndex&)), - m_container->m_controller, SLOT(triggerItem(const QModelIndex&))); - - new VersionControlObserver(this);*/ - DolphinController* controller = m_container->m_controller; connect(controller, SIGNAL(zoomLevelChanged(int)), this, SLOT(setZoomLevel(int))); @@ -141,11 +133,9 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, if (!nameFilter.isEmpty()) { m_proxyModel->setFilterRegExp(nameFilter); } - connect(controller, SIGNAL(nameFilterChanged(const QString&)), - this, SLOT(setNameFilter(const QString&))); - m_extensionsFactory = new ViewExtensionsFactory(this, controller); updateDecorationSize(dolphinView->showPreview()); + m_extensionsFactory = new ViewExtensionsFactory(this, controller); } DolphinColumnView::~DolphinColumnView() @@ -202,10 +192,27 @@ KFileItem DolphinColumnView::itemAt(const QPoint& pos) const return item; } +void DolphinColumnView::setSelectionModel(QItemSelectionModel* model) +{ + // If a change of the selection is done although the view is not active + // (e. g. by the selection markers), the column must be activated. This + // is done by listening to the current selectionChanged() signal. + if (selectionModel() != 0) { + disconnect(selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, SLOT(requestActivation())); + } + + QListView::setSelectionModel(model); + + connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, SLOT(requestActivation())); +} + QStyleOptionViewItem DolphinColumnView::viewOptions() const { QStyleOptionViewItem viewOptions = QListView::viewOptions(); viewOptions.font = m_font; + viewOptions.fontMetrics = QFontMetrics(m_font); viewOptions.decorationSize = m_decorationSize; viewOptions.showDecorationSelected = true; return viewOptions; @@ -337,29 +344,13 @@ void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event) Q_ASSERT(m_active); QListView::contextMenuEvent(event); - - const QModelIndex index = indexAt(event->pos()); - if (!index.isValid()) { - clearSelection(); - } - - const QPoint pos = m_container->viewport()->mapFromGlobal(event->globalPos()); - Q_ASSERT(m_container->m_controller->itemView() == this); - m_container->m_controller->triggerContextMenuRequest(pos); + m_container->m_controller->triggerContextMenuRequest(event->pos()); } void DolphinColumnView::wheelEvent(QWheelEvent* event) { - // let Ctrl+wheel events propagate to the DolphinView for icon zooming - if (event->modifiers() & Qt::ControlModifier) { - event->ignore(); - return; - } - - const int height = m_decorationSize.height(); - const int step = (height >= KIconLoader::SizeHuge) ? height / 10 : (KIconLoader::SizeHuge - height) / 2; + const int step = m_decorationSize.height(); verticalScrollBar()->setSingleStep(step); - QListView::wheelEvent(event); } @@ -372,26 +363,12 @@ void DolphinColumnView::leaveEvent(QEvent* event) m_container->m_controller->emitViewportEntered(); } -void DolphinColumnView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) -{ - QListView::selectionChanged(selected, deselected); - - //QItemSelectionModel* selModel = m_container->selectionModel(); - //selModel->select(selected, QItemSelectionModel::Select); - //selModel->select(deselected, QItemSelectionModel::Deselect); -} - void DolphinColumnView::currentChanged(const QModelIndex& current, const QModelIndex& previous) { QListView::currentChanged(current, previous); m_extensionsFactory->handleCurrentIndexChange(current, previous); } -void DolphinColumnView::setNameFilter(const QString& nameFilter) -{ - m_proxyModel->setFilterRegExp(nameFilter); -} - void DolphinColumnView::setZoomLevel(int level) { const int size = ZoomLevelInfo::iconSizeForZoomLevel(level);