+QRectF Trace::get_label_rect(int right)
+{
+ using pv::view::View;
+
+ assert(_view);
+
+ QFontMetrics m(QApplication::font());
+ const QSize text_size(
+ m.boundingRect(QRect(), 0, _name).width(),
+ m.boundingRect(QRect(), 0, "Tg").height());
+ const QSizeF label_size(
+ text_size.width() + View::LabelPadding.width() * 2,
+ ceilf((text_size.height() + View::LabelPadding.height() * 2) / 2) * 2);
+ const float label_arrow_length = label_size.height() / 2;
+ return QRectF(
+ right - label_arrow_length - label_size.width() - 0.5,
+ get_y() + 0.5f - label_size.height() / 2,
+ label_size.width(), label_size.height());
+}
+
+bool Trace::eventFilter(QObject *obj, QEvent *evt)
+{
+ QKeyEvent *keyEvent;
+
+ (void)obj;
+
+ if (evt->type() == QEvent::KeyPress) {
+ keyEvent = static_cast<QKeyEvent*>(evt);
+ if (keyEvent->key() == Qt::Key_Enter ||
+ keyEvent->key() == Qt::Key_Return) {
+ close_popup();
+ return true;
+ }
+ }
+
+ return false;
+}
+