sd/source/ui/func/fuinsert.cxx | 21 ++------------------- sd/source/ui/inc/View.hxx | 2 +- sd/source/ui/inc/Window.hxx | 1 + sd/source/ui/view/sdview2.cxx | 13 ++----------- sd/source/ui/view/sdwindow.cxx | 20 ++++++++++++++++++++ 5 files changed, 26 insertions(+), 31 deletions(-)
New commits: commit 1990fc47bb561fcb9f98cbdcb7f986b93a54b876 Author: Pranav Kant <pran...@collabora.co.uk> Date: Thu Mar 8 21:07:40 2018 +0100 sd lok: Enable mapmode in case of lok to calculate center This reverts the solution in 9fee132c18b658c9ea9fb1114c1fefa56b57532a. Also, calculate center using the new function for chart, image, and text shape insertion. Change-Id: Ie893050b7c875760db0194e7a3f0c2cd3068963b Reviewed-on: https://gerrit.libreoffice.org/51343 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: pranavk <pran...@collabora.co.uk> diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx index 7d18f8e6ab4c..397580a029e1 100644 --- a/sd/source/ui/func/fuinsert.cxx +++ b/sd/source/ui/func/fuinsert.cxx @@ -69,7 +69,6 @@ #include <sfx2/opengrf.hxx> #include <sfx2/viewfrm.hxx> #include <svx/charthelper.hxx> -#include <comphelper/lok.hxx> #include <app.hrc> #include <sdresid.hxx> @@ -170,20 +169,7 @@ void FuInsertGraphic::DoExecute( SfxRequest& rReq ) bSelectionReplaced = true; } - Point aPos; - // For LOK, set position to center of the page - if (comphelper::LibreOfficeKit::isActive()) - aPos = ::tools::Rectangle(aPos, mpView->GetSdrPageView()->GetPage()->GetSize()).Center(); - else - { - ::tools::Rectangle aRect(aPos, mpWindow->GetOutputSizePixel() ); - aPos = aRect.Center(); - bool bMapModeWasEnabled(mpWindow->IsMapModeEnabled()); - mpWindow->EnableMapMode(/*true*/); - aPos = mpWindow->PixelToLogic(aPos); - mpWindow->EnableMapMode(bMapModeWasEnabled); - } - + Point aPos = mpWindow->GetVisibleCenter(); SdrGrafObj* pGrafObj = mpView->InsertGraphic(aGraphic, nAction, aPos, pPickObj, nullptr); if(pGrafObj && bAsLink ) @@ -380,10 +366,7 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq ) aSize = OutputDevice::LogicToLogic(aSize, MapMode(aUnit), MapMode(MapUnit::Map100thMM)); } - Point aPos; - ::tools::Rectangle aWinRect(aPos, mpWindow->GetOutputSizePixel() ); - aPos = aWinRect.Center(); - aPos = mpWindow->PixelToLogic(aPos); + Point aPos = mpWindow->GetVisibleCenter(); aPos.AdjustX( -(aSize.Width() / 2) ); aPos.AdjustY( -(aSize.Height() / 2) ); aRect = ::tools::Rectangle(aPos, aSize); diff --git a/sd/source/ui/inc/View.hxx b/sd/source/ui/inc/View.hxx index 271a8850f707..962b6d43f56e 100644 --- a/sd/source/ui/inc/View.hxx +++ b/sd/source/ui/inc/View.hxx @@ -91,7 +91,7 @@ public: void SelectAll(); void DoCut(); void DoCopy(); - void DoPaste(vcl::Window const * pWindow=nullptr); + void DoPaste(::sd::Window* pWindow=nullptr); virtual void DoConnect(SdrOle2Obj* pOleObj) override; virtual bool SetStyleSheet(SfxStyleSheet* pStyleSheet, bool bDontRemoveHardAttr = false); void StartDrag( const Point& rStartPos, vcl::Window* pWindow ); diff --git a/sd/source/ui/inc/Window.hxx b/sd/source/ui/inc/Window.hxx index d1aa74a91602..d03890f6f491 100644 --- a/sd/source/ui/inc/Window.hxx +++ b/sd/source/ui/inc/Window.hxx @@ -131,6 +131,7 @@ public: void SetVisibleXY(double fX, double fY); double GetVisibleWidth(); double GetVisibleHeight(); + Point GetVisibleCenter(); double GetScrlLineWidth(); double GetScrlLineHeight(); double GetScrlPageWidth(); diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx index 81aff44869e2..57db0d9bef2d 100644 --- a/sd/source/ui/view/sdview2.cxx +++ b/sd/source/ui/view/sdview2.cxx @@ -264,7 +264,7 @@ void View::DoCopy() } } -void View::DoPaste (vcl::Window const * pWindow) +void View::DoPaste (::sd::Window* pWindow) { TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( mpViewSh->GetActiveWindow() ) ); if( !aDataHelper.GetTransferable().is() ) @@ -315,17 +315,8 @@ void View::DoPaste (vcl::Window const * pWindow) } else { - Point aPos; sal_Int8 nDnDAction = DND_ACTION_COPY; - - if( pWindow ) - { - if (comphelper::LibreOfficeKit::isActive()) - aPos = ::tools::Rectangle(aPos, GetSdrPageView()->GetPage()->GetSize()).Center(); - else - aPos = pWindow->PixelToLogic( ::tools::Rectangle( aPos, pWindow->GetOutputSizePixel() ).Center() ); - } - + Point aPos = pWindow->GetVisibleCenter(); DrawViewShell* pDrViewSh = static_cast<DrawViewShell*>( mpDocSh->GetViewShell() ); if (pDrViewSh != nullptr) diff --git a/sd/source/ui/view/sdwindow.cxx b/sd/source/ui/view/sdwindow.cxx index b81249061b87..2d17fbe5ec3b 100644 --- a/sd/source/ui/view/sdwindow.cxx +++ b/sd/source/ui/view/sdwindow.cxx @@ -683,6 +683,26 @@ double Window::GetVisibleHeight() return (static_cast<double>(aWinSize.Height()) / maViewSize.Height()); } +Point Window::GetVisibleCenter() +{ + Size aWinSize = PixelToLogic(GetOutputSizePixel()); + if ( aWinSize.Height() > maViewSize.Height() ) + aWinSize.setHeight( maViewSize.Height() ); + if ( aWinSize.Width() > maViewSize.Width() ) + aWinSize.setWidth( maViewSize.Width() ); + + Point aPos; + aPos = ::tools::Rectangle(aPos, aWinSize).Center(); + + // For LOK + bool bMapModeWasEnabled(IsMapModeEnabled()); + EnableMapMode(/*true*/); + aPos = PixelToLogic(aPos); + EnableMapMode(bMapModeWasEnabled); + + return aPos; +} + /** * @returns width of a scroll column in proportion to the width of the whole * working area. _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits