From e9a899a9fab0d49d13f44f871fb42f49d650605b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 17 Feb 2020 09:49:39 +0530 Subject: [PATCH] Fix for viewer window going off screen even when not restoring window geometry --- src/calibre/gui2/__init__.py | 4 +++- src/calibre/gui2/viewer/ui.py | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 87534b996d..cc2540d20f 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -978,13 +978,15 @@ class Application(QApplication): if not geom: return restored = widget.restoreGeometry(geom) + return restored + + def ensure_window_on_screen(self, widget): screen_rect = self.desktop().availableGeometry(widget) if not widget.geometry().intersects(screen_rect): w = min(widget.width(), screen_rect.width() - 10) h = min(widget.height(), screen_rect.height() - 10) widget.resize(w, h) widget.move((screen_rect.width() - w) // 2, (screen_rect.height() - h) // 2) - return restored def setup_ui_font(self): f = QFont(QApplication.font()) diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 4f486a736d..5efbad2fa9 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -537,6 +537,8 @@ class EbookViewer(MainWindow): geom = vprefs['main_window_geometry'] if geom and get_session_pref('remember_window_geometry', default=False): QApplication.instance().safe_restore_geometry(self, geom) + else: + QApplication.instance().ensure_window_on_screen(self) if state: self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION) self.inspector_dock.setVisible(False)