diff options
author | Jim Raykowski <raykowj@gmail..com> | 2020-01-17 21:19:08 -0900 |
---|---|---|
committer | Jim Raykowski <raykowj@gmail.com> | 2020-02-14 05:37:00 +0100 |
commit | 350bf42540ff810a142538c5fd8ec2a78d430091 (patch) | |
tree | 2623d511a766fab2ebe59d6136fdee108c294cba | |
parent | cf96cb11e2a46c452a273ded1c66c556118983cf (diff) |
tdf#89566 Replace navigation toolbox in Writer navigator
Replaces the navigation toolbox with the navigate by elements control.
Change-Id: Idba18e63ac29f37d8e614b6459ea67b71b65c885
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87005
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
-rw-r--r-- | sw/source/uibase/inc/navipi.hxx | 29 | ||||
-rw-r--r-- | sw/source/uibase/inc/workctrl.hxx | 67 | ||||
-rw-r--r-- | sw/source/uibase/ribbar/workctrl.cxx | 330 | ||||
-rw-r--r-- | sw/source/uibase/sidebar/SwPanelFactory.cxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/uiview/view2.cxx | 1 | ||||
-rw-r--r-- | sw/source/uibase/utlui/navipi.cxx | 93 | ||||
-rw-r--r-- | sw/uiconfig/swriter/ui/navigatorpanel.ui | 120 |
7 files changed, 127 insertions, 515 deletions
diff --git a/sw/source/uibase/inc/navipi.hxx b/sw/source/uibase/inc/navipi.hxx index 2c14d9aea412..103dd6ac6255 100644 --- a/sw/source/uibase/inc/navipi.hxx +++ b/sw/source/uibase/inc/navipi.hxx @@ -28,6 +28,7 @@ #include <sfx2/childwin.hxx> #include <sfx2/ctrlitem.hxx> #include <sfx2/tbxctrl.hxx> +#include <sfx2/sidebar/SidebarToolBox.hxx> #include <svx/sidebar/PanelLayout.hxx> #include "conttree.hxx" #include <ndarr.hxx> @@ -39,25 +40,12 @@ class SwNavigationChild; class SfxBindings; class NumEditAction; class SwNavigationConfig; -class SwScrollNaviPopup; class SwView; class SfxObjectShellLock; class SfxChildWindowContext; enum class RegionMode; class SpinField; -class NaviStateListener final : public SfxControllerItem -{ -private: - VclPtr<SwNavigationPI> m_xNavigation; -public: - NaviStateListener(SfxBindings& rBindings, SwNavigationPI* pNavigation); - virtual ~NaviStateListener() override; - - virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState, - const SfxPoolItem* pState) override; -}; - class SwNavigationPI : public PanelLayout, public SfxControllerItem, public SfxListener { @@ -66,8 +54,7 @@ class SwNavigationPI : public PanelLayout, friend class SwGlobalTree; friend class SwNavigationPIUIObject; - VclPtr<ToolBox> m_aContentToolBox; - std::unique_ptr<NaviStateListener> m_xNaviListener; + VclPtr<sfx2::sidebar::SidebarToolBox> m_aContentToolBox; VclPtr<ToolBox> m_aGlobalToolBox; VclPtr<NumEditAction> m_xEdit; VclPtr<VclContainer> m_aContentBox; @@ -85,7 +72,6 @@ class SwNavigationPI : public PanelLayout, SwWrtShell *m_pContentWrtShell; SwView *m_pActContView; SwView *m_pCreateView; - VclPtr<SwScrollNaviPopup> m_xPopupWindow; SwNavigationConfig *m_pConfig; SfxBindings &m_rBindings; @@ -114,8 +100,6 @@ class SwNavigationPI : public PanelLayout, DECL_LINK( PageEditModifyHdl, SpinField&, void ); void UsePage(); - void SetPopupWindow( SwScrollNaviPopup* ); - protected: // release ObjectShellLock early enough for app end @@ -127,7 +111,12 @@ protected: public: - SwNavigationPI(SfxBindings*, vcl::Window*); + static VclPtr<vcl::Window> Create(vcl::Window* pParent, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxFrame, + SfxBindings* pBindings); + SwNavigationPI(vcl::Window* pParent, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxFrame, + SfxBindings* _pBindings); virtual ~SwNavigationPI() override; virtual void dispose() override; @@ -154,8 +143,6 @@ public: SwView* GetCreateView() const; void CreateNavigationTool(); - void NaviStateChanged(); - FactoryFunction GetUITestFactory() const override; }; diff --git a/sw/source/uibase/inc/workctrl.hxx b/sw/source/uibase/inc/workctrl.hxx index 64b0d3c6a756..dd359b63a30a 100644 --- a/sw/source/uibase/inc/workctrl.hxx +++ b/sw/source/uibase/inc/workctrl.hxx @@ -28,29 +28,25 @@ class SwView; // double entry! hrc and hxx // these Ids say what the buttons below the scrollbar are doing #define NID_START 20000 -#define NID_NEXT 20000 -#define NID_PREV 20001 -#define NID_TBL 20002 -#define NID_FRM 20003 -#define NID_PGE 20004 -#define NID_DRW 20005 -#define NID_CTRL 20006 -#define NID_REG 20007 -#define NID_BKM 20008 -#define NID_GRF 20009 -#define NID_OLE 20010 -#define NID_OUTL 20011 -#define NID_SEL 20012 -#define NID_FTN 20013 -#define NID_MARK 20014 -#define NID_POSTIT 20015 -#define NID_SRCH_REP 20016 -#define NID_INDEX_ENTRY 20017 -#define NID_TABLE_FORMULA 20018 -#define NID_TABLE_FORMULA_ERROR 20019 -#define NID_COUNT 20 - -#define NID_LINE_COUNT 10 +#define NID_TBL 20000 +#define NID_FRM 20001 +#define NID_PGE 20002 +#define NID_DRW 20003 +#define NID_CTRL 20004 +#define NID_REG 20005 +#define NID_BKM 20006 +#define NID_GRF 20007 +#define NID_OLE 20008 +#define NID_OUTL 20009 +#define NID_SEL 20010 +#define NID_FTN 20011 +#define NID_MARK 20012 +#define NID_POSTIT 20013 +#define NID_SRCH_REP 20014 +#define NID_INDEX_ENTRY 20015 +#define NID_TABLE_FORMULA 20016 +#define NID_TABLE_FORMULA_ERROR 20017 +#define NID_COUNT 18 class SwTbxAutoTextCtrl : public SfxToolBoxControl { @@ -68,31 +64,6 @@ public: DECL_STATIC_LINK(SwTbxAutoTextCtrl, PopupHdl, Menu*, bool); }; -class SwScrollNaviPopup final : public DockingWindow -{ - VclPtr<ToolBox> m_xToolBox1; - VclPtr<ToolBox> m_xToolBox2; - VclPtr<FixedText> m_xInfoField; - - sal_uInt16 GetCurItemId() const; - OUString GetItemText(sal_uInt16 nItemId) const; - void SetItemText(sal_uInt16 nItemId, const OUString& rText); - void CheckItem(sal_uInt16 nItemId, bool bOn); - - OUString sQuickHelp[2 * NID_COUNT]; - - DECL_LINK(SelectHdl, ToolBox*, void); - -public: - SwScrollNaviPopup(vcl::Window *pParent); - virtual ~SwScrollNaviPopup() override; - virtual void dispose() override; - - static OUString GetToolTip(bool bNext); - - void syncFromDoc(); -}; - class SwPreviewZoomControl : public SfxToolBoxControl { public: diff --git a/sw/source/uibase/ribbar/workctrl.cxx b/sw/source/uibase/ribbar/workctrl.cxx index 0886e3a7ff5c..74f1d2d12760 100644 --- a/sw/source/uibase/ribbar/workctrl.cxx +++ b/sw/source/uibase/ribbar/workctrl.cxx @@ -54,10 +54,7 @@ #include <com/sun/star/util/XURLTransformer.hpp> // Size check -#define NAVI_ENTRIES 20 -#if NAVI_ENTRIES != NID_COUNT -#error SwScrollNaviPopup-CTOR static array wrong size. Are new IDs added? -#endif +#define NAVI_ENTRIES 18 using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -159,7 +156,6 @@ IMPL_STATIC_LINK(SwTbxAutoTextCtrl, PopupHdl, Menu*, pMenu, bool) // determine the order of the toolbox items static sal_uInt16 aNavigationInsertIds[ NAVI_ENTRIES ] = { - // -- first line NID_TBL, NID_FRM, NID_GRF, @@ -169,8 +165,6 @@ static sal_uInt16 aNavigationInsertIds[ NAVI_ENTRIES ] = NID_MARK, NID_DRW, NID_CTRL, - NID_PREV, - // -- second line NID_REG, NID_BKM, NID_SEL, @@ -179,13 +173,11 @@ static sal_uInt16 aNavigationInsertIds[ NAVI_ENTRIES ] = NID_SRCH_REP, NID_INDEX_ENTRY, NID_TABLE_FORMULA, - NID_TABLE_FORMULA_ERROR, - NID_NEXT + NID_TABLE_FORMULA_ERROR }; static OUStringLiteral const aNavigationImgIds[ NAVI_ENTRIES ] = { - // -- first line RID_BMP_RIBBAR_TBL, RID_BMP_RIBBAR_FRM, RID_BMP_RIBBAR_GRF, @@ -195,8 +187,6 @@ static OUStringLiteral const aNavigationImgIds[ NAVI_ENTRIES ] = RID_BMP_RIBBAR_MARK, RID_BMP_RIBBAR_DRW, RID_BMP_RIBBAR_CTRL, - RID_BMP_RIBBAR_PREV, - // -- second line RID_BMP_RIBBAR_REG, RID_BMP_RIBBAR_BKM, RID_BMP_RIBBAR_SEL, @@ -205,39 +195,11 @@ static OUStringLiteral const aNavigationImgIds[ NAVI_ENTRIES ] = RID_BMP_RIBBAR_REP, RID_BMP_RIBBAR_ENTRY, RID_BMP_RIBBAR_FORMULA, - RID_BMP_RIBBAR_ERROR, - RID_BMP_RIBBAR_NEXT -}; - -static const char* aNavigationHelpIds[ NAVI_ENTRIES ] = -{ - // -- first line - HID_NID_TBL, - HID_NID_FRM, - HID_NID_GRF, - HID_NID_OLE, - HID_NID_PGE, - HID_NID_OUTL, - HID_NID_MARK, - HID_NID_DRW, - HID_NID_CTRL, - HID_NID_PREV, - // -- second line - HID_NID_REG, - HID_NID_BKM, - HID_NID_SEL, - HID_NID_FTN, - HID_NID_POSTIT, - HID_NID_SRCH_REP, - HID_NID_INDEX_ENTRY, - HID_NID_TABLE_FORMULA, - HID_NID_TABLE_FORMULA_ERROR, - HID_NID_NEXT + RID_BMP_RIBBAR_ERROR }; static const char* aNavigationStrIds[ NAVI_ENTRIES ] = { - // -- first line ST_TBL, ST_FRM, ST_GRF, @@ -247,8 +209,6 @@ static const char* aNavigationStrIds[ NAVI_ENTRIES ] = ST_MARK, ST_DRW, ST_CTRL, - STR_IMGBTN_PGE_UP, - // -- second line ST_REG, ST_BKM, ST_SEL, @@ -257,15 +217,12 @@ static const char* aNavigationStrIds[ NAVI_ENTRIES ] = ST_SRCH_REP, ST_INDEX_ENTRY, ST_TABLE_FORMULA, - ST_TABLE_FORMULA_ERROR, - STR_IMGBTN_PGE_DOWN + ST_TABLE_FORMULA_ERROR }; // these are global strings static const char* STR_IMGBTN_ARY[] = { - nullptr, - nullptr, STR_IMGBTN_TBL_DOWN, STR_IMGBTN_FRM_DOWN, STR_IMGBTN_PGE_DOWN, @@ -284,8 +241,6 @@ static const char* STR_IMGBTN_ARY[] = STR_IMGBTN_INDEX_ENTRY_DOWN, STR_IMGBTN_TBLFML_DOWN, STR_IMGBTN_TBLFML_ERR_DOWN, - nullptr, - nullptr, STR_IMGBTN_TBL_UP, STR_IMGBTN_FRM_UP, STR_IMGBTN_PGE_UP, @@ -306,69 +261,7 @@ static const char* STR_IMGBTN_ARY[] = STR_IMGBTN_TBLFML_ERR_UP }; -SwScrollNaviPopup::SwScrollNaviPopup(vcl::Window *pParent) - : DockingWindow(pParent, "FloatingNavigation", "modules/swriter/ui/floatingnavigation.ui") - , m_xToolBox1(get<ToolBox>("line1")) - , m_xToolBox2(get<ToolBox>("line2")) - , m_xInfoField(get<FixedText>("label")) -{ - m_xToolBox1->SetHelpId(HID_NAVI_VS); - m_xToolBox2->SetHelpId(HID_NAVI_VS); - - for (size_t i = 0; i < NID_LINE_COUNT; ++i) - m_xToolBox1->SetHelpId(m_xToolBox1->GetItemId(i), aNavigationHelpIds[i]); - - for (size_t i = 0; i < NID_LINE_COUNT; ++i) - m_xToolBox2->SetHelpId(m_xToolBox2->GetItemId(i), aNavigationHelpIds[i + NID_LINE_COUNT]); - - for (size_t i = 0; i < SAL_N_ELEMENTS(STR_IMGBTN_ARY); ++i) - { - const char* id = STR_IMGBTN_ARY[i]; - if (!id) - continue; - sQuickHelp[i] = SwResId(id); - } - - sal_uInt16 nItemId = SwView::GetMoveType(); - m_xInfoField->SetText(GetItemText(nItemId)); - CheckItem(nItemId, true); - - m_xToolBox1->SetSelectHdl(LINK(this, SwScrollNaviPopup, SelectHdl)); - m_xToolBox2->SetSelectHdl(LINK(this, SwScrollNaviPopup, SelectHdl)); -} - -SwScrollNaviPopup::~SwScrollNaviPopup() -{ - disposeOnce(); -} - -void SwScrollNaviPopup::dispose() -{ - m_xToolBox2.disposeAndClear(); - m_xToolBox1.disposeAndClear(); - m_xInfoField.clear(); - DockingWindow::dispose(); -} - -IMPL_LINK_NOARG(SwScrollNaviPopup, SelectHdl, ToolBox*, void) -{ - sal_uInt16 nSet = GetCurItemId(); - if( nSet != NID_PREV && nSet != NID_NEXT ) - { - SvxSearchDialogWrapper::SetSearchLabel( SearchLabel::Empty ); - SwView::SetMoveType( nSet ); - GetActiveView()->GetViewFrame()->GetDispatcher()->Execute(FN_NAV_ELEMENT); - } - else - { - sal_uInt16 cmd(FN_SCROLL_PREV); - if (NID_NEXT == nSet) - cmd = FN_SCROLL_NEXT; - GetActiveView()->GetViewFrame()->GetDispatcher()->Execute(cmd); - } -} - -OUString SwScrollNaviPopup::GetToolTip(bool bNext) +static OUString lcl_GetScrollToolTip(bool bNext) { sal_uInt16 nResId = SwView::GetMoveType(); if (!bNext) @@ -377,161 +270,6 @@ OUString SwScrollNaviPopup::GetToolTip(bool bNext) return id ? SwResId(id): OUString(); } -void SwScrollNaviPopup::syncFromDoc() -{ - sal_uInt16 nSet = SwView::GetMoveType(); - SetItemText( NID_NEXT, sQuickHelp[nSet - NID_START] ); - SetItemText( NID_PREV, sQuickHelp[nSet - NID_START + NID_COUNT] ); - m_xInfoField->SetText( GetItemText( nSet ) ); - // check the current button only - for( ToolBox::ImplToolItems::size_type i = 0; i < NID_COUNT; i++ ) - { - sal_uInt16 nItemId = aNavigationInsertIds[i]; - CheckItem(nItemId, nItemId == nSet); - } -} - -namespace -{ - sal_uInt16 IdToIdent(const OUString& rId) - { - if (rId == "tbl") - return NID_TBL; - if (rId == "frm") - return NID_FRM; - if (rId == "grf") - return NID_GRF; - if (rId == "ole") - return NID_OLE; - if (rId == "pge") - return NID_PGE; - if (rId == "outl") - return NID_OUTL; - if (rId == "mark") - return NID_MARK; - if (rId == "drw") - return NID_DRW; - if (rId == "ctrl") - return NID_CTRL; - if (rId == "prev") - return NID_PREV; - - if (rId == "reg") - return NID_REG; - if (rId == "bkm") - return NID_BKM; - if (rId == "sel") - return NID_SEL; - if (rId == "ftn") - return NID_FTN; - if (rId == "postit") - return NID_POSTIT; - if (rId == "rep") - return NID_SRCH_REP; - if (rId == "entry") - return NID_INDEX_ENTRY; - if (rId == "formula") - return NID_TABLE_FORMULA; - if (rId == "formulaerror") - return NID_TABLE_FORMULA_ERROR; - if (rId == "next") - return NID_NEXT; - - return 0; - } - - OUString IdentToId(sal_uInt16 nId) - { - if (nId == NID_TBL) - return "tbl"; - if (nId == NID_FRM) - return "frm"; - if (nId == NID_GRF) - return "grf"; - if (nId == NID_OLE) - return "ole"; - if (nId == NID_PGE) - return "pge"; - if (nId == NID_OUTL) - return "outl"; - if (nId == NID_MARK) - return "mark"; - if (nId == NID_DRW) - return "drw"; - if (nId == NID_CTRL) - return "ctrl"; - if (nId == NID_PREV) - return "prev"; - - if (nId == NID_REG) - return "reg"; - if (nId == NID_BKM) - return "bkm"; - if (nId == NID_SEL) - return "sel"; - if (nId == NID_FTN) - return "ftn"; - if (nId == NID_POSTIT) - return "postit"; - if (nId == NID_SRCH_REP) - return "rep"; - if (nId == NID_INDEX_ENTRY) - return "entry"; - if (nId == NID_TABLE_FORMULA) - return "formula"; - if (nId == NID_TABLE_FORMULA_ERROR) - return "formulaerror"; - if (nId == NID_NEXT) - return "next"; - - return ""; - } -} - -sal_uInt16 SwScrollNaviPopup::GetCurItemId() const -{ - OUString sItemId = m_xToolBox1->GetItemCommand(m_xToolBox1->GetCurItemId()); - if (sItemId.isEmpty()) - sItemId = m_xToolBox2->GetItemCommand(m_xToolBox2->GetCurItemId()); - return IdToIdent(sItemId); -} - -OUString SwScrollNaviPopup::GetItemText(sal_uInt16 nNaviId) const -{ - const OUString sId(IdentToId(nNaviId)); - sal_uInt16 nItemId = m_xToolBox1->GetItemId(sId); - if (nItemId) - return m_xToolBox1->GetItemText(nItemId); - nItemId = m_xToolBox2->GetItemId(sId); - return m_xToolBox2->GetItemText(nItemId); -} - -void SwScrollNaviPopup::SetItemText(sal_uInt16 nNaviId, const OUString &rText) -{ - const OUString sId(IdentToId(nNaviId)); - sal_uInt16 nItemId = m_xToolBox1->GetItemId(sId); - if (nItemId) - { - m_xToolBox1->SetItemText(nItemId, rText); - return; - } - nItemId = m_xToolBox2->GetItemId(sId); - m_xToolBox2->SetItemText(nItemId, rText); -} - -void SwScrollNaviPopup::CheckItem(sal_uInt16 nNaviId, bool bOn) -{ - const OUString sId(IdentToId(nNaviId)); - sal_uInt16 nItemId = m_xToolBox1->GetItemId(sId); - if (nItemId) - { - m_xToolBox1->CheckItem(nItemId, bOn); - return; - } - nItemId = m_xToolBox2->GetItemId(sId); - m_xToolBox2->CheckItem(nItemId, bOn); -} - namespace { class SwZoomBox_Impl final : public InterimItemWindow @@ -906,11 +644,7 @@ NavElementBox_Impl::NavElementBox_Impl( sal_uInt16 i; for ( i = 0; i < NID_COUNT; i++ ) - { - sal_uInt16 nNaviId = aNavigationInsertIds[i]; - if ( ( NID_PREV != nNaviId ) && ( NID_NEXT != nNaviId ) ) - InsertEntry( SwResId( aNavigationStrIds[i] ), Image( StockImage::Yes, aNavigationImgIds[i] ) ); - } + InsertEntry( SwResId( aNavigationStrIds[i] ), Image( StockImage::Yes, aNavigationImgIds[i] ) ); } void NavElementBox_Impl::ReleaseFocus_Impl() @@ -934,10 +668,6 @@ void NavElementBox_Impl::Select() SvxSearchDialogWrapper::SetSearchLabel( SearchLabel::Empty ); sal_uInt16 nPos = GetSelectedEntryPos(); - // adjust array index for Ids after NID_PREV in aNavigationInsertIds - if ( nPos >= NID_COUNT/2 - 1 ) - ++nPos; - sal_uInt16 nMoveType = aNavigationInsertIds[nPos]; SwView::SetMoveType( nMoveType ); @@ -973,21 +703,23 @@ bool NavElementBox_Impl::EventNotify( NotifyEvent& rNEvt ) if ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) { - sal_uInt16 nCode = rNEvt.GetKeyEvent()->GetKeyCode().GetCode(); + vcl::KeyCode aKeyCode = rNEvt.GetKeyEvent()->GetKeyCode(); + sal_uInt16 nCode = aKeyCode.GetCode(); switch ( nCode ) { - case KEY_RETURN: case KEY_TAB: { - if ( KEY_TAB == nCode ) - m_bRelease = false; - else - bHandled = true; + static_cast<ToolBox*>(GetParent())->ChangeHighlightUpDn( aKeyCode.IsShift() ); + m_bRelease = false; + [[fallthrough]]; + } + case KEY_RETURN: + { + bHandled = true; Select(); break; } - case KEY_ESCAPE: ReleaseFocus_Impl(); bHandled = true; @@ -1155,10 +887,6 @@ public: // XComponent virtual void SAL_CALL dispose() override; - // XToolbarController - virtual void SAL_CALL execute( sal_Int16 /* KeyModifier */ ) override; - virtual void SAL_CALL click() override; - // XStatusListener virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) override; @@ -1223,30 +951,6 @@ void SAL_CALL PrevNextScrollToolboxController::dispose() svt::ToolboxController::dispose(); } -// XToolbarController -void SAL_CALL PrevNextScrollToolboxController::execute( sal_Int16 /* KeyModifier */ ) -{ -} - -void SAL_CALL PrevNextScrollToolboxController::click() -{ - uno::Sequence< beans::PropertyValue > rArgs; - - uno::Reference< frame::XDispatchProvider > xDispatchProvider( m_xFrame, uno::UNO_QUERY ); - if ( xDispatchProvider.is() ) - { - util::URL aURL; - uno::Reference< frame::XDispatch > xDispatch; - uno::Reference< util::XURLTransformer > xURLTransformer = getURLTransformer(); - - aURL.Complete = getCommandURL(); - xURLTransformer->parseStrict( aURL ); - xDispatch = xDispatchProvider->queryDispatch( aURL, OUString(), 0 ); - if ( xDispatch.is() ) - xDispatch->dispatch( aURL, rArgs ); - } -} - // XStatusListener void SAL_CALL PrevNextScrollToolboxController::statusChanged( const css::frame::FeatureStateEvent& rEvent ) { @@ -1255,8 +959,8 @@ void SAL_CALL PrevNextScrollToolboxController::statusChanged( const css::frame:: ToolBox* pToolBox = nullptr; sal_uInt16 nId = 0; if ( getToolboxId( nId, &pToolBox ) ) - pToolBox->SetQuickHelpText( nId, ( meType == PrevNextScrollToolboxController::PREVIOUS?SwScrollNaviPopup::GetToolTip( false ): - SwScrollNaviPopup::GetToolTip( true ) ) ); + pToolBox->SetQuickHelpText( nId, ( meType == PrevNextScrollToolboxController::PREVIOUS?lcl_GetScrollToolTip( false ): + lcl_GetScrollToolTip( true ) ) ); } } diff --git a/sw/source/uibase/sidebar/SwPanelFactory.cxx b/sw/source/uibase/sidebar/SwPanelFactory.cxx index 91697e1d7ad0..37b6694e467d 100644 --- a/sw/source/uibase/sidebar/SwPanelFactory.cxx +++ b/sw/source/uibase/sidebar/SwPanelFactory.cxx @@ -153,7 +153,7 @@ Reference<ui::XUIElement> SAL_CALL SwPanelFactory::createUIElement ( } else if (rsResourceURL.endsWith("/NavigatorPanel")) { - VclPtrInstance<SwNavigationPI> pPanel(pBindings, pParentWindow); + VclPtr<vcl::Window> pPanel = SwNavigationPI::Create( pParentWindow, xFrame, pBindings ); xElement = sfx2::sidebar::SidebarPanelBase::Create( rsResourceURL, xFrame, diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx index 8c394e3faa6f..f464ce1f640a 100644 --- a/sw/source/uibase/uiview/view2.cxx +++ b/sw/source/uibase/uiview/view2.cxx @@ -1091,7 +1091,6 @@ void SwView::Execute(SfxRequest &rReq) case FN_SCROLL_PREV: case FN_SCROLL_NEXT: { - // call the handlers of PageUp/DownButtons, only bool *pbNext = new bool(true); // FN_SCROLL_NEXT if (nSlot == FN_SCROLL_PREV) *pbNext = false; diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index 77faca82124d..cdda8dbe783b 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -215,17 +215,13 @@ IMPL_LINK( SwNavigationPI, ToolBoxSelectHdl, ToolBox *, pBox, void ) bool bOutlineWithChildren = ( KEY_MOD1 != pBox->GetModifier()); int nFuncId = 0; bool bFocusToDoc = false; - if (sCommand == "back") + if (sCommand == ".uno:ScrollToPrevious") { - // #i75416# move the execution of the search to an asynchronously called static link - bool* pbNext = new bool(false); - Application::PostUserEvent(LINK(pView, SwView, MoveNavigationHdl), pbNext); + rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(FN_SCROLL_PREV, SfxCallMode::ASYNCHRON); } - else if (sCommand == "forward") + else if (sCommand == ".uno:ScrollToNext") { - // #i75416# move the execution of the search to an asynchronously called static link - bool* pbNext = new bool(true); - Application::PostUserEvent(LINK(pView, SwView, MoveNavigationHdl), pbNext); + rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(FN_SCROLL_NEXT, SfxCallMode::ASYNCHRON); } else if (sCommand == "root") { @@ -344,9 +340,7 @@ IMPL_LINK( SwNavigationPI, ToolBoxDropdownClickHdl, ToolBox*, pBox, void ) { const sal_uInt16 nCurrItemId = pBox->GetCurItemId(); const OUString sCommand = pBox->GetItemCommand(nCurrItemId); - if (sCommand == "navigation") - CreateNavigationTool(); - else if (sCommand == "dragmode") + if (sCommand == "dragmode") { static const char* aHIDs[] = { @@ -388,18 +382,6 @@ IMPL_LINK( SwNavigationPI, ToolBoxDropdownClickHdl, ToolBox*, pBox, void ) } } -void SwNavigationPI::CreateNavigationTool() -{ - auto xPopup = VclPtr<SwScrollNaviPopup>::Create(m_aContentToolBox.get()); - - xPopup->EnableDocking(); - - SetPopupWindow( xPopup ); - - xPopup->Show(); - vcl::Window::GetDockingManager()->StartPopupMode(m_aContentToolBox, xPopup, FloatWinPopupFlags::GrabFocus); -} - FactoryFunction SwNavigationPI::GetUITestFactory() const { return SwNavigationPIUIObject::create; @@ -511,9 +493,23 @@ enum StatusIndex } -SwNavigationPI::SwNavigationPI(SfxBindings* _pBindings, - vcl::Window* pParent) - : PanelLayout(pParent, "NavigatorPanel", "modules/swriter/ui/navigatorpanel.ui", nullptr) +VclPtr<vcl::Window> SwNavigationPI::Create(vcl::Window* pParent, + const css::uno::Reference<css::frame::XFrame>& rxFrame, + SfxBindings* pBindings) +{ + if( pParent == nullptr ) + throw css::lang::IllegalArgumentException("no parent window given to SwNavigationPI::Create", nullptr, 0); + if( !rxFrame.is() ) + throw css::lang::IllegalArgumentException("no XFrame given to SwNavigationPI::Create", nullptr, 0); + if( pBindings == nullptr ) + throw css::lang::IllegalArgumentException("no SfxBindings given to SwNavigationPI::Create", nullptr, 0); + return VclPtr<SwNavigationPI>::Create(pParent, rxFrame, pBindings); +} + +SwNavigationPI::SwNavigationPI(vcl::Window* pParent, + const css::uno::Reference<css::frame::XFrame>& rxFrame, + SfxBindings* _pBindings) + : PanelLayout(pParent, "NavigatorPanel", "modules/swriter/ui/navigatorpanel.ui", rxFrame/*, true*/) , SfxControllerItem(SID_DOCFULLNAME, *_pBindings) , m_pContentView(nullptr) , m_pContentWrtShell(nullptr) @@ -527,7 +523,7 @@ SwNavigationPI::SwNavigationPI(SfxBindings* _pBindings, { get(m_aContentToolBox, "content"); m_aContentToolBox->SetLineCount(2); - m_aContentToolBox->InsertBreak(8); + m_aContentToolBox->InsertBreak(4); get(m_aGlobalToolBox, "global"); get(m_aDocListBox, "documents"); @@ -668,9 +664,6 @@ SwNavigationPI::SwNavigationPI(SfxBindings* _pBindings, m_aDocListBox->SetAccessibleName(m_aStatusArr[3]); m_aExpandedSize = GetOptimalSize(); - - m_xNaviListener.reset(new NaviStateListener(GetBindings(), this)); - NaviStateChanged(); } SwNavigationPI::~SwNavigationPI() @@ -680,8 +673,6 @@ SwNavigationPI::~SwNavigationPI() void SwNavigationPI::dispose() { - m_xNaviListener.reset(); - if (IsGlobalDoc() && !IsGlobalMode()) { SwView *pView = GetCreateView(); @@ -704,7 +695,6 @@ void SwNavigationPI::dispose() if (IsBound()) m_rBindings.Release(*this); - m_xPopupWindow.disposeAndClear(); m_aDocListBox.clear(); m_aGlobalTree.disposeAndClear(); m_aGlobalBox.clear(); @@ -721,12 +711,6 @@ void SwNavigationPI::dispose() PanelLayout::dispose(); } -void SwNavigationPI::SetPopupWindow( SwScrollNaviPopup* pWindow ) -{ - m_xPopupWindow.disposeAndClear(); - m_xPopupWindow = pWindow; -} - void SwNavigationPI::StateChanged( sal_uInt16 nSID, SfxItemState /*eState*/, const SfxPoolItem* /*pState*/ ) { @@ -1125,7 +1109,8 @@ SwNavigationChild::SwNavigationChild( vcl::Window* pParent, SfxBindings* _pBindings ) : SfxChildWindowContext( nId ) { - VclPtr<SwNavigationPI> pNavi = VclPtr<SwNavigationPI>::Create(_pBindings, pParent); + Reference< XFrame > xFrame = _pBindings->GetActiveFrame(); + VclPtr< SwNavigationPI > pNavi = VclPtr< SwNavigationPI >::Create( pParent, xFrame, _pBindings ); _pBindings->Invalidate(SID_NAVIGATOR); SwNavigationConfig* pNaviConfig = SW_MOD()->GetNavigationConfig(); @@ -1156,32 +1141,4 @@ SwNavigationChild::SwNavigationChild( vcl::Window* pParent, SetWindow(pNavi); } -NaviStateListener::NaviStateListener(SfxBindings& rBindings, SwNavigationPI* pNavigation) - : SfxControllerItem(FN_NAV_ELEMENT, rBindings) - , m_xNavigation(pNavigation) -{ -} - -NaviStateListener::~NaviStateListener() -{ -} - -void NaviStateListener::StateChanged(sal_uInt16 /*nSID*/, SfxItemState /*eState*/, - const SfxPoolItem* /*pState*/) -{ - m_xNavigation->NaviStateChanged(); -} - -void SwNavigationPI::NaviStateChanged() -{ - if (m_xPopupWindow) - m_xPopupWindow->syncFromDoc(); - - if (m_aContentToolBox) - { - m_aContentToolBox->SetQuickHelpText(m_aContentToolBox->GetItemId("back"), SwScrollNaviPopup::GetToolTip(false)); - m_aContentToolBox->SetQuickHelpText(m_aContentToolBox->GetItemId("forward"), SwScrollNaviPopup::GetToolTip(true)); - } -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/uiconfig/swriter/ui/navigatorpanel.ui b/sw/uiconfig/swriter/ui/navigatorpanel.ui index d82314958905..28c08eb21c38 100644 --- a/sw/uiconfig/swriter/ui/navigatorpanel.ui +++ b/sw/uiconfig/swriter/ui/navigatorpanel.ui @@ -23,7 +23,7 @@ <property name="row_spacing">6</property> <property name="column_spacing">12</property> <child> - <object class="GtkToolbar" id="content"> + <object class="sfxlo-SidebarToolBox" id="content"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="toolbar_style">icons</property> @@ -41,12 +41,10 @@ </packing> </child> <child> - <object class="GtkMenuToolButton" id="navigation"> + <object class="GtkToolButton" id=".uno:NavElement"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes" context="navigatorpanel|navigation|tooltip_text">Navigation</property> - <property name="action_name">navigation</property> - <property name="icon_name">sw/res/sc20249.png</property> + <property name="action_name">.uno:NavElement</property> </object> <packing> <property name="expand">False</property> @@ -57,9 +55,7 @@ <object class="GtkToolButton" id="back"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes" context="navigatorpanel|back|tooltip_text">Back</property> - <property name="action_name">back</property> - <property name="icon_name">sw/res/sc20186.png</property> + <property name="action_name">.uno:ScrollToPrevious</property> </object> <packing> <property name="expand">False</property> @@ -70,58 +66,7 @@ <object class="GtkToolButton" id="forward"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes" context="navigatorpanel|forward|tooltip_text">Forward</property> - <property name="action_name">forward</property> - <property name="icon_name">sw/res/sc20175.png</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - <child> - <object class="GtkToolButton" id="dragmode"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes" context="navigatorpanel|dragmode|tooltip_text">Drag Mode</property> - <property name="action_name">dragmode</property> - <property name="icon_name">sw/res/sc20235.png</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - <child> - <object class="GtkSeparatorToolItem" id="separator1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - <child> - <object class="GtkToolButton" id="chapterup"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes" context="navigatorpanel|chapterup|tooltip_text">Promote Chapter</property> - <property name="action_name">up</property> - <property name="icon_name">sw/res/sc20174.png</property> - </object> - <packing> - <property name="expand">False</property> - <property name="homogeneous">True</property> - </packing> - </child> - <child> - <object class="GtkToolButton" id="chapterdown"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes" context="navigatorpanel|chapterdown|tooltip_text">Demote Chapter</property> - <property name="action_name">down</property> - <property name="icon_name">sw/res/sc20171.png</property> + <property name="action_name">.uno:ScrollToNext</property> </object> <packing> <property name="expand">False</property> @@ -260,6 +205,29 @@ </packing> </child> <child> + <object class="GtkToolButton" id="dragmode"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes" context="navigatorpanel|dragmode|tooltip_text">Drag Mode</property> + <property name="action_name">dragmode</property> + <property name="icon_name">sw/res/sc20235.png</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> + <child> + <object class="GtkSeparatorToolItem" id="separator6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> + <child> <object class="GtkToolButton" id="promote"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -285,6 +253,32 @@ <property name="homogeneous">True</property> </packing> </child> + <child> + <object class="GtkToolButton" id="chapterup"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes" context="navigatorpanel|chapterup|tooltip_text">Promote Chapter</property> + <property name="action_name">up</property> + <property name="icon_name">sw/res/sc20174.png</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> + <child> + <object class="GtkToolButton" id="chapterdown"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes" context="navigatorpanel|chapterdown|tooltip_text">Demote Chapter</property> + <property name="action_name">down</property> + <property name="icon_name">sw/res/sc20171.png</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> </object> <packing> <property name="left_attach">0</property> @@ -348,7 +342,7 @@ </packing> </child> <child> - <object class="GtkSeparatorToolItem" id="separator6"> + <object class="GtkSeparatorToolItem" id="separator7"> <property name="visible">True</property> <property name="can_focus">False</property> </object> @@ -397,7 +391,7 @@ </packing> </child> <child> - <object class="GtkSeparatorToolItem" id="separator7"> + <object class="GtkSeparatorToolItem" id="separator8"> <property name="visible">True</property> <property name="can_focus">False</property> </object> @@ -420,7 +414,7 @@ </packing> </child> <child> - <object class="GtkSeparatorToolItem" id="separator8"> + <object class="GtkSeparatorToolItem" id="separator9"> <property name="visible">True</property> <property name="can_focus">False</property> </object> |