From bd4342c4cbbe200381ccae0cd1abe56c983ab4a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Mon, 15 Nov 2021 15:36:55 +0100 Subject: [PATCH] Fix VisualNavbar Crash on Haiku --- src/widgets/VisualNavbar.cpp | 8 ++++++++ src/widgets/VisualNavbar.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/widgets/VisualNavbar.cpp b/src/widgets/VisualNavbar.cpp index 1f125b26..3ff9f2ac 100644 --- a/src/widgets/VisualNavbar.cpp +++ b/src/widgets/VisualNavbar.cpp @@ -25,6 +25,8 @@ VisualNavbar::VisualNavbar(MainWindow *main, QWidget *parent) { Q_UNUSED(parent); + blockTooltip = false; + setObjectName("visualNavbar"); setWindowTitle(tr("Visual navigation bar")); // setMovable(false); @@ -240,11 +242,17 @@ void VisualNavbar::on_seekChanged(RVA addr) void VisualNavbar::mousePressEvent(QMouseEvent *event) { + if (blockTooltip) { + return; + } qreal x = qhelpers::mouseEventPos(event).x(); RVA address = localXToAddress(x); if (address != RVA_INVALID) { auto tooltipPos = qhelpers::mouseEventGlobalPos(event); + blockTooltip = true; // on Haiku, the below call sometimes triggers another mouseMoveEvent, + // causing infinite recursion QToolTip::showText(tooltipPos, toolTipForAddress(address), this, this->rect()); + blockTooltip = false; if (event->buttons() & Qt::LeftButton) { event->accept(); Core()->seek(address); diff --git a/src/widgets/VisualNavbar.h b/src/widgets/VisualNavbar.h index 195c23a1..b11eb170 100644 --- a/src/widgets/VisualNavbar.h +++ b/src/widgets/VisualNavbar.h @@ -48,6 +48,7 @@ private: unsigned int previousWidth = 0; QList xToAddress; + bool blockTooltip; RVA localXToAddress(double x); double addressToLocalX(RVA address);