diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-11-02 11:44:47 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-11-02 17:13:35 +0100 |
commit | 0f684565d9246ccc39766289e9a5c383e8f9d838 (patch) | |
tree | 695530330800b234e9e1a026d01a17e807d422c9 /sd | |
parent | e0fa72a714c1992370f023308814acf96763e2c9 (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.cxx | 35 | ||||
-rw-r--r-- | sd/source/ui/inc/custsdlg.hxx | 16 |
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; |