made lyrics button always visible

This commit is contained in:
Martin Wagner
2020-06-10 22:09:23 +02:00
parent 7ad93a0943
commit d198c3a9f1

View File

@@ -1821,7 +1821,6 @@ class CoverLyricsOSD(Gtk.Overlay):
self.client=client self.client=client
self.settings=settings self.settings=settings
self.window=window self.window=window
self.hide_timeout_id=None
#cover #cover
self.cover=MainCover(self.client, self.settings, self.window) self.cover=MainCover(self.client, self.settings, self.window)
@@ -1829,70 +1828,45 @@ class CoverLyricsOSD(Gtk.Overlay):
#lyrics button #lyrics button
self.lyrics_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("media-view-subtitles-symbolic", Gtk.IconSize.BUTTON)) self.lyrics_button=Gtk.Button(image=Gtk.Image.new_from_icon_name("media-view-subtitles-symbolic", Gtk.IconSize.BUTTON))
self.lyrics_button.set_label(_("Show lyrics")) self.lyrics_button.set_tooltip_text(_("Show lyrics"))
self.lyrics_button.set_margin_top(12)
style_context=self.lyrics_button.get_style_context() style_context=self.lyrics_button.get_style_context()
style_context.add_class("osd") style_context.add_class("circular")
#revealer #revealer
self.revealer=Gtk.Revealer() #workaround to get tooltips in overlay
self.revealer.set_halign(3) revealer=Gtk.Revealer()
self.revealer.set_valign(1) revealer.set_halign(2)
self.revealer.add(self.lyrics_button) revealer.set_valign(1)
revealer.set_margin_top(6)
revealer.set_margin_end(6)
revealer.add(self.lyrics_button)
revealer.set_reveal_child(True)
#event box #event box
self.event_box=Gtk.EventBox() self.event_box=Gtk.EventBox()
self.event_box.set_events(Gdk.EventMask.POINTER_MOTION_MASK)
self.event_box.add(self.cover) self.event_box.add(self.cover)
#packing #packing
self.add(self.event_box) self.add(self.event_box)
self.add_overlay(self.revealer) self.add_overlay(revealer)
#connect #connect
self.lyrics_button.connect("clicked", self.on_lyrics_clicked) self.lyrics_button.connect("clicked", self.on_lyrics_clicked)
self.motion_notify_event=self.event_box.connect("motion-notify-event", self.on_motion_notify_event)
self.lyrics_button.connect("enter-notify-event", self.on_enter_notify_event)
self.lyrics_button.connect("leave-notify-event", self.on_leave_notify_event)
self.client.emitter.connect("disconnected", self.on_disconnected) self.client.emitter.connect("disconnected", self.on_disconnected)
self.client.emitter.connect("reconnected", self.on_reconnected) self.client.emitter.connect("reconnected", self.on_reconnected)
self.event_box.handler_block(self.motion_notify_event)
def on_reconnected(self, *args): def on_reconnected(self, *args):
self.event_box.handler_unblock(self.motion_notify_event) self.lyrics_button.set_sensitive(True)
def on_disconnected(self, *args): def on_disconnected(self, *args):
self.lyrics_button.set_sensitive(False)
self.cover.clear() self.cover.clear()
self.event_box.handler_block(self.motion_notify_event)
self.hide_lyrics_button()
try: try:
self.lyrics_win.destroy() self.lyrics_win.destroy()
except: except:
pass pass
def hide_lyrics_button(self, *args):
self.revealer.set_reveal_child(False)
self.hide_timeout_id=None
return False
def on_motion_notify_event(self, *args):
self.revealer.set_reveal_child(True)
if not self.hide_timeout_id == None:
GLib.source_remove(self.hide_timeout_id)
self.hide_timeout_id=GLib.timeout_add(1000, self.hide_lyrics_button)
def on_enter_notify_event(self, *args):
if not self.hide_timeout_id == None:
GLib.source_remove(self.hide_timeout_id)
self.hide_timeout_id=None
def on_leave_notify_event(self, *args):
if not self.hide_timeout_id == None:
GLib.source_remove(self.hide_timeout_id)
self.hide_timeout_id=GLib.timeout_add(1000, self.hide_lyrics_button)
def on_lyrics_clicked(self, widget): def on_lyrics_clicked(self, widget):
self.hide_lyrics_button()
self.lyrics_win=LyricsWindow(self.client, self.settings) self.lyrics_win=LyricsWindow(self.client, self.settings)
self.add_overlay(self.lyrics_win) self.add_overlay(self.lyrics_win)