[Libreoffice-commits] core.git: vcl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Mar 7 21:54:41 UTC 2019


 vcl/source/treelist/treelistbox.cxx |    5 ++++
 vcl/source/window/builder.cxx       |   40 ++++++++++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 2 deletions(-)

New commits:
commit b440aea0a0b90b7e6700ee7f6f26e0139089c05d
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Mar 7 13:59:01 2019 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Mar 7 22:54:08 2019 +0100

    map reorderable to DragDropMode::CTRL_MOVE
    
    workaround baseclass NotifyStartDrag weirdness rather than risk changing it
    
    Change-Id: I70b56a913e6192da9b3a57653924dcc4160352c0
    Reviewed-on: https://gerrit.libreoffice.org/68879
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/source/treelist/treelistbox.cxx b/vcl/source/treelist/treelistbox.cxx
index 7355f06ca915..586b9073c2cb 100644
--- a/vcl/source/treelist/treelistbox.cxx
+++ b/vcl/source/treelist/treelistbox.cxx
@@ -3655,6 +3655,11 @@ bool SvTreeListBox::set_property(const OString &rKey, const OUString &rValue)
     {
         SetQuickSearch(toBool(rValue));
     }
+    else if (rKey == "reorderable")
+    {
+        if (toBool(rValue))
+            SetDragDropMode(DragDropMode::CTRL_MOVE);
+    }
     else
         return Control::set_property(rKey, rValue);
     return true;
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 1e363d451c99..5969211017fd 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1595,6 +1595,42 @@ void VclBuilder::preload()
 extern "C" VclBuilder::customMakeWidget lo_get_custom_widget_func(const char* name);
 #endif
 
+namespace
+{
+    //the default NotifyStartDrag is weird to me, and defaults to enabling all
+    //possibilities when drag starts, while restricting it to some subset of
+    //the configured drag drop mode would make more sense to me, but I'm not
+    //going to change the baseclass
+
+    class LclHeaderTabListBox : public SvHeaderTabListBox
+    {
+    public:
+        LclHeaderTabListBox(vcl::Window* pParent, WinBits nWinStyle)
+            : SvHeaderTabListBox(pParent, nWinStyle)
+        {
+        }
+
+        virtual DragDropMode NotifyStartDrag(TransferDataContainer&, SvTreeListEntry*) override
+        {
+            return GetDragDropMode();
+        }
+    };
+
+    class LclTabListBox : public SvTabListBox
+    {
+    public:
+        LclTabListBox(vcl::Window* pParent, WinBits nWinStyle)
+            : SvTabListBox(pParent, nWinStyle)
+        {
+        }
+
+        virtual DragDropMode NotifyStartDrag(TransferDataContainer&, SvTreeListEntry*) override
+        {
+            return GetDragDropMode();
+        }
+    };
+}
+
 VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &name, const OString &id,
     stringmap &rMap)
 {
@@ -1970,7 +2006,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
                 xHeader->SetHelpId(m_sHelpRoot + headerid);
                 m_aChildren.emplace_back(headerid, xHeader, true);
 
-                VclPtr<SvHeaderTabListBox> xHeaderBox = VclPtr<SvHeaderTabListBox>::Create(xContainer, nWinStyle);
+                VclPtr<LclHeaderTabListBox> xHeaderBox = VclPtr<LclHeaderTabListBox>::Create(xContainer, nWinStyle);
                 xHeaderBox->InitHeaderBar(xHeader);
                 xContainer->set_expand(true);
                 xHeader->Show();
@@ -1980,7 +2016,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
             }
             else
             {
-                xBox = VclPtr<SvTabListBox>::Create(pRealParent, nWinStyle);
+                xBox = VclPtr<LclTabListBox>::Create(pRealParent, nWinStyle);
                 xWindowForPackingProps = xBox;
             }
             xWindow = xBox;


More information about the Libreoffice-commits mailing list