[Menu] Harmonize openRelative placement
Use the enums in a consistent way to place the menu around the parent item. Test Plan: Tested with plasma-pa and task manager context menu. Reviewers: #plasma, hein Reviewed By: #plasma, hein Subscribers: plasma-devel, #frameworks Tags: #plasma, #frameworks Differential Revision: https://phabricator.kde.org/D4921
This commit is contained in:
parent
ff78b9e531
commit
28ad7879d3
@ -372,36 +372,40 @@ Q_INVOKABLE void QMenuProxy::openRelative()
|
||||
switch(m_placement) {
|
||||
case Types::TopPosedLeftAlignedPopup: {
|
||||
pos = parentItem->mapToScene(QPointF(0, -m_menu->height()));
|
||||
boundaryCorrection(- m_menu->width() + parentItem->width(), m_menu->height() + parentItem->height());
|
||||
boundaryCorrection(-m_menu->width() + parentItem->width(), m_menu->height() + parentItem->height());
|
||||
break;
|
||||
}
|
||||
case Types::LeftPosedTopAlignedPopup: {
|
||||
pos = parentItem->mapToScene(QPointF(-m_menu->width(), 0));
|
||||
boundaryCorrection(m_menu->width() + parentItem->width(), - m_menu->height() + parentItem->height());
|
||||
boundaryCorrection(m_menu->width() + parentItem->width(), -m_menu->height() + parentItem->height());
|
||||
break;
|
||||
}
|
||||
case Types::TopPosedRightAlignedPopup:
|
||||
pos = parentItem->mapToScene(QPointF(parentItem->width(), -m_menu->height()));
|
||||
boundaryCorrection(- m_menu->width() + parentItem->width(), m_menu->height()); // in top right corner this will cover the parent item
|
||||
pos = parentItem->mapToScene(QPointF(parentItem->width() - m_menu->width(), -m_menu->height()));
|
||||
boundaryCorrection(m_menu->width() - parentItem->width(), m_menu->height() + parentItem->height());
|
||||
break;
|
||||
case Types::RightPosedTopAlignedPopup: {
|
||||
pos = parentItem->mapToScene(QPointF(parentItem->width(), 0));
|
||||
boundaryCorrection(- m_menu->width() - parentItem->width(), m_menu->height() + parentItem->height());
|
||||
boundaryCorrection(-m_menu->width() - parentItem->width(), -m_menu->height() + parentItem->height());
|
||||
break;
|
||||
}
|
||||
case Types::LeftPosedBottomAlignedPopup:
|
||||
pos = parentItem->mapToScene(QPointF(-m_menu->width(), parentItem->height()));
|
||||
boundaryCorrection(m_menu->width(), - m_menu->height()); // in lower left corner this will cover the parent item
|
||||
pos = parentItem->mapToScene(QPointF(-m_menu->width(), -m_menu->height() + parentItem->height()));
|
||||
boundaryCorrection(m_menu->width() + parentItem->width(), m_menu->height() - parentItem->height());
|
||||
break;
|
||||
case Types::BottomPosedLeftAlignedPopup: {
|
||||
pos = parentItem->mapToScene(QPointF(0, parentItem->height()));
|
||||
boundaryCorrection(- m_menu->width() + parentItem->width(), - m_menu->height() - parentItem->height());
|
||||
boundaryCorrection(-m_menu->width() + parentItem->width(), -m_menu->height() - parentItem->height());
|
||||
break;
|
||||
}
|
||||
case Types::BottomPosedRightAlignedPopup: {
|
||||
pos = parentItem->mapToScene(QPointF(parentItem->width() - m_menu->width(), parentItem->height()));
|
||||
boundaryCorrection(m_menu->width() - parentItem->width(), -m_menu->height() - parentItem->height());
|
||||
break;
|
||||
}
|
||||
case Types::BottomPosedRightAlignedPopup:
|
||||
case Types::RightPosedBottomAlignedPopup: {
|
||||
pos = parentItem->mapToScene(QPointF(parentItem->width(), parentItem->height()));
|
||||
boundaryCorrection(- m_menu->width() + parentItem->width(), - m_menu->height() + parentItem->height());
|
||||
pos = parentItem->mapToScene(QPointF(parentItem->width(), -m_menu->height() + parentItem->height()));
|
||||
boundaryCorrection(-m_menu->width() - parentItem->width(), m_menu->height() - parentItem->height());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user