- Correctly give up gamescope xatom if no overlays have contents
This commit is contained in:
parent
a1fa03d0a5
commit
fece29c496
4 changed files with 45 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue