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>
This commit is contained in:
Aurindam Jana
2012-03-20 09:28:47 +01:00
parent 30fc5d56ed
commit 1b5648b51a

View File

@@ -173,34 +173,34 @@ void CrumblePathButton::tintImages()
void CrumblePathButton::leaveEvent(QEvent *e) void CrumblePathButton::leaveEvent(QEvent *e)
{ {
QPushButton::leaveEvent(e);
m_isHovering = false; m_isHovering = false;
update(); update();
QPushButton::leaveEvent(e);
} }
void CrumblePathButton::mouseMoveEvent(QMouseEvent *e) void CrumblePathButton::mouseMoveEvent(QMouseEvent *e)
{ {
if (!isEnabled()) if (!isEnabled())
return; return;
QPushButton::mouseMoveEvent(e);
m_isHovering = true; m_isHovering = true;
update(); update();
QPushButton::mouseMoveEvent(e);
} }
void CrumblePathButton::mousePressEvent(QMouseEvent *e) void CrumblePathButton::mousePressEvent(QMouseEvent *e)
{ {
if (!isEnabled()) if (!isEnabled())
return; return;
QPushButton::mousePressEvent(e);
m_isPressed = true; m_isPressed = true;
update(); update();
QPushButton::mousePressEvent(e);
} }
void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e) void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e)
{ {
QPushButton::mouseReleaseEvent(e);
m_isPressed = false; m_isPressed = false;
update(); update();
QPushButton::mouseReleaseEvent(e);
} }
void CrumblePathButton::changeEvent(QEvent *e) void CrumblePathButton::changeEvent(QEvent *e)