summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-05-25 11:53:34 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-05-26 08:22:45 +0000
commit97d0e7be1ad95adcd13fff507885047bdcd54d82 (patch)
tree22ab10024d6682e2bc53b9857c53ec8d0045d750
parentfffe6ce631502ee846de103be70e763c567a2678 (diff)
Resolves: tdf#96244 get the right Writer window view for Formula window
if you hit F1 and F2 together, then the help window is a writer window too (in disguise) so asking for the "active view" on processing the F2 in the real writer will get the help window as the active view, which doesn't match expectations. Take the view from the bindings, where its correct from when the event has been dispatched. Investigating a bit further, the F2 formula window only works correctly when its in an "active" window. So get the correct view from the dispatcher but only accept that view if its the active one. Change-Id: I2fd52ca6b68e887d34b07b70b830722f1d00b37a (cherry picked from commit 77e7dc648ebb8b7d946111e2be4dfdbba72840b2) Reviewed-on: https://gerrit.libreoffice.org/25446 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--sw/source/uibase/inc/inputwin.hxx2
-rw-r--r--sw/source/uibase/ribbar/inputwin.cxx9
2 files changed, 7 insertions, 4 deletions
diff --git a/sw/source/uibase/inc/inputwin.hxx b/sw/source/uibase/inc/inputwin.hxx
index 97fc2594903c..606ec48447af 100644
--- a/sw/source/uibase/inc/inputwin.hxx
+++ b/sw/source/uibase/inc/inputwin.hxx
@@ -79,7 +79,7 @@ protected:
void CancelFormula();
public:
- SwInputWindow( vcl::Window* pParent );
+ SwInputWindow(vcl::Window* pParent, SfxDispatcher* pDispatcher);
virtual ~SwInputWindow();
virtual void dispose() override;
diff --git a/sw/source/uibase/ribbar/inputwin.cxx b/sw/source/uibase/ribbar/inputwin.cxx
index 178be93a7648..5acc97b53c4b 100644
--- a/sw/source/uibase/ribbar/inputwin.cxx
+++ b/sw/source/uibase/ribbar/inputwin.cxx
@@ -56,7 +56,7 @@
SFX_IMPL_POS_CHILDWINDOW_WITHID( SwInputChild, FN_EDIT_FORMULA, SFX_OBJECTBAR_OBJECT )
-SwInputWindow::SwInputWindow( vcl::Window* pParent )
+SwInputWindow::SwInputWindow(vcl::Window* pParent, SfxDispatcher* pDispatcher)
: ToolBox( pParent , SW_RES( RID_TBX_FORMULA )),
aPos( VclPtr<Edit>::Create(this, SW_RES(ED_POS))),
aEdit( VclPtr<InputEdit>::Create(this, WB_3DLOOK|WB_TABSTOP|WB_BORDER|WB_NOHIDESELECTION)),
@@ -79,7 +79,10 @@ SwInputWindow::SwInputWindow( vcl::Window* pParent )
SfxImageManager* pManager = SfxImageManager::GetImageManager( *SW_MOD() );
pManager->RegisterToolBox(this);
- pView = ::GetActiveView();
+ SwView *pDispatcherView = dynamic_cast<SwView*>(pDispatcher ? pDispatcher->GetFrame()->GetViewShell() : nullptr);
+ SwView* pActiveView = ::GetActiveView();
+ if (pDispatcherView == pActiveView)
+ pView = pActiveView;
pWrtShell = pView ? pView->GetWrtShellPtr() : nullptr;
InsertWindow( ED_POS, aPos.get(), ToolBoxItemBits::NONE, 0);
@@ -620,7 +623,7 @@ SwInputChild::SwInputChild(vcl::Window* _pParent,
SfxChildWindow( _pParent, nId )
{
pDispatch = pBindings->GetDispatcher();
- SetWindow( VclPtr<SwInputWindow>::Create( _pParent ) );
+ SetWindow(VclPtr<SwInputWindow>::Create(_pParent, pDispatch));
static_cast<SwInputWindow*>(GetWindow())->ShowWin();
SetAlignment(SfxChildAlignment::LOWESTTOP);
}