From ad6680553c643bbb9f7d2b9d3c53127e09667e9a Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 26 Nov 2014 10:46:47 -0800 Subject: [PATCH] snap cursor to center of HMD tools dialog when shown, or app when the dialog is hidden --- interface/src/ui/HMDToolsDialog.cpp | 15 +++++++++++++++ interface/src/ui/HMDToolsDialog.h | 7 +++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/HMDToolsDialog.cpp b/interface/src/ui/HMDToolsDialog.cpp index 70d5d836fc..141b0d61ad 100644 --- a/interface/src/ui/HMDToolsDialog.cpp +++ b/interface/src/ui/HMDToolsDialog.cpp @@ -170,4 +170,19 @@ void HMDToolsDialog::closeEvent(QCloseEvent* event) { emit closed(); } +void HMDToolsDialog::centerCursorOnWidget(QWidget* widget) { + QWindow* window = widget->windowHandle(); + QScreen* screen = window->screen(); + QPoint windowCenter = window->geometry().center(); + QCursor::setPos(screen, windowCenter); +} + +void HMDToolsDialog::showEvent(QShowEvent* event) { + centerCursorOnWidget(this); +} + +void HMDToolsDialog::hideEvent(QHideEvent* event) { + centerCursorOnWidget(Application::getInstance()->getWindow()); +} + diff --git a/interface/src/ui/HMDToolsDialog.h b/interface/src/ui/HMDToolsDialog.h index c2a36f5a30..f1a5f582cd 100644 --- a/interface/src/ui/HMDToolsDialog.h +++ b/interface/src/ui/HMDToolsDialog.h @@ -35,10 +35,13 @@ public slots: void applicationWindowScreenChanged(QScreen* screen); protected: - // Emits a 'closed' signal when this dialog is closed. - void closeEvent(QCloseEvent*); + virtual void closeEvent(QCloseEvent*); // Emits a 'closed' signal when this dialog is closed. + virtual void showEvent(QShowEvent* event); + virtual void hideEvent(QHideEvent* event); private: + void centerCursorOnWidget(QWidget* widget); + bool _wasMoved; QRect _previousRect; QScreen* _previousScreen;