[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - sw/source

Caolán McNamara caolanm at redhat.com
Thu May 26 08:23:12 UTC 2016


 sw/source/uibase/inc/inputwin.hxx    |    2 +-
 sw/source/uibase/ribbar/inputwin.cxx |    9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

New commits:
commit 97d0e7be1ad95adcd13fff507885047bdcd54d82
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed May 25 11:53:34 2016 +0100

    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 at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/source/uibase/inc/inputwin.hxx b/sw/source/uibase/inc/inputwin.hxx
index 97fc259..606ec48 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 178be93..5acc97b 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);
 }


More information about the Libreoffice-commits mailing list