fix: statusbar signals

This commit is contained in:
aclist committed 2026-02-07 23:18:25 +09:00
1 parent fc294bcede
commit 2ef62416c0
7 files changed
+108 -63

No files matched your search

+17 -4
View File
@@ -10,6 +10,7 @@ if TYPE_CHECKING:
# TODO: rename signals to e.g. maps_keybinding_pressed
class Emitter(GObject.GObject):
def __init__(self) -> None:
super().__init__()
@@ -56,10 +57,6 @@ class Emitter(GObject.GObject):
def distcalc_started(self) -> None:
pass
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(object,))
def servers_loaded(self, tag: "ServerTab") -> None:
pass
@GObject.Signal(
flags=GObject.SignalFlags.RUN_LAST,
arg_types=(
@@ -71,3 +68,19 @@ class Emitter(GObject.GObject):
self, dist: Union[str, None], context: Union["ServerTab", "NotebookPage"]
) -> None:
pass
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(object,))
def servers_loaded(self, tag: "ServerTab") -> None:
pass
# @GObject.Signal(
# flags=GObject.SignalFlags.RUN_LAST,
# arg_types=(
# object,
# object,
# ),
# )
# def distcalc_ended(
# self, dist: Union[str, None], context: Union["ServerTab", "NotebookPage"]
# ) -> None:
# pass
+6 -4
View File
@@ -253,16 +253,18 @@ class Controller(GObject.GObject):
def set_statusbar_dist(self, haversine: "Haversine", enum: "ServerTab") -> None:
context = self.get_active_context()
print(context)
page = self.mediator.notebook.get_page_by_enum()
"""
NOTE: prevents race condition when server tab changed,
but allows caching the distance in the background
"""
if page != NotebookPage.SERVERS:
self.mediator.statusbar.spinner.stop()
self.emitter.emit("distcalc_ended" , None, context)
#self.mediator.statusbar.spinner.stop()
return
if enum != context:
self.mediator.statusbar.emit("distcalc_ended", None, context)
self.emitter.emit("distcalc_ended" , None, context)
return
# NOTE: user may have changed km/mi toggle, so recalculate
@@ -280,7 +282,7 @@ class Controller(GObject.GObject):
separated = number(raw)
dist = str(separated) + " km"
self.mediator.statusbar.emit("distcalc_ended", dist, context)
self.emitter.emit("distcalc_ended", dist, context)
def delete_multiple_mods(self) -> None:
sel = self.mediator.modtreeview.get_selection()
@@ -781,13 +783,13 @@ class Controller(GObject.GObject):
self.emitter.emit("servers_loaded", treeview.get_enum())
return
treeview.set_model(None)
func = treeview.get_query_func()
if func is None:
self.emitter.emit("servers_loaded", treeview.get_enum())
return
# TODO: on legacy version, model clearing happens in thread
# (compare)
treeview.set_model(None)
# manager = treeview.get_filter_man()
# manager.clear_model()
self.set_callback(None, None)