From 97d0e7be1ad95adcd13fff507885047bdcd54d82 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 25 May 2016 11:53:34 +0100 Subject: 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 Reviewed-by: Miklos Vajna --- sw/source/uibase/inc/inputwin.hxx | 2 +- sw/source/uibase/ribbar/inputwin.cxx | 9 ++++++--- 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::Create(this, SW_RES(ED_POS))), aEdit( VclPtr::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(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::Create( _pParent ) ); + SetWindow(VclPtr::Create(_pParent, pDispatch)); static_cast(GetWindow())->ShowWin(); SetAlignment(SfxChildAlignment::LOWESTTOP); } -- cgit v1.2.3