restore calc navigator custom tooltip
Change-Id: Ic378364e0d6c5eb704872ec9a3c73f63c222855a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90049
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sc/source/ui/inc/content.hxx b/sc/source/ui/inc/content.hxx
index 3411d94..87d093b 100644
--- a/sc/source/ui/inc/content.hxx
+++ b/sc/source/ui/inc/content.hxx
@@ -90,12 +90,12 @@ class ScContentTree
@param rnRootIndex Root index of specified entry is returned.
@param rnChildIndex Index of the entry inside its root is returned (or SC_CONTENT_NOCHILD if entry is root).
@param pEntry The entry to examine. */
void GetEntryIndexes(ScContentId& rnRootIndex, sal_uLong& rnChildIndex, weld::TreeIter* pEntry) const;
void GetEntryIndexes(ScContentId& rnRootIndex, sal_uLong& rnChildIndex, const weld::TreeIter* pEntry) const;
/** Returns the child index of the specified listbox entry.
@param pEntry The entry to examine or NULL for the selected entry.
@return Index of the entry inside its root or SC_CONTENT_NOCHILD if entry is root. */
sal_uLong GetChildIndex(weld::TreeIter* pEntry) const;
sal_uLong GetChildIndex(const weld::TreeIter* pEntry) const;
ScDocument* GetSourceDocument();
@@ -118,6 +118,7 @@ class ScContentTree
DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
DECL_LINK(AsyncStoreNavigatorSettings, void*, void);
DECL_LINK(CommandHdl, const CommandEvent&, bool);
DECL_LINK(QueryTooltipHdl, const weld::TreeIter&, OUString);
DECL_LINK(DragBeginHdl, bool&, bool);
public:
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index 9f7bb3e..d1b66b8 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -139,6 +139,7 @@ ScContentTree::ScContentTree(std::unique_ptr<weld::TreeView> xTreeView, ScNaviga
m_xTreeView->connect_mouse_release(LINK(this, ScContentTree, MouseReleaseHdl));
m_xTreeView->connect_key_press(LINK(this, ScContentTree, KeyInputHdl));
m_xTreeView->connect_popup_menu(LINK(this, ScContentTree, CommandHdl));
m_xTreeView->connect_query_tooltip(LINK(this, ScContentTree, QueryTooltipHdl));
rtl::Reference<TransferDataContainer> xHelper(m_xTransferObj.get());
m_xTreeView->enable_drag_source(xHelper, DND_ACTION_COPYMOVE | DND_ACTION_LINK);
@@ -235,7 +236,7 @@ void ScContentTree::InsertContent( ScContentId nType, const OUString& rValue )
}
}
void ScContentTree::GetEntryIndexes(ScContentId& rnRootIndex, sal_uLong& rnChildIndex, weld::TreeIter* pEntry) const
void ScContentTree::GetEntryIndexes(ScContentId& rnRootIndex, sal_uLong& rnChildIndex, const weld::TreeIter* pEntry) const
{
rnRootIndex = ScContentId::ROOT;
rnChildIndex = SC_CONTENT_NOCHILD;
@@ -282,11 +283,11 @@ void ScContentTree::GetEntryIndexes(ScContentId& rnRootIndex, sal_uLong& rnChild
}
}
sal_uLong ScContentTree::GetChildIndex(weld::TreeIter* pEntry) const
sal_uLong ScContentTree::GetChildIndex(const weld::TreeIter* pEntry) const
{
ScContentId nRoot;
sal_uLong nChild;
GetEntryIndexes( nRoot, nChild, pEntry );
GetEntryIndexes(nRoot, nChild, pEntry);
return nChild;
}
@@ -606,6 +607,39 @@ IMPL_LINK(ScContentTree, CommandHdl, const CommandEvent&, rCEvt, bool)
return bDone;
}
IMPL_LINK(ScContentTree, QueryTooltipHdl, const weld::TreeIter&, rEntry, OUString)
{
OUString aHelpText;
std::unique_ptr<weld::TreeIter> xParent(m_xTreeView->make_iterator(&rEntry));
if (!m_xTreeView->iter_parent(*xParent))
xParent.reset();
if (!xParent) // Top-Level ?
{
aHelpText = OUString::number(m_xTreeView->iter_n_children(rEntry)) +
" " + m_xTreeView->get_text(rEntry);
}
else if (m_xTreeView->iter_compare(*xParent, *m_aRootNodes[ScContentId::NOTE]) == 0)
{
aHelpText = m_xTreeView->get_text(rEntry); // notes as help text
}
else if (m_xTreeView->iter_compare(*xParent, *m_aRootNodes[ScContentId::AREALINK]) == 0)
{
auto nIndex = GetChildIndex(&rEntry);
if (nIndex != SC_CONTENT_NOCHILD)
{
const ScAreaLink* pLink = GetLink(nIndex);
if (pLink)
{
aHelpText = pLink->GetFile(); // source file as help text
}
}
}
return aHelpText;
}
ScDocument* ScContentTree::GetSourceDocument()
{
if (bHiddenDoc)
diff --git a/sc/uiconfig/scalc/ui/navigatorpanel.ui b/sc/uiconfig/scalc/ui/navigatorpanel.ui
index 48fa789..86e9a99 100644
--- a/sc/uiconfig/scalc/ui/navigatorpanel.ui
+++ b/sc/uiconfig/scalc/ui/navigatorpanel.ui
@@ -287,6 +287,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="has_tooltip">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="model">liststore1</property>