diff options
author | Jim Raykowski <raykowj@gmail.com> | 2018-01-13 13:57:19 -0900 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2018-02-02 13:56:46 +0100 |
commit | 522c0bb54a94ff6e62e215b1c2b04f06dcd756d7 (patch) | |
tree | 1abccb8f1a62d264744915dfd076790d24ffcbb6 | |
parent | acc1edd664142d54da8d100e4ff77abfd192ef93 (diff) |
uitest for tdf#114724 headings outline tracking in Navigator
Change-Id: I4390c3d33d69ddd93880545f58d0ef81469c960d
Reviewed-on: https://gerrit.libreoffice.org/47865
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r-- | sw/source/uibase/inc/navipi.hxx | 3 | ||||
-rw-r--r-- | sw/source/uibase/inc/uiobject.hxx | 23 | ||||
-rw-r--r-- | sw/source/uibase/uitest/uiobject.cxx | 54 | ||||
-rw-r--r-- | sw/source/uibase/utlui/navipi.cxx | 7 | ||||
-rw-r--r-- | uitest/writer_tests/data/tdf114724.odt | bin | 0 -> 9883 bytes | |||
-rw-r--r-- | uitest/writer_tests/tdf114724.py | 41 | ||||
-rw-r--r-- | vcl/source/uitest/uiobject.cxx | 4 |
7 files changed, 132 insertions, 0 deletions
diff --git a/sw/source/uibase/inc/navipi.hxx b/sw/source/uibase/inc/navipi.hxx index db1b8714b782..590867472bcc 100644 --- a/sw/source/uibase/inc/navipi.hxx +++ b/sw/source/uibase/inc/navipi.hxx @@ -65,6 +65,7 @@ class SwNavigationPI : public PanelLayout, friend class SwNavigationChild; friend class SwContentTree; friend class SwGlobalTree; + friend class SwNavigationPIUIObject; VclPtr<SwNavHelpToolBox> m_aContentToolBox; VclPtr<ToolBox> m_aGlobalToolBox; @@ -157,6 +158,8 @@ public: SwView* GetCreateView() const; void CreateNavigationTool(const tools::Rectangle& rRect, bool bSetFocus, vcl::Window *pParent); + + FactoryFunction GetUITestFactory() const override; }; class SwNavigationChild : public SfxChildWindowContext diff --git a/sw/source/uibase/inc/uiobject.hxx b/sw/source/uibase/inc/uiobject.hxx index 3270452b1ea7..b3da542e1b4b 100644 --- a/sw/source/uibase/inc/uiobject.hxx +++ b/sw/source/uibase/inc/uiobject.hxx @@ -38,6 +38,29 @@ private: }; +class SwNavigationPI; + +class SwNavigationPIUIObject : public WindowUIObject +{ + VclPtr<SwNavigationPI> mxSwNavigationPI; + +public: + + SwNavigationPIUIObject(const VclPtr<SwNavigationPI>& xSwNavigationPI); + + virtual StringMap get_state() override; + + virtual void execute(const OUString& rAction, + const StringMap& rParameters) override; + + static std::unique_ptr<UIObject> create(vcl::Window* pWindow); + +protected: + + OUString get_name() const override; +}; + + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/uitest/uiobject.cxx b/sw/source/uibase/uitest/uiobject.cxx index 53fa2feedb76..3378e4dfd342 100644 --- a/sw/source/uibase/uitest/uiobject.cxx +++ b/sw/source/uibase/uitest/uiobject.cxx @@ -12,6 +12,8 @@ #include <edtwin.hxx> #include <view.hxx> #include <wrtsh.hxx> +#include <navipi.hxx> +#include <sfx2/sidebar/Sidebar.hxx> SwEditWinUIObject::SwEditWinUIObject(const VclPtr<SwEditWin>& xEditWin): WindowUIObject(xEditWin), @@ -96,6 +98,19 @@ void SwEditWinUIObject::execute(const OUString& rAction, getWrtShell(mxEditWin).SelectText(nStartPos, nEndPos); } } + else if (rAction == "SIDEBAR") + { + SfxViewFrame* pViewFrm = SfxViewFrame::Current(); + DBG_ASSERT(pViewFrm, "SwEditWinUIObject::execute: no viewframe"); + pViewFrm->ShowChildWindow(SID_SIDEBAR); + + if (rParameters.find("PANEL") != rParameters.end()) + { + auto itr = rParameters.find("PANEL"); + OUString aVal = itr->second; + ::sfx2::sidebar::Sidebar::ShowPanel(aVal, pViewFrm->GetFrame().GetFrameInterface()); + } + } else WindowUIObject::execute(rAction, rParameters); } @@ -112,4 +127,43 @@ std::unique_ptr<UIObject> SwEditWinUIObject::create(vcl::Window* pWindow) return std::unique_ptr<UIObject>(new SwEditWinUIObject(pEditWin)); } +SwNavigationPIUIObject::SwNavigationPIUIObject(const VclPtr<SwNavigationPI>& xSwNavigationPI): + WindowUIObject(xSwNavigationPI), + mxSwNavigationPI(xSwNavigationPI) +{ +} + +StringMap SwNavigationPIUIObject::get_state() +{ + StringMap aMap = WindowUIObject::get_state(); + + aMap["selectioncount"] = OUString::number(mxSwNavigationPI->m_aContentTree->GetSelectionCount()); + + return aMap; +} + +void SwNavigationPIUIObject::execute(const OUString& rAction, + const StringMap& rParameters) +{ + if (rAction == "ROOT") + { + mxSwNavigationPI->m_aContentToolBox->TriggerItem(mxSwNavigationPI->m_aContentToolBox->GetItemId("root")); + } + else + WindowUIObject::execute(rAction, rParameters); +} + +std::unique_ptr<UIObject> SwNavigationPIUIObject::create(vcl::Window* pWindow) +{ + SwNavigationPI* pSwNavigationPI = dynamic_cast<SwNavigationPI*>(pWindow); + assert(pSwNavigationPI); + return std::unique_ptr<UIObject>(new SwNavigationPIUIObject(pSwNavigationPI)); +} + +OUString SwNavigationPIUIObject::get_name() const +{ + return OUString("SwNavigationPIUIObject"); +} + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index e8f62ee11be4..1b03b621b0bc 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -57,6 +57,8 @@ #include <unomid.h> #include <memory> +#include <uiobject.hxx> + using namespace ::com::sun::star::uno; using namespace ::com::sun::star::frame; @@ -433,6 +435,11 @@ void SwNavigationPI::CreateNavigationTool(const tools::Rectangle& rRect, bool bS } } +FactoryFunction SwNavigationPI::GetUITestFactory() const +{ + return SwNavigationPIUIObject::create; +} + void SwNavHelpToolBox::RequestHelp(const HelpEvent& rHEvt) { const sal_uInt16 nItemId = GetItemId(ScreenToOutputPixel(rHEvt.GetMousePosPixel())); diff --git a/uitest/writer_tests/data/tdf114724.odt b/uitest/writer_tests/data/tdf114724.odt Binary files differnew file mode 100644 index 000000000000..6c51108683af --- /dev/null +++ b/uitest/writer_tests/data/tdf114724.odt diff --git a/uitest/writer_tests/tdf114724.py b/uitest/writer_tests/tdf114724.py new file mode 100644 index 000000000000..8d67f2a95bff --- /dev/null +++ b/uitest/writer_tests/tdf114724.py @@ -0,0 +1,41 @@ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from uitest.framework import UITestCase +from libreoffice.uno.propertyvalue import mkPropertyValues +from uitest.uihelper.common import get_state_as_dict +import time +from uitest.path import get_srcdir_url + +def get_url_for_data_file(file_name): + return get_srcdir_url() + "/uitest/writer_tests/data/" + file_name + +class tdf114724(UITestCase): + + def test_track_headings_outline(self): + writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf114724.odt")) + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") + + self.xUITest.executeCommand(".uno:Sidebar") + xWriterEdit.executeAction("SIDEBAR", mkPropertyValues({"PANEL": "SwNavigatorPanel"})) + + xNavigatorPanel = xWriterEdit.getChild("NavigatorPanel") + xNavigatorPanel.executeAction("ROOT", tuple()) + + xWriterEdit.executeAction("FOCUS", tuple()) + time.sleep(2) + self.assertEqual(get_state_as_dict(xNavigatorPanel)["selectioncount"], "1") + for _ in range(0,3): + xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "DOWN"})) + time.sleep(2) + self.assertEqual(get_state_as_dict(xNavigatorPanel)["selectioncount"], "1") + for _ in range(0,3): + xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "UP"})) + time.sleep(2) + self.assertEqual(get_state_as_dict(xNavigatorPanel)["selectioncount"], "1") + + self.xUITest.executeCommand(".uno:Sidebar") + self.ui_test.close_doc() diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx index 6b0600566573..ff117e34c6f1 100644 --- a/vcl/source/uitest/uiobject.cxx +++ b/vcl/source/uitest/uiobject.cxx @@ -349,6 +349,10 @@ void WindowUIObject::execute(const OUString& rAction, return; } } + else if (rAction == "FOCUS") + { + mxWindow->GrabFocus(); + } else { bHandled = false; |