diff --git a/src/bundles/ui/src/widgets/tabbedtoolbar.py b/src/bundles/ui/src/widgets/tabbedtoolbar.py
index 92e1be22c..37f5e6624 100644
--- a/src/bundles/ui/src/widgets/tabbedtoolbar.py
+++ b/src/bundles/ui/src/widgets/tabbedtoolbar.py
@@ -244,6 +244,7 @@ class _Section(QWidgetAction):
             self._layout_buttons(w)
             w.updateGeometry()
             w.adjustSize()
+        self._redo_pending = False
 
     def set_compact(self, on_off):
         if self.compact == on_off:
@@ -342,7 +343,11 @@ class _Section(QWidgetAction):
             return
         button_info.enabled = enabled
         if redo:
-            self._redo_layout()
+            pending = getattr(self, '_redo_pending', False)
+            if not pending:
+                from Qt.QtCore import QTimer
+                QTimer.singleShot(10, self._redo_layout)
+                self._redo_pending = True
 
 
 class TabbedToolbar(QTabWidget):
