From db8b1acbc69ec74fb95274b436955c71077c1261 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 28 Jul 2026 16:40:01 +0900 Subject: [PATCH] fix: pack spinner in dedicated box Resolves #357. Spinner and cancel button occupied the same region of the content area, causing spinner repaint events on each frame to redraw the cancel button, triggering a flickering effect. --- dzgui/views/dialogs/generic.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dzgui/views/dialogs/generic.py b/dzgui/views/dialogs/generic.py index b0324f3..73da729 100644 --- a/dzgui/views/dialogs/generic.py +++ b/dzgui/views/dialogs/generic.py @@ -111,19 +111,22 @@ class WaitDialog(GenericDialog): self.connect("delete-event", lambda widget, event: True) content = self.get_content_area() - spinner = Gtk.Spinner() self.prog = Gtk.ProgressBar() - content.pack_end(self.cancel, NO_EXPAND, NO_FILL, 0) - content.pack_end(spinner, NO_EXPAND, NO_FILL, 0) + spinner_box = Gtk.Box( + orientation=Gtk.Orientation.HORIZONTAL, halign=Gtk.Align.CENTER + ) + spinner = Gtk.Spinner() + spinner_box.add(spinner) if self.jobs > 1: - content.pack_end(self.prog, NO_EXPAND, NO_FILL, 0) + content.pack_start(self.prog, NO_EXPAND, NO_FILL, 0) else: + content.pack_start(spinner_box, NO_EXPAND, NO_FILL, 0) spinner.start() - if show_cancel is False: - self.connect("realize", lambda _: self.cancel.set_visible(False)) + if show_cancel is True: + content.pack_start(self.cancel, NO_EXPAND, NO_FILL, 0) def update_text(self, msg: str) -> None: self.format_secondary_text(msg)