summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-05-25 11:53:34 +0100
committerCaolán McNamara <caolanm@redhat.com>2016-05-25 12:33:14 +0100
commit77e7dc648ebb8b7d946111e2be4dfdbba72840b2 (patch)
treeb615b35f9f7eaa9e169e9a0c9dbb9e480485a3b8
parent7e5ade130910006d50a8fdb9cde00c17c06014b7 (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.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 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);
}