summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2018-02-20 21:32:34 +0530
committerJan Holesovsky <kendy@collabora.com>2018-02-21 16:48:41 +0100
commitf2d3192e8a4ae743fcaab27ab6d829d57ae8fb60 (patch)
tree3a304dbb36956f10a2a27d19f571e30aae0f0481
parent58f2da6af5e772bd01f75a00753a42cfd70af917 (diff)
lok: Factor out the code for finding vcl::Window of a document
This should also help with IME input on charts Change-Id: Ie513790a5d0c87397c39301a328a44b59d394a45 Reviewed-on: https://gerrit.libreoffice.org/50094 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
-rw-r--r--sc/source/ui/unoobj/docuno.cxx28
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx24
-rw-r--r--sw/source/uibase/uno/unotxdoc.cxx23
3 files changed, 32 insertions, 43 deletions
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 63a7b757bf9a..7df255a31ebd 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -549,10 +549,19 @@ OUString ScModelObj::getPartHash( int nPart )
VclPtr<vcl::Window> ScModelObj::getDocWindow()
{
SolarMutexGuard aGuard;
+
+ // There seems to be no clear way of getting the grid window for this
+ // particular document, hence we need to hope we get the right window.
ScViewData* pViewData = ScDocShell::GetViewData();
VclPtr<vcl::Window> pWindow;
if (pViewData)
pWindow = pViewData->GetActiveWin();
+
+ LokChartHelper aChartHelper(pViewData->GetViewShell());
+ vcl::Window* pChartWindow = aChartHelper.GetWindow();
+ if (pChartWindow)
+ pWindow = pChartWindow;
+
return pWindow;
}
@@ -594,31 +603,18 @@ void ScModelObj::postKeyEvent(int nType, int nCharCode, int nKeyCode)
{
SolarMutexGuard aGuard;
- // There seems to be no clear way of getting the grid window for this
- // particular document, hence we need to hope we get the right window.
- ScViewData* pViewData = ScDocShell::GetViewData();
- vcl::Window* pWindow = pViewData->GetActiveWin();
-
+ VclPtr<vcl::Window> pWindow = getDocWindow();
if (!pWindow)
return;
KeyEvent aEvent(nCharCode, nKeyCode, 0);
-
- ScTabViewShell * pTabViewShell = pViewData->GetViewShell();
- LokChartHelper aChartHelper(pTabViewShell);
- vcl::Window* pChartWindow = aChartHelper.GetWindow();
- if (pChartWindow)
- {
- pWindow = pChartWindow;
- }
-
switch (nType)
{
case LOK_KEYEVENT_KEYINPUT:
- pWindow->KeyInput(aEvent);
+ Application::PostKeyEvent(VCLEVENT_WINDOW_KEYINPUT, pWindow, &aEvent);
break;
case LOK_KEYEVENT_KEYUP:
- pWindow->KeyUp(aEvent);
+ Application::PostKeyEvent(VCLEVENT_WINDOW_KEYUP, pWindow, &aEvent);
break;
default:
assert(false);
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 4933b87742f9..30971a584e49 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -2374,6 +2374,12 @@ VclPtr<vcl::Window> SdXImpressDocument::getDocWindow()
VclPtr<vcl::Window> pWindow;
if (pViewShell)
pWindow = pViewShell->GetActiveWindow();
+
+ LokChartHelper aChartHelper(pViewShell->GetViewShell());
+ VclPtr<vcl::Window> pChartWindow = aChartHelper.GetWindow();
+ if (pChartWindow)
+ pWindow = pChartWindow;
+
return pWindow;
}
@@ -2496,30 +2502,18 @@ void SdXImpressDocument::postKeyEvent(int nType, int nCharCode, int nKeyCode)
{
SolarMutexGuard aGuard;
- DrawViewShell* pViewShell = GetViewShell();
- if (!pViewShell)
- return;
-
- vcl::Window* pWindow = pViewShell->GetActiveWindow();
+ VclPtr<vcl::Window> pWindow = getDocWindow();
if (!pWindow)
return;
- LokChartHelper aChartHelper(pViewShell->GetViewShell());
- vcl::Window* pChartWindow = aChartHelper.GetWindow();
- if (pChartWindow)
- {
- pWindow = pChartWindow;
- }
-
KeyEvent aEvent(nCharCode, nKeyCode, 0);
-
switch (nType)
{
case LOK_KEYEVENT_KEYINPUT:
- pWindow->KeyInput(aEvent);
+ Application::PostKeyEvent(VCLEVENT_WINDOW_KEYINPUT, pWindow, &aEvent);
break;
case LOK_KEYEVENT_KEYUP:
- pWindow->KeyUp(aEvent);
+ Application::PostKeyEvent(VCLEVENT_WINDOW_KEYUP, pWindow, &aEvent);
break;
default:
assert(false);
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index 43101853987a..103ae13f9111 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -3409,6 +3409,12 @@ VclPtr<vcl::Window> SwXTextDocument::getDocWindow()
SwView* pView = pDocShell->GetView();
if (pView)
pWindow = &(pView->GetEditWin());
+
+ LokChartHelper aChartHelper(pView);
+ VclPtr<vcl::Window> pChartWindow = aChartHelper.GetWindow();
+ if (pChartWindow)
+ pWindow = pChartWindow;
+
return pWindow;
}
@@ -3485,25 +3491,18 @@ void SwXTextDocument::postKeyEvent(int nType, int nCharCode, int nKeyCode)
{
SolarMutexGuard aGuard;
- vcl::Window* pWindow = &(pDocShell->GetView()->GetEditWin());
-
- SfxViewShell* pViewShell = pDocShell->GetView();
- LokChartHelper aChartHelper(pViewShell);
- vcl::Window* pChartWindow = aChartHelper.GetWindow();
- if (pChartWindow)
- {
- pWindow = pChartWindow;
- }
+ VclPtr<vcl::Window> pWindow = getDocWindow();
+ if (!pWindow)
+ return;
KeyEvent aEvent(nCharCode, nKeyCode, 0);
-
switch (nType)
{
case LOK_KEYEVENT_KEYINPUT:
- pWindow->KeyInput(aEvent);
+ Application::PostKeyEvent(VCLEVENT_WINDOW_KEYINPUT, pWindow, &aEvent);
break;
case LOK_KEYEVENT_KEYUP:
- pWindow->KeyUp(aEvent);
+ Application::PostKeyEvent(VCLEVENT_WINDOW_KEYUP, pWindow, &aEvent);
break;
default:
assert(false);