From: Peter Penz Date: Wed, 16 Jan 2008 22:14:34 +0000 (+0000) Subject: don't resize the columns automatically, as soon as the user has modified the column... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/3e132ea672ec5e54fbb79438813a9d579a7daef9?ds=inline don't resize the columns automatically, as soon as the user has modified the column widths himself (e. g. by a double-click on the header or by moving the header handle) BUG: 155760 svn path=/trunk/KDE/kdebase/apps/; revision=762385 --- diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 4fdb76e1a..6b15f1c41 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -43,6 +43,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* controller) : QTreeView(parent), + m_autoResize(true), m_controller(controller), m_font(), m_decorationSize(), @@ -76,6 +77,10 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr headerView->setContextMenuPolicy(Qt::CustomContextMenu); connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(configureColumns(const QPoint&))); + connect(headerView, SIGNAL(sectionResized(int, int, int)), + this, SLOT(slotHeaderSectionResized(int, int, int))); + connect(headerView, SIGNAL(sectionHandleDoubleClicked(int)), + this, SLOT(disableAutoResizing())); connect(parent, SIGNAL(sortingChanged(DolphinView::Sorting)), this, SLOT(setSortIndicatorSection(DolphinView::Sorting))); @@ -345,13 +350,7 @@ void DolphinDetailsView::keyPressEvent(QKeyEvent* event) void DolphinDetailsView::resizeEvent(QResizeEvent* event) { QTreeView::resizeEvent(event); - - // TODO: There seems to be no easy way to find out whether the resize event - // has been triggered because of resizing the window or by adjusting the column-width - // by a left mouse-click (the columns should only be resized automatically when the window - // size is adjusted). The following workaround works well, but it should be - // considered solving this in a more transparent way. - if (!(QApplication::mouseButtons() & Qt::LeftButton)) { + if (m_autoResize) { resizeColumns(); } } @@ -494,6 +493,21 @@ void DolphinDetailsView::updateColumnVisibility() resizeColumns(); } +void DolphinDetailsView::slotHeaderSectionResized(int logicalIndex, int oldSize, int newSize) +{ + Q_UNUSED(logicalIndex); + Q_UNUSED(oldSize); + Q_UNUSED(newSize); + if (QApplication::mouseButtons() & Qt::LeftButton) { + disableAutoResizing(); + } +} + +void DolphinDetailsView::disableAutoResizing() +{ + m_autoResize = false; +} + bool DolphinDetailsView::isZoomInPossible() const { DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 086121f7a..a9201d8b3 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -118,6 +118,18 @@ private slots: void updateColumnVisibility(); + /** + * Disables the automatical resizing of columns, if the user has resized the columns + * with the mouse. + */ + void slotHeaderSectionResized(int logicalIndex, int oldSize, int newSize); + + /** + * Disables the automatical resizing of the columns. Per default all columns + * are resized to use the maximum available width of the view as good as possible. + */ + void disableAutoResizing(); + private: bool isZoomInPossible() const; bool isZoomOutPossible() const; @@ -143,6 +155,8 @@ private: void resizeColumns(); private: + bool m_autoResize; // if true, the columns are resized automatically to the available width + DolphinController* m_controller; QFont m_font;