┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-06-16 21:56:20 +0000
committerPeter Penz <[email protected]>2008-06-16 21:56:20 +0000
commit8103ead940c5b680c613144ee588af5ed1ecfdd0 (patch)
tree1d09fd32b59a9059e54dc90c036944896a1fa146
parent989cc7e0bf17394bae7772ea1fec26cf873eb588 (diff)
Details view related fixes: all columns except the name column should act as viewport.
svn path=/trunk/KDE/kdebase/apps/; revision=821229
-rw-r--r--src/dolphincontroller.cpp2
-rw-r--r--src/dolphindetailsview.cpp24
-rw-r--r--src/infosidebarpage.cpp8
-rw-r--r--src/tooltipmanager.cpp16
4 files changed, 37 insertions, 13 deletions
diff --git a/src/dolphincontroller.cpp b/src/dolphincontroller.cpp
index 8a5ba5518..091b73796 100644
--- a/src/dolphincontroller.cpp
+++ b/src/dolphincontroller.cpp
@@ -169,7 +169,7 @@ void DolphinController::triggerItem(const QModelIndex& index)
} else {
m_itemView->clearSelection();
if (!openTab) {
- emit itemEntered(item);
+ emit itemEntered(KFileItem());
}
}
}
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp
index d45282602..12513420d 100644
--- a/src/dolphindetailsview.cpp
+++ b/src/dolphindetailsview.cpp
@@ -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)
{
- 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;
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();
}
}
diff --git a/src/infosidebarpage.cpp b/src/infosidebarpage.cpp
index b384f24e6..4cb4e22c6 100644
--- a/src/infosidebarpage.cpp
+++ b/src/infosidebarpage.cpp
@@ -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();
diff --git a/src/tooltipmanager.cpp b/src/tooltipmanager.cpp
index 2edd008fc..5bb1e1a32 100644
--- a/src/tooltipmanager.cpp
+++ b/src/tooltipmanager.cpp
@@ -76,15 +76,19 @@ bool ToolTipManager::eventFilter(QObject* watched, QEvent* event)
void ToolTipManager::requestToolTip(const QModelIndex& index)
{
- KToolTip::hideTip();
+ if (index.column() == DolphinModel::Name) {
+ KToolTip::hideTip();
- const QRect rect = m_view->visualRect(index);
- m_pos = m_view->viewport()->mapToGlobal(rect.bottomRight());
+ const QRect rect = m_view->visualRect(index);
+ m_pos = m_view->viewport()->mapToGlobal(rect.bottomRight());
- const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
- m_item = m_dolphinModel->itemForIndex(dirIndex);
+ const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
+ m_item = m_dolphinModel->itemForIndex(dirIndex);
- m_timer->start(500);
+ m_timer->start(500);
+ } else {
+ hideToolTip();
+ }
}
void ToolTipManager::hideToolTip()