diff options
-rw-r--r-- | Swift/QtUI/QtChatTabs.cpp | 10 | ||||
-rw-r--r-- | Swift/QtUI/Trellis/QtGridSelectionDialog.cpp | 11 | ||||
-rw-r--r-- | Swift/QtUI/Trellis/QtGridSelectionDialog.h | 2 |
3 files changed, 15 insertions, 8 deletions
diff --git a/Swift/QtUI/QtChatTabs.cpp b/Swift/QtUI/QtChatTabs.cpp index 3241858..de9d2d2 100644 --- a/Swift/QtUI/QtChatTabs.cpp +++ b/Swift/QtUI/QtChatTabs.cpp @@ -19,6 +19,7 @@ #include <QTabBar> #include <QTabWidget> #include <QtGlobal> +#include <QWindow> #include <Swiften/Base/Log.h> @@ -372,9 +373,16 @@ void QtChatTabs::flash() { void QtChatTabs::handleOpenLayoutChangeDialog() { disconnect(gridSelectionDialog_, SIGNAL(currentGridSizeChanged(QSize)), dynamicGrid_, SLOT(setDimensions(QSize))); gridSelectionDialog_->setCurrentGridSize(dynamicGrid_->getDimension()); - gridSelectionDialog_->move(QCursor::pos()); + + int screen = QApplication::desktop()->screenNumber(QCursor::pos()); + QPoint center = QApplication::desktop()->screenGeometry(screen).center(); + gridSelectionDialog_->move(center); + connect(gridSelectionDialog_, SIGNAL(currentGridSizeChanged(QSize)), dynamicGrid_, SLOT(setDimensions(QSize))); gridSelectionDialog_->show(); + + QPoint pos(gridSelectionDialog_->getFrameSize().width() / 2, gridSelectionDialog_->getFrameSize().height() / 2); + QCursor::setPos(gridSelectionDialog_->windowHandle()->screen(), gridSelectionDialog_->mapToGlobal(QPoint(gridSelectionDialog_->width(), gridSelectionDialog_->height()) - pos)); } void QtChatTabs::storeTabPositions() { diff --git a/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp b/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp index 1ca1953..fb9734d 100644 --- a/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp +++ b/Swift/QtUI/Trellis/QtGridSelectionDialog.cpp @@ -68,6 +68,10 @@ QSize QtGridSelectionDialog::getMaxGridSize() const { return maxGridSize; } +QSize QtGridSelectionDialog::getFrameSize() const { + return frameSize; +} + void QtGridSelectionDialog::keyReleaseEvent(QKeyEvent* event) { if (event) { QSize newGridSize = currentGridSize; @@ -133,13 +137,6 @@ void QtGridSelectionDialog::paintEvent(QPaintEvent*) { } 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; - // Apply the above offset to the global cursor position (which was positioned at a known position before showing the widget): - QPoint pos = QCursor::pos(); - pos.rx() += xPos; - pos.ry() += yPos; - QCursor::setPos(pos); setMouseTracking(true); } diff --git a/Swift/QtUI/Trellis/QtGridSelectionDialog.h b/Swift/QtUI/Trellis/QtGridSelectionDialog.h index 557963d..3ccba55 100644 --- a/Swift/QtUI/Trellis/QtGridSelectionDialog.h +++ b/Swift/QtUI/Trellis/QtGridSelectionDialog.h @@ -29,6 +29,8 @@ namespace Swift { void setMaxGridSize(const QSize& size); QSize getMaxGridSize() const; + QSize getFrameSize() const; + signals: void currentGridSizeChanged(QSize); void minGridSizeChanged(QSize); |