[Libreoffice-commits] core.git: Branch 'feature/tiled-editing' - 4 commits - sc/inc sc/source

Miklos Vajna vmiklos at collabora.co.uk
Wed Feb 25 07:03:09 PST 2015


 sc/inc/docuno.hxx              |   22 +++++++--
 sc/source/ui/app/inputhdl.cxx  |    9 +++
 sc/source/ui/inc/gridwin.hxx   |    3 +
 sc/source/ui/inc/inputhdl.hxx  |    2 
 sc/source/ui/inc/tabvwsh.hxx   |    1 
 sc/source/ui/unoobj/docuno.cxx |   12 +++++
 sc/source/ui/view/gridwin4.cxx |   44 ++++++++++++++++++
 sc/source/ui/view/tabvwsh4.cxx |   95 +++++++++++++++++++----------------------
 8 files changed, 133 insertions(+), 55 deletions(-)

New commits:
commit 4a497408d4b7a1bfe27109dacd046d43c822af78
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed Feb 25 16:01:30 2015 +0100

    Clean up not needed ScTabViewShell LOK methods
    
    Change-Id: Ic834d61cccdd422af96bd1b5933eb1a77e8efc16

diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index b0afcde..7f1fd84 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -181,9 +181,6 @@ private:
     OUString   maName;
     OUString   maScope;
 
-    LibreOfficeKitCallback mpLibreOfficeKitCallback;
-    void* mpLibreOfficeKitData;
-
 private:
     void    Construct( sal_uInt8 nForceDesignMode = SC_FORCEMODE_NONE );
 
@@ -416,12 +413,6 @@ public:
     // #i123629#
     bool    GetForceFocusOnCurCell() const { return bForceFocusOnCurCell; }
     void SetForceFocusOnCurCell(bool bFlag) { bForceFocusOnCurCell=bFlag; }
-
-    /// The actual implementation of the vcl::ITiledRenderable::registerCallback() API.
-    void registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData);
-
-    /// Invokes the registered callback, if there are any.
-    void libreOfficeKitCallback(int nType, const char* pPayload) const;
 };
 
 #endif
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index c530855..4ff2727 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -513,7 +513,7 @@ Size ScModelObj::getDocumentSize()
 void ScModelObj::registerCallback(LibreOfficeKitCallback pCallback, void* pData)
 {
     SolarMutexGuard aGuard;
-    pDocShell->GetBestViewShell()->registerLibreOfficeKitCallback(pCallback, pData);
+    pDocShell->GetDocument().GetDrawLayer()->registerLibreOfficeKitCallback(pCallback, pData);
 }
 
 void ScModelObj::initializeForTiledRendering()
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index dc88981..54dee5f 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -994,7 +994,7 @@ void ScGridWindow::LogicInvalidate(const ::vcl::Region* pRegion)
         sRectangle = "EMPTY";
     else
         sRectangle = pRegion->GetBoundRect().toString();
-    pViewData->GetViewShell()->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr());
+    pViewData->GetDocument()->GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr());
 }
 
 void ScGridWindow::CheckNeedsRepaint()
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index ef4f9f0..e657c47 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1695,9 +1695,7 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
     bForceFocusOnCurCell(false),
     nCurRefDlgId(0),
     pAccessibilityBroadcaster(NULL),
