mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-12 02:56:12 -05:00
show hand context menu when hand counter is rightclicked
This commit is contained in:
@@ -86,13 +86,21 @@ void CardZone::mouseDoubleClickEvent(QGraphicsSceneMouseEvent */*event*/)
|
||||
doubleClickAction->trigger();
|
||||
}
|
||||
|
||||
bool CardZone::showContextMenu(const QPoint &screenPos)
|
||||
{
|
||||
if (menu) {
|
||||
menu->exec(screenPos);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CardZone::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (event->button() == Qt::RightButton) {
|
||||
if (menu) {
|
||||
menu->exec(event->screenPos());
|
||||
if (showContextMenu(event->screenPos()))
|
||||
event->accept();
|
||||
} else
|
||||
else
|
||||
event->ignore();
|
||||
} else
|
||||
event->ignore();
|
||||
|
||||
@@ -32,6 +32,7 @@ signals:
|
||||
void cardCountChanged();
|
||||
public slots:
|
||||
void moveAllToZone();
|
||||
bool showContextMenu(const QPoint &screenPos);
|
||||
public:
|
||||
enum { Type = typeZone };
|
||||
int type() const { return Type; }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <QPainter>
|
||||
#include <QSvgRenderer>
|
||||
#include <QPixmapCache>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include "handcounter.h"
|
||||
#include "cardzone.h"
|
||||
|
||||
@@ -48,3 +49,11 @@ void HandCounter::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*op
|
||||
|
||||
paintNumberEllipse(number, 24, Qt::white, -1, -1, painter);
|
||||
}
|
||||
|
||||
void HandCounter::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (event->button() == Qt::RightButton) {
|
||||
emit showContextMenu(event->screenPos());
|
||||
event->accept();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,12 @@ class HandCounter : public AbstractGraphicsItem {
|
||||
Q_OBJECT
|
||||
private:
|
||||
int number;
|
||||
protected:
|
||||
void mousePressEvent(QGraphicsSceneMouseEvent *event);
|
||||
public slots:
|
||||
void updateNumber();
|
||||
signals:
|
||||
void showContextMenu(const QPoint &screenPos);
|
||||
public:
|
||||
enum { Type = typeOther };
|
||||
int type() const { return Type; }
|
||||
|
||||
@@ -90,6 +90,7 @@ Player::Player(ServerInfo_User *info, int _id, bool _local, TabGame *_parent)
|
||||
|
||||
hand = new HandZone(this, _local || (_parent->getSpectator() && _parent->getSpectatorsSeeEverything()), (int) table->boundingRect().height(), this);
|
||||
connect(hand, SIGNAL(cardCountChanged()), handCounter, SLOT(updateNumber()));
|
||||
connect(handCounter, SIGNAL(showContextMenu(const QPoint &)), hand, SLOT(showContextMenu(const QPoint &)));
|
||||
|
||||
updateBoundingRect();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user