┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinnavigatorswidgetaction.cpp
diff options
context:
space:
mode:
authorFelix Ernst <[email protected]>2021-07-31 17:01:52 +0200
committerElvis Angelaccio <[email protected]>2021-08-01 21:57:23 +0000
commit7edce5a09c768805878d15e225cd063fb037cef3 (patch)
treea54a90ad9d9be9ed183049afe8c9accea5d464e4 /src/dolphinnavigatorswidgetaction.cpp
parentea7d4f059d5cb81b51053e7fec6492a727a968c2 (diff)
Fix width issues when un-maximizing Dolphin
Before this commit un-maximizing or to be more precise instantly changing the size of the window by a large amount could potentially change the width of the sidebars, the viewContainers and the window itself to unexpected/undesired widths. This happened because the spacing calculation is triggered when the primary ViewContainer is resized but at this point in time some of the other widgets, especially the secondary ViewContainer and the navigatorsWidget have generally not been resized yet. Therefore the width and spacing calculations are based on partly updated and partly outdated values leading to wrong results. This commit makes it so calculation of spacings is delayed until all widths have been updated. Yes, spacing probably should not have the power to resize the window but unfortunately the spacing can not be set to be less forceful when taking space because otherwise the UrlNavigators will take all space they can get with their QSizePolicy::MinimumExpanding. BUG: 430521 FIXED-IN: 21.08
Diffstat (limited to 'src/dolphinnavigatorswidgetaction.cpp')
-rw-r--r--src/dolphinnavigatorswidgetaction.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/dolphinnavigatorswidgetaction.cpp b/src/dolphinnavigatorswidgetaction.cpp
index d66125af6..4da5229ff 100644
--- a/src/dolphinnavigatorswidgetaction.cpp
+++ b/src/dolphinnavigatorswidgetaction.cpp
@@ -47,6 +47,7 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent) :
void DolphinNavigatorsWidgetAction::adjustSpacing()
{
+ m_previousWindowWidth = parentWidget()->window()->width();
auto viewGeometries = m_viewGeometriesHelper.viewGeometries();
const int widthOfSplitterPrimary = viewGeometries.globalXOfPrimary + viewGeometries.widthOfPrimary - viewGeometries.globalXOfNavigatorsWidget;
const QList<int> splitterSizes = {widthOfSplitterPrimary,
@@ -310,7 +311,17 @@ DolphinNavigatorsWidgetAction::ViewGeometriesHelper::ViewGeometriesHelper
bool DolphinNavigatorsWidgetAction::ViewGeometriesHelper::eventFilter(QObject *watched, QEvent *event)
{
if (event->type() == QEvent::Resize) {
- m_navigatorsWidgetAction->adjustSpacing();
+ if (m_navigatorsWidgetAction->parentWidget()->window()->width() != m_navigatorsWidgetAction->m_previousWindowWidth) {
+ // The window is being resized which means not all widgets have gotten their new sizes yet.
+ // Let's wait a bit so the sizes of the navigatorsWidget and the viewContainers have all
+ // had a chance to be updated.
+ m_navigatorsWidgetAction->m_adjustSpacingTimer->start();
+ } else {
+ m_navigatorsWidgetAction->adjustSpacing();
+ // We could always use the m_adjustSpacingTimer instead of calling adjustSpacing() directly
+ // here but then the navigatorsWidget doesn't fluently align with the viewContainers when
+ // the DolphinTabPage::m_expandViewAnimation is animating.
+ }
return false;
}
return QObject::eventFilter(watched, event);