-    mbInSwitch(false),
-    mpLibreOfficeKitCallback(NULL),
-    mpLibreOfficeKitData(NULL)
+    mbInSwitch(false)
 {
     const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
 
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index 1f20316..bc5cff7 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -477,16 +477,4 @@ SfxModelessDialog* ScTabViewShell::CreateRefDialog(
     return pResult;
 }
 
-void ScTabViewShell::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pData)
-{
-    mpLibreOfficeKitCallback = pCallback;
-    mpLibreOfficeKitData = pData;
-}
-
-void ScTabViewShell::libreOfficeKitCallback(int nType, const char* pPayload) const
-{
-    if (mpLibreOfficeKitCallback)
-        mpLibreOfficeKitCallback(nType, pPayload, mpLibreOfficeKitData);
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 3abf5949be96473646ab77f9d1706e49eba06a44
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed Feb 25 15:38:40 2015 +0100

    ScInputHandler::ImplCreateEditEngine: don't invalidate unconditionally
    
    In the desktop case we still have to Paint() directly. This fixes the
    small rendering delay in the desktop case introduced by the previous
    commit.
    
    Change-Id: If07e2d47f62cbe17816439d18c45f129be6ce210

diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index a5ae0d2..f277efc 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -391,6 +391,9 @@ public:
 
     // @see vcl::ITiledRenderable::registerCallback().
     virtual void registerCallback(LibreOfficeKitCallback pCallback, void* pData) SAL_OVERRIDE;
+
+    /// @see vcl::ITiledRenderable::initializeForTiledRendering().
+    virtual void initializeForTiledRendering() SAL_OVERRIDE;
 };
 
 class ScDrawPagesObj : public cppu::WeakImplHelper2<
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 623ee34..b3478dd 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -631,9 +631,12 @@ void ScInputHandler::ImplCreateEditEngine()
 
     // set the EditEngine so that it invalidates the view instead of direct
     // paint
-    EditView *pEditView = pEngine->GetActiveView();
-    if (pEditView && !pEditView->isTiledRendering())
-        pEditView->setTiledRendering(true);
+    if (pActiveViewSh)
+    {
+        ScDocument& rDoc = pActiveViewSh->GetViewData().GetDocShell()->GetDocument();
+        if (EditView* pEditView = pEngine->GetActiveView())
+            pEditView->setTiledRendering(rDoc.GetDrawLayer()->isTiledRendering());
+    }
 }
 
 void ScInputHandler::UpdateAutoCorrFlag()
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 7ca131c..c530855 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -516,6 +516,12 @@ void ScModelObj::registerCallback(LibreOfficeKitCallback pCallback, void* pData)
     pDocShell->GetBestViewShell()->registerLibreOfficeKitCallback(pCallback, pData);
 }
 
+void ScModelObj::initializeForTiledRendering()
+{
+    SolarMutexGuard aGuard;
+    pDocShell->GetDocument().GetDrawLayer()->setTiledRendering(true);
+}
+
 uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType )
                                                 throw(uno::RuntimeException, std::exception)
 {
commit ce35e601619a8b675699363bb9ce8dcd1bdc1602
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Feb 25 15:06:00 2015 +0100

    sc: Make characters appear during tiled rendering as they are typed.
    
    TODO FIXME proof-of-concept cut'n'paste
    
    This entire ScGridWindow::PaintTile() must share code with
    ScGridWindow::Draw(), that's the only way how to get also the shapes,
    charts and everything.
    
    Change-Id: I72d7363edc0c46a9920c3ca0d5d51c982e748a77

diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 180c864..623ee34 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -628,6 +628,12 @@ void ScInputHandler::ImplCreateEditEngine()
         pEngine->SetControlWord( pEngine->GetControlWord() | EE_CNTRL_AUTOCORRECT );
         pEngine->SetModifyHdl( LINK( this, ScInputHandler, ModifyHdl ) );
     }
+
+    // set the EditEngine so that it invalidates the view instead of direct
+    // paint
+    EditView *pEditView = pEngine->GetActiveView();
+    if (pEditView && !pEditView->isTiledRendering())
+        pEditView->setTiledRendering(true);
 }
 
 void ScInputHandler::UpdateAutoCorrFlag()
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index cb119c5..dc88981 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -954,6 +954,37 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
     aOutData.DrawEdit(true);
 
     rDevice.SetMapMode(aOldMapMode);
