diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-05-25 11:53:34 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-05-25 12:33:14 +0100 |
commit | 77e7dc648ebb8b7d946111e2be4dfdbba72840b2 (patch) | |
tree | b615b35f9f7eaa9e169e9a0c9dbb9e480485a3b8 | |
parent | 7e5ade130910006d50a8fdb9cde00c17c06014b7 (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
-rw-r--r-- | sw/source/uibase/inc/inputwin.hxx | 2 | ||||
-rw-r--r-- | 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 e3338984a1c4..78531cb08cb5 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 c58953e52d13..90df5738262c 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); } |