diff options
-rw-r--r-- | basctl/source/basicide/moduldlg.cxx | 4 | ||||
-rw-r--r-- | cui/source/customize/SvxToolbarConfigPage.cxx | 4 | ||||
-rw-r--r-- | cui/source/customize/cfg.cxx | 4 | ||||
-rw-r--r-- | include/vcl/weld.hxx | 14 | ||||
-rw-r--r-- | sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx | 4 | ||||
-rw-r--r-- | sd/source/ui/animations/CustomAnimationList.cxx | 4 | ||||
-rw-r--r-- | sd/source/ui/dlg/sdtreelb.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/dialog/templdlg.cxx | 4 | ||||
-rw-r--r-- | sw/source/uibase/utlui/content.cxx | 4 | ||||
-rw-r--r-- | sw/source/uibase/utlui/glbltree.cxx | 4 | ||||
-rw-r--r-- | vcl/source/app/salvtables.cxx | 4 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 6 |
12 files changed, 33 insertions, 27 deletions
diff --git a/basctl/source/basicide/moduldlg.cxx b/basctl/source/basicide/moduldlg.cxx index 7aeae822a7bb..92c3ee9654ff 100644 --- a/basctl/source/basicide/moduldlg.cxx +++ b/basctl/source/basicide/moduldlg.cxx @@ -240,7 +240,7 @@ private: { // to enable the autoscroll when we're close to the edges weld::TreeView& rWidget = m_rTreeView.get_widget(); - rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr); + rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); weld::TreeView* pSource = rWidget.get_drag_source(); if (!pSource) @@ -291,7 +291,7 @@ private: return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xEntry(rWidget.make_iterator()); - bool bEntry = rWidget.get_dest_row_at_pos(rEvt.maPosPixel, xEntry.get()); + bool bEntry = rWidget.get_dest_row_at_pos(rEvt.maPosPixel, xEntry.get(), true); // don't drop on a BasicManager (nDepth == 0) sal_uInt16 nDepth = bEntry ? m_rTreeView.get_iter_depth(*xEntry) : 0; diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx b/cui/source/customize/SvxToolbarConfigPage.cxx index 87f0b5eb952d..57d1baa0268b 100644 --- a/cui/source/customize/SvxToolbarConfigPage.cxx +++ b/cui/source/customize/SvxToolbarConfigPage.cxx @@ -877,7 +877,7 @@ IMPL_LINK( SvxToolbarConfigPage, ContentContextMenuHdl, const CommandEvent&, rCE // Select clicked entry std::unique_ptr<weld::TreeIter> xIter(rTreeView.make_iterator()); - rTreeView.get_dest_row_at_pos(rCEvt.GetMousePosPixel(), xIter.get()); + rTreeView.get_dest_row_at_pos(rCEvt.GetMousePosPixel(), xIter.get(), false); rTreeView.select(*xIter); SelectToolbarEntry( rTreeView ); @@ -922,7 +922,7 @@ IMPL_LINK( SvxToolbarConfigPage, FunctionContextMenuHdl, const CommandEvent&, rC // Select clicked entry std::unique_ptr<weld::TreeIter> xIter(rTreeView.make_iterator()); - rTreeView.get_dest_row_at_pos(rCEvt.GetMousePosPixel(), xIter.get()); + rTreeView.get_dest_row_at_pos(rCEvt.GetMousePosPixel(), xIter.get(), false); rTreeView.select(*xIter); SelectFunctionHdl( rTreeView ); std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder( &rTreeView, "cui/ui/entrycontextmenu.ui" ) ); diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx index 05fc63f442d6..94ed598c1bf3 100644 --- a/cui/source/customize/cfg.cxx +++ b/cui/source/customize/cfg.cxx @@ -3172,7 +3172,7 @@ SvxConfigPageFunctionDropTarget::SvxConfigPageFunctionDropTarget(SvxConfigPage&r sal_Int8 SvxConfigPageFunctionDropTarget::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); + m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); return DND_ACTION_MOVE; } @@ -3189,7 +3189,7 @@ sal_Int8 SvxConfigPageFunctionDropTarget::ExecuteDrop( const ExecuteDropEvent& r 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())) + 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); diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index f3fc52a9db3a..dc73addd0c10 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1178,10 +1178,16 @@ public: // call set_column_custom_renderer after setting custom callbacks virtual void set_column_custom_renderer(int nColumn, bool bEnable) = 0; - // for dnd - virtual bool get_dest_row_at_pos(const Point& rPos, weld::TreeIter* pResult, - bool bHighLightTarget = true) - = 0; + /* with bDnDMode false simply return the row under the point + * + * with bDnDMode true: + * a) return the row which should be dropped on, which may + * be different from the row the mouse is over in some backends where + * positioning the mouse on the bottom half of a row indicates to drop + * after the row + * b) dnd highlight the dest row + */ + virtual bool get_dest_row_at_pos(const Point& rPos, weld::TreeIter* pResult, bool bDnDMode) = 0; virtual void unset_drag_dest_row() = 0; virtual tools::Rectangle get_row_area(const weld::TreeIter& rIter) const = 0; // for dragging and dropping between TreeViews, return the active source diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx index c80b64b4a5c6..6cc8efc6d5be 100644 --- a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx +++ b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx @@ -42,7 +42,7 @@ sal_Int8 ScPivotLayoutTreeDropTarget::AcceptDrop(const AcceptDropEvent& rEvt) { // to enable the autoscroll when we're close to the edges weld::TreeView& rWidget = m_rTreeView.get_widget(); - rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr); + rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); return DND_ACTION_MOVE; } @@ -55,7 +55,7 @@ sal_Int8 ScPivotLayoutTreeDropTarget::ExecuteDrop( const ExecuteDropEvent& rEvt std::unique_ptr<weld::TreeIter> xTarget(rWidget.make_iterator()); int nTargetPos = -1; - if (rWidget.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get())) + if (rWidget.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get(), true)) nTargetPos = rWidget.get_iter_index_in_parent(*xTarget); m_rTreeView.InsertEntryForSourceTarget(*pSource, nTargetPos); rWidget.unset_drag_dest_row(); diff --git a/sd/source/ui/animations/CustomAnimationList.cxx b/sd/source/ui/animations/CustomAnimationList.cxx index 0e2762ce762e..66a8f3cad4df 100644 --- a/sd/source/ui/animations/CustomAnimationList.cxx +++ b/sd/source/ui/animations/CustomAnimationList.cxx @@ -455,7 +455,7 @@ sal_Int8 CustomAnimationListDropTarget::AcceptDrop(const AcceptDropEvent& rEvt) { // to enable the autoscroll when we're close to the edges weld::TreeView& rWidget = m_rTreeView.get_widget(); - rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr); + rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); } return nAccept; @@ -504,7 +504,7 @@ sal_Int8 CustomAnimationList::AcceptDrop( const AcceptDropEvent& rEvt ) sal_Int8 CustomAnimationList::ExecuteDrop(const ExecuteDropEvent& rEvt) { std::unique_ptr<weld::TreeIter> xDndEffectInsertBefore(mxTreeView->make_iterator()); - if (!mxTreeView->get_dest_row_at_pos(rEvt.maPosPixel, xDndEffectInsertBefore.get())) + if (!mxTreeView->get_dest_row_at_pos(rEvt.maPosPixel, xDndEffectInsertBefore.get(), true)) xDndEffectInsertBefore.reset(); const bool bMovingEffect = ( mxDndEffectDragging != nullptr ); diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 7bb5f06e5c6f..a9670d472b25 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -470,7 +470,7 @@ sal_Int8 SdPageObjsTLVDropTarget::AcceptDrop(const AcceptDropEvent& rEvt) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xTarget(m_rTreeView.make_iterator()); - if (!m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get())) + if (!m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get(), true)) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xSource(m_rTreeView.make_iterator()); @@ -507,7 +507,7 @@ sal_Int8 SdPageObjsTLVDropTarget::ExecuteDrop( const ExecuteDropEvent& rEvt ) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xTarget(m_rTreeView.make_iterator()); - if (!m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get())) + if (!m_rTreeView.get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get(), true)) return DND_ACTION_NONE; int nTargetPos = m_rTreeView.get_iter_index_in_parent(*xTarget) + 1; diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx index a6d88a2ffade..e706d9de3c21 100644 --- a/sfx2/source/dialog/templdlg.cxx +++ b/sfx2/source/dialog/templdlg.cxx @@ -131,7 +131,7 @@ sal_Int8 SfxCommonTemplateDialog_Impl::AcceptDrop(const AcceptDropEvent& rEvt, c // to enable the autoscroll when we're close to the edges weld::TreeView* pTreeView = mxTreeBox->get_visible() ? mxTreeBox.get() : mxFmtLb.get(); - pTreeView->get_dest_row_at_pos(rEvt.maPosPixel, nullptr); + pTreeView->get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); return DND_ACTION_MOVE; } @@ -187,7 +187,7 @@ sal_Int8 SfxCommonTemplateDialog_Impl::ExecuteDrop(const ExecuteDropEvent& rEvt) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xTarget(mxTreeBox->make_iterator()); - if (!mxTreeBox->get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get())) + if (!mxTreeBox->get_dest_row_at_pos(rEvt.maPosPixel, xTarget.get(), true)) { // if nothing under the mouse, use the last row int nChildren = mxTreeBox->n_children(); diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index cf8959e687a8..3e1f7bab5d39 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -987,7 +987,7 @@ sal_Int8 SwContentTreeDropTarget::AcceptDrop(const AcceptDropEvent& rEvt) { // to enable the autoscroll when we're close to the edges weld::TreeView& rWidget = m_rTreeView.get_widget(); - rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr); + rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); } return nAccept; @@ -1034,7 +1034,7 @@ sal_Int8 SwContentTreeDropTarget::ExecuteDrop(const ExecuteDropEvent& rEvt) sal_Int8 SwContentTree::ExecuteDrop(const ExecuteDropEvent& rEvt) { std::unique_ptr<weld::TreeIter> xDropEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_dest_row_at_pos(rEvt.maPosPixel, xDropEntry.get())) + if (!m_xTreeView->get_dest_row_at_pos(rEvt.maPosPixel, xDropEntry.get(), true)) xDropEntry.reset(); if (m_nRootType == ContentTypeId::OUTLINE) diff --git a/sw/source/uibase/utlui/glbltree.cxx b/sw/source/uibase/utlui/glbltree.cxx index 3261050f3a6c..e1d640caa3f9 100644 --- a/sw/source/uibase/utlui/glbltree.cxx +++ b/sw/source/uibase/utlui/glbltree.cxx @@ -170,7 +170,7 @@ sal_Int8 SwGlobalTreeDropTarget::ExecuteDrop( const ExecuteDropEvent& rEvt ) weld::TreeView& rWidget = m_rTreeView.get_widget(); std::unique_ptr<weld::TreeIter> xDropEntry(rWidget.make_iterator()); - if (!rWidget.get_dest_row_at_pos(rEvt.maPosPixel, xDropEntry.get())) + if (!rWidget.get_dest_row_at_pos(rEvt.maPosPixel, xDropEntry.get(), true)) xDropEntry.reset(); if (rWidget.get_drag_source() == &rWidget) // internal drag @@ -234,7 +234,7 @@ sal_Int8 SwGlobalTreeDropTarget::AcceptDrop( const AcceptDropEvent& rEvt ) { // to enable the autoscroll when we're close to the edges weld::TreeView& rWidget = m_rTreeView.get_widget(); - rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr); + rWidget.get_dest_row_at_pos(rEvt.maPosPixel, nullptr, true); sal_Int8 nRet = rEvt.mnAction; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 8b3677da1c86..18a7bcd246d3 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -4597,9 +4597,9 @@ public: SvTabListBox& getTreeView() { return *m_xTreeView; } - virtual bool get_dest_row_at_pos(const Point& rPos, weld::TreeIter* pResult, bool bHighLightTarget) override + virtual bool get_dest_row_at_pos(const Point& rPos, weld::TreeIter* pResult, bool bDnDMode) override { - LclTabListBox* pTreeView = !bHighLightTarget ? dynamic_cast<LclTabListBox*>(m_xTreeView.get()) : nullptr; + LclTabListBox* pTreeView = !bDnDMode ? dynamic_cast<LclTabListBox*>(m_xTreeView.get()) : nullptr; SvTreeListEntry* pTarget = pTreeView ? pTreeView->GetTargetAtPoint(rPos, false) : m_xTreeView->GetDropTarget(rPos); if (pTarget && pResult) diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index e1c7aa4e7260..01390a5d1fd7 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -11231,7 +11231,7 @@ public: weld::TreeView::connect_popup_menu(rLink); } - virtual bool get_dest_row_at_pos(const Point &rPos, weld::TreeIter* pResult, bool bHighLightTarget) override + virtual bool get_dest_row_at_pos(const Point &rPos, weld::TreeIter* pResult, bool bDnDMode) override { if (rPos.X() < 0 || rPos.Y() < 0) { @@ -11267,7 +11267,7 @@ public: path = gtk_tree_path_copy(lastpath); pos = GTK_TREE_VIEW_DROP_AFTER; } - else if (gtk_tree_path_compare(path, lastpath) == 0) + else if (bDnDMode && gtk_tree_path_compare(path, lastpath) == 0) { // if we're on the last entry, see if gtk thinks // the drop should be before or after it, and if @@ -11287,7 +11287,7 @@ public: gtk_tree_model_get_iter(pModel, &rGtkIter.iter, path); } - if (m_bInDrag && bHighLightTarget) // bHighLightTarget alone might be sufficient + if (m_bInDrag && bDnDMode) { // highlight the row gtk_tree_view_set_drag_dest_row(m_pTreeView, path, pos); |