]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/marginwidget.cpp
DecodeTrace: Allow row hiding
[pulseview.git] / pv / views / trace / marginwidget.cpp
index fa12c2b5b8d9257e8d5e24b885c4a711ee34055d..537ffe5ef298ad29b1cc6dd00a9ab5bab1992fd5 100644 (file)
@@ -47,19 +47,26 @@ void MarginWidget::item_clicked(const shared_ptr<ViewItem> &item)
 void MarginWidget::show_popup(const shared_ptr<ViewItem> &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<ViewItem> 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