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 {
|
} else {
|
||||||
m_itemView->clearSelection();
|
m_itemView->clearSelection();
|
||||||
if (!openTab) {
|
if (!openTab) {
|
||||||
emit itemEntered(item);
|
emit itemEntered(KFileItem());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,6 +187,7 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event)
|
||||||
{
|
{
|
||||||
m_controller->requestActivation();
|
m_controller->requestActivation();
|
||||||
|
|
||||||
|
const QModelIndex current = currentIndex();
|
||||||
QTreeView::mousePressEvent(event);
|
QTreeView::mousePressEvent(event);
|
||||||
|
|
||||||
m_expandingTogglePressed = false;
|
m_expandingTogglePressed = false;
|
||||||
|
@ -214,6 +215,9 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event)
|
||||||
if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
|
if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
|
||||||
clearSelection();
|
clearSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// restore the current index, other columns are handled as viewport area
|
||||||
|
selectionModel()->setCurrentIndex(current, QItemSelectionModel::Current);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((event->button() == Qt::LeftButton) && !m_expandingTogglePressed) {
|
if ((event->button() == Qt::LeftButton) && !m_expandingTogglePressed) {
|
||||||
|
@ -269,7 +273,18 @@ void DolphinDetailsView::mouseMoveEvent(QMouseEvent* event)
|
||||||
|
|
||||||
void DolphinDetailsView::mouseReleaseEvent(QMouseEvent* event)
|
void DolphinDetailsView::mouseReleaseEvent(QMouseEvent* event)
|
||||||
{
|
{
|
||||||
QTreeView::mouseReleaseEvent(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;
|
m_expandingTogglePressed = false;
|
||||||
if (m_showElasticBand) {
|
if (m_showElasticBand) {
|
||||||
updateElasticBand();
|
updateElasticBand();
|
||||||
|
@ -444,12 +459,9 @@ void DolphinDetailsView::synchronizeSortingState(int column)
|
||||||
|
|
||||||
void DolphinDetailsView::slotEntered(const QModelIndex& index)
|
void DolphinDetailsView::slotEntered(const QModelIndex& index)
|
||||||
{
|
{
|
||||||
const QPoint pos = viewport()->mapFromGlobal(QCursor::pos());
|
if (index.column() == DolphinModel::Name) {
|
||||||
const int nameColumnWidth = header()->sectionSize(DolphinModel::Name);
|
|
||||||
if (pos.x() < nameColumnWidth) {
|
|
||||||
m_controller->emitItemEntered(index);
|
m_controller->emitItemEntered(index);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
m_controller->emitViewportEntered();
|
m_controller->emitViewportEntered();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,6 +94,14 @@ void InfoSidebarPage::setSelection(const KFileItemList& selection)
|
||||||
return;
|
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;
|
m_selection = selection;
|
||||||
|
|
||||||
const int count = selection.count();
|
const int count = selection.count();
|
||||||
|
|
|
@ -76,15 +76,19 @@ bool ToolTipManager::eventFilter(QObject* watched, QEvent* event)
|
||||||
|
|
||||||
void ToolTipManager::requestToolTip(const QModelIndex& index)
|
void ToolTipManager::requestToolTip(const QModelIndex& index)
|
||||||
{
|
{
|
||||||
KToolTip::hideTip();
|
if (index.column() == DolphinModel::Name) {
|
||||||
|
KToolTip::hideTip();
|
||||||
|
|
||||||
const QRect rect = m_view->visualRect(index);
|
const QRect rect = m_view->visualRect(index);
|
||||||
m_pos = m_view->viewport()->mapToGlobal(rect.bottomRight());
|
m_pos = m_view->viewport()->mapToGlobal(rect.bottomRight());
|
||||||
|
|
||||||
const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
|
const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
|
||||||
m_item = m_dolphinModel->itemForIndex(dirIndex);
|
m_item = m_dolphinModel->itemForIndex(dirIndex);
|
||||||
|
|
||||||
m_timer->start(500);
|
m_timer->start(500);
|
||||||
|
} else {
|
||||||
|
hideToolTip();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolTipManager::hideToolTip()
|
void ToolTipManager::hideToolTip()
|
||||||
|
|
Loading…
Reference in a new issue