Fixed cursor handling over the label

--HG--
branch : feature
This commit is contained in:
BojanKverh 2016-08-03 00:32:37 +02:00
parent f2d5b00fd9
commit a2ee1e24e6
2 changed files with 44 additions and 2 deletions

View file

@ -35,6 +35,8 @@
#include <QtMath> #include <QtMath>
#include <QDebug> #include <QDebug>
#include <stdio.h>
#include "../vmisc/def.h" #include "../vmisc/def.h"
#include "vtextgraphicsitem.h" #include "vtextgraphicsitem.h"
@ -54,11 +56,12 @@
VTextGraphicsItem::VTextGraphicsItem(QGraphicsItem* pParent) VTextGraphicsItem::VTextGraphicsItem(QGraphicsItem* pParent)
:QGraphicsObject(pParent), m_eMode(VTextGraphicsItem::mNormal), m_bReleased(false), :QGraphicsObject(pParent), m_eMode(VTextGraphicsItem::mNormal), m_bReleased(false),
m_ptStartPos(), m_ptStart(), m_ptRotCenter(), m_szStart(), m_dRotation(0), m_dAngle(0), m_ptStartPos(), m_ptStart(), m_ptRotCenter(), m_szStart(), m_dRotation(0), m_dAngle(0),
m_rectResize(), m_iMinH(MIN_H), m_rectBoundingBox(), m_tm() m_rectResize(), m_iMinH(MIN_H), m_rectBoundingBox(), m_tm(), m_bResizeCursor(false)
{ {
m_rectBoundingBox.setTopLeft(QPointF(0, 0)); m_rectBoundingBox.setTopLeft(QPointF(0, 0));
SetSize(MIN_W, m_iMinH); SetSize(MIN_W, m_iMinH);
setZValue(TOP_Z); setZValue(TOP_Z);
setAcceptHoverEvents(true);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -160,6 +163,7 @@ void VTextGraphicsItem::Reset()
{ {
m_eMode = mNormal; m_eMode = mNormal;
m_bReleased = false; m_bReleased = false;
m_bResizeCursor = false;
Update(); Update();
setZValue(TOP_Z); setZValue(TOP_Z);
} }
@ -365,6 +369,10 @@ void VTextGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *pME)
SetOverrideCursor(cursorArrowCloseHand, 1, 1); SetOverrideCursor(cursorArrowCloseHand, 1, 1);
} }
} }
else
{
SetOverrideCursor(cursorArrowCloseHand, 1, 1);
}
// raise the label and redraw it // raise the label and redraw it
setZValue(TOP_Z + 1); setZValue(TOP_Z + 1);
UpdateBox(); UpdateBox();
@ -446,7 +454,7 @@ void VTextGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* pME)
if (pME->button() == Qt::LeftButton) if (pME->button() == Qt::LeftButton)
{ {
// restore the cursor // restore the cursor
if (m_eMode == mMove) if (m_eMode == mMove || m_eMode == mRotate)
{ {
RestoreOverrideCursor(cursorArrowCloseHand); RestoreOverrideCursor(cursorArrowCloseHand);
} }
@ -498,6 +506,37 @@ void VTextGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* pME)
} }
} }
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::hoverMoveEvent checks if cursor has to be changed
* @param pHE pointer to the scene hover event
*/
void VTextGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent* pHE)
{
if (m_eMode == mMove || m_eMode == mResize)
{
if (m_rectResize.contains(pHE->pos()) == true)
{
SetOverrideCursor(Qt::SizeFDiagCursor);
}
else
{
RestoreOverrideCursor(Qt::SizeFDiagCursor);
}
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief VTextGraphicsItem::hoverLeaveEvent tries to restore normal mouse cursor
* @param pHE not used
*/
void VTextGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* pHE)
{
Q_UNUSED(pHE);
RestoreOverrideCursor(Qt::SizeFDiagCursor);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief VTextGraphicsItem::UpdateBox redraws the label content * @brief VTextGraphicsItem::UpdateBox redraws the label content

View file

@ -76,6 +76,8 @@ protected:
void mousePressEvent(QGraphicsSceneMouseEvent* pME); void mousePressEvent(QGraphicsSceneMouseEvent* pME);
void mouseMoveEvent(QGraphicsSceneMouseEvent* pME); void mouseMoveEvent(QGraphicsSceneMouseEvent* pME);
void mouseReleaseEvent(QGraphicsSceneMouseEvent* pME); void mouseReleaseEvent(QGraphicsSceneMouseEvent* pME);
void hoverMoveEvent(QGraphicsSceneHoverEvent* pHE);
void hoverLeaveEvent(QGraphicsSceneHoverEvent* pHE);
void UpdateBox(); void UpdateBox();
void UpdateFont(); void UpdateFont();
@ -100,6 +102,7 @@ private:
int m_iMinH; int m_iMinH;
QRectF m_rectBoundingBox; QRectF m_rectBoundingBox;
VTextManager m_tm; VTextManager m_tm;
bool m_bResizeCursor;
QRectF GetBoundingRect(QRectF rectBB, qreal dRot) const; QRectF GetBoundingRect(QRectF rectBB, qreal dRot) const;
}; };