mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Details view related fixes: all columns except the name column should act as viewport.
svn path=/trunk/KDE/kdebase/apps/; revision=821229
This commit is contained in:
parent
989cc7e0bf
commit
8103ead940
4 changed files with 37 additions and 13 deletions
|
@ -169,7 +169,7 @@ void DolphinController::triggerItem(const QModelIndex& index)
|
|||
} else {
|
||||
m_itemView->clearSelection();
|
||||
if (!openTab) {
|
||||
emit itemEntered(item);
|
||||
emit itemEntered(KFileItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -187,6 +187,7 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event)
|
|||
{
|
||||
m_controller->requestActivation();
|
||||
|
||||
const QModelIndex current = currentIndex();
|
||||
QTreeView::mousePressEvent(event);
|
||||
|
||||
m_expandingTogglePressed = false;
|
||||
|
@ -214,6 +215,9 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event)
|
|||
if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
|
||||
clearSelection();
|
||||
}
|
||||
|
||||
// restore the current index, other columns are handled as viewport area
|
||||
selectionModel()->setCurrentIndex(current, QItemSelectionModel::Current);
|
||||
}
|
||||
|
||||
if ((event->button() == Qt::LeftButton) && !m_expandingTogglePressed) {
|
||||
|
@ -269,7 +273,18 @@ void DolphinDetailsView::mouseMoveEvent(QMouseEvent* event)
|
|||
|
||||
void DolphinDetailsView::mouseReleaseEvent(QMouseEvent* event)
|
||||
{
|
||||
const QModelIndex index = indexAt(event->pos());
|
||||
if (index.isValid() && (index.column() == DolphinModel::Name)) {
|
||||
QTreeView::mouseReleaseEvent(event);
|
||||
} else {
|
||||
// don't change the current index if the cursor is released
|
||||
// above any other column than the name column, as the other
|
||||
// columns act as viewport
|
||||
const QModelIndex current = currentIndex();
|
||||
QTreeView::mouseReleaseEvent(event);
|
||||
selectionModel()->setCurrentIndex(current, QItemSelectionModel::Current);
|
||||
}
|
||||
|
||||
m_expandingTogglePressed = false;
|
||||
if (m_showElasticBand) {
|
||||
updateElasticBand();
|
||||
|
@ -444,12 +459,9 @@ void DolphinDetailsView::synchronizeSortingState(int column)
|
|||
|
||||
void DolphinDetailsView::slotEntered(const QModelIndex& index)
|
||||
{
|
||||
const QPoint pos = viewport()->mapFromGlobal(QCursor::pos());
|
||||
const int nameColumnWidth = header()->sectionSize(DolphinModel::Name);
|
||||
if (pos.x() < nameColumnWidth) {
|
||||
if (index.column() == DolphinModel::Name) {
|
||||
m_controller->emitItemEntered(index);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
m_controller->emitViewportEntered();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,6 +94,14 @@ void InfoSidebarPage::setSelection(const KFileItemList& selection)
|
|||
return;
|
||||
}
|
||||
|
||||
if ((selection.count() == 0) && (m_selection.count() == 0)) {
|
||||
// The selection has not really changed, only the current index.
|
||||
// QItemSelectionModel emits a signal in this case and it is less
|
||||
// expensive doing the check this way instead of patching
|
||||
// DolphinView::emitSelectionChanged().
|
||||
return;
|
||||
}
|
||||
|
||||
m_selection = selection;
|
||||
|
||||
const int count = selection.count();
|
||||
|
|
|
@ -76,6 +76,7 @@ bool ToolTipManager::eventFilter(QObject* watched, QEvent* event)
|
|||
|
||||
void ToolTipManager::requestToolTip(const QModelIndex& index)
|
||||
{
|
||||
if (index.column() == DolphinModel::Name) {
|
||||
KToolTip::hideTip();
|
||||
|
||||
const QRect rect = m_view->visualRect(index);
|
||||
|
@ -85,6 +86,9 @@ void ToolTipManager::requestToolTip(const QModelIndex& index)
|
|||
m_item = m_dolphinModel->itemForIndex(dirIndex);
|
||||
|
||||
m_timer->start(500);
|
||||
} else {
|
||||
hideToolTip();
|
||||
}
|
||||
}
|
||||
|
||||
void ToolTipManager::hideToolTip()
|
||||
|
|
Loading…
Reference in a new issue