mirror of
https://github.com/aclist/dztui.git
synced 2026-10-25 12:12:31 +01:00
fix: wipe cache and redraw when filtering ServerTab.BROWSER
This commit is contained in:
1 parent
2f4606ede0
commit
72e3054afb
2 files changed
+18
-11
No files matched your search
@@ -21,7 +21,7 @@ from dzgui.views.dialogs.generic import ExceptionDialog
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk # noqa E402
|
||||
from gi.repository import Gtk, GLib # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.api.servers import A2SInfo, Record
|
||||
@@ -390,6 +390,8 @@ class ServerModelManager:
|
||||
def _cleanup_on_success(self) -> None:
|
||||
proxy = self.proxy_man.get_proxy_model()
|
||||
self.tv.set_model(proxy)
|
||||
if self.tv.enum == ServerTab.BROWSER:
|
||||
GLib.idle_add(self.tv.wipe_cache)
|
||||
if self.preserve_on_fail is True:
|
||||
self.proxy_man.wipe_cache()
|
||||
|
||||
|
||||
@@ -341,16 +341,22 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
||||
control = self.proxy_man.get_control()
|
||||
return model, control
|
||||
|
||||
@staticmethod
|
||||
def ping_server(
|
||||
self,
|
||||
model: "FastInsertListStore",
|
||||
_iter: Gtk.TreeIter,
|
||||
ip: str,
|
||||
qport: int,
|
||||
ping_column: int,
|
||||
record: Record,
|
||||
) -> None:
|
||||
_ping = ping(ip, qport)
|
||||
GLib.idle_add(lambda: model.set(_iter, ping_column, _ping))
|
||||
_ping = ping(record.ip, record.qport)
|
||||
GLib.idle_add(self._redraw, model, _iter, _ping)
|
||||
|
||||
def _redraw(self, model: Gtk.TreeModel, _iter: Gtk.TreeIter, _ping: int) -> None:
|
||||
ping_column = 9
|
||||
model.set(_iter, ping_column, _ping)
|
||||
self.queue_draw()
|
||||
|
||||
def wipe_cache(self) -> None:
|
||||
self.seen_cache = []
|
||||
|
||||
def _get_ping(
|
||||
self,
|
||||
@@ -363,13 +369,12 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
||||
|
||||
addr_column = 7
|
||||
qport_column = 8
|
||||
ping_column = 9
|
||||
|
||||
addr = model.get_value(_iter, addr_column).split(":")
|
||||
ip = addr[0]
|
||||
gameport = addr[1]
|
||||
gameport = int(addr[1])
|
||||
qport = model.get_value(_iter, qport_column)
|
||||
record = f"{addr}:{gameport}:{qport}"
|
||||
record = Record(ip, gameport, qport)
|
||||
|
||||
if record in self.seen_cache:
|
||||
return
|
||||
@@ -378,7 +383,7 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
|
||||
thread = threading.Thread(
|
||||
daemon=True,
|
||||
target=self.ping_server,
|
||||
args=(model, _iter, ip, qport, ping_column),
|
||||
args=(model, _iter, record),
|
||||
)
|
||||
thread.start()
|
||||
|
||||
|
||||
Reference in new issue
Block a user