X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fmarginwidget.cpp;h=537ffe5ef298ad29b1cc6dd00a9ab5bab1992fd5;hb=440bdf504a05efe589e8954ad28be62ba2c2d325;hp=fa12c2b5b8d9257e8d5e24b885c4a711ee34055d;hpb=1573bf16ba50d1c023ad3a9ce596f0ab6eaeacff;p=pulseview.git diff --git a/pv/views/trace/marginwidget.cpp b/pv/views/trace/marginwidget.cpp index fa12c2b5..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_context_menu(this); - if (menu) - menu->exec(event->globalPos()); + QMenu *menu = r->create_header_context_menu(this); + 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