summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/uibase/inc/navipi.hxx29
-rw-r--r--sw/source/uibase/inc/workctrl.hxx67
-rw-r--r--sw/source/uibase/ribbar/workctrl.cxx330
-rw-r--r--sw/source/uibase/sidebar/SwPanelFactory.cxx2
-rw-r--r--sw/source/uibase/uiview/view2.cxx1
-rw-r--r--sw/source/uibase/utlui/navipi.cxx93
-rw-r--r--sw/uiconfig/swriter/ui/navigatorpanel.ui120
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>