From 8ae03b548e4b98d4740ab986c41fc24279734128 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Mon, 9 Dec 2019 12:09:38 +0000 Subject: only connect to tooltip query when we have to MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I0b7f1b798129b41c9831ccdd47cd509680b19de2 Reviewed-on: https://gerrit.libreoffice.org/84742 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- include/vcl/weld.hxx | 3 ++- vcl/source/app/salvtables.cxx | 7 ++++++- vcl/unx/gtk3/gtk3gtkinst.cxx | 12 +++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 54a72e80c32d..b7d86c9c7df9 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -734,8 +734,9 @@ protected: OUString signal_query_tooltip(const TreeIter& rIter) { return m_aQueryTooltipHdl.Call(rIter); } public: - void connect_query_tooltip(const Link& rLink) + virtual void connect_query_tooltip(const Link& rLink) { + assert(!m_aQueryTooltipHdl.IsSet() || !rLink.IsSet()); m_aQueryTooltipHdl = rLink; } diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index c37cab6261e8..5b0686a9f77e 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3491,7 +3491,6 @@ public: m_xTreeView->SetDoubleClickHdl(LINK(this, SalInstanceTreeView, DoubleClickHdl)); m_xTreeView->SetExpandingHdl(LINK(this, SalInstanceTreeView, ExpandingHdl)); m_xTreeView->SetPopupMenuHdl(LINK(this, SalInstanceTreeView, PopupMenuHdl)); - m_xTreeView->SetTooltipHdl(LINK(this, SalInstanceTreeView, TooltipHdl)); const long aTabPositions[] = { 0 }; m_xTreeView->SetTabs(SAL_N_ELEMENTS(aTabPositions), aTabPositions); LclHeaderTabListBox* pHeaderBox = dynamic_cast(m_xTreeView.get()); @@ -3520,6 +3519,12 @@ public: m_aRadioButtonData.SetLink(LINK(this, SalInstanceTreeView, ToggleHdl)); } + virtual void connect_query_tooltip(const Link& rLink) override + { + weld::TreeView::connect_query_tooltip(rLink); + m_xTreeView->SetTooltipHdl(LINK(this, SalInstanceTreeView, TooltipHdl)); + } + virtual void columns_autosize() override { std::vector aWidths; diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 71a8489ffbd5..9fe5c2d289ad 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -8564,7 +8564,7 @@ public: , m_nDragDataDeleteignalId(0) , m_nDragGetSignalId(0) , m_nKeyPressSignalId(g_signal_connect(pTreeView, "key-press-event", G_CALLBACK(signalKeyPress), this)) - , m_nQueryTooltipSignalId(g_signal_connect(pTreeView, "query-tooltip", G_CALLBACK(signalQueryTooltip), this)) + , m_nQueryTooltipSignalId(0) , m_pChangeEvent(nullptr) { m_pColumns = gtk_tree_view_get_columns(m_pTreeView); @@ -8625,6 +8625,12 @@ public: m_nRowInsertedSignalId = g_signal_connect(pModel, "row-inserted", G_CALLBACK(signalRowInserted), this); } + virtual void connect_query_tooltip(const Link& rLink) override + { + weld::TreeView::connect_query_tooltip(rLink); + m_nQueryTooltipSignalId = g_signal_connect(m_pTreeView, "query-tooltip", G_CALLBACK(signalQueryTooltip), this); + } + virtual void columns_autosize() override { gtk_tree_view_columns_autosize(m_pTreeView); @@ -9998,6 +10004,8 @@ public: { if (m_pChangeEvent) Application::RemoveUserEvent(m_pChangeEvent); + if (m_nQueryTooltipSignalId) + g_signal_handler_disconnect(m_pTreeView, m_nQueryTooltipSignalId); g_signal_handler_disconnect(m_pTreeView, m_nKeyPressSignalId); g_signal_handler_disconnect(m_pTreeView, m_nDragEndSignalId); g_signal_handler_disconnect(m_pTreeView, m_nDragBeginSignalId); @@ -10029,8 +10037,6 @@ public: m_aColumnSignalIds.pop_back(); } g_list_free(m_pColumns); - - g_signal_handler_disconnect(m_pTreeView, m_nQueryTooltipSignalId); } }; -- cgit