fix styles

This commit is contained in:
Alex Okonechnikov 2025-12-31 05:47:08 -05:00
parent a614dcee32
commit 02c6d0bf47
2 changed files with 65 additions and 66 deletions

View file

@ -10,20 +10,21 @@
#include "view_zone.h" #include "view_zone.h"
#include <QCheckBox> #include <QCheckBox>
#include <QGraphicsView>
#include <QGraphicsLinearLayout> #include <QGraphicsLinearLayout>
#include <QGraphicsProxyWidget> #include <QGraphicsProxyWidget>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QGraphicsView>
#include <QLabel> #include <QLabel>
#include <QPainter> #include <QPainter>
#include <QScrollBar> #include <QScrollBar>
#include <QStyleOption> #include <QStyleOption>
#include <libcockatrice/protocol/pb/command_shuffle.pb.h> #include <libcockatrice/protocol/pb/command_shuffle.pb.h>
namespace { namespace
{
constexpr qreal kTitleBarHeight = 24.0; constexpr qreal kTitleBarHeight = 24.0;
constexpr qreal kMinVisibleWidth = 100.0; constexpr qreal kMinVisibleWidth = 100.0;
} } // namespace
/** /**
* @param _player the player the cards were revealed to. * @param _player the player the cards were revealed to.
@ -257,8 +258,8 @@ void ZoneViewWidget::stopWindowDrag()
} }
QPointF ZoneViewWidget::draggedWindowPos(const QPoint &screenPos, QPointF ZoneViewWidget::draggedWindowPos(const QPoint &screenPos,
const QPointF &scenePos, const QPointF &scenePos,
const QPointF &buttonDownScenePos) const const QPointF &buttonDownScenePos) const
{ {
if (dragView && dragView->viewport()) { if (dragView && dragView->viewport()) {
const QPoint vpStart = dragView->viewport()->mapFromGlobal(dragStartScreenPos); const QPoint vpStart = dragView->viewport()->mapFromGlobal(dragStartScreenPos);
@ -275,73 +276,73 @@ bool ZoneViewWidget::windowFrameEvent(QEvent *event)
{ {
// Intercept and move the widget in a stable coordinate space // Intercept and move the widget in a stable coordinate space
switch (event->type()) { switch (event->type()) {
case QEvent::UngrabMouse: case QEvent::UngrabMouse:
stopWindowDrag(); stopWindowDrag();
break; break;
case QEvent::GraphicsSceneMousePress: { case QEvent::GraphicsSceneMousePress: {
auto *me = static_cast<QGraphicsSceneMouseEvent *>(event); auto *me = static_cast<QGraphicsSceneMouseEvent *>(event);
const Qt::WindowFrameSection section = windowFrameSectionAt(me->pos()); const Qt::WindowFrameSection section = windowFrameSectionAt(me->pos());
if (me->button() == Qt::LeftButton && section == Qt::TitleBarArea) { if (me->button() == Qt::LeftButton && section == Qt::TitleBarArea) {
// avoid drag on close button // avoid drag on close button
const QRectF frameRectF = windowFrameRect(); const QRectF frameRectF = windowFrameRect();
const QRectF closeRect(frameRectF.right() - kTitleBarHeight, frameRectF.top(), kTitleBarHeight, const QRectF closeRect(frameRectF.right() - kTitleBarHeight, frameRectF.top(), kTitleBarHeight,
kTitleBarHeight); kTitleBarHeight);
if (closeRect.contains(me->pos())) { if (closeRect.contains(me->pos())) {
me->accept();
close();
return true;
}
draggingWindow = true;
dragStartItemPos = pos();
dragStartScreenPos = me->screenPos();
dragView = nullptr;
if (me->widget()) {
QWidget *current = me->widget();
while (current && !dragView) {
dragView = qobject_cast<QGraphicsView *>(current);
current = current->parentWidget();
}
}
if (!dragView && scene() && !scene()->views().isEmpty()) {
dragView = scene()->views().constFirst();
}
// need to grab mouse to receive events and not miss initial movement
grabMouse();
me->accept(); me->accept();
close();
return true; return true;
} }
break;
draggingWindow = true;
dragStartItemPos = pos();
dragStartScreenPos = me->screenPos();
dragView = nullptr;
if (me->widget()) {
QWidget *current = me->widget();
while (current && !dragView) {
dragView = qobject_cast<QGraphicsView *>(current);
current = current->parentWidget();
}
}
if (!dragView && scene() && !scene()->views().isEmpty()) {
dragView = scene()->views().constFirst();
}
// need to grab mouse to receive events and not miss initial movement
grabMouse();
me->accept();
return true;
} }
break; case QEvent::GraphicsSceneMouseMove: {
} auto *me = static_cast<QGraphicsSceneMouseEvent *>(event);
case QEvent::GraphicsSceneMouseMove: { if (draggingWindow) {
auto *me = static_cast<QGraphicsSceneMouseEvent *>(event); if (!(me->buttons() & Qt::LeftButton)) {
if (draggingWindow) { stopWindowDrag();
if (!(me->buttons() & Qt::LeftButton)) { me->accept();
return true;
}
setPos(draggedWindowPos(me->screenPos(), me->scenePos(), me->buttonDownScenePos(Qt::LeftButton)));
me->accept();
return true;
}
break;
}
case QEvent::GraphicsSceneMouseRelease: {
auto *me = static_cast<QGraphicsSceneMouseEvent *>(event);
if (draggingWindow && me->button() == Qt::LeftButton) {
stopWindowDrag(); stopWindowDrag();
me->accept(); me->accept();
return true; return true;
} }
break;
setPos(draggedWindowPos(me->screenPos(), me->scenePos(), me->buttonDownScenePos(Qt::LeftButton)));
me->accept();
return true;
} }
break; default:
} break;
case QEvent::GraphicsSceneMouseRelease: {
auto *me = static_cast<QGraphicsSceneMouseEvent *>(event);
if (draggingWindow && me->button() == Qt::LeftButton) {
stopWindowDrag();
me->accept();
return true;
}
break;
}
default:
break;
} }
return QGraphicsWidget::windowFrameEvent(event); return QGraphicsWidget::windowFrameEvent(event);

View file

@ -74,9 +74,7 @@ private:
QPointer<QGraphicsView> dragView; QPointer<QGraphicsView> dragView;
void stopWindowDrag(); void stopWindowDrag();
QPointF draggedWindowPos(const QPoint &screenPos, QPointF draggedWindowPos(const QPoint &screenPos, const QPointF &scenePos, const QPointF &buttonDownScenePos) const;
const QPointF &scenePos,
const QPointF &buttonDownScenePos) const;
void resizeScrollbar(qreal newZoneHeight); void resizeScrollbar(qreal newZoneHeight);
signals: signals: