🔔 Новый коммит в youtubediscord/zapret
📝 Исправить замену верхней панели окна
👤 Автор: loop-uh
📅 Дата: 24.07.2026 15:02:14
🔗 SHA:
7885568📊 Статистика:
➕ Добавлено: 28 строк
➖ Удалено: 0 строк
📝 Всего изменений: 28
📁 Изменено файлов: 2
✏️
src/ui/fluent_app_window.py+14 -0
Добавилось:
def setTitleBar(self, title_bar) -> None: # noqa: N802 (qfluentwidgets API)
"""Безопасно заменяет верхнюю панель окна.
qframelesswindow регистрирует каждую TitleBar как фильтр событий окна,
но при замене только откладывает её удаление. На Python 3.14 / PyQt6
6.11 старая панель иногда успевает получить WindowStateChange уже во
время очистки Python-объекта, когда maxBtn в нём больше нет.
"""
previous_title_bar = getattr(self, "titleBar", None)
if previous_title_bar is not None and previous_title_bar is not title_bar:
self.removeEventFilter(previous_title_bar)
... и еще 1 строк
✏️
tests/test_fluent_app_window_chrome.py+14 -0
Добавилось:
def test_replaced_titlebar_is_removed_from_window_event_filters(self) -> None:
class EventFilterTrackingWindow(ZapretFluentWindow):
def removeEventFilter(self, event_filter) -> None: # noqa: N802
detached = self.__dict__.setdefault("_detached_event_filters", [])detached.append(event_filter)
super().removeEventFilter(event_filter)
window = EventFilterTrackingWindow()
detached = window.__dict__.get("_detached_event_filters", [])self.assertGreaterEqual(len(detached), 1)
self.assertNotIn(window.titleBar, detached)
... и еще 1 строк
🔗 Открыть на GitHub