┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-06-17 17:59:32 +0000
committerPeter Penz <[email protected]>2007-06-17 17:59:32 +0000
commit7b6f191dc31517757719ffe51fd427b14e6ed710 (patch)
treeb9c4bfa1ea83291fef718a16f5ae4bbd4810b0a1
parentdf8f2e3646017bf6ba99bb18ef0df7defaf2eb10 (diff)
prevent deselection of current folder in inactive columns
svn path=/trunk/KDE/kdebase/apps/; revision=676787
-rw-r--r--src/dolphincolumnview.cpp57
1 files changed, 48 insertions, 9 deletions
diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp
index 7f5d569be..32a8553f9 100644
--- a/src/dolphincolumnview.cpp
+++ b/src/dolphincolumnview.cpp
@@ -62,9 +62,17 @@ protected:
virtual void dragLeaveEvent(QDragLeaveEvent* event);
virtual void dragMoveEvent(QDragMoveEvent* event);
virtual void dropEvent(QDropEvent* event);
+ virtual void mousePressEvent(QMouseEvent* event);
virtual void paintEvent(QPaintEvent* event);
private:
+ /** Used by ColumnWidget::setActive(). */
+ void activate();
+
+ /** Used by ColumnWidget::setActive(). */
+ void deactivate();
+
+private:
bool m_active;
KUrl m_url;
DolphinColumnView* m_columnView;
@@ -85,7 +93,6 @@ ColumnWidget::ColumnWidget(QWidget* parent,
m_dropRect()
{
setAcceptDrops(true);
- setSelectionBehavior(SelectItems);
setDragDropMode(QAbstractItemView::DragDrop);
setDropIndicatorShown(false);
@@ -105,6 +112,8 @@ ColumnWidget::ColumnWidget(QWidget* parent,
const int iconSize = settings->iconSize();
m_viewOptions.decorationSize = QSize(iconSize, iconSize);
+
+ activate();
}
ColumnWidget::~ColumnWidget()
@@ -125,15 +134,11 @@ void ColumnWidget::setActive(bool active)
m_active = active;
- QColor bgColor = KColorScheme(KColorScheme::View).background();
- if (!active) {
- const QColor fgColor = KColorScheme(KColorScheme::View).foreground();
- bgColor = KColorUtils::mix(bgColor, fgColor, 0.04);
+ if (active) {
+ activate();
+ } else {
+ deactivate();
}
-
- QPalette palette = viewport()->palette();
- palette.setColor(viewport()->backgroundRole(), bgColor);
- viewport()->setPalette(palette);
}
const KUrl& ColumnWidget::url() const
@@ -188,6 +193,17 @@ void ColumnWidget::dropEvent(QDropEvent* event)
m_dragging = false;
}
+void ColumnWidget::mousePressEvent(QMouseEvent* event)
+{
+ if (m_active || indexAt(event->pos()).isValid()) {
+ // Only accept the mouse press event in inactive views,
+ // if a click is done on an item. This assures that
+ // the current selection, which usually shows the
+ // the directory for next column, won't get deleted.
+ QListView::mousePressEvent(event);
+ }
+}
+
void ColumnWidget::paintEvent(QPaintEvent* event)
{
QListView::paintEvent(event);
@@ -199,6 +215,29 @@ void ColumnWidget::paintEvent(QPaintEvent* event)
}
}
+void ColumnWidget::activate()
+{
+ const QColor bgColor = KColorScheme(KColorScheme::View).background();
+ QPalette palette = viewport()->palette();
+ palette.setColor(viewport()->backgroundRole(), bgColor);
+ viewport()->setPalette(palette);
+
+ setSelectionMode(MultiSelection);
+}
+
+void ColumnWidget::deactivate()
+{
+ QColor bgColor = KColorScheme(KColorScheme::View).background();
+ const QColor fgColor = KColorScheme(KColorScheme::View).foreground();
+ bgColor = KColorUtils::mix(bgColor, fgColor, 0.04);
+
+ QPalette palette = viewport()->palette();
+ palette.setColor(viewport()->backgroundRole(), bgColor);
+ viewport()->setPalette(palette);
+
+ setSelectionMode(SingleSelection);
+}
+
// ---
DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* controller) :