sc/inc/orcusxml.hxx | 2 ++ sc/source/core/tool/orcusxml.cxx | 2 +- sc/source/ui/xmlsource/xmlsourcedlg.cxx | 22 +++++++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-)
New commits: commit c4b0a72e246c2915339e3e5e0d3140944c48aa36 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Fri Oct 12 21:47:20 2012 -0400 Keep track of linked cell positions. Change-Id: I33e39e53b618270561ba7bfc236e8d8558bccffa diff --git a/sc/inc/orcusxml.hxx b/sc/inc/orcusxml.hxx index d615ab6..4fa223e 100644 --- a/sc/inc/orcusxml.hxx +++ b/sc/inc/orcusxml.hxx @@ -11,6 +11,7 @@ #define __SC_ORCUSXML_HXX__ #include "scdllapi.h" +#include "address.hxx" #include "vcl/image.hxx" #include <boost/ptr_container/ptr_vector.hpp> @@ -28,6 +29,7 @@ struct ScOrcusXMLTreeParam struct EntryData { EntryType meType; + ScAddress maLinkedPos; /// linked cell position (invalid if unlinked) SC_DLLPUBLIC EntryData(EntryType eType); }; diff --git a/sc/source/core/tool/orcusxml.cxx b/sc/source/core/tool/orcusxml.cxx index 4e9ef80..c5e0ac1 100644 --- a/sc/source/core/tool/orcusxml.cxx +++ b/sc/source/core/tool/orcusxml.cxx @@ -12,7 +12,7 @@ #include "svtools/treelistbox.hxx" ScOrcusXMLTreeParam::EntryData::EntryData(EntryType eType) : - meType(eType) {} + meType(eType), maLinkedPos(ScAddress::INITIALIZE_INVALID) {} ScOrcusXMLTreeParam::EntryData* ScOrcusXMLTreeParam::getUserData(SvLBoxEntry& rEntry) { diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx index c4fb781..561f98d 100644 --- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx +++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx @@ -88,6 +88,17 @@ void ScXMLSourceDlg::SetReference(const ScRange& rRange, ScDocument* pDoc) OUString aStr; rRange.aStart.Format(aStr, SCA_ABS_3D, pDoc, pDoc->GetAddressConvention()); mpActiveEdit->SetRefString(aStr); + + // Set this address to currently selected tree item. + SvLBoxEntry* pEntry = maLbTree.GetCurEntry(); + if (!pEntry) + return; + + ScOrcusXMLTreeParam::EntryData* pUserData = ScOrcusXMLTreeParam::getUserData(*pEntry); + if (!pUserData) + return; + + pUserData->maLinkedPos = rRange.aStart; } void ScXMLSourceDlg::Deactivate() @@ -188,10 +199,19 @@ void ScXMLSourceDlg::TreeItemSelected() return; ScOrcusXMLTreeParam::EntryData* pUserData = ScOrcusXMLTreeParam::getUserData(*pEntry); - if (!pUserData) return; + const ScAddress& rPos = pUserData->maLinkedPos; + if (rPos.IsValid()) + { + OUString aStr; + rPos.Format(aStr, SCA_ABS_3D, mpDoc, mpDoc->GetAddressConvention()); + maRefEdit.SetRefString(aStr); + } + else + maRefEdit.SetRefString(OUString()); + switch (pUserData->meType) { case ScOrcusXMLTreeParam::Attribute: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits