From bb5ae999f5bc917ad1a7f0725fbe16bb9af2f0fb Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 21 Nov 2017 16:55:58 +0000 Subject: [PATCH] Vertically align RichResourceText painting in the centre with margins --- qrenderdoc/Code/QRDUtils.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/qrenderdoc/Code/QRDUtils.cpp b/qrenderdoc/Code/QRDUtils.cpp index 90da2baf1..fb329dbfc 100644 --- a/qrenderdoc/Code/QRDUtils.cpp +++ b/qrenderdoc/Code/QRDUtils.cpp @@ -227,6 +227,13 @@ void RichResourceTextPaint(QWidget *owner, QPainter *painter, QRect rect, QFont linkedText->doc.setTextWidth(rect.width()); linkedText->doc.setDefaultFont(font); + + // vertical align to the centre, if there's spare room. + int diff = rect.height() - linkedText->doc.size().height(); + + if(diff > 0) + painter->translate(0, diff / 2); + linkedText->doc.drawContents(painter); if(mouseOver) @@ -236,6 +243,8 @@ void RichResourceTextPaint(QWidget *owner, QPainter *painter, QRect rect, QFont QAbstractTextDocumentLayout *layout = linkedText->doc.documentLayout(); QPoint p = mousePos - rect.topLeft(); + if(diff > 0) + p -= QPoint(0, diff / 2); int pos = layout->hitTest(p, Qt::FuzzyHit); @@ -294,6 +303,12 @@ bool RichResourceTextMouseEvent(QWidget *owner, const QVariant &var, QRect rect, QPoint p = event->pos() - rect.topLeft(); + // vertical align to the centre, if there's spare room. + int diff = rect.height() - linkedText->doc.size().height(); + + if(diff > 0) + p -= QPoint(0, diff / 2); + int pos = layout->hitTest(p, Qt::FuzzyHit); if(pos >= 0)