#include "outlinepopup.h" #include #include #include "outlineviewer.h" using namespace vnotex; OutlinePopup::OutlinePopup(QToolButton *p_btn, QWidget *p_parent) : QMenu(p_parent), m_button(p_btn) { setupUI(); connect(this, &QMenu::aboutToShow, this, [this]() { m_viewer->setFocus(); }); } void OutlinePopup::setupUI() { auto mainLayout = new QVBoxLayout(this); m_viewer = new OutlineViewer(tr("Outline"), this); mainLayout->addWidget(m_viewer); setMinimumSize(320, 384); } void OutlinePopup::setOutlineProvider(const QSharedPointer &p_provider) { m_viewer->setOutlineProvider(p_provider); } void OutlinePopup::showEvent(QShowEvent* p_event) { QMenu::showEvent(p_event); const auto p = pos(); const auto btnRect = m_button->geometry(); // Move it to right-aligned. move(p.x() + btnRect.width() - geometry().width(), p.y()); }