include/tools/gen.hxx | 5 +++++ sd/source/ui/inc/ViewShell.hxx | 9 +++++++++ sd/source/ui/inc/Window.hxx | 2 ++ sd/source/ui/inc/unomodel.hxx | 4 +++- sd/source/ui/unoidl/unomodel.cxx | 6 ++++++ sd/source/ui/view/sdwindow.cxx | 10 ++++++++++ sd/source/ui/view/viewshel.cxx | 14 ++++++++++++++ sw/source/core/crsr/viscrs.cxx | 17 +++++++---------- sw/source/uibase/docvw/edtwin.cxx | 7 +------ tools/source/generic/gen.cxx | 7 +++++++ 10 files changed, 64 insertions(+), 17 deletions(-)
New commits: commit 0a0afddf84b968e1715b2681b270cbc93c65a220 Author: Miklos Vajna <[email protected]> Date: Tue Feb 17 16:31:30 2015 +0100 sd: initial ViewShell::libreOfficeKitCallback() With this, typing into an empty document + pressing Esc makes those typed characters visible. Change-Id: I57d05f40d1bb6afa2b8c68ce1d10906203aa4bc8 diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx index b4bd333..e5f082c 100644 --- a/sd/source/ui/inc/ViewShell.hxx +++ b/sd/source/ui/inc/ViewShell.hxx @@ -23,6 +23,7 @@ #include <rtl/ref.hxx> #include <vcl/field.hxx> +#include <vcl/ITiledRenderable.hxx> #include <sfx2/viewsh.hxx> #include <vcl/prntypes.hxx> #include <svtools/transfer.hxx> @@ -443,6 +444,11 @@ public: SdPage* pPage, const sal_Int32 nInsertPosition = -1); + /// The actual implementation of the vcl::ITiledRenderable::registerCallback() API for Impress. + void registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pLibreOfficeKitData); + /// Invokes the registered callback, if there are any. + void libreOfficeKitCallback(int nType, const char* pPayload) const; + class Implementation; protected: @@ -576,6 +582,9 @@ private: /** Create the rulers. */ void SetupRulers (void); + + LibreOfficeKitCallback mpLibreOfficeKitCallback; + void* mpLibreOfficeKitData; }; SdrView* ViewShell::GetDrawView (void) const diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx index 043d742..fbeb73a 100644 --- a/sd/source/ui/inc/unomodel.hxx +++ b/sd/source/ui/inc/unomodel.hxx @@ -240,8 +240,10 @@ public: virtual OUString getPartName( int nPart ) SAL_OVERRIDE; virtual void setPartMode( LibreOfficeKitPartMode ePartMode ) SAL_OVERRIDE; - /// @see ITiledRenderable::initializeForTiledRendering(). + /// @see vcl::ITiledRenderable::initializeForTiledRendering(). virtual void initializeForTiledRendering() SAL_OVERRIDE; + /// @see vcl::ITiledRenderable::registerCallback(). + virtual void registerCallback(LibreOfficeKitCallback pCallback, void* pData) SAL_OVERRIDE; // XComponent diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx index b935089..76717a5 100644 --- a/sd/source/ui/unoidl/unomodel.cxx +++ b/sd/source/ui/unoidl/unomodel.cxx @@ -2354,6 +2354,12 @@ void SdXImpressDocument::initializeForTiledRendering() mpDocShell->GetViewShell()->GetViewFrame()->GetDispatcher()->Execute(SID_VIEWSHELL0, SfxCallMode::SYNCHRON | SfxCallMode::RECORD); } +void SdXImpressDocument::registerCallback(LibreOfficeKitCallback pCallback, void* pData) +{ + SolarMutexGuard aGuard; + mpDocShell->GetViewShell()->registerLibreOfficeKitCallback(pCallback, pData); +} + uno::Reference< i18n::XForbiddenCharacters > SdXImpressDocument::getForbiddenCharsTable() { uno::Reference< i18n::XForbiddenCharacters > xForb(mxForbidenCharacters); diff --git a/sd/source/ui/view/sdwindow.cxx b/sd/source/ui/view/sdwindow.cxx index 3ee8790..8222f38 100644 --- a/sd/source/ui/view/sdwindow.cxx +++ b/sd/source/ui/view/sdwindow.cxx @@ -992,6 +992,7 @@ void Window::LogicInvalidate(const ::vcl::Region* pRegion) sRectangle = "EMPTY"; else sRectangle = pRegion->GetBoundRect().toString(); + mpViewShell->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr()); } } // end of namespace sd diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx index 83dc9ca..f728131 100644 --- a/sd/source/ui/view/viewshel.cxx +++ b/sd/source/ui/view/viewshel.cxx @@ -137,6 +137,8 @@ ViewShell::ViewShell( SfxViewFrame*, vcl::Window* pParentWindow, ViewShellBase& : SfxShell(&rViewShellBase) , mbCenterAllowed(bAllowCenter) , mpParentWindow(pParentWindow) +, mpLibreOfficeKitCallback(0) +, mpLibreOfficeKitData(0) { construct(); } @@ -1448,6 +1450,18 @@ void ViewShell::NotifyAccUpdate( ) GetViewShellBase().GetDrawController().NotifyAccUpdate(); } +void ViewShell::registerLibreOfficeKitCallback(LibreOfficeKitCallback pCallback, void* pData) +{ + mpLibreOfficeKitCallback = pCallback; + mpLibreOfficeKitData = pData; +} + +void ViewShell::libreOfficeKitCallback(int nType, const char* pPayload) const +{ + if (mpLibreOfficeKitCallback) + mpLibreOfficeKitCallback(nType, pPayload, mpLibreOfficeKitData); +} + } // end of namespace sd //===== ViewShellObjectBarFactory ============================================= commit 89dcde8f10b1c196fe6cdb9663d9ece69f4fb90a Author: Miklos Vajna <[email protected]> Date: Tue Feb 17 16:00:00 2015 +0100 sd: initial Window::LogicInvalidate() Change-Id: I070e5ccac61061730f5d0fecfc197d9fb88dca51 diff --git a/sd/source/ui/inc/Window.hxx b/sd/source/ui/inc/Window.hxx index 3eb247a..9055037 100644 --- a/sd/source/ui/inc/Window.hxx +++ b/sd/source/ui/inc/Window.hxx @@ -192,6 +192,8 @@ protected: OUString GetSurroundingText() const SAL_OVERRIDE; Selection GetSurroundingTextSelection() const SAL_OVERRIDE; + /// @see OutputDevice::LogicInvalidate(). + void LogicInvalidate(const ::vcl::Region* pRegion) SAL_OVERRIDE; }; } // end of namespace sd diff --git a/sd/source/ui/view/sdwindow.cxx b/sd/source/ui/view/sdwindow.cxx index 880c82d..3ee8790 100644 --- a/sd/source/ui/view/sdwindow.cxx +++ b/sd/source/ui/view/sdwindow.cxx @@ -985,6 +985,15 @@ Selection Window::GetSurroundingTextSelection() const } } +void Window::LogicInvalidate(const ::vcl::Region* pRegion) +{ + OString sRectangle; + if (!pRegion) + sRectangle = "EMPTY"; + else + sRectangle = pRegion->GetBoundRect().toString(); +} + } // end of namespace sd /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 1a33747910e9e5696df1ff0c73a9b6136a719b12 Author: Miklos Vajna <[email protected]> Date: Tue Feb 17 15:28:31 2015 +0100 Add Rectangle::toString() There were already 5 versions of this in sw, 4 for SwRect, one for Rectangle. Change-Id: Icf8c78f9973d940a4d180b6f52dda9ea1be86c14 diff --git a/include/tools/gen.hxx b/include/tools/gen.hxx index e8ad8fe..b17cb19 100644 --- a/include/tools/gen.hxx +++ b/include/tools/gen.hxx @@ -27,6 +27,10 @@ #include <cstdlib> class SvStream; +namespace rtl +{ + class OString; +} enum TriState { TRISTATE_FALSE, TRISTATE_TRUE, TRISTATE_INDET }; @@ -436,6 +440,7 @@ public: void setY( long n ) { nBottom += n-nTop; nTop = n; } void setWidth( long n ) { nRight = nLeft + n; } void setHeight( long n ) { nBottom = nTop + n; } + rtl::OString toString() const; private: long nLeft; diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx index 46b740b..0803ae2 100644 --- a/sw/source/core/crsr/viscrs.cxx +++ b/sw/source/core/crsr/viscrs.cxx @@ -179,9 +179,8 @@ void SwVisCrsr::_SetPosAndShow() if (m_pCrsrShell->isTiledRendering()) { - std::stringstream ss; - ss << aRect.Width() << ", " << aRect.Height() << ", " << aRect.Left() << ", " << aRect.Top(); - OString sRect = ss.str().c_str(); + Rectangle aSVRect(aRect.Pos().getX(), aRect.Pos().getY(), aRect.Pos().getX() + aRect.SSize().Width(), aRect.Pos().getY() + aRect.SSize().Height()); + OString sRect = aSVRect.toString(); m_pCrsrShell->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, sRect.getStr()); } @@ -343,13 +342,11 @@ void SwSelPaintRects::Show() // client side. const SwShellCrsr* pCursor = GetShell()->getShellCrsr(false); SwRect aStartRect = lcl_getLayoutRect(pCursor->GetSttPos(), *pCursor->Start()); - std::stringstream ss; - ss << aStartRect.Width() << ", " << aStartRect.Height() << ", " << aStartRect.Left() << ", " << aStartRect.Top(); - GetShell()->libreOfficeKitCallback(LOK_CALLBACK_TEXT_SELECTION_START, ss.str().c_str()); + OString sRect = aStartRect.SVRect().toString(); + GetShell()->libreOfficeKitCallback(LOK_CALLBACK_TEXT_SELECTION_START, sRect.getStr()); SwRect aEndRect = lcl_getLayoutRect(pCursor->GetEndPos(), *pCursor->End()); - ss.str(""); - ss << aEndRect.Width() << ", " << aEndRect.Height() << ", " << aEndRect.Left() << ", " << aEndRect.Top(); - GetShell()->libreOfficeKitCallback(LOK_CALLBACK_TEXT_SELECTION_END, ss.str().c_str()); + sRect = aEndRect.SVRect().toString(); + GetShell()->libreOfficeKitCallback(LOK_CALLBACK_TEXT_SELECTION_END, sRect.getStr()); } std::stringstream ss; @@ -358,7 +355,7 @@ void SwSelPaintRects::Show() const SwRect& rRect = (*this)[i]; if (i) ss << "; "; - ss << rRect.Width() << ", " << rRect.Height() << ", " << rRect.Left() << ", " << rRect.Top(); + ss << rRect.SVRect().toString().getStr(); } OString sRect = ss.str().c_str(); GetShell()->libreOfficeKitCallback(LOK_CALLBACK_TEXT_SELECTION, sRect.getStr()); diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 53a1abb..9fb33c8 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -6234,12 +6234,7 @@ void SwEditWin::LogicInvalidate(const vcl::Region* pRegion) if (!pRegion) sRectangle = "EMPTY"; else - { - std::stringstream ss; - Rectangle aRectangle = pRegion->GetBoundRect(); - ss << aRectangle.getWidth() << ", " << aRectangle.getHeight() << ", " << aRectangle.getX() << ", " << aRectangle.getY(); - sRectangle = ss.str().c_str(); - } + sRectangle = pRegion->GetBoundRect().toString(); m_rView.GetWrtShell().libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr()); } diff --git a/tools/source/generic/gen.cxx b/tools/source/generic/gen.cxx index cc64f8f..e2a61c5 100644 --- a/tools/source/generic/gen.cxx +++ b/tools/source/generic/gen.cxx @@ -195,4 +195,11 @@ SvStream& WriteRectangle( SvStream& rOStream, const Rectangle& rRect ) return rOStream; } +OString Rectangle::toString() const +{ + std::stringstream ss; + ss << getWidth() << ", " << getHeight() << ", " << getX() << ", " << getY(); + return ss.str().c_str(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
