vcl/source/treelist/treelistbox.cxx |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

New commits:
commit 2471d6f44c7e8ecbe86a90eeb593b899a08a7408
Author:     Attila Szűcs <szucs.atti...@nisz.hu>
AuthorDate: Fri Oct 16 09:54:14 2020 +0200
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Mon Oct 19 13:44:06 2020 +0200

    tdf#116675 vcl tree list: toggle by label click (e.g. in AutoFilter)
    
    Checkboxes in a tree list could be toggled only by clicking
    on them, but not on the associated labels, despite UX guidelines
    and interoperability requirements especially for AutoFilter usage
    in the spreadsheet.
    
    Note: Implemented only for generic VCL plugin. Testing on Linux:
    
    SAL_USE_VCLPLUGIN=gen instdir/program/soffice
    
    Co-authored-by: Tibor Nagy (NISZ)
    
    Change-Id: Ibc3d42271a1be53a54e11dedf4ab3ab506d680cf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104414
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>

diff --git a/vcl/source/treelist/treelistbox.cxx 
b/vcl/source/treelist/treelistbox.cxx
index b3f9506f5839..52243ccf95e6 100644
--- a/vcl/source/treelist/treelistbox.cxx
+++ b/vcl/source/treelist/treelistbox.cxx
@@ -2288,6 +2288,29 @@ void SvTreeListBox::MouseButtonDown( const MouseEvent& 
rMEvt )
 
 void SvTreeListBox::MouseButtonUp( const MouseEvent& rMEvt )
 {
+    // tdf#116675 clicking on an entry should toggle its checkbox
+    if (rMEvt.IsLeft() && (nTreeFlags & SvTreeFlags::CHKBTN))
+    {
+        const Point aPnt = rMEvt.GetPosPixel();
+        SvTreeListEntry* pEntry = GetEntry(aPnt);
+        if (pEntry && pEntry->m_Items.size() > 0)
+        {
+            SvLBoxItem* pItem = GetItem(pEntry, aPnt.X());
+            // if the checkbox button was clicked, that will be toggled later, 
do not toggle here
+            // anyway users probably don't want to toggle the checkbox by 
clickink on another button
+            if (!pItem || pItem->GetType() != SvLBoxItemType::Button)
+            {
+                SvLBoxButton* pItemCheckBox
+                    = 
static_cast<SvLBoxButton*>(pEntry->GetFirstItem(SvLBoxItemType::Button));
+                if (pItemCheckBox)
+                {
+                    pItemCheckBox->ClickHdl(pEntry);
+                    InvalidateEntry(pEntry);
+                }
+            }
+        }
+    }
+
     pImpl->MouseButtonUp( rMEvt );
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to