summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2013-12-19 16:57:29 +0100
committerSimon Rettberg2013-12-19 16:57:29 +0100
commite2c71c3844de35f20b9c7af8c513c993cf06cebb (patch)
treec4e81bf3483a1458766cbd915187d303218998d8
parentAdd support for a session start script that gets run right before the session... (diff)
downloadvmchooser-e2c71c3844de35f20b9c7af8c513c993cf06cebb.tar.gz
vmchooser-e2c71c3844de35f20b9c7af8c513c993cf06cebb.tar.xz
vmchooser-e2c71c3844de35f20b9c7af8c513c993cf06cebb.zip
Check if the window is still centered once a second and move it if neccessary.
This is needed to account for resolution changes while the vmChooser is being displayed.
-rw-r--r--src/dialog.cpp20
-rw-r--r--src/dialog.h4
-rw-r--r--src/main.cpp2
3 files changed, 25 insertions, 1 deletions
diff --git a/src/dialog.cpp b/src/dialog.cpp
index 21c5620..8ff215e 100644
--- a/src/dialog.cpp
+++ b/src/dialog.cpp
@@ -5,6 +5,8 @@
#include <QRegExp>
#include <QFile>
#include <QProcess>
+#include <QTimer>
+#include <QDesktopWidget>
#include "ui_dialog.h"
#include "save_restore_session.h"
@@ -18,6 +20,13 @@ Dialog::Dialog(QWidget *parent)
pvsSettings_ = NULL;
ui->PVSOptionsGroupBox->hide();
+
+ // Re-center dialog every second to account for resolution changes
+ QRect desktopRect = QApplication::desktop()->availableGeometry(this);
+ oldCenter_ = desktopRect.center();
+ centerTimer_ = new QTimer(this);
+ connect(centerTimer_, SIGNAL(timeout()), this, SLOT(on_centerTimer()));
+ centerTimer_->start(1000);
}
Dialog::~Dialog() {
@@ -212,3 +221,14 @@ void Dialog::setTheme() {
ui->label_l->setStyleSheet(label_l_style);
ui->label_r->setStyleSheet(label_r_style);
}
+
+void Dialog::on_centerTimer() {
+ // center dialog on primary screen
+ QRect desktopRect = QApplication::desktop()->availableGeometry(this);
+ QPoint center = desktopRect.center();
+ if (center != oldCenter_) {
+ this->move(center.x() - this->width() / 2, center.y() - this->height() / 2);
+ oldCenter_ = center;
+ }
+}
+
diff --git a/src/dialog.h b/src/dialog.h
index 805ed08..cc3627a 100644
--- a/src/dialog.h
+++ b/src/dialog.h
@@ -11,6 +11,7 @@
namespace Ui {
class Dialog;
}
+class QTimer;
class Dialog : public QDialog {
Q_OBJECT
@@ -30,6 +31,8 @@ class Dialog : public QDialog {
Ui::Dialog *ui;
SessionTreeModel *model_;
QSettings *pvsSettings_;
+ QPoint oldCenter_;
+ QTimer *centerTimer_;
void readPVSSettings();
void writePVSSettings();
@@ -39,6 +42,7 @@ class Dialog : public QDialog {
void on_pushButtonStart_clicked();
void on_pushButtonAbort_clicked();
void on_treeView_activated(QModelIndex index);
+ void on_centerTimer();
};
#endif // DIALOG_H
diff --git a/src/main.cpp b/src/main.cpp
index 774f166..e5b8ce5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -220,7 +220,7 @@ int main(int argc, char *argv[]) {
w.selectSession(defaultSession);
w.show();
- // center dialog on screen
+ // center dialog on primary screen
QRect desktopRect = QApplication::desktop()->availableGeometry(&w);
QPoint center = desktopRect.center();
w.move(center.x()-w.width()*0.5, center.y()-w.height()*0.5);