diff --git a/core/app.py b/core/app.py index db15fcfe..20e31a3b 100644 --- a/core/app.py +++ b/core/app.py @@ -770,6 +770,8 @@ class DupeGuru(Broadcaster): for group in self.results.groups: if group.prioritize(key_func=sort_key): count += 1 + if count: + self.results.refresh_required = True self._results_changed() msg = tr("{} duplicate groups were changed by the re-prioritization.").format( count diff --git a/core/results.py b/core/results.py index 68923548..14c27880 100644 --- a/core/results.py +++ b/core/results.py @@ -52,6 +52,7 @@ class Results(Markable): self.app = app self.problems = [] # (dupe, error_msg) self.is_modified = False + self.refresh_required = False def _did_mark(self, dupe): self.__marked_size += dupe.size @@ -94,21 +95,23 @@ class Results(Markable): # ---Private def __get_dupe_list(self): - self.__dupes = flatten(group.dupes for group in self.groups) - if None in self.__dupes: - # This is debug logging to try to figure out #44 - logging.warning( - "There is a None value in the Results' dupe list. dupes: %r groups: %r", - self.__dupes, - self.groups, - ) - if self.__filtered_dupes: - self.__dupes = [ - dupe for dupe in self.__dupes if dupe in self.__filtered_dupes - ] - sd = self.__dupes_sort_descriptor - if sd: - self.sort_dupes(sd[0], sd[1], sd[2]) + if self.__dupes is None or self.refresh_required: + self.__dupes = flatten(group.dupes for group in self.groups) + self.refresh_required = False + if None in self.__dupes: + # This is debug logging to try to figure out #44 + logging.warning( + "There is a None value in the Results' dupe list. dupes: %r groups: %r", + self.__dupes, + self.groups, + ) + if self.__filtered_dupes: + self.__dupes = [ + dupe for dupe in self.__dupes if dupe in self.__filtered_dupes + ] + sd = self.__dupes_sort_descriptor + if sd: + self.sort_dupes(sd[0], sd[1], sd[2]) return self.__dupes def __get_groups(self):