+
+ p.setPen(Qt::transparent);
+ p.setBrush(hover ? colour_.lighter() : colour_);
+ p.drawPolygon(points, countof(points));
+
+ p.setPen(colour_.lighter());
+ p.setBrush(Qt::transparent);
+ p.drawPolygon(highlight_points, countof(highlight_points));
+
+ p.setPen(colour_.darker());
+ p.setBrush(Qt::transparent);
+ p.drawPolygon(points, countof(points));
+
+ p.setPen(select_text_colour(colour_));
+ p.drawText(r, Qt::AlignCenter | Qt::AlignVCenter, get_text());
+}
+
+void TimeMarker::paint_fore(QPainter &p, const ViewItemPaintParams &pp)
+{
+ if (!enabled())
+ return;
+
+ const float x = get_x();
+ p.setPen(colour_.darker());
+ p.drawLine(QPointF(x, pp.top()), QPointF(x, pp.bottom()));
+}
+
+pv::widgets::Popup* TimeMarker::create_popup(QWidget *parent)
+{
+ using pv::widgets::Popup;
+
+ Popup *const popup = new Popup(parent);
+ popup->set_position(parent->mapToGlobal(
+ point(parent->rect())), Popup::Bottom);
+
+ QFormLayout *const form = new QFormLayout(popup);
+ popup->setLayout(form);
+
+ value_widget_ = new QDoubleSpinBox(parent);
+ value_widget_->setDecimals(9);
+ value_widget_->setSuffix("s");
+ value_widget_->setSingleStep(1e-6);
+ value_widget_->setRange(-1.0e9, 1.0e9);
+ value_widget_->setValue(time_);
+
+ connect(value_widget_, SIGNAL(valueChanged(double)),
+ this, SLOT(on_value_changed(double)));
+
+ form->addRow(tr("Time"), value_widget_);
+
+ return popup;
+}
+
+void TimeMarker::on_value_changed(double value)
+{
+ if (!updating_value_widget_)
+ set_time(value);