+
+    EditView*   pEditView = NULL;
+    {
+        SCCOL nEditCol;
+        SCROW nEditRow;
+        pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+    }
+    //  InPlace Edit-View
+    // moved after EndDrawLayers() to get it outside the overlay buffer and
+    // on top of everything
+    if (pEditView)
+    {
+        //! use pContentDev for EditView?
+        rDevice.SetMapMode(MAP_PIXEL);
+        SCCOL nEditCol1 = pViewData->GetEditStartCol();
+        SCROW nEditRow1 = pViewData->GetEditStartRow();
+        SCCOL nEditCol2 = pViewData->GetEditEndCol();
+        SCROW nEditRow2 = pViewData->GetEditEndRow();
+        rDevice.SetLineColor();
+        rDevice.SetFillColor( pEditView->GetBackgroundColor() );
+        Point aStart = pViewData->GetScrPos( nEditCol1, nEditRow1, eWhich );
+        Point aEnd = pViewData->GetScrPos( nEditCol2+1, nEditRow2+1, eWhich );
+        aEnd.X() -= 2;        // don't overwrite grid
+        aEnd.Y() -= 2;
+        rDevice.DrawRect( Rectangle( aStart,aEnd ) );
+
+        rDevice.SetMapMode(pViewData->GetLogicMode());
+        pEditView->Paint( PixelToLogic( Rectangle( Point( fTilePosXPixel, fTilePosYPixel ),
+                            Size( aOutData.GetScrW(), aOutData.GetScrH() ) ) ), &rDevice );
+        rDevice.SetMapMode(MAP_PIXEL);
+    }
 }
 
 void ScGridWindow::LogicInvalidate(const ::vcl::Region* pRegion)
commit f4b963cf764491a0f06f7d3b9ffb4d34f1e9b300
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Tue Feb 24 13:58:55 2015 +0100

    sc: Initial support for tiled editing in Calc.
    
    Change-Id: Ifa5f84934a68fec86d4f30ee998bf75edfe331c5

diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index 9f7ed0a..a5ae0d2 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -368,7 +368,7 @@ public:
     virtual sal_Int32 SAL_CALL getFormulaCellNumberLimit()
                                 throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
 
-    // ITiledRenderable
+    // @see vcl::ITiledRenderable::paintTile().
     virtual void paintTile( VirtualDevice& rDevice,
                             int nOutputWidth,
                             int nOutputHeight,
@@ -376,10 +376,21 @@ public:
                             int nTilePosY,
                             long nTileWidth,
                             long nTileHeight ) SAL_OVERRIDE;
+
+    // @see vcl::ITiledRenderable::getDocumentSize().
     virtual Size getDocumentSize() SAL_OVERRIDE;
-    virtual void setPart(   int nPart ) SAL_OVERRIDE;
-    virtual int  getPart() SAL_OVERRIDE;
-    virtual int  getParts() SAL_OVERRIDE;
+
+    // @see vcl::ITiledRenderable::setPart().
+    virtual void setPart(int nPart) SAL_OVERRIDE;
+
+    // @see vcl::ITiledRenderable::getPart().
+    virtual int getPart() SAL_OVERRIDE;
+
+    // @see vcl::ITiledRenderable::getParts().
+    virtual int getParts() SAL_OVERRIDE;
+
+    // @see vcl::ITiledRenderable::registerCallback().
+    virtual void registerCallback(LibreOfficeKitCallback pCallback, void* pData) SAL_OVERRIDE;
 };
 
 class ScDrawPagesObj : public cppu::WeakImplHelper2<
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index e7f9c41..712fb72 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -322,6 +322,9 @@ public:
                                int nTilePosX, int nTilePosY,
                                long nTileWidth, long nTileHeight );
 
+    /// @see OutputDevice::LogicInvalidate().
+    void LogicInvalidate(const ::vcl::Region* pRegion) SAL_OVERRIDE;
+
     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
 
     void            FakeButtonUp();
diff --git a/sc/source/ui/inc/inputhdl.hxx b/sc/source/ui/inc/inputhdl.hxx
index 65ea47c..829ec97 100644
--- a/sc/source/ui/inc/inputhdl.hxx
+++ b/sc/source/ui/inc/inputhdl.hxx
@@ -56,7 +56,7 @@ class ScInputHandler : boost::noncopyable
 private:
     ScInputWindow*          pInputWin;
 
