[chirp_devel] [PATCH] Prevent re-entrant calls to 'update_recent_files' when opening a file from the 'Recent Files' menu action
Kosta A.
Sun Sep 26 21:25:18 PDT 2021
# HG changeset patch
# User Kosta A. <ve7kcy at gmail.com>
# Date 1632716707 25200
# Sun Sep 26 21:25:07 2021 -0700
# Branch update-recent
# Node ID 261a9ac27d14a2e285bd492ffff67a98af56540c
# Parent 5aa2294d78ea241c6573dcf1929475b072e73685
Prevent re-entrant calls to 'update_recent_files' when opening a file from the 'Recent Files' menu action.
Gtk was failing on this and was sending an error message to the console.
diff --git a/chirp/ui/mainapp.py b/chirp/ui/mainapp.py
--- a/chirp/ui/mainapp.py
+++ b/chirp/ui/mainapp.py
@@ -540,9 +540,13 @@
CONF.set(key, fn, "state")
else:
CONF.remove_option(key, "state")
+ self.recent_files = None
def update_recent_files(self):
- recent_files = self._get_recent_list()
+ if (not self.recent_files == None):
+ return
+
+ self.recent_files = self._get_recent_list()
for index in range(0, KEEP_RECENT):
action_name = "recent%i" % index
path = "/MenuBar/file/recent"
@@ -552,8 +556,8 @@
old_action.set_visible(False)
self.menu_ag.remove_action(old_action)
- if (index < len(recent_files)):
- fname = recent_files[index]
+ if (index < len(self.recent_files)):
+ fname = self.recent_files[index]
widget_label = os.path.basename(fname).replace("_", "__")
widget_tip = _("Open recent file") + (" {name}").format(
name=fname)
@@ -583,11 +587,9 @@
recent_files.append(fname)
self._set_recent_list(recent_files)
- self.update_recent_files()
def clear_recent_files(self):
self._set_recent_list([])
- self.update_recent_files()
def import_stock_config(self, action, config):
eset = self.get_current_editorset()
@@ -2092,6 +2094,9 @@
self.add_accel_group(self.menu_uim.get_accel_group())
+ self.recentmenu = self.menu_uim.get_widget(
+ "/MenuBar/file/recent")
+
self.infomenu = self.menu_uim.get_widget(
"/MenuBar/help/clone_information")
@@ -2100,6 +2105,7 @@
# Initialize
self.do_toggle_developer(self.menu_ag.get_action("developer"))
+ self.recentmenu.connect("activate", lambda a: self.update_recent_files())
return self.menu_uim.get_widget("/MenuBar")
@@ -2325,6 +2331,7 @@
d.destroy()
CONF.set_bool("warned_about_reporting", True)
+ self.recent_files = None
self.update_recent_files()
try:
self.update_stock_configs()
More information about the chirp_devel
mailing list