[Libreoffice-commits] core.git: sc/source sc/uiconfig

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 6 08:55:08 UTC 2020


 sc/source/ui/navipi/content.cxx        |   21 +++++++++++++--------
 sc/uiconfig/scalc/ui/navigatorpanel.ui |    1 +
 2 files changed, 14 insertions(+), 8 deletions(-)

New commits:
commit 5e76c9c02a9991a4a89f43975607f58b36b4d663
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Mar 5 17:09:35 2020 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Mar 6 09:54:33 2020 +0100

    tdf#131157 problems dragging and dropping from calc navigator
    
    Change-Id: I40f05704248c43c30d479d42932adfd594391a60
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90052
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index d1b66b8f6f34..49558c8c19b1 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -1117,7 +1117,7 @@ static bool lcl_GetRange( const ScDocument* pDoc, ScContentId nType, const OUStr
     return bFound;
 }
 
-static bool lcl_DoDragObject( ScDocShell* pSrcShell, const OUString& rName, ScContentId nType, vcl::Window* pWin )
+static bool lcl_DoDragObject( ScDocShell* pSrcShell, const OUString& rName, ScContentId nType, weld::TreeView& rTreeView )
 {
     bool bDisallow = true;
 
@@ -1150,7 +1150,9 @@ static bool lcl_DoDragObject( ScDocShell* pSrcShell, const OUString& rName, ScCo
             pTransferObj->SetDragSourceFlags(ScDragSrc::Navigator);
 
             SC_MOD()->SetDragObject( nullptr, pTransferObj.get() );
-            pTransferObj->StartDrag( pWin, DND_ACTION_COPYMOVE | DND_ACTION_LINK );
+
+            rtl::Reference<TransferDataContainer> xHelper(pTransferObj.get());
+            rTreeView.enable_drag_source(xHelper, DND_ACTION_COPYMOVE | DND_ACTION_LINK);
 
             bDisallow = false;
         }
@@ -1159,7 +1161,7 @@ static bool lcl_DoDragObject( ScDocShell* pSrcShell, const OUString& rName, ScCo
     return bDisallow;
 }
 
-static bool lcl_DoDragCells( ScDocShell* pSrcShell, const ScRange& rRange, ScDragSrc nFlags, vcl::Window* pWin )
+static bool lcl_DoDragCells( ScDocShell* pSrcShell, const ScRange& rRange, ScDragSrc nFlags, weld::TreeView& rTreeView )
 {
     bool bDisallow = true;
 
@@ -1188,7 +1190,9 @@ static bool lcl_DoDragCells( ScDocShell* pSrcShell, const ScRange& rRange, ScDra
         pTransferObj->SetDragSourceFlags( nFlags );
 
         SC_MOD()->SetDragObject( pTransferObj.get(), nullptr );      // for internal D&D
-        pTransferObj->StartDrag( pWin, DND_ACTION_COPYMOVE | DND_ACTION_LINK );
+
+        rtl::Reference<TransferDataContainer> xHelper(pTransferObj.get());
+        rTreeView.enable_drag_source(xHelper, DND_ACTION_COPYMOVE | DND_ACTION_LINK);
 
         bDisallow = false;
     }
@@ -1312,7 +1316,7 @@ IMPL_LINK(ScContentTree, DragBeginHdl, bool&, rUnsetDragIcon, bool)
                             ScRange aRange;
                             if ( lcl_GetRange( &rSrcDoc, nType, aText, aRange ) )
                             {
-                                bDisallow = lcl_DoDragCells( pSrcShell, aRange, ScDragSrc::Navigator, pParentWindow );
+                                bDisallow = lcl_DoDragCells( pSrcShell, aRange, ScDragSrc::Navigator, *m_xTreeView );
                             }
                         }
                         else if ( nType == ScContentId::TABLE )
@@ -1321,13 +1325,13 @@ IMPL_LINK(ScContentTree, DragBeginHdl, bool&, rUnsetDragIcon, bool)
                             if ( rSrcDoc.GetTable( aText, nTab ) )
                             {
                                 ScRange aRange(0, 0, nTab, rSrcDoc.MaxCol(), rSrcDoc.MaxRow(), nTab);
-                                bDisallow = lcl_DoDragCells( pSrcShell, aRange, (ScDragSrc::Navigator | ScDragSrc::Table), pParentWindow );
+                                bDisallow = lcl_DoDragCells( pSrcShell, aRange, (ScDragSrc::Navigator | ScDragSrc::Table), *m_xTreeView );
                             }
                         }
                         else if ( nType == ScContentId::GRAPHIC || nType == ScContentId::OLEOBJECT ||
                                     nType == ScContentId::DRAWING )
                         {
-                            bDisallow = lcl_DoDragObject( pSrcShell, aText, nType, pParentWindow );
+                            bDisallow = lcl_DoDragObject( pSrcShell, aText, nType, *m_xTreeView );
 
                             //  during ExecuteDrag the navigator can be deleted
                             //  -> don't access member anymore !!!
@@ -1342,7 +1346,8 @@ IMPL_LINK(ScContentTree, DragBeginHdl, bool&, rUnsetDragIcon, bool)
             if (!aLinkURL.isEmpty())
                 m_xTransferObj->SetLinkURL(aLinkURL, aLinkText);
 
-            m_xTransferObj->StartDrag(pParentWindow, DND_ACTION_COPYMOVE | DND_ACTION_LINK);
+            rtl::Reference<TransferDataContainer> xHelper(m_xTransferObj.get());
+            m_xTreeView->enable_drag_source(xHelper, DND_ACTION_COPYMOVE | DND_ACTION_LINK);
 
             bDisallow = false;
         }
diff --git a/sc/uiconfig/scalc/ui/navigatorpanel.ui b/sc/uiconfig/scalc/ui/navigatorpanel.ui
index 86e9a999682b..2e95d1b29ba3 100644
--- a/sc/uiconfig/scalc/ui/navigatorpanel.ui
+++ b/sc/uiconfig/scalc/ui/navigatorpanel.ui
@@ -292,6 +292,7 @@
                 <property name="vexpand">True</property>
                 <property name="model">liststore1</property>
                 <property name="headers_visible">False</property>
+                <property name="reorderable">True</property>
                 <property name="search_column">1</property>
                 <child internal-child="selection">
                   <object class="GtkTreeSelection" id="Macro Library List-selection1"/>


More information about the Libreoffice-commits mailing list