diff --git a/discover_overlay/notification_overlay.py b/discover_overlay/notification_overlay.py index 7333be3..dba3b5b 100644 --- a/discover_overlay/notification_overlay.py +++ b/discover_overlay/notification_overlay.py @@ -258,6 +258,15 @@ class NotificationOverlayWindow(OverlayWindow): text_height = icon_width return text_height + (self.border_radius*4) + self.padding + def has_content(self): + if not self.enabled: + return False + if self.hidden: + return False + if self.testing: + return self.test_content + return self.content + def overlay_draw(self, _w, context, data=None): """ Draw the overlay diff --git a/discover_overlay/overlay.py b/discover_overlay/overlay.py index 6bcae14..bd0fd8f 100644 --- a/discover_overlay/overlay.py +++ b/discover_overlay/overlay.py @@ -66,7 +66,7 @@ class OverlayWindow(Gtk.Window): self.hidden = False self.enabled = False self.set_size_request(50, 50) - self.connect('draw', self.overlay_draw) + self.connect('draw', self.overlay_draw_pre) # Set RGBA screen = self.get_screen() visual = screen.get_rgba_visual() @@ -86,6 +86,8 @@ class OverlayWindow(Gtk.Window): self.set_decorated(True) self.set_accept_focus(False) self.set_wayland_state() + self.piggyback = None + self.piggyback_parent = None if not piggyback: self.show_all() if discover.steamos: @@ -97,14 +99,14 @@ class OverlayWindow(Gtk.Window): self.force_xshape = False self.context = None self.autohide = False - self.piggyback = None - self.piggyback_parent = None if piggyback: self.set_piggyback(piggyback) self.get_screen().connect("composited-changed", self.check_composite) def set_gamescope_xatom(self, enabled): + if self.piggyback_parent: + return display = Display() atom = display.intern_atom("GAMESCOPE_EXTERNAL_OVERLAY") opaq = display.intern_atom("_NET_WM_WINDOW_OPACITY") @@ -143,6 +145,21 @@ class OverlayWindow(Gtk.Window): other_overlay.piggyback = self self.piggyback_parent = other_overlay + def has_content(self): + return False + + def overlay_draw_pre(self, _w, context, data=None): + content = self.has_content() + if self.piggyback and self.piggyback.has_content(): + content = True + if self.discover.steamos: + if not content: + self.set_gamescope_xatom(0) + else: + if not self.hidden and self.enabled: + self.set_gamescope_xatom(1) + self.overlay_draw(_w, context, data) + def overlay_draw(self, _w, context, data=None): """ Draw overlay diff --git a/discover_overlay/text_overlay.py b/discover_overlay/text_overlay.py index d41b911..fdad57e 100644 --- a/discover_overlay/text_overlay.py +++ b/discover_overlay/text_overlay.py @@ -194,6 +194,13 @@ class TextOverlayWindow(OverlayWindow): self.attachment[identifier] = pix self.needsredraw = True + def has_content(self): + if not self.enabled: + return False + if self.hidden: + return False + return self.content + def overlay_draw(self, w, context, data=None): """ Draw the overlay diff --git a/discover_overlay/voice_overlay.py b/discover_overlay/voice_overlay.py index 35ef2f7..cc7df01 100644 --- a/discover_overlay/voice_overlay.py +++ b/discover_overlay/voice_overlay.py @@ -434,6 +434,15 @@ class VoiceOverlayWindow(OverlayWindow): in_list.sort(key=lambda x: locale.strxfrm(x['friendlyname'])) return in_list + def has_content(self): + if not self.enabled: + return False + if self.hidden: + return False + if self.use_dummy: + return True + return self.userlist + def overlay_draw(self, w, context, data=None): """ Draw the Overlay