Skip to content

Commit b63dc70

Browse files
committed
Fix #97
1 parent a35f19a commit b63dc70

5 files changed

Lines changed: 27 additions & 2 deletions

File tree

src/ui/ResizableRectItem.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class ResizableRectItem : public QGraphicsRectItem
4040
virtual QSizeF getMinSize() const { return QSizeF(1.0, 1.0); }
4141
virtual QSizeF getMaxSize() const { return QSizeF(std::numeric_limits<qreal>().max(), std::numeric_limits<qreal>().max()); }
4242

43-
void onScaleChanged(qreal scaleX, qreal scaleY);
43+
virtual void onScaleChanged(qreal scaleX, qreal scaleY);
4444
void mouseReleaseEventSelected();
4545

4646
virtual void notifyHandleSelected(ResizingHandle* /*handle*/) {}

src/ui/imageset/ImageEntry.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ void ImageEntry::notifyResizeFinished(QPointF newPos, QSizeF newSize)
6969
resized = true;
7070
}
7171

72+
void ImageEntry::onScaleChanged(qreal scaleX, qreal scaleY)
73+
{
74+
ResizableRectItem::onScaleChanged(scaleX, scaleY);
75+
label->onScaleChanged(scaleX, scaleY);
76+
}
77+
7278
void ImageEntry::loadFromElement(const QDomElement& xml)
7379
{
7480
setName(xml.attribute("name", "Unknown"));

src/ui/imageset/ImageEntry.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class ImageEntry : public ResizableRectItem
2020
virtual QRectF constrainResizeRect(QRectF rect, QRectF oldRect) override;
2121
virtual void notifyResizeStarted() override;
2222
virtual void notifyResizeFinished(QPointF newPos, QSizeF newSize) override;
23+
virtual void onScaleChanged(qreal scaleX, qreal scaleY) override;
2324

2425
void loadFromElement(const QDomElement& xml);
2526
void saveToElement(QDomElement& xml);

src/ui/imageset/ImageLabel.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,30 @@
66
ImageLabel::ImageLabel(QGraphicsItem* parent)
77
: QGraphicsTextItem(parent)
88
{
9-
setFlags(ItemIgnoresTransformations);
109
setOpacity(0.8);
1110
setVisible(false);
1211
setPlainText("Unknown");
1312

1413
// We make the label a lot more transparent when mouse is over it to make it easier
1514
// to work around the top edge of the image
1615
setAcceptHoverEvents(true);
16+
17+
setY(-boundingRect().height() - 2.0);
18+
}
19+
20+
void ImageLabel::onScaleChanged(qreal scaleX, qreal scaleY)
21+
{
22+
auto tfm = transform();
23+
24+
const qreal counterScaleX = (1.0 / scaleX);
25+
const qreal counterScaleY = (1.0 / scaleY);
26+
27+
tfm = QTransform(counterScaleX, tfm.m12(), tfm.m13(),
28+
tfm.m21(), counterScaleY, tfm.m23(),
29+
tfm.m31(), tfm.m32(), tfm.m33());
30+
31+
setTransform(tfm);
32+
setY((-boundingRect().height() - 2.0) * counterScaleY);
1733
}
1834

1935
void ImageLabel::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)

src/ui/imageset/ImageLabel.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class ImageLabel : public QGraphicsTextItem
1212

1313
ImageLabel(QGraphicsItem* parent = nullptr);
1414

15+
void onScaleChanged(qreal scaleX, qreal scaleY);
16+
1517
protected:
1618

1719
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override;

0 commit comments

Comments
 (0)