-    ScEditEngineDefaulter*  pEngine;                // edited data in the sheet
+    ScEditEngineDefaulter*  pEngine;                    ///< Edited data in the sheet (when the user clicks into the sheet, and starts writing there).
     EditView*               pTableView;                 // associated active EditView
     EditView*               pTopView;                   // EditView in dthe input row
 
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index 2272663..b0afcde 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -180,6 +180,10 @@ private:
     bool    mbInSwitch;
     OUString   maName;
     OUString   maScope;
+
+    LibreOfficeKitCallback mpLibreOfficeKitCallback;
+    void* mpLibreOfficeKitData;
+
 private:
     void    Construct( sal_uInt8 nForceDesignMode = SC_FORCEMODE_NONE );
 
@@ -412,6 +416,12 @@ public:
     // #i123629#
     bool    GetForceFocusOnCurCell() const { return bForceFocusOnCurCell; }
     void SetForceFocusOnCurCell(bool bFlag) { bForceFocusOnCurCell=bFlag; }
+
+    /// The actual implementation of the vcl::ITiledRenderable::registerCallback() API.
+    void registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData);
+
+    /// Invokes the registered callback, if there are any.
+    void libreOfficeKitCallback(int nType, const char* pPayload) const;
 };
 
 #endif
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 8fe2368..7ca131c 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -510,6 +510,12 @@ Size ScModelObj::getDocumentSize()
     return aSize;
 }
 
+void ScModelObj::registerCallback(LibreOfficeKitCallback pCallback, void* pData)
+{
+    SolarMutexGuard aGuard;
+    pDocShell->GetBestViewShell()->registerLibreOfficeKitCallback(pCallback, pData);
+}
+
 uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType )
                                                 throw(uno::RuntimeException, std::exception)
 {
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 07a5d62..cb119c5 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -29,6 +29,9 @@
 #include <sfx2/printer.hxx>
 #include <vcl/settings.hxx>
 
+#define LOK_USE_UNSTABLE_API
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+
 #include <svx/svdview.hxx>
 #include "tabvwsh.hxx"
 
@@ -953,6 +956,16 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
     rDevice.SetMapMode(aOldMapMode);
 }
 
+void ScGridWindow::LogicInvalidate(const ::vcl::Region* pRegion)
+{
+    OString sRectangle;
+    if (!pRegion)
+        sRectangle = "EMPTY";
+    else
+        sRectangle = pRegion->GetBoundRect().toString();
+    pViewData->GetViewShell()->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr());
+}
+
 void ScGridWindow::CheckNeedsRepaint()
 {
     //  called at the end of painting, and from timer after background text width calculation
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 2563bdf..ef4f9f0 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1449,53 +1449,6 @@ bool ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent )
     return TabKeyInput( rKeyEvent );
 }
 
-#define __INIT_ScTabViewShell \
-    eCurOST(OST_NONE),          \
-    nDrawSfxId(0),              \
-    nCtrlSfxId(USHRT_MAX),      \
-    nFormSfxId(USHRT_MAX),      \
-    pDrawShell(NULL),           \
-    pDrawTextShell(NULL),       \
-    pEditShell(NULL),           \
-    pPivotShell(NULL),          \
-    pAuditingShell(NULL),       \
-    pDrawFormShell(NULL),       \
-    pCellShell(NULL),           \
-    pOleObjectShell(NULL),      \
-    pChartShell(NULL),          \
-    pGraphicShell(NULL),        \
-    pMediaShell(NULL),          \
-    pPageBreakShell(NULL),      \
-    pExtrusionBarShell(NULL),   \
-    pFontworkBarShell(NULL),    \
-    pFormShell(NULL),           \
-    pInputHandler(NULL),        \
-    pCurFrameLine(NULL),        \
-    aTarget( this ),            \
-    pDialogDPObject(NULL),      \
-    pNavSettings(NULL),         \
-    bActiveDrawSh(false),       \
-    bActiveDrawTextSh(false),   \
-    bActivePivotSh(false),      \
-    bActiveAuditingSh(false),   \
-    bActiveDrawFormSh(false),   \
-    bActiveOleObjectSh(false),  \
-    bActiveChartSh(false),      \
-    bActiveGraphicSh(false),    \
-    bActiveMediaSh(false),      \
-    bActiveEditSh(false),       \
-    bFormShellAtTop(false),     \
-    bDontSwitch(false),         \
-    bInFormatDialog(false),     \
-    bPrintSelected(false),      \
-    bReadOnly(false),           \
-    pScSbxObject(NULL),         \
-    bChartAreaValid(false),     \
-    bForceFocusOnCurCell(false),\
-    nCurRefDlgId(0),            \
-    pAccessibilityBroadcaster(NULL), \
-    mbInSwitch(false)
-
 void ScTabViewShell::Construct( sal_uInt8 nForceDesignMode )
 {
     SfxApplication* pSfxApp  = SfxGetpApp();
@@ -1698,7 +1651,53 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
                                 SfxViewShell* pOldSh ) :
     SfxViewShell( pViewFrame, SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
     ScDBFunc( &pViewFrame->GetWindow(), static_cast<ScDocShell&>(*pViewFrame->GetObjectShell()), this ),
-    __INIT_ScTabViewShell
+    eCurOST(OST_NONE),
+    nDrawSfxId(0),
+    nCtrlSfxId(USHRT_MAX),
+    nFormSfxId(USHRT_MAX),
+    pDrawShell(NULL),
+    pDrawTextShell(NULL),
+    pEditShell(NULL),
+    pPivotShell(NULL),
+    pAuditingShell(NULL),
+    pDrawFormShell(NULL),
+    pCellShell(NULL),
+    pOleObjectShell(NULL),
+    pChartShell(NULL),
+    pGraphicShell(NULL),
+    pMediaShell(NULL),
+    pPageBreakShell(NULL),
+    pExtrusionBarShell(NULL),
+    pFontworkBarShell(NULL),
+    pFormShell(NULL),
+    pInputHandler(NULL),
+    pCurFrameLine(NULL),
+    aTarget(this),
+    pDialogDPObject(NULL),
+    pNavSettings(NULL),
+    bActiveDrawSh(false),
+    bActiveDrawTextSh(false),
+    bActivePivotSh(false),
+    bActiveAuditingSh(false),
+    bActiveDrawFormSh(false),
+    bActiveOleObjectSh(false),
+    bActiveChartSh(false),
+    bActiveGraphicSh(false),
+    bActiveMediaSh(false),
+    bActiveEditSh(false),
+    bFormShellAtTop(false),
+    bDontSwitch(false),
+    bInFormatDialog(false),
+    bPrintSelected(false),
+    bReadOnly(false),
+    pScSbxObject(NULL),
+    bChartAreaValid(false),
+    bForceFocusOnCurCell(false),
+    nCurRefDlgId(0),
+    pAccessibilityBroadcaster(NULL),
+    mbInSwitch(false),
+    mpLibreOfficeKitCallback(NULL),
+    mpLibreOfficeKitData(NULL)
 {
     const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
 
@@ -1744,8 +1743,6 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
     MakeDrawLayer();
 }
 
-#undef __INIT_ScTabViewShell
-
 ScTabViewShell::~ScTabViewShell()
 {
     ScDocShell* pDocSh = GetViewData().GetDocShell();
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index bc5cff7..1f20316 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -477,4 +477,16 @@ SfxModelessDialog* ScTabViewShell::CreateRefDialog(
     return pResult;
 }
 
+void ScTabViewShell::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pData)
+{
+    mpLibreOfficeKitCallback = pCallback;
+    mpLibreOfficeKitData = pData;
+}
+
+void ScTabViewShell::libreOfficeKitCallback(int nType, const char* pPayload) const
+{
+    if (mpLibreOfficeKitCallback)
+        mpLibreOfficeKitCallback(nType, pPayload, mpLibreOfficeKitData);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list