summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-11-02 11:44:47 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-11-02 17:13:35 +0100
commit0f684565d9246ccc39766289e9a5c383e8f9d838 (patch)
tree695530330800b234e9e1a026d01a17e807d422c9 /sd
parente0fa72a714c1992370f023308814acf96763e2c9 (diff)
extract a ReorderingDropTarget for reuse
Change-Id: I0ae69bbf644e220e1bf3352d98eb4fd735167416 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124596 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/source/ui/dlg/custsdlg.cxx35
-rw-r--r--sd/source/ui/inc/custsdlg.hxx16
2 files changed, 3 insertions, 48 deletions
diff --git a/sd/source/ui/dlg/custsdlg.cxx b/sd/source/ui/dlg/custsdlg.cxx
index bd629f87bfaa..fc8e774d82e9 100644
--- a/sd/source/ui/dlg/custsdlg.cxx
+++ b/sd/source/ui/dlg/custsdlg.cxx
@@ -250,7 +250,7 @@ SdDefineCustomShowDlg::SdDefineCustomShowDlg(weld::Window* pWindow, SdDrawDocume
, m_xBtnAdd(m_xBuilder->weld_button("add"))
, m_xBtnRemove(m_xBuilder->weld_button("remove"))
, m_xLbCustomPages(m_xBuilder->weld_tree_view("custompages"))
- , m_xDropTargetHelper(new CustomPagesDropTarget(*m_xLbCustomPages))
+ , m_xDropTargetHelper(new weld::ReorderingDropTarget(*m_xLbCustomPages))
, m_xBtnOK(m_xBuilder->weld_button("ok"))
, m_xBtnCancel(m_xBuilder->weld_button("cancel"))
, m_xBtnHelp(m_xBuilder->weld_button("help"))
@@ -475,37 +475,4 @@ IMPL_LINK_NOARG(SdDefineCustomShowDlg, OKHdl, weld::Button&, void)
}
}
-CustomPagesDropTarget::CustomPagesDropTarget(weld::TreeView& rTreeView)
- : DropTargetHelper(rTreeView.get_drop_target())
- , m_rTreeView(rTreeView)
-{
-}
-
-sal_Int8 CustomPagesDropTarget::AcceptDrop(const AcceptDropEvent& rEvt)
-{
- // to enable the autoscroll when we're close to the edges
- m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true);
- return DND_ACTION_MOVE;
-}
-
-sal_Int8 CustomPagesDropTarget::ExecuteDrop( const ExecuteDropEvent& rEvt )
-{
- weld::TreeView* pSource = m_rTreeView.get_drag_source();
- // only dragging within the same widget allowed
- if (!pSource || pSource != &m_rTreeView)
- return DND_ACTION_NONE;
-
- std::unique_ptr<weld::TreeIter> xSource(m_rTreeView.make_iterator());
- if (!m_rTreeView.get_selected(xSource.get()))
- return DND_ACTION_NONE;
-
- std::unique_ptr<weld::TreeIter> xTarget(m_rTreeView.make_iterator());
- int nTargetPos = -1;
- if (m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get(), true))
- nTargetPos = m_rTreeView.get_iter_index_in_parent(*xTarget);
- m_rTreeView.move_subtree(*xSource, nullptr, nTargetPos);
-
- return DND_ACTION_NONE;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/inc/custsdlg.hxx b/sd/source/ui/inc/custsdlg.hxx
index 70df26a065fc..52ae878529a9 100644
--- a/sd/source/ui/inc/custsdlg.hxx
+++ b/sd/source/ui/inc/custsdlg.hxx
@@ -19,8 +19,8 @@
#pragma once
-#include <vcl/transfer.hxx>
#include <vcl/weld.hxx>
+#include <vcl/weldutils.hxx>
class SdDrawDocument;
class SdCustomShow;
@@ -54,18 +54,6 @@ public:
bool IsCustomShow() const;
};
-class CustomPagesDropTarget : public DropTargetHelper
-{
-private:
- weld::TreeView& m_rTreeView;
-
- virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) override;
- virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ) override;
-
-public:
- CustomPagesDropTarget(weld::TreeView& rTreeView);
-};
-
class SdDefineCustomShowDlg : public weld::GenericDialogController
{
private:
@@ -79,7 +67,7 @@ private:
std::unique_ptr<weld::Button> m_xBtnAdd;
std::unique_ptr<weld::Button> m_xBtnRemove;
std::unique_ptr<weld::TreeView> m_xLbCustomPages;
- std::unique_ptr<CustomPagesDropTarget> m_xDropTargetHelper;
+ std::unique_ptr<weld::ReorderingDropTarget> m_xDropTargetHelper;
std::unique_ptr<weld::Button> m_xBtnOK;
std::unique_ptr<weld::Button> m_xBtnCancel;
std::unique_ptr<weld::Button> m_xBtnHelp;