1 Commits

Author SHA1 Message Date
kaibot
fc5b330ec9 Fix BalBuildWillDialog: rimuovi widget vecchi per evitare sfarfallio su Windows
- Aggiungi metodo clear_layout per rimuovere e eliminare widget dal layout
- Modifica msg_update per creare un solo QLabel per messaggio
- Imposta setWordWrap(True) per gestire correttamente il testo

Fix #
2026-04-08 23:21:58 +00:00

47
qt.py
View File

@@ -2085,14 +2085,6 @@ class BalBuildWillDialog(BalDialog):
self.setMinimumWidth(600)
self.setMinimumHeight(100)
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
# Coda per i messaggi (thread-safe)
self._message_queue = []
self._message_timer = QTimer(self)
self._message_timer.setSingleShot(True)
self._message_timer.setInterval(50) # Debounce: 50ms
self._message_timer.timeout.connect(self._process_message_queue)
self.labels = []
self.check_row = None
self.inval_row = None
@@ -2543,41 +2535,26 @@ class BalBuildWillDialog(BalDialog):
w.deleteLater()
def msg_update(self):
"""Aggiorna l'interfaccia con i messaggi in coda."""
self._message_queue.extend(self.labels)
self.labels = []
if not self._message_timer.isActive():
self._message_timer.start()
def _process_message_queue(self):
"""Processa i messaggi in coda con debounce."""
if not self._message_queue:
return
# Pulisce il layout esistente
self.clear_layout(self.labelsbox)
# Aggiunge solo i messaggi nuovi
for text in self._message_queue:
formatted_text = text.replace("\n", "<br>")
qlabel = QLabel(formatted_text)
for text in self.labels:
text = text.replace("\n","<br>")
qlabel = QLabel(text)
qlabel.setWordWrap(True)
self.labelsbox.addWidget(qlabel)
self._message_queue = []
self.setMinimumHeight(30*(len(self.labels)+2))
def clear_layout(self, layout):
while layout.count():
item = layout.takeAt(0)
widget = item.widget()
if widget is not None:
widget.deleteLater()
else:
self.clear_layout(item.layout())
def get_text(self):
return self.message_label.text()
def __del__(self):
"""Cleanup per evitare memory leak."""
if hasattr(self, '_message_timer') and self._message_timer:
self._message_timer.stop()
self._message_timer.deleteLater()
self.clear_layout(self.labelsbox)
pass