From b7ca74d61d021cb0548e56dc6aa1cc7eecbbe2d2 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 27 Oct 2026 19:12:53 +0100 Subject: [PATCH] Clarify link callback captures and their lifetime requirements --- tools/chatgui/src/chatview.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/chatgui/src/chatview.h b/tools/chatgui/src/chatview.h index aa42a5db..1a3fe713 100644 --- a/tools/chatgui/src/chatview.h +++ b/tools/chatgui/src/chatview.h @@ -40,7 +40,8 @@ public: bool isRowSelected(const QModelIndex &idx) const; // Включительный диапазон номеров строк; idx ожидается из той же модели. void setTextSelChars(int start, int end) { m_textSel.startChar = start; m_textSel.endChar = end; } // Обратная связь от delegate. /* Сохранить hit-test ссылки: fn(index, viewport point) → строка ссылки либо пусто. Пустой fn отключает ссылки. - * Callback вызывается в GUI при hover/release; hover может передать invalid index. Захваченные объекты живут до замены callback. */ + * Callback вызывается в GUI при hover/release; hover может передать invalid index. + * Вызывающий обеспечивает lifetime захваченных объектов на время их использования callback. */ void setLinkHitTest(std::function fn) { m_linkHitTest = std::move(fn); } signals: @@ -78,6 +79,6 @@ private: QPoint m_pressPos; // Координата события press для порога drag и проверки click. bool m_selecting = false; // Идёт drag собственного выделения, не состояние стандартной модели выбора. bool m_historicalWindow = false; // Выбран исторический снимок, владелец должен обработать latestRequested. - std::function m_linkHitTest; // Собственная копия callback, без владения захваченными QObject. + std::function m_linkHitTest; // Собственная копия callback и его захваченных значений. QPushButton *m_scrollDownBtn = nullptr; // QObject-child вида: latestRequested и затем локальная прокрутка вниз. };