]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/trace.cpp
Trace: Use scroll bars for popups with too much content
[pulseview.git] / pv / views / trace / trace.cpp
index 76adf1d15e03b6a2f4e69eb1a55f5c020578d8cb..6d44da2c889d8babc73cd6e2054965a1aa980a6c 100644 (file)
@@ -346,13 +346,28 @@ void Trace::create_popup_form()
        // handled, leaving the parent popup_ time to handle the change.
        if (popup_form_) {
                QWidget *suicidal = new QWidget();
-               suicidal->setLayout(popup_form_);
+               suicidal->setLayout(popup_->layout());
                suicidal->deleteLater();
        }
 
        // Repopulate the popup
-       popup_form_ = new QFormLayout(popup_);
-       popup_->setLayout(popup_form_);
+       widgets::QWidthAdjustingScrollArea* scrollarea = new widgets::QWidthAdjustingScrollArea();
+       QWidget* scrollarea_content = new QWidget(scrollarea);
+
+       scrollarea->setWidget(scrollarea_content);
+       scrollarea->setWidgetResizable(true);
+       scrollarea->setContentsMargins(0, 0, 0, 0);
+       scrollarea->setFrameShape(QFrame::NoFrame);
+       scrollarea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+       scrollarea_content->setContentsMargins(0, 0, 0, 0);
+
+       popup_->setLayout(new QVBoxLayout());
+       popup_->layout()->addWidget(scrollarea);
+       popup_->layout()->setContentsMargins(0, 0, 0, 0);
+
+       popup_form_ = new QFormLayout(scrollarea_content);
+       popup_form_->setSizeConstraint(QLayout::SetMinAndMaxSize);
+
        populate_popup_form(popup_, popup_form_);
 }