From 1b5648b51a60ebc9b5ddd2c990ad45bab1a3e523 Mon Sep 17 00:00:00 2001
From: Aurindam Jana <aurindam.jana@nokia.com>
Date: Tue, 20 Mar 2012 09:28:47 +0100
Subject: [PATCH] CrumblePath: Fix Crash

QWidget::mousePressEvent() closes the widget if the position is
not within the rect. A subsequent call to update() amounts to
accessing potentially corrupt memory. Hence call update() before
calling QWidget::mousePressEvent().

Change-Id: I850471d3a1dfdb0a4f0541a69fd2f239dbf8b5fa
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
---
 src/libs/utils/crumblepath.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/libs/utils/crumblepath.cpp b/src/libs/utils/crumblepath.cpp
index a69258802a..80c273c97b 100644
--- a/src/libs/utils/crumblepath.cpp
+++ b/src/libs/utils/crumblepath.cpp
@@ -173,34 +173,34 @@ void CrumblePathButton::tintImages()
 
 void CrumblePathButton::leaveEvent(QEvent *e)
 {
-    QPushButton::leaveEvent(e);
     m_isHovering = false;
     update();
+    QPushButton::leaveEvent(e);
 }
 
 void CrumblePathButton::mouseMoveEvent(QMouseEvent *e)
 {
     if (!isEnabled())
         return;
-    QPushButton::mouseMoveEvent(e);
     m_isHovering = true;
     update();
+    QPushButton::mouseMoveEvent(e);
 }
 
 void CrumblePathButton::mousePressEvent(QMouseEvent *e)
 {
     if (!isEnabled())
         return;
-    QPushButton::mousePressEvent(e);
     m_isPressed = true;
     update();
+    QPushButton::mousePressEvent(e);
 }
 
 void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e)
 {
-    QPushButton::mouseReleaseEvent(e);
     m_isPressed = false;
     update();
+    QPushButton::mouseReleaseEvent(e);
 }
 
 void CrumblePathButton::changeEvent(QEvent *e)
-- 
GitLab