From ffa8639ef84583cd0312a185f4a3509d2337c189 Mon Sep 17 00:00:00 2001 From: Pete Peterson <petersonpf@ornl.gov> Date: Thu, 16 Aug 2018 09:46:44 -0400 Subject: [PATCH] Insure that the main window is put on screen --- .../workbench/workbench/app/mainwindow.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/qt/applications/workbench/workbench/app/mainwindow.py b/qt/applications/workbench/workbench/app/mainwindow.py index 6e279d4444b..24e2a836c4c 100644 --- a/qt/applications/workbench/workbench/app/mainwindow.py +++ b/qt/applications/workbench/workbench/app/mainwindow.py @@ -262,12 +262,8 @@ class MainWindow(QMainWindow): # ----------------------- Layout --------------------------------- def setup_layout(self): - self.setup_for_first_run() - - def setup_for_first_run(self): """Assume this is a first run of the application and set layouts accordingly""" - desktop = QDesktopWidget() self.setup_default_layouts() def prep_window_for_reset(self): @@ -371,21 +367,34 @@ class MainWindow(QMainWindow): if hasattr(Qt, 'AA_EnableHighDpiScaling'): qapp.setAttribute(Qt.AA_EnableHighDpiScaling, settings.get('main/high_dpi_scaling')) - # restore window geometry + # get the saved window geometry window_size = settings.get('main/window/size') if not isinstance(window_size, QSize): window_size = QSize(*window_size) - self.resize(window_size) window_pos = settings.get('main/window/position') if not isinstance(window_pos, QPoint): window_pos = QPoint(*window_pos) + + # make sure main window is smaller than the desktop + desktop_size = QDesktopWidget().screenGeometry().size() + w = min(desktop_size.width(), window_size.width()) + h = min(desktop_size.height(), window_size.height()) + window_size = QSize(w, h) + + # and that it will be painted on screen + x = min(window_pos.x(), desktop_size.width() - window_size.width()) + y = min(window_pos.y(), desktop_size.height() - window_size.height()) + window_pos = QPoint(x, y) + + # set the geometry + self.resize(window_size) self.move(window_pos) # restore window state if settings.has('main/window/state'): self.restoreState(settings.get('main/window/state')) else: - self.setWindowState(Qt.WindowMaximized | Qt.WindowFullScreen) + self.setWindowState(Qt.WindowMaximized) def writeSettings(self, settings): settings.set('main/window/size', self.size()) # QSize -- GitLab