void PopupMenu::showStarted() { if (isHidden()) { show(); startShowAnimation(); return; } else if (!_hiding) { return; } startOpacityAnimation(false); }
void PopupMenu::showMenu(const QPoint &p, PopupMenu *parent, TriggeredSource source) { _parent = parent; auto origin = PanelAnimation::Origin::TopLeft; auto w = p - QPoint(0, _padding.top()); auto r = Sandbox::screenGeometry(p); _useTransparency = Platform::TransparentWindowsSupported(p); handleCompositingUpdate(); if (rtl()) { if (w.x() - width() < r.x() - _padding.left()) { if (_parent && w.x() + _parent->width() - _padding.left() - _padding.right() + width() - _padding.right() <= r.x() + r.width()) { w.setX(w.x() + _parent->width() - _padding.left() - _padding.right()); } else { w.setX(r.x() - _padding.left()); } } else { w.setX(w.x() - width()); } } else { if (w.x() + width() - _padding.right() > r.x() + r.width()) { if (_parent && w.x() - _parent->width() + _padding.left() + _padding.right() - width() + _padding.right() >= r.x() - _padding.left()) { w.setX(w.x() + _padding.left() + _padding.right() - _parent->width() - width() + _padding.left() + _padding.right()); } else { w.setX(p.x() - width() + _padding.right()); } origin = PanelAnimation::Origin::TopRight; } } if (w.y() + height() - _padding.bottom() > r.y() + r.height()) { if (_parent) { w.setY(r.y() + r.height() - height() + _padding.bottom()); } else { w.setY(p.y() - height() + _padding.bottom()); origin = (origin == PanelAnimation::Origin::TopRight) ? PanelAnimation::Origin::BottomRight : PanelAnimation::Origin::BottomLeft; } } if (w.x() < r.x()) { w.setX(r.x()); } if (w.y() < r.y()) { w.setY(r.y()); } move(w); setOrigin(origin); _menu->setShowSource(source); startShowAnimation(); psUpdateOverlayed(this); show(); psShowOverAll(this); windowHandle()->requestActivate(); activateWindow(); }
void InnerDropdown::showStarted() { if (_ignoreShowEvents) return; if (isHidden()) { show(); startShowAnimation(); return; } else if (!_hiding) { return; } startOpacityAnimation(false); }