Add all|anyDockWidgetsHave overloads taking a LayoutSaverOption

This commit is contained in:
Sergio Martins
2021-01-14 18:01:54 +00:00
parent e1cf532437
commit 64a6cbb2e4
4 changed files with 44 additions and 0 deletions

View File

@@ -519,3 +519,19 @@ bool FloatingWindow::anyDockWidgetsHas(DockWidgetBase::Option option) const
return frame->anyDockWidgetsHas(option);
});
}
bool FloatingWindow::allDockWidgetsHave(DockWidgetBase::LayoutSaverOption option) const
{
const Frame::List frames = this->frames();
return std::all_of(frames.begin(), frames.end(), [option] (Frame *frame) {
return frame->allDockWidgetsHave(option);
});
}
bool FloatingWindow::anyDockWidgetsHas(DockWidgetBase::LayoutSaverOption option) const
{
const Frame::List frames = this->frames();
return std::any_of(frames.begin(), frames.end(), [option] (Frame *frame) {
return frame->anyDockWidgetsHas(option);
});
}

View File

@@ -137,6 +137,12 @@ public:
///@brief Returns whether at least one dock widget has the specified option set
bool anyDockWidgetsHas(DockWidgetBase::Option) const;
///@brief Returns whether all dock widgets have the specified layout saver option set
bool allDockWidgetsHave(DockWidgetBase::LayoutSaverOption) const;
///@brief Returns whether at least one dock widget has the specified layout saver option set
bool anyDockWidgetsHas(DockWidgetBase::LayoutSaverOption) const;
Q_SIGNALS:
void activatedChanged();
void numFramesChanged();

View File

@@ -738,3 +738,19 @@ bool Frame::anyDockWidgetsHas(DockWidgetBase::Option option) const
return dw->options() & option;
});
}
bool Frame::allDockWidgetsHave(DockWidgetBase::LayoutSaverOption option) const
{
const DockWidgetBase::List docks = dockWidgets();
return std::all_of(docks.cbegin(), docks.cend(), [option] (DockWidgetBase *dw) {
return dw->layoutSaverOptions() & option;
});
}
bool Frame::anyDockWidgetsHas(DockWidgetBase::LayoutSaverOption option) const
{
const DockWidgetBase::List docks = dockWidgets();
return std::any_of(docks.cbegin(), docks.cend(), [option] (DockWidgetBase *dw) {
return dw->layoutSaverOptions() & option;
});
}

View File

@@ -246,6 +246,12 @@ public:
///@brief Returns whether at least one dock widget has the specified option set
bool anyDockWidgetsHas(DockWidgetBase::Option) const;
///@brief Returns whether all dock widgets have the specified layout saver option set
bool allDockWidgetsHave(DockWidgetBase::LayoutSaverOption) const;
///@brief Returns whether at least one dock widget has the specified layout saver option set
bool anyDockWidgetsHas(DockWidgetBase::LayoutSaverOption) const;
Q_SIGNALS:
void currentDockWidgetChanged(KDDockWidgets::DockWidgetBase *);
void numDockWidgetsChanged();