mirror of
https://github.com/aclist/dztui.git
synced 2026-08-27 10:17:31 +02:00
fix: defer destroy call
This commit is contained in:
parent
79eab93629
commit
a763b3b9dc
@ -11,7 +11,7 @@ from dzgui.views.dialogs.generic import WaitDialog
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk, GLib, GObject # noqa E402
|
||||
from gi.repository import Gtk, GLib # noqa E402
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -88,9 +88,14 @@ class ThreadingManager:
|
||||
def get_cleanup_func(self) -> StoredFunc:
|
||||
return self.cleanup_func
|
||||
|
||||
def _destroy_on_idle(self) -> None:
|
||||
self.wait_dialog.destroy()
|
||||
def _d(self) -> None:
|
||||
self.wait_dialog.hide()
|
||||
return False
|
||||
|
||||
def _destroy_on_idle(self) -> GLib.SOURCE_REMOVE:
|
||||
func = self.get_cleanup_func()
|
||||
if func is not None:
|
||||
func.call()
|
||||
self.set_cleanup_func(None)
|
||||
self.wait_dialog.destroy()
|
||||
return GLib.SOURCE_REMOVE
|
||||
|
||||
@ -85,6 +85,7 @@ class ServerModelManager:
|
||||
|
||||
@call_on_thread(dialog.fetching)
|
||||
def _dump_api(self) -> None:
|
||||
# TODO: pass api key a priori in .load() call
|
||||
config_man = self.controller.get_config_man()
|
||||
key = config_man.lookup(Preferences.STEAM)
|
||||
job = Servers.query_api
|
||||
@ -276,6 +277,7 @@ class ServerModelManager:
|
||||
self.first_iteration = False
|
||||
|
||||
def _cleanup_on_success(self) -> None:
|
||||
self.tv.set_model(None)
|
||||
self.tv.set_model(self.to_insert)
|
||||
|
||||
# TODO: make sure control model len is N + 1
|
||||
@ -286,7 +288,7 @@ class ServerModelManager:
|
||||
# cf. servers_loaded signal
|
||||
|
||||
# TODO: servers_loaded vs servers_reloaded
|
||||
self.emitter.emit("servers_loaded", self.enum)
|
||||
# self.emitter.emit("servers_loaded", self.enum)
|
||||
|
||||
if self.first_iteration:
|
||||
self._update_maps()
|
||||
@ -339,6 +341,7 @@ class ServerModelManager:
|
||||
|
||||
@call_on_thread(dialog.filtering)
|
||||
def refilter(self, mode: FilterMode, label: str) -> None:
|
||||
# FIXME: causes two wait dialogs when map selection change signal emits after loading servers
|
||||
self.first_iteration = False
|
||||
proxy_man = self._get_proxy_man()
|
||||
proxy_man.filter(mode, label)
|
||||
|
||||
@ -17,7 +17,7 @@ gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from GLib import SOURCE_REMOVE
|
||||
from gi.repository import GLib
|
||||
from dzgui.controllers.mc import Controller
|
||||
|
||||
|
||||
@ -107,7 +107,7 @@ class RefreshButton(IconTextButton):
|
||||
GLib.timeout_add_seconds(1, self.decrement)
|
||||
self.controller.refresh_tree()
|
||||
|
||||
def decrement(self) -> "SOURCE_REMOVE" | Literal[True]:
|
||||
def decrement(self) -> "GLib.SOURCE_REMOVE" | Literal[True]:
|
||||
self.time -= 1
|
||||
if self.time == 0:
|
||||
self.time = 30
|
||||
|
||||
Loading…
Reference in New Issue
Block a user