X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fmarginwidget.cpp;h=537ffe5ef298ad29b1cc6dd00a9ab5bab1992fd5;hb=440bdf504a05efe589e8954ad28be62ba2c2d325;hp=f0d50c97b900abf334b4807e6c75ab3c7ac844a9;hpb=8835b5e7c3c6e07e9b99e31a1fb31e600cdab76d;p=pulseview.git diff --git a/pv/views/trace/marginwidget.cpp b/pv/views/trace/marginwidget.cpp index f0d50c97..537ffe5e 100644 --- a/pv/views/trace/marginwidget.cpp +++ b/pv/views/trace/marginwidget.cpp @@ -47,19 +47,26 @@ void MarginWidget::item_clicked(const shared_ptr &item) void MarginWidget::show_popup(const shared_ptr &item) { pv::widgets::Popup *const p = item->create_popup(this); + + connect(p, SIGNAL(closed()), this, SLOT(on_popup_closed())); + if (p) p->show(); } void MarginWidget::contextMenuEvent(QContextMenuEvent *event) { + event->setAccepted(false); + const shared_ptr r = get_mouse_over_item(mouse_point_); if (!r) return; QMenu *menu = r->create_header_context_menu(this); - if (menu) + if (menu) { + event->setAccepted(true); menu->popup(event->globalPos()); + } } void MarginWidget::keyPressEvent(QKeyEvent *event) @@ -72,8 +79,21 @@ void MarginWidget::keyPressEvent(QKeyEvent *event) if (i->selected()) i->delete_pressed(); } + + ViewWidget::keyPressEvent(event); } +void MarginWidget::on_popup_closed() +{ + bool cursor_above_widget = rect().contains(mapFromGlobal(QCursor::pos())); + + if (!cursor_above_widget) + mouse_point_ = QPoint(INT_MIN, INT_MIN); + + update(); +} + + } // namespace trace } // namespace views } // namespace pv