mirror of
https://github.com/lutris/lutris
synced 2024-09-29 20:43:37 +00:00
Revert "Suppress flash when update_store completes quickly (#3996)"
This reverts commit 8dc9996471
.
This commit is contained in:
parent
8f591cd40d
commit
fafd631ab2
|
@ -117,6 +117,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me
|
|||
|
||||
self.sidebar_revealer.set_reveal_child(self.side_panel_visible)
|
||||
self.sidebar_revealer.set_transition_duration(300)
|
||||
self.tabs_box.hide()
|
||||
|
||||
self.game_bar = None
|
||||
self.revealer_box = Gtk.HBox(visible=True)
|
||||
|
@ -460,24 +461,17 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me
|
|||
self.show_label(_("No games found"))
|
||||
|
||||
def update_store(self, *_args, **_kwargs):
|
||||
thread = AsyncCall(self.get_games_from_filters, self.update_store_cb)
|
||||
if not thread.await_completion(.25):
|
||||
self.show_spinner()
|
||||
|
||||
def update_store_cb(self, games, error):
|
||||
self.hide_overlay()
|
||||
|
||||
if error:
|
||||
dialogs.ErrorDialog(str(error))
|
||||
else:
|
||||
self.game_store.store.clear()
|
||||
logger.debug("Showing %d games", len(games))
|
||||
self.view.service = self.service.id if self.service else None
|
||||
GLib.idle_add(self.update_revealer)
|
||||
for game in games:
|
||||
self.game_store.add_game(game)
|
||||
if not games:
|
||||
self.show_empty_label()
|
||||
self.game_store.store.clear()
|
||||
for child in self.blank_overlay.get_children():
|
||||
child.destroy()
|
||||
games = self.get_games_from_filters()
|
||||
logger.debug("Showing %d games", len(games))
|
||||
self.view.service = self.service.id if self.service else None
|
||||
GLib.idle_add(self.update_revealer)
|
||||
for game in games:
|
||||
self.game_store.add_game(game)
|
||||
if not games:
|
||||
self.show_empty_label()
|
||||
self.search_timer_id = None
|
||||
return False
|
||||
|
||||
|
@ -514,30 +508,26 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me
|
|||
icon_type = media_services[media_index]
|
||||
if icon_type != self.icon_type:
|
||||
self.save_icon_type(icon_type)
|
||||
self.show_spinner()
|
||||
|
||||
def show_label(self, message):
|
||||
"""Display a label in the middle of the UI, instead of the game view"""
|
||||
label = Gtk.Label(message, visible=True)
|
||||
"""Display a label in the middle of the UI"""
|
||||
for child in self.blank_overlay.get_children():
|
||||
child.destroy()
|
||||
label = Gtk.Label(message, visible=True)
|
||||
self.blank_overlay.add(label)
|
||||
self.blank_overlay.show()
|
||||
self.games_scrollwindow.hide()
|
||||
self.blank_overlay.props.visible = True
|
||||
|
||||
def show_spinner(self):
|
||||
"""Display a spinner in the middle of the UI, instead of the game view"""
|
||||
spinner = Gtk.Spinner(visible=True)
|
||||
spinner.start()
|
||||
for child in self.blank_overlay.get_children():
|
||||
child.destroy()
|
||||
self.blank_overlay.add(spinner)
|
||||
self.blank_overlay.show()
|
||||
self.games_scrollwindow.hide()
|
||||
self.blank_overlay.props.visible = True
|
||||
|
||||
def hide_overlay(self):
|
||||
"""Restore the game view, and remove the spinner or label."""
|
||||
self.games_scrollwindow.show()
|
||||
self.blank_overlay.hide()
|
||||
self.blank_overlay.props.visible = False
|
||||
for child in self.blank_overlay.get_children():
|
||||
child.destroy()
|
||||
|
||||
|
@ -612,7 +602,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me
|
|||
self.games_scrollwindow.add(self.view)
|
||||
|
||||
self.view.show_all()
|
||||
self.update_store()
|
||||
GLib.idle_add(self.update_store)
|
||||
|
||||
def set_viewtype_icon(self, view_type):
|
||||
self.viewtype_icon.set_from_icon_name("view-%s-symbolic" % view_type, Gtk.IconSize.BUTTON)
|
||||
|
|
|
@ -23,19 +23,8 @@ class AsyncCall(threading.Thread):
|
|||
self.function = func
|
||||
self.callback = callback if callback else lambda r, e: None
|
||||
self.daemon = kwargs.pop("daemon", True)
|
||||
self.completion_callback_args = None
|
||||
self.start()
|
||||
|
||||
def await_completion(self, timeout):
|
||||
"""Block waiting for the call to complete for a time.
|
||||
If it completes in time, invokes the callback synchronously
|
||||
and returns True. Returns False if it times out."""
|
||||
self.join(timeout)
|
||||
if not self.is_alive():
|
||||
GLib.source_remove(self.source_id)
|
||||
self.complete()
|
||||
return True
|
||||
return False
|
||||
self.start()
|
||||
|
||||
def target(self, *args, **kwargs):
|
||||
result = None
|
||||
|
@ -49,14 +38,9 @@ class AsyncCall(threading.Thread):
|
|||
_ex_type, _ex_value, trace = sys.exc_info()
|
||||
traceback.print_tb(trace)
|
||||
|
||||
self.completion_callback_args = [result, error]
|
||||
self.source_id = GLib.idle_add(self.complete)
|
||||
self.source_id = GLib.idle_add(self.callback, result, error)
|
||||
return self.source_id
|
||||
|
||||
def complete(self):
|
||||
callback_args = self.completion_callback_args
|
||||
self.callback(*callback_args)
|
||||
|
||||
|
||||
def synchronized_call(func, event, result):
|
||||
"""Calls func, stores the result by reference, set an event when finished"""
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="tabs_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
|
@ -76,8 +77,8 @@
|
|||
<property name="label" translatable="yes">Your Library</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<signal name="toggled" handler="on_game_collection_changed" swapped="no"/>
|
||||
</object>
|
||||
|
|
Loading…
Reference in a new issue