[Libreoffice-commits] core.git: sc/qa sc/source

Pranav Kant pranavk at collabora.co.uk
Thu Mar 16 11:13:04 UTC 2017


 sc/qa/unit/tiledrendering/tiledrendering.cxx |    7 ++++++-
 sc/source/ui/view/cellsh.cxx                 |    6 ++++--
 sc/source/ui/view/cellsh1.cxx                |   21 ++++++++++++++++++++-
 3 files changed, 30 insertions(+), 4 deletions(-)

New commits:
commit 055d8821e664446b7e66b73970a324f765e35f9c
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Thu Mar 16 13:07:21 2017 +0530

    sc lok: Edit annotation by id
    
    Change-Id: Iaea08b7a31fab1a8c9b8edc193754821c6608c53
    Reviewed-on: https://gerrit.libreoffice.org/35249
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    Tested-by: pranavk <pranavk at collabora.co.uk>

diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx
index c25dc6681170..ac7de0e77f18 100644
--- a/sc/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -1082,8 +1082,14 @@ void ScTiledRenderingTest::testCommentCallback()
     CPPUNIT_ASSERT_EQUAL(std::string("0, 255, 1274, 254"), aView2.m_aCommentCallbackResult.get<std::string>("cellPos"));
 
     // Edit a comment
+    // Select some random cell, we should be able to edit the cell note without
+    // selecting the cell
+    ScTabViewShell* pTabViewShell = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
+    if (pTabViewShell)
+        pTabViewShell->SetCursor(3, 100);
     aArgs = comphelper::InitPropertySequence(
     {
+        {"Id", uno::makeAny(OUString("Sheet1.A2"))},
         {"Text", uno::makeAny(OUString("Edited comment"))},
         {"Author", uno::makeAny(OUString("LOK User2"))},
     });
@@ -1103,7 +1109,6 @@ void ScTiledRenderingTest::testCommentCallback()
     CPPUNIT_ASSERT_EQUAL(std::string("0, 255, 1274, 254"), aView2.m_aCommentCallbackResult.get<std::string>("cellPos"));
 
     // Delete the comment
-    ScTabViewShell* pTabViewShell = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
     if (pTabViewShell)
         pTabViewShell->SetCursor(4, 43);
     aArgs = comphelper::InitPropertySequence(
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 <comphelper/lok.hxx>
 #include <svl/slstitm.hxx>
 #include <svl/stritem.hxx>
 #include <svl/whiter.hxx>
@@ -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<const SvxPostItIdItem*>(pCellId)->GetValue();
+
                     const SvxPostItTextItem*    pTextItem   = static_cast<const SvxPostItTextItem*>( pText );
-                    const SvxPostItAuthorItem*  pAuthorItem = static_cast<const SvxPostItAuthorItem*>( pReqArgs->GetItem( SID_ATTR_POSTIT_AUTHOR) );
+                    const SvxPostItAuthorItem*  pAuthorItem = static_cast<const SvxPostItAuthorItem*>( pReqArgs->GetItem( SID_ATTR_POSTIT_AUTHOR ) );
                     const SvxPostItDateItem*    pDateItem   = static_cast<const SvxPostItDateItem*>( 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,


More information about the Libreoffice-commits mailing list