X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fviewwidget.cpp;h=ce5c27a83dce2a3c6784dcda17e5d0b2e018b9b7;hb=d8d053b6e51abf651ca31d0d4822035c06fb7f9b;hp=79326d2a10a06742a3a2639a6cbd88376d06a704;hpb=d9ea96280ab1128427143660ae375c30b19aa0cb;p=pulseview.git
diff --git a/pv/view/viewwidget.cpp b/pv/view/viewwidget.cpp
index 79326d2..ce5c27a 100644
--- a/pv/view/viewwidget.cpp
+++ b/pv/view/viewwidget.cpp
@@ -14,8 +14,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see .
*/
#include
@@ -31,7 +30,8 @@ using std::shared_ptr;
using std::vector;
namespace pv {
-namespace view {
+namespace views {
+namespace TraceView {
ViewWidget::ViewWidget(View &parent) :
QWidget(&parent),
@@ -251,16 +251,23 @@ void ViewWidget::mousePressEvent(QMouseEvent *event)
{
assert(event);
- mouse_down_point_ = event->pos();
- mouse_down_item_ = get_mouse_over_item(event->pos());
-
- if (event->button() & Qt::LeftButton)
+ /* Ignore right click events as they will open context menus when
+ * used on trace labels. Those menus prevent ViewWidget::mouseReleaseEvent()
+ * to be triggered upon button release, making mouse_down_item_
+ * hold the last reference to a view item that might have been deleted
+ * from the context menu, preventing it from being freed as intended.
+ */
+ if (event->button() & Qt::LeftButton) {
+ mouse_down_point_ = event->pos();
+ mouse_down_item_ = get_mouse_over_item(event->pos());
mouse_left_press_event(event);
+ }
}
void ViewWidget::mouseReleaseEvent(QMouseEvent *event)
{
assert(event);
+
if (event->button() & Qt::LeftButton)
mouse_left_release_event(event);
@@ -298,5 +305,6 @@ void ViewWidget::leaveEvent(QEvent*)
update();
}
-} // namespace view
+} // namespace TraceView
+} // namespace views
} // namespace pv