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)
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