LayoutSaver: Add some utility functions

This commit is contained in:
Sergio Martins
2021-01-14 18:11:29 +00:00
parent 64a6cbb2e4
commit c6c3b16fd2
2 changed files with 22 additions and 0 deletions

View File

@@ -569,6 +569,13 @@ bool LayoutSaver::Frame::hasSingleDockWidget() const
return dockWidgets.size() == 1;
}
bool LayoutSaver::Frame::skipsRestore() const
{
return std::all_of(dockWidgets.cbegin(), dockWidgets.cend(), [] (LayoutSaver::DockWidget::Ptr dw) {
return dw->skipsRestore();
});
}
LayoutSaver::DockWidget::Ptr LayoutSaver::Frame::singleDockWidget() const
{
if (!hasSingleDockWidget())
@@ -688,6 +695,11 @@ LayoutSaver::DockWidget::Ptr LayoutSaver::FloatingWindow::singleDockWidget() con
return multiSplitterLayout.singleDockWidget();
}
bool LayoutSaver::FloatingWindow::skipsRestore() const
{
return multiSplitterLayout.skipsRestore();
}
void LayoutSaver::FloatingWindow::scaleSizes(const ScalingInfo &scalingInfo)
{
scalingInfo.applyFactorsTo(/*by-ref*/geometry);
@@ -827,6 +839,13 @@ LayoutSaver::DockWidget::Ptr LayoutSaver::MultiSplitter::singleDockWidget() cons
return frames.cbegin()->singleDockWidget();
}
bool LayoutSaver::MultiSplitter::skipsRestore() const
{
return std::all_of(frames.cbegin(), frames.cend(), [] (const LayoutSaver::Frame &frame) {
return frame.skipsRestore();
});
}
void LayoutSaver::MultiSplitter::scaleSizes(const ScalingInfo &)
{
// scalingInfo.applyFactorsTo(/*by-ref*/size);

View File

@@ -178,6 +178,7 @@ struct LayoutSaver::Frame
bool isValid() const;
bool hasSingleDockWidget() const;
bool skipsRestore() const;
/// @brief in case this frame only has one frame, returns the name of that dock widget
LayoutSaver::DockWidget::Ptr singleDockWidget() const;
@@ -204,6 +205,7 @@ struct LayoutSaver::MultiSplitter
bool hasSingleDockWidget() const;
LayoutSaver::DockWidget::Ptr singleDockWidget() const;
bool skipsRestore() const;
/// Iterates through the layout and patches all absolute sizes. See RestoreOption_RelativeToMainWindow.
void scaleSizes(const ScalingInfo &scalingInfo);
@@ -223,6 +225,7 @@ struct LayoutSaver::FloatingWindow
bool hasSingleDockWidget() const;
LayoutSaver::DockWidget::Ptr singleDockWidget() const;
bool skipsRestore() const;
/// Iterates through the layout and patches all absolute sizes. See RestoreOption_RelativeToMainWindow.
void scaleSizes(const ScalingInfo &);