wip
This commit is contained in:
@@ -83,6 +83,13 @@ QPoint Item::mapFromParent(QPoint p) const
|
||||
return p - pos();
|
||||
}
|
||||
|
||||
int Item::mapFromRoot(int p, Qt::Orientation o) const
|
||||
{
|
||||
if (o == Qt::Vertical)
|
||||
return mapFromRoot(QPoint(0, p)).y();
|
||||
return mapFromRoot(QPoint(p, 0)).x();
|
||||
}
|
||||
|
||||
void Item::setFrame(GuestInterface *guest)
|
||||
{
|
||||
Q_ASSERT(!guest || !m_guest);
|
||||
@@ -2237,6 +2244,49 @@ bool ItemContainer::isHorizontal() const
|
||||
return m_orientation == Qt::Horizontal;
|
||||
}
|
||||
|
||||
int ItemContainer::indexOf(Anchor *separator) const
|
||||
{
|
||||
return m_separators.indexOf(separator);
|
||||
}
|
||||
|
||||
int ItemContainer::minPosForSeparator(Anchor *separator) const
|
||||
{
|
||||
const int globalMin = minPosForSeparator_global(separator);
|
||||
return mapFromRoot(globalMin, m_orientation);
|
||||
}
|
||||
|
||||
int ItemContainer::maxPosForSeparator(Anchor *separator) const
|
||||
{
|
||||
const int globalMax = maxPosForSeparator_global(separator);
|
||||
return mapFromRoot(globalMax, m_orientation);
|
||||
}
|
||||
|
||||
int ItemContainer::minPosForSeparator_global(Anchor *separator) const
|
||||
{
|
||||
const int separatorIndex = indexOf(separator);
|
||||
Q_ASSERT(separatorIndex != -1);
|
||||
|
||||
const Item::List children = visibleChildren();
|
||||
Q_ASSERT(separatorIndex + 1 < children.size());
|
||||
Item *item = children.at(separatorIndex + 1);
|
||||
|
||||
const int available1 = availableOnSide(item, Side1);
|
||||
return separator->position() - available1;
|
||||
}
|
||||
|
||||
int ItemContainer::maxPosForSeparator_global(Anchor *separator) const
|
||||
{
|
||||
const int separatorIndex = indexOf(separator);
|
||||
Q_ASSERT(separatorIndex != -1);
|
||||
|
||||
const Item::List children = visibleChildren();
|
||||
Q_ASSERT(separatorIndex - 1 >= 0);
|
||||
Item *item = children.at(separatorIndex - 1);
|
||||
|
||||
const int available2 = availableOnSide(item, Side2);
|
||||
return separator->position() + available2;
|
||||
}
|
||||
|
||||
QVector<Layouting::Anchor*> ItemContainer::separators_recursive() const
|
||||
{
|
||||
Layouting::Anchor::List separators = m_separators;
|
||||
|
||||
@@ -337,6 +337,7 @@ public:
|
||||
QPoint mapFromRoot(QPoint) const;
|
||||
QRect mapFromRoot(QRect) const;
|
||||
QPoint mapFromParent(QPoint) const;
|
||||
int mapFromRoot(int p, Qt::Orientation) const;
|
||||
|
||||
QWidget *frame() const { return m_guest ? m_guest->asWidget() : nullptr; } // TODO: rename
|
||||
GuestInterface *guest() const { return m_guest; }
|
||||
@@ -499,6 +500,13 @@ public:
|
||||
Qt::Orientation orientation() const;
|
||||
bool isVertical() const;
|
||||
bool isHorizontal() const;
|
||||
|
||||
int indexOf(Anchor *) const;
|
||||
int minPosForSeparator(Anchor *) const;
|
||||
int maxPosForSeparator(Anchor *) const;
|
||||
int minPosForSeparator_global(Anchor *) const;
|
||||
int maxPosForSeparator_global(Anchor *) const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void itemsChanged();
|
||||
void numVisibleItemsChanged(int);
|
||||
|
||||
Reference in New Issue
Block a user