removed custom keyboard focus indication

This commit is contained in:
Martin Wagner 2021-10-23 09:42:57 +02:00
parent 7aacf9b064
commit a6ad83758c

View File

@ -1402,48 +1402,6 @@ class AutoSizedIcon(Gtk.Image):
super().__init__(icon_name=icon_name) super().__init__(icon_name=icon_name)
settings.bind(settings_key, self, "pixel-size", Gio.SettingsBindFlags.GET) settings.bind(settings_key, self, "pixel-size", Gio.SettingsBindFlags.GET)
class FocusFrame(Gtk.Overlay):
def __init__(self):
super().__init__()
self._frame=Gtk.Frame(no_show_all=True)
# css
style_context=self._frame.get_style_context()
provider=Gtk.CssProvider()
css=b"""* {border-color: @theme_selected_bg_color; border-width: 0px; border-top-width: 3px;}"""
provider.load_from_data(css)
style_context.add_provider(provider, 600)
self.add_overlay(self._frame)
self.set_overlay_pass_through(self._frame, True)
def disable(self):
self._frame.hide()
def enable(self):
if self._widget.has_focus():
self._frame.show()
def set_widget(self, widget):
self._widget=widget
self._widget.connect("focus-in-event", lambda *args: self._frame.show())
self._widget.connect("focus-out-event", lambda *args: self._frame.hide())
class ScrolledFocusFrame(FocusFrame):
def __init__(self, widget):
super().__init__()
self.set_widget(widget)
# scroll
scroll=Gtk.ScrolledWindow()
scroll.add(widget)
# allow hide/show without .show_all()
scroll.set_visible(True)
widget.set_visible(True)
self.add(scroll)
class SongPopover(Gtk.Popover): class SongPopover(Gtk.Popover):
def __init__(self, client, show_buttons=True): def __init__(self, client, show_buttons=True):
super().__init__() super().__init__()
@ -1655,14 +1613,12 @@ class SongsWindow(Gtk.Box):
# packing # packing
if popover_mode: if popover_mode:
self.pack_end(button_box, False, False, 0) self.pack_end(button_box, False, False, 0)
frame=Gtk.Frame() frame=Gtk.Frame(child=self._scroll)
self.pack_start(frame, True, True, 0)
else: else:
self._action_bar.pack_start(button_box) self._action_bar.pack_start(button_box)
self.pack_end(self._action_bar, False, False, 0) self.pack_end(self._action_bar, False, False, 0)
frame=FocusFrame() self.pack_start(self._scroll, True, True, 0)
frame.set_widget(self._songs_view)
frame.add(self._scroll)
self.pack_start(frame, True, True, 0)
def get_treeview(self): def get_treeview(self):
return self._songs_view return self._songs_view
@ -2317,9 +2273,9 @@ class AlbumLoadingThread(threading.Thread):
return False return False
GLib.idle_add(callback) GLib.idle_add(callback)
class AlbumWindow(FocusFrame): class AlbumWindow(Gtk.Box):
def __init__(self, client, settings, artist_window): def __init__(self, client, settings, artist_window):
super().__init__() super().__init__(orientation=Gtk.Orientation.VERTICAL)
self._settings=settings self._settings=settings
self._client=client self._client=client
self._artist_window=artist_window self._artist_window=artist_window
@ -2361,11 +2317,8 @@ class AlbumWindow(FocusFrame):
self._artist_window.connect("clear", self._clear) self._artist_window.connect("clear", self._clear)
# packing # packing
self.set_widget(self._iconview) self.pack_start(scroll, True, True, 0)
box=Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.pack_start(self._progress_bar, False, False, 0)
box.pack_start(scroll, True, True, 0)
box.pack_start(self._progress_bar, False, False, 0)
self.add(box)
def _workaround_clear(self): def _workaround_clear(self):
self._store.clear() self._store.clear()
@ -2497,19 +2450,20 @@ class Browser(Gtk.Paned):
self._genre_select=GenreSelect(self._client) self._genre_select=GenreSelect(self._client)
self._artist_window=ArtistWindow(self._client, self._settings, self._genre_select) self._artist_window=ArtistWindow(self._client, self._settings, self._genre_select)
self._album_window=AlbumWindow(self._client, self._settings, self._artist_window) self._album_window=AlbumWindow(self._client, self._settings, self._artist_window)
genre_focus_frame=ScrolledFocusFrame(self._genre_select) genre_scroll=Gtk.ScrolledWindow(child=self._genre_select)
artist_focus_frame=ScrolledFocusFrame(self._artist_window) artist_scroll=Gtk.ScrolledWindow(child=self._artist_window)
# hide/show genre filter # hide/show genre filter
self._settings.bind("genre-filter", genre_focus_frame, "no-show-all", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET) self._genre_select.set_property("visible", True)
self._settings.bind("genre-filter", genre_focus_frame, "visible", Gio.SettingsBindFlags.GET) self._settings.bind("genre-filter", genre_scroll, "no-show-all", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
self._settings.bind("genre-filter", genre_scroll, "visible", Gio.SettingsBindFlags.GET)
self._settings.connect("changed::genre-filter", self._on_genre_filter_changed) self._settings.connect("changed::genre-filter", self._on_genre_filter_changed)
# packing # packing
self.paned1=Gtk.Paned() self.paned1=Gtk.Paned()
self.paned1.pack1(artist_focus_frame, False, False) self.paned1.pack1(artist_scroll, False, False)
self.paned1.pack2(self._album_window, True, False) self.paned1.pack2(self._album_window, True, False)
self.pack1(genre_focus_frame, False, False) self.pack1(genre_scroll, False, False)
self.pack2(self.paned1, True, False) self.pack2(self.paned1, True, False)
def back_to_current_album(self, force=False): def back_to_current_album(self, force=False):
@ -2592,11 +2546,6 @@ class PlaylistWindow(Gtk.Overlay):
scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scroll.add(self._treeview) scroll.add(self._treeview)
# frame
self._frame=FocusFrame()
self._frame.set_widget(self._treeview)
self._frame.add(scroll)
# song popover # song popover
self._song_popover=SongPopover(self._client, show_buttons=False) self._song_popover=SongPopover(self._client, show_buttons=False)
@ -2604,8 +2553,6 @@ class PlaylistWindow(Gtk.Overlay):
self._treeview.connect("row-activated", self._on_row_activated) self._treeview.connect("row-activated", self._on_row_activated)
self._treeview.connect("button-press-event", self._on_button_press_event) self._treeview.connect("button-press-event", self._on_button_press_event)
self._treeview.connect("key-release-event", self._on_key_release_event) self._treeview.connect("key-release-event", self._on_key_release_event)
self._treeview.connect("drag-begin", lambda *args: self._frame.disable())
self._treeview.connect("drag-end", lambda *args: self._frame.enable())
self._row_deleted=self._store.connect("row-deleted", self._on_row_deleted) self._row_deleted=self._store.connect("row-deleted", self._on_row_deleted)
self._row_inserted=self._store.connect("row-inserted", self._on_row_inserted) self._row_inserted=self._store.connect("row-inserted", self._on_row_inserted)
self._back_to_current_song_button.connect("clicked", self._on_back_to_current_song_button_clicked) self._back_to_current_song_button.connect("clicked", self._on_back_to_current_song_button_clicked)
@ -2624,7 +2571,7 @@ class PlaylistWindow(Gtk.Overlay):
self._settings.bind("mini-player", self, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET) self._settings.bind("mini-player", self, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
# packing # packing
self.add(self._frame) self.add(scroll)
self.add_overlay(self._back_button_revealer) self.add_overlay(self._back_button_revealer)
def _on_column_width(self, obj, typestring, pos): def _on_column_width(self, obj, typestring, pos):
@ -2832,7 +2779,7 @@ class PlaylistWindow(Gtk.Overlay):
# cover and lyrics # # cover and lyrics #
#################### ####################
class LyricsWindow(FocusFrame): class LyricsWindow(Gtk.ScrolledWindow):
def __init__(self, client, settings): def __init__(self, client, settings):
super().__init__() super().__init__()
self._settings=settings self._settings=settings
@ -2851,23 +2798,17 @@ class LyricsWindow(FocusFrame):
self._text_view.set_right_margin(5) self._text_view.set_right_margin(5)
self._text_view.set_bottom_margin(5) self._text_view.set_bottom_margin(5)
self._text_view.set_top_margin(3) self._text_view.set_top_margin(3)
self.set_widget(self._text_view)
# text buffer # text buffer
self._text_buffer=self._text_view.get_buffer() self._text_buffer=self._text_view.get_buffer()
# scroll
scroll=Gtk.ScrolledWindow()
scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scroll.add(self._text_view)
# connect # connect
self._client.emitter.connect("disconnected", self._on_disconnected) self._client.emitter.connect("disconnected", self._on_disconnected)
self._song_changed=self._client.emitter.connect("current_song_changed", self._refresh) self._song_changed=self._client.emitter.connect("current_song_changed", self._refresh)
self._client.emitter.handler_block(self._song_changed) self._client.emitter.handler_block(self._song_changed)
# packing # packing
self.add(scroll) self.add(self._text_view)
def enable(self, *args): def enable(self, *args):
current_song=self._client.currentsong() current_song=self._client.currentsong()