mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
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
This commit is contained in:
parent
ea351be02d
commit
3e132ea672
2 changed files with 35 additions and 7 deletions
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue