From 055d8821e664446b7e66b73970a324f765e35f9c Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Thu, 16 Mar 2017 13:07:21 +0530 Subject: sc lok: Edit annotation by id Change-Id: Iaea08b7a31fab1a8c9b8edc193754821c6608c53 Reviewed-on: https://gerrit.libreoffice.org/35249 Reviewed-by: pranavk Tested-by: pranavk --- sc/source/ui/view/cellsh.cxx | 6 ++++-- sc/source/ui/view/cellsh1.cxx | 21 ++++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'sc/source/ui') diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx index c82c3808e66c..0e3d1301bfc9 100644 --- a/sc/source/ui/view/cellsh.cxx +++ b/sc/source/ui/view/cellsh.cxx @@ -19,6 +19,7 @@ #include "scitems.hxx" +#include #include #include #include @@ -312,7 +313,7 @@ void ScCellShell::GetCellState( SfxItemSet& rSet ) ScDocument& rDoc = GetViewData()->GetDocShell()->GetDocument(); ScAddress aCursor( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() ); - + bool isLOKNoTiledAnnotations = comphelper::LibreOfficeKit::isActive() && !comphelper::LibreOfficeKit::isTiledAnnotations(); SfxWhichIter aIter(rSet); sal_uInt16 nWhich = aIter.FirstWhich(); while ( nWhich ) @@ -371,7 +372,8 @@ void ScCellShell::GetCellState( SfxItemSet& rSet ) case SID_EDIT_POSTIT: { ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() ); - if( rDoc.GetNote(aPos) ) + // Allow editing annotation by Id (without selecting the cell) for LOK + if( isLOKNoTiledAnnotations || rDoc.GetNote(aPos) ) { bDisable = false; } diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index a836749b3fbe..6f34b75b5f4c 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -2201,10 +2201,29 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) const SfxPoolItem* pText; if ( pReqArgs && pReqArgs->HasItem( SID_ATTR_POSTIT_TEXT, &pText) ) { + const SfxPoolItem* pCellId; + OUString aCellId; + // SID_ATTR_POSTIT_ID only argument for SID_EDIT_POSTIT + if (pReqArgs->HasItem( SID_ATTR_POSTIT_ID, &pCellId )) + aCellId = static_cast(pCellId)->GetValue(); + const SvxPostItTextItem* pTextItem = static_cast( pText ); - const SvxPostItAuthorItem* pAuthorItem = static_cast( pReqArgs->GetItem( SID_ATTR_POSTIT_AUTHOR) ); + const SvxPostItAuthorItem* pAuthorItem = static_cast( pReqArgs->GetItem( SID_ATTR_POSTIT_AUTHOR ) ); const SvxPostItDateItem* pDateItem = static_cast( pReqArgs->GetItem( SID_ATTR_POSTIT_DATE ) ); + if (!aCellId.isEmpty()) + { + ScAddress aParsedPos; + ScRefFlags nRes = aParsedPos.Parse(aCellId, + GetViewData()->GetDocument(), + ScAddress::Details(formula::FormulaGrammar::AddressConvention::CONV_ODF)); + if (nRes & ScRefFlags::VALID) + { + pTabViewShell->SetTabNo(aParsedPos.Tab()); + pTabViewShell->SetCursor(aParsedPos.Col(), aParsedPos.Row()); + } + } + ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() ); pTabViewShell->ReplaceNote( aPos, pTextItem->GetValue(), pAuthorItem ? &pAuthorItem->GetValue() : nullptr, -- cgit