Kaydet (Commit) c74ccac7 authored tarafından Miklos Vajna's avatar Miklos Vajna

sfx2: add SfxViewShell::libreOfficeKitViewCallback()

This is similar to the existing LOK callback, the difference is that the
existing one assumes there is only one SfxViewShell instance at the same
time.

This newer callback is precisely per-view, so model notifications can
invoke all view callbacks, while view notifications can invoke only the
callback of the relevant view.

This is just the framework, all actual client code has to be still
ported over (and then the existing callback can be removed).

Change-Id: I3d8f27740c69fcf6ffbbdce12db2ea088321493d
üst 714257af
......@@ -39,6 +39,8 @@
#include <o3tl/typed_flags_set.hxx>
#include <vcl/vclptr.hxx>
#include <sfx2/tabdlg.hxx>
#define LOK_USE_UNSTABLE_API
#include <LibreOfficeKit/LibreOfficeKitTypes.h>
class SfxBaseController;
class Size;
......@@ -315,6 +317,11 @@ public:
SAL_DLLPRIVATE void TakeOwnership_Impl();
SAL_DLLPRIVATE void TakeFrameOwnership_Impl();
SAL_DLLPRIVATE bool ExecKey_Impl(const KeyEvent& aKey);
/// The actual implementation of the lok::Document::registerViewCallback() API.
void registerLibreOfficeKitViewCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData);
/// Invokes the registered callback, if there are any.
void libreOfficeKitViewCallback(int nType, const char* pPayload) const;
};
......
......@@ -64,6 +64,9 @@ struct SfxViewShell_Impl
mutable SfxInPlaceClientList* mpIPClientList;
LibreOfficeKitCallback m_pLibreOfficeKitViewCallback;
void* m_pLibreOfficeKitViewData;
explicit SfxViewShell_Impl(SfxViewShellFlags const nFlags);
~SfxViewShell_Impl();
......
......@@ -309,6 +309,8 @@ SfxViewShell_Impl::SfxViewShell_Impl(SfxViewShellFlags const nFlags)
, m_nFamily(0xFFFF) // undefined, default set by TemplateDialog
, m_pController(0)
, mpIPClientList(NULL)
, m_pLibreOfficeKitViewCallback(0)
, m_pLibreOfficeKitViewData(0)
{}
SfxViewShell_Impl::~SfxViewShell_Impl()
......@@ -1631,6 +1633,18 @@ bool SfxViewShell::ExecKey_Impl(const KeyEvent& aKey)
return pImp->m_xAccExec->execute(aKey.GetKeyCode());
}
void SfxViewShell::registerLibreOfficeKitViewCallback(LibreOfficeKitCallback pCallback, void* pData)
{
pImp->m_pLibreOfficeKitViewCallback = pCallback;
pImp->m_pLibreOfficeKitViewData = pData;
}
void SfxViewShell::libreOfficeKitViewCallback(int nType, const char* pPayload) const
{
if (pImp->m_pLibreOfficeKitViewCallback)
pImp->m_pLibreOfficeKitViewCallback(nType, pPayload, pImp->m_pLibreOfficeKitViewData);
}
bool SfxViewShell::KeyInput( const KeyEvent &rKeyEvent )
/* [Description]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment