From c8779032c8a25572ddbb16f27b584ff435d5e29d Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Wed, 10 Nov 2010 02:04:40 +0100 Subject: [PATCH] minor hover bug fix --- cockatrice/src/abstractcarditem.cpp | 10 +++++++++- cockatrice/src/abstractcarditem.h | 3 +++ cockatrice/src/carditem.cpp | 8 +------- cockatrice/src/carditem.h | 3 --- cockatrice/src/gamescene.cpp | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/cockatrice/src/abstractcarditem.cpp b/cockatrice/src/abstractcarditem.cpp index 864a1815..a537f5e9 100644 --- a/cockatrice/src/abstractcarditem.cpp +++ b/cockatrice/src/abstractcarditem.cpp @@ -13,7 +13,7 @@ #include AbstractCardItem::AbstractCardItem(const QString &_name, Player *_owner, QGraphicsItem *parent) - : ArrowTarget(_owner, parent), info(db->getCard(_name)), infoWidget(0), name(_name), tapped(false), tapAngle(0), isHovered(false) + : ArrowTarget(_owner, parent), info(db->getCard(_name)), infoWidget(0), name(_name), tapped(false), tapAngle(0), isHovered(false), realZValue(0) { setCursor(Qt::OpenHandCursor); setFlag(ItemIsSelectable); @@ -42,6 +42,12 @@ void AbstractCardItem::pixmapUpdated() update(); } +void AbstractCardItem::setRealZValue(qreal _zValue) +{ + realZValue = _zValue; + setZValue(_zValue); +} + QSizeF AbstractCardItem::getTranslatedSize(QPainter *painter) const { return QSizeF( @@ -149,6 +155,7 @@ void AbstractCardItem::animationEvent() tapAngle += delta; setTransform(QTransform().translate((float) CARD_WIDTH / 2, (float) CARD_HEIGHT / 2).rotate(tapAngle).translate((float) -CARD_WIDTH / 2, (float) -CARD_HEIGHT / 2)); + setHovered(false); update(); if ((tapped && (tapAngle >= 90)) || (!tapped && (tapAngle <= 0))) @@ -167,6 +174,7 @@ void AbstractCardItem::setName(const QString &_name) void AbstractCardItem::setHovered(bool _hovered) { isHovered = _hovered; + setZValue(_hovered ? 2000000004 : realZValue); update(); } diff --git a/cockatrice/src/abstractcarditem.h b/cockatrice/src/abstractcarditem.h index 99596ee0..e1ca65c8 100644 --- a/cockatrice/src/abstractcarditem.h +++ b/cockatrice/src/abstractcarditem.h @@ -23,6 +23,7 @@ protected: private: QTimer *animationTimer; bool isHovered; + qreal realZValue; private slots: void animationEvent(); void pixmapUpdated(); @@ -41,6 +42,8 @@ public: CardInfo *getInfo() const { return info; } QString getName() const { return name; } void setName(const QString &_name = QString()); + qreal getRealZValue() const { return realZValue; } + void setRealZValue(qreal _zValue); void setHovered(bool _hovered); QString getColor() const { return color; } void setColor(const QString &_color); diff --git a/cockatrice/src/carditem.cpp b/cockatrice/src/carditem.cpp index 63ed4e5b..d571f400 100644 --- a/cockatrice/src/carditem.cpp +++ b/cockatrice/src/carditem.cpp @@ -17,7 +17,7 @@ #include "tab_game.h" CardItem::CardItem(Player *_owner, const QString &_name, int _cardid, QGraphicsItem *parent) - : AbstractCardItem(_name, _owner, parent), id(_cardid), realZValue(0), attacking(false), facedown(false), destroyOnZoneChange(false), doesntUntap(false), dragItem(0), attachedTo(0) + : AbstractCardItem(_name, _owner, parent), id(_cardid), attacking(false), facedown(false), destroyOnZoneChange(false), doesntUntap(false), dragItem(0), attachedTo(0) { owner->addCard(this); @@ -154,12 +154,6 @@ void CardItem::retranslateUi() } } -void CardItem::setRealZValue(qreal _zValue) -{ - realZValue = _zValue; - setZValue(_zValue); -} - void CardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->save(); diff --git a/cockatrice/src/carditem.h b/cockatrice/src/carditem.h index 72f14bae..586d2147 100644 --- a/cockatrice/src/carditem.h +++ b/cockatrice/src/carditem.h @@ -17,7 +17,6 @@ class CardItem : public AbstractCardItem { private: CardZone *zone; int id; - qreal realZValue; bool attacking; bool facedown; QMap counters; @@ -48,8 +47,6 @@ public: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); QPoint getGridPoint() const { return gridPoint; } void setGridPoint(const QPoint &_gridPoint) { gridPoint = _gridPoint; } - qreal getRealZValue() const { return realZValue; } - void setRealZValue(qreal _zValue); QPoint getGridPos() const { return gridPoint; } Player *getOwner() const { return owner; } int getId() const { return id; } diff --git a/cockatrice/src/gamescene.cpp b/cockatrice/src/gamescene.cpp index 8225ffc5..f6a89ed3 100644 --- a/cockatrice/src/gamescene.cpp +++ b/cockatrice/src/gamescene.cpp @@ -149,7 +149,7 @@ bool GameScene::event(QEvent *event) for (int i = 0; i < oldItemList.size(); ++i) { CardItem *card = qgraphicsitem_cast(oldItemList[i]); if (card) - card->setZValue(card->getRealZValue()); + card->setHovered(false); } QList itemList = items(mouseEvent->scenePos()); @@ -176,7 +176,7 @@ bool GameScene::event(QEvent *event) } } for (int i = 0; i < cardList.size(); ++i) - cardList[i]->setZValue(cardList[i] == maxZCard ? 2000000004 : cardList[i]->getRealZValue()); + cardList[i]->setHovered(cardList[i] == maxZCard); } } return QGraphicsScene::event(event);