diff --git a/data/gtk.css b/data/gtk.css index b5d1b6d..3a04426 100644 --- a/data/gtk.css +++ b/data/gtk.css @@ -30,6 +30,10 @@ font-weight:bold; } +window.fullscreen #cover_box { + background: black; +} + #cover_info_revealer { background-color:alpha(@theme_bg_color, 0.8); box-shadow:0 0 10px @theme_bg_color; diff --git a/data/ui/cover-panel.ui b/data/ui/cover-panel.ui index e41148b..766723c 100644 --- a/data/ui/cover-panel.ui +++ b/data/ui/cover-panel.ui @@ -41,6 +41,7 @@ fill + cover_box true fill true @@ -53,9 +54,6 @@ fill image-x-generic-symbolic large - @@ -81,9 +79,6 @@ slide-right cover_info_revealer diff --git a/src/coverpanel.py b/src/coverpanel.py index a3adb52..13dbf8b 100644 --- a/src/coverpanel.py +++ b/src/coverpanel.py @@ -63,6 +63,11 @@ class CoverPanel(Gtk.Overlay): # Initial actions GObject.idle_add(self._enable_tracklist) + # Click handler for image + clickController = Gtk.GestureClick() + clickController.connect('pressed', self.on_cover_box_pressed) + self.cover_box.add_controller(clickController) + def get_toolbar(self): return self.toolbar @@ -72,11 +77,9 @@ class CoverPanel(Gtk.Overlay): pass - # FIXME on_cover_box_pressed() - #@Gtk.Template.Callback() - #def on_cover_box_pressed(self, widget, event): - # if self._current_album and event.type == Gdk.EventType._2BUTTON_PRESS: - # self.emit('toggle-fullscreen') + def on_cover_box_pressed(self, widget, npress, x, y): + if self._current_album and npress == 2: + self.emit('toggle-fullscreen') def set_width(self, width): @@ -150,13 +153,12 @@ class CoverPanel(Gtk.Overlay): def set_fullscreen(self, active): if active: self.info_revealer.set_reveal_child(False) - self.cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1)) GObject.idle_add(self._resize_image) self._fullscreened = True else: self._fullscreened = False - self.info_revealer.set_reveal_child(True) - self.cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 0)) + if self._current_album: + self.info_revealer.set_reveal_child(True) GObject.idle_add(self._resize_image) @@ -171,7 +173,6 @@ class CoverPanel(Gtk.Overlay): self._cover_pixbuf = None else: # Reset image - self._cover_pixbuf = self._get_default_image() self._cover_pixbuf = None self._current_size = None self._current_cover_album = album @@ -205,7 +206,8 @@ class CoverPanel(Gtk.Overlay): def _enable_tracklist(self): if self._current_album: # enable - self.info_revealer.set_reveal_child(True) + if not self._fullscreened: + self.info_revealer.set_reveal_child(True) else: # disable self.info_revealer.set_reveal_child(False) diff --git a/src/window.py b/src/window.py index a438b6f..c10e85e 100644 --- a/src/window.py +++ b/src/window.py @@ -230,7 +230,7 @@ class Window(Adw.ApplicationWindow): def on_menu_toggle_fullscreen(self, action, value): - self.panel_stack.set_visible_child(self.cover_panel_page) + self.panel_stack.set_visible_child(self._cover_panel) if not self._state.get_property(WindowState.IS_FULLSCREENED): self.fullscreen() else: @@ -259,7 +259,7 @@ class Window(Adw.ApplicationWindow): def on_fullscreened(self, widget, fullscreened): - self._fullscreen(fullscreened is True) + self._fullscreen(self.is_fullscreen()) # HeaderBar callbacks @@ -544,17 +544,11 @@ class Window(Adw.ApplicationWindow): if self._state.get_property(WindowState.IS_FULLSCREENED): self.headerbar.hide() self._cover_panel.set_fullscreen(True) - # Hide cursor - self.get_window().set_cursor( - Gdk.Cursor.new_from_name(Gdk.Display.get_default(), "none") - ) + self.set_cursor(Gdk.Cursor.new_from_name("none", None)) else: self.headerbar.show() self._cover_panel.set_fullscreen(False) - # Reset cursor - self.get_window().set_cursor( - Gdk.Cursor.new_from_name(Gdk.Display.get_default(), "default") - ) + self.set_cursor(Gdk.Cursor.new_from_name("default", None)) def _save_visible_panel(self):