From 1ee0d46cb81d369a0e667e0bf956e958db8c515c Mon Sep 17 00:00:00 2001 From: trigg Date: Tue, 29 Sep 2020 18:50:16 +0100 Subject: [PATCH] - Check for multi-monitor capabilities, attempt to fallback --- discover_overlay/discord_connector.py | 1 - discover_overlay/draggable_window.py | 21 ++++++++++------ discover_overlay/overlay.py | 36 ++++++++++++++++++--------- discover_overlay/settings.py | 7 +++--- discover_overlay/text_settings.py | 16 ++++++------ discover_overlay/voice_settings.py | 16 ++++++------ 6 files changed, 60 insertions(+), 37 deletions(-) diff --git a/discover_overlay/discord_connector.py b/discover_overlay/discord_connector.py index 4541f5b..49248b2 100644 --- a/discover_overlay/discord_connector.py +++ b/discover_overlay/discord_connector.py @@ -148,7 +148,6 @@ class DiscordConnector: if j["evt"] == "READY": self.req_auth() elif j["evt"] == "VOICE_STATE_UPDATE": - print(j) self.list_altered = True thisuser = j["data"]["user"] un = j["data"]["user"]["username"] diff --git a/discover_overlay/draggable_window.py b/discover_overlay/draggable_window.py index 48a2c5c..c76418e 100644 --- a/discover_overlay/draggable_window.py +++ b/discover_overlay/draggable_window.py @@ -49,13 +49,20 @@ class DraggableWindow(Gtk.Window): self.set_decorated(False) self.set_keep_above(True) display = Gdk.Display.get_default() - monitor = display.get_monitor(self.monitor) - geometry = monitor.get_geometry() - scale_factor = monitor.get_scale_factor() - w = scale_factor * geometry.width - h = scale_factor * geometry.height - x = geometry.x - y = geometry.y + if "get_monitor" in dir(display): + monitor = display.get_monitor(self.monitor) + geometry = monitor.get_geometry() + scale_factor = monitor.get_scale_factor() + w = scale_factor * geometry.width + h = scale_factor * geometry.height + x = geometry.x + y = geometry.y + else: + screen = display.get_default_screen() + w = screen.width() + h = screen.height() + x = 0 + y = 0 #self.resize(400, h) self.move(self.x, self.y) self.resize(self.w, self.h) diff --git a/discover_overlay/overlay.py b/discover_overlay/overlay.py index 42373d6..b772b60 100644 --- a/discover_overlay/overlay.py +++ b/discover_overlay/overlay.py @@ -75,19 +75,31 @@ class OverlayWindow(Gtk.Window): self.set_decorated(False) self.set_keep_above(True) display = Gdk.Display.get_default() - monitor = display.get_monitor(self.monitor) - geometry = monitor.get_geometry() - scale_factor = monitor.get_scale_factor() - if not self.floating: - w = scale_factor * geometry.width - h = scale_factor * geometry.height - x = geometry.x - y = geometry.y - self.resize(w, h) - self.move(x, y) + if "get_monitor" in dir(display): + monitor = display.get_monitor(self.monitor) + geometry = monitor.get_geometry() + scale_factor = monitor.get_scale_factor() + if not self.floating: + w = scale_factor * geometry.width + h = scale_factor * geometry.height + x = geometry.x + y = geometry.y + self.resize(w, h) + self.move(x, y) + else: + self.move(self.x, self.y) + self.resize(self.w, self.h) else: - self.move(self.x, self.y) - self.resize(self.w, self.h) + if not self.floating: + screen = display.get_default_screen() + w = screen.width() + h = screen.height() + x = 0 + y = 0 + else: + self.move(self.x, self.y) + self.resize(self.w, self.h) + self.redraw() def redraw(self): diff --git a/discover_overlay/settings.py b/discover_overlay/settings.py index e5c21a2..4c405d8 100644 --- a/discover_overlay/settings.py +++ b/discover_overlay/settings.py @@ -38,9 +38,10 @@ class SettingsWindow(Gtk.Window): def get_monitor_index(self, name): display = Gdk.Display.get_default() - for i in range(0, display.get_n_monitors()): - if display.get_monitor(i).get_model() == name: - return i + if "get_n_monitors" in dir(display): + for i in range(0, display.get_n_monitors()): + if display.get_monitor(i).get_model() == name: + return i print("Could not find monitor : %s" % (name)) return 0 diff --git a/discover_overlay/text_settings.py b/discover_overlay/text_settings.py index 47e1fac..eddde0c 100644 --- a/discover_overlay/text_settings.py +++ b/discover_overlay/text_settings.py @@ -178,8 +178,9 @@ class TextSettingsWindow(SettingsWindow): monitor_store = Gtk.ListStore(str) display = Gdk.Display.get_default() - for i in range(0, display.get_n_monitors()): - monitor_store.append([display.get_monitor(i).get_model()]) + if "get_n_monitors" in dir(display): + for i in range(0, display.get_n_monitors()): + monitor_store.append([display.get_monitor(i).get_model()]) monitor = Gtk.ComboBox.new_with_model(monitor_store) monitor.set_active(self.get_monitor_index(self.monitor)) monitor.connect("changed", self.change_monitor) @@ -313,12 +314,13 @@ class TextSettingsWindow(SettingsWindow): def change_monitor(self, button): display = Gdk.Display.get_default() - mon = display.get_monitor(button.get_active()) - m_s = mon.get_model() - self.overlay.set_monitor(button.get_active()) + if "get_monitor" in dir(display): + mon = display.get_monitor(button.get_active()) + m_s = mon.get_model() + self.overlay.set_monitor(button.get_active()) - self.monitor = m_s - self.save_config() + self.monitor = m_s + self.save_config() def change_align_x(self, button): self.overlay.set_align_x(button.get_active() == 1) diff --git a/discover_overlay/voice_settings.py b/discover_overlay/voice_settings.py index f55e972..46c0c68 100644 --- a/discover_overlay/voice_settings.py +++ b/discover_overlay/voice_settings.py @@ -169,8 +169,9 @@ class VoiceSettingsWindow(SettingsWindow): monitor_store = Gtk.ListStore(str) display = Gdk.Display.get_default() - for i in range(0, display.get_n_monitors()): - monitor_store.append([display.get_monitor(i).get_model()]) + if "get_n_monitors" in dir(display): + for i in range(0, display.get_n_monitors()): + monitor_store.append([display.get_monitor(i).get_model()]) monitor = Gtk.ComboBox.new_with_model(monitor_store) monitor.set_active(self.get_monitor_index(self.monitor)) monitor.connect("changed", self.change_monitor) @@ -366,12 +367,13 @@ class VoiceSettingsWindow(SettingsWindow): def change_monitor(self, button): display = Gdk.Display.get_default() - mon = display.get_monitor(button.get_active()) - m_s = mon.get_model() - self.overlay.set_monitor(button.get_active()) + if "get_monitor" in dir(display): + mon = display.get_monitor(button.get_active()) + m_s = mon.get_model() + self.overlay.set_monitor(button.get_active()) - self.monitor = m_s - self.save_config() + self.monitor = m_s + self.save_config() def change_align_x(self, button): self.overlay.set_align_x(button.get_active() == 1)