fixup! Port UI to GTK 4

This commit is contained in:
coderkun 2023-11-26 14:51:30 +01:00
parent 15f8f67de9
commit 26beefa7f3
4 changed files with 21 additions and 26 deletions

View file

@ -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;

View file

@ -41,6 +41,7 @@
<property name="valign">fill</property>
<child>
<object class="GtkViewport" id="cover_box">
<property name="name">cover_box</property>
<property name="hexpand">true</property>
<property name="halign">fill</property>
<property name="vexpand">true</property>
@ -53,9 +54,6 @@
<property name="valign">fill</property>
<property name="icon-name">image-x-generic-symbolic</property>
<property name="icon-size">large</property>
<!--
<signal name="button-press-event" handler="on_cover_box_pressed" swapped="no"/>
-->
</object>
</child>
</object>
@ -81,9 +79,6 @@
<property name="transition-type">slide-right</property>
<property name="name">cover_info_revealer</property>
<style>
<!--
<class name="sidebar"/>
-->
<class name="background"/>
</style>
<child>

View file

@ -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)

View file

@ -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):