]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/trace.cpp
Implement MathSignal
[pulseview.git] / pv / views / trace / trace.cpp
index 76adf1d15e03b6a2f4e69eb1a55f5c020578d8cb..ecc1aecc901a8adb9599c34e34f69ee896399727 100644 (file)
@@ -50,17 +50,17 @@ const int Trace::LabelHitPadding = 2;
 const QColor Trace::BrightGrayBGColor = QColor(0, 0, 0, 10 * 255 / 100);
 const QColor Trace::DarkGrayBGColor = QColor(0, 0, 0, 15 * 255 / 100);
 
-Trace::Trace(shared_ptr<data::SignalBase> channel) :
-       base_(channel),
+Trace::Trace(shared_ptr<data::SignalBase> signal) :
+       base_(signal),
        axis_pen_(AxisPen),
        segment_display_mode_(ShowLastSegmentOnly),  // Will be overwritten by View
        current_segment_(0),
        popup_(nullptr),
        popup_form_(nullptr)
 {
-       connect(channel.get(), SIGNAL(name_changed(const QString&)),
+       connect(signal.get(), SIGNAL(name_changed(const QString&)),
                this, SLOT(on_name_changed(const QString&)));
-       connect(channel.get(), SIGNAL(color_changed(const QColor&)),
+       connect(signal.get(), SIGNAL(color_changed(const QColor&)),
                this, SLOT(on_color_changed(const QColor&)));
 
        GlobalSettings::add_change_handler(this);
@@ -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_);
 }