Added ItemBoxContainer::tst_numSideBySide_recursive()
This commit is contained in:
@@ -979,6 +979,32 @@ ItemBoxContainer::~ItemBoxContainer()
|
||||
delete d;
|
||||
}
|
||||
|
||||
int ItemBoxContainer::numSideBySide_recursive(Qt::Orientation o) const
|
||||
{
|
||||
int num = 0;
|
||||
if (d->m_orientation == o) {
|
||||
// Example: Container is horizontal and we want to know how many layouted horizontally
|
||||
for (Item *child : m_children) {
|
||||
if (ItemBoxContainer *container = child->asBoxContainer()) {
|
||||
num += container->numSideBySide_recursive(o);
|
||||
} else {
|
||||
num++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Example: Container is vertical and we want to know how many layouted horizontally
|
||||
for (Item *child : m_children) {
|
||||
if (ItemBoxContainer *container = child->asBoxContainer()) {
|
||||
num = qMax(num, container->numSideBySide_recursive(o));
|
||||
} else {
|
||||
num = qMax(num, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
bool ItemBoxContainer::checkSanity()
|
||||
{
|
||||
d->m_checkSanityScheduled = false;
|
||||
|
||||
@@ -475,6 +475,10 @@ public:
|
||||
bool isHorizontal() const;
|
||||
int length() const;
|
||||
|
||||
/// @brief Returns the number of items layed out horizontally or vertically
|
||||
/// But honours nesting
|
||||
int numSideBySide_recursive(Qt::Orientation) const;
|
||||
|
||||
private:
|
||||
bool hasOrientation() const;
|
||||
int indexOfVisibleChild(const Item *) const;
|
||||
|
||||
@@ -195,6 +195,7 @@ private Q_SLOTS:
|
||||
void tst_maxSizeHonouredWhenAnotherRemoved();
|
||||
void tst_simplify();
|
||||
void tst_adjacentLayoutBorders();
|
||||
void tst_numSideBySide_recursive();
|
||||
};
|
||||
|
||||
class MyHostWidget : public QWidget
|
||||
@@ -1887,6 +1888,40 @@ void TestMultiSplitter::tst_adjacentLayoutBorders()
|
||||
QCOMPARE(borders4, LayoutBorderLocation_South);
|
||||
}
|
||||
|
||||
void TestMultiSplitter::tst_numSideBySide_recursive()
|
||||
{
|
||||
auto root = createRoot();
|
||||
QVERIFY(root->isVertical());
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 0);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 0);
|
||||
|
||||
auto item1 = createItem();
|
||||
root->insertItem(item1, Location_OnRight);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 1);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 1);
|
||||
|
||||
|
||||
auto item2 = createItem();
|
||||
root->insertItem(item2, Location_OnTop);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 2);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 1);
|
||||
|
||||
auto item3 = createItem();
|
||||
root->insertItem(item3, Location_OnTop);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 3);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 1);
|
||||
|
||||
auto item1Child = createItem();
|
||||
ItemBoxContainer::insertItemRelativeTo(item1Child, item1, Location_OnLeft);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 3);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 2);
|
||||
|
||||
auto item1Child1Child = createItem();
|
||||
ItemBoxContainer::insertItemRelativeTo(item1Child1Child, item1Child, Location_OnBottom);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 4);
|
||||
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 2);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
bool qpaPassed = false;
|
||||
|
||||
Reference in New Issue
Block a user