diff options
Diffstat (limited to 'Swift/QtUI/Trellis')
-rw-r--r-- | Swift/QtUI/Trellis/QtGridSelectionDialog.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp b/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp index 30248b0..3bcdfa0 100644 --- a/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp +++ b/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp @@ -1,37 +1,36 @@ /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <Swift/QtUI/Trellis/QtGridSelectionDialog.h> -#include <QStyle> #include <QPaintEvent> #include <QPainter> +#include <QStyle> #include <QStyleOptionFrame> #include <QStyleOptionMenuItem> +#include <QStyleOptionSizeGrip> namespace Swift { -QtGridSelectionDialog::QtGridSelectionDialog(QWidget* parent) : QWidget(parent) -{ +QtGridSelectionDialog::QtGridSelectionDialog(QWidget* parent) : QWidget(parent) { frameSize = QSize(23,23) * 2; maxGridSize = QSize(7,7); minGridSize = QSize(1,1); currentGridSize = QSize(1,1); padding = 4; setWindowFlags(Qt::Popup); - horizontalMargin = style()->pixelMetric(QStyle::PM_MenuVMargin); - verticalMargin = style()->pixelMetric(QStyle::PM_MenuVMargin); setCursor(Qt::SizeAllCursor); + horizontalMargin = style()->pixelMetric(QStyle::PM_MenuVMargin) * 2; + verticalMargin = style()->pixelMetric(QStyle::PM_MenuVMargin) * 2; } -QSize QtGridSelectionDialog::sizeHint() const -{ +QSize QtGridSelectionDialog::sizeHint() const { // PM_MenuVMargin | frameSize | ( padding | frameSize ) * | PM_MenuVMargin int width = horizontalMargin + frameSize.width() + (padding + frameSize.width()) * (currentGridSize.width() - 1) + horizontalMargin; int height = verticalMargin + frameSize.height() + (padding + frameSize.height()) * (currentGridSize.height() - 1) + verticalMargin; return QSize(width, height); } @@ -104,12 +103,17 @@ void QtGridSelectionDialog::paintEvent(QPaintEvent*) { int yPos = verticalMargin + (y * (frameSize.height() + padding)); option.menuRect.moveTo(QPoint(xPos, yPos)); option.rect = option.menuRect; style()->drawControl(QStyle::CE_MenuItem, &option, &painter, 0); } } + + QStyleOptionSizeGrip sizeGripOption; + sizeGripOption.init(this); + sizeGripOption.corner = Qt::BottomRightCorner; + style()->drawControl(QStyle::CE_SizeGrip, &sizeGripOption, &painter, this); } void QtGridSelectionDialog::showEvent(QShowEvent*) { int xPos = horizontalMargin + frameSize.width() + (padding + frameSize.width()) * (currentGridSize.width() - 1) - frameSize.width()/2; int yPos = verticalMargin + frameSize.height() + (padding + frameSize.height()) * (currentGridSize.height() - 1) - frameSize.height()/2; QCursor::setPos(mapToGlobal(QPoint(xPos, yPos))); |