summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2018-03-08 21:07:40 +0100
committerAndras Timar <andras.timar@collabora.com>2018-03-28 00:05:08 +0200
commit4f728055e37dbc0a237925440faaed250e149653 (patch)
treef2c3bd9758ac1cdb021250cf436dcb04636a920b /sd
parent6975659ed411732d55361b914c9e8eeada3f7794 (diff)
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. Reviewed-on: https://gerrit.libreoffice.org/51343 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: pranavk <pranavk@collabora.co.uk> (cherry picked from commit 1990fc47bb561fcb9f98cbdcb7f986b93a54b876) Change-Id: Ie893050b7c875760db0194e7a3f0c2cd3068963b
Diffstat (limited to 'sd')
-rw-r--r--sd/source/ui/func/fuinsert.cxx21
-rw-r--r--sd/source/ui/inc/View.hxx2
-rw-r--r--sd/source/ui/inc/Window.hxx1
-rw-r--r--sd/source/ui/view/sdview2.cxx13
-rw-r--r--sd/source/ui/view/sdwindow.cxx20
5 files changed, 26 insertions, 31 deletions
diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index e0ad64bd7169..9204c5ba6ffe 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.X() -= aSize.Width() / 2;
aPos.Y() -= 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 63b124b33f42..42d658cd40bc 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 e60e35a89557..ad843324cb1d 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 7a042c44623a..746caede60cf 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 b3009d6f1b22..9d34aad34ed0 100644
--- a/sd/source/ui/view/sdwindow.cxx
+++ b/sd/source/ui/view/sdwindow.cxx
@@ -684,6 +684,26 @@ double Window::GetVisibleHeight()
return ((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.