diff options
author | Tobias Markmann <tm@ayena.de> | 2016-08-18 16:06:27 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2016-08-18 16:11:50 (GMT) |
commit | a9599ff4edfdc0186b2f5ae3bd22f25cdeb686d1 (patch) | |
tree | 499cd58ab34ac88765ed4072c5c44f19537f4242 /Swift/QtUI | |
parent | 55a977f2a4dcda32f01dab3bb673d808e9d3f3c6 (diff) | |
download | swift-a9599ff4edfdc0186b2f5ae3bd22f25cdeb686d1.zip swift-a9599ff4edfdc0186b2f5ae3bd22f25cdeb686d1.tar.bz2 |
Tweak grid selection dialog rendering
Recent testing on Debian 8 showed two rendering issues:
1. CE_MenuBarItem in the selected state shows drawing
artifacts for our drawing size with Debian's default style.
2. CE_SizeGrip shows drawing artifacts unless it's drawn
at position (0,0).
Removed size grip as the resizability signification is also
provided by the description text. Cells are drawn as simple
squares in the palette's highlight color.
Test-Information:
Verified that there are no artifacts and the dialog is usable
on Debian 8, Windows 8 and OS X 10.11.6.
Change-Id: I9eaf1e1fd34d035ec3dffcb0dc29efca40d6da24
Diffstat (limited to 'Swift/QtUI')
-rw-r--r-- | Swift/QtUI/Trellis/QtGridSelectionDialog.cpp | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp b/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp index 6bddb34..f03d0ec 100644 --- a/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp +++ b/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp @@ -11,9 +11,7 @@ #include <QPaintEvent> #include <QPainter> #include <QStyle> -#include <QStyleOptionFrame> -#include <QStyleOptionMenuItem> -#include <QStyleOptionSizeGrip> +#include <QStyleOption> namespace Swift { @@ -106,18 +104,16 @@ void QtGridSelectionDialog::mousePressEvent(QMouseEvent*) { void QtGridSelectionDialog::paintEvent(QPaintEvent*) { QPainter painter(this); - QStyleOptionMenuItem option; - option.state = QStyle::State_Enabled | QStyle::State_Selected | QStyle::State_Sunken; - option.menuRect = QRect(QPoint(0,0), frameSize); - // draw grid + QRect gridCell = QRect(QPoint(0,0), frameSize); + painter.setBrush(palette().highlight()); + painter.setPen(Qt::NoPen); for (int x = 0; x < currentGridSize.width(); x++) { for (int y = 0; y < currentGridSize.height(); y++) { int xPos = horizontalMargin + (x * (frameSize.width() + padding)); int yPos = verticalMargin + (y * (frameSize.height() + padding)); - option.menuRect.moveTo(QPoint(xPos, yPos)); - option.rect = option.menuRect; - style()->drawControl(QStyle::CE_MenuBarItem, &option, &painter, nullptr); + gridCell.moveTo(QPoint(xPos, yPos)); + painter.drawRect(gridCell); } } @@ -126,15 +122,10 @@ void QtGridSelectionDialog::paintEvent(QPaintEvent*) { auto descriptionBB = fontMetrics.boundingRect(QRect(0,0, width() - 2 * horizontalMargin,0), Qt::AlignHCenter | Qt::AlignTop | Qt::TextWordWrap, descriptionText, 0, 0); QStyleOption opt; + opt.initFrom(this); int textY = verticalMargin + (currentGridSize.height() * (frameSize.height() + padding)); int textX = (size().width() - descriptionBB.width()) / 2; style()->drawItemText(&painter, QRect(textX, textY, descriptionBB.width(), descriptionBB.height()), Qt::AlignHCenter | Qt::AlignTop | Qt::TextWordWrap, opt.palette, true, descriptionText, foregroundRole()); - - // draw size grip at bottom right corner; - QStyleOptionSizeGrip sizeGripOption; - sizeGripOption.init(this); - sizeGripOption.corner = Qt::BottomRightCorner; - style()->drawControl(QStyle::CE_SizeGrip, &sizeGripOption, &painter, this); } void QtGridSelectionDialog::showEvent(QShowEvent*) { |