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

Eike Rathke erack at redhat.com
Thu Jul 12 10:43:52 UTC 2018


 svtools/source/contnr/svimpbox.cxx    |    8 +++++++-
 svtools/source/contnr/treelistbox.cxx |    3 +--
 2 files changed, 8 insertions(+), 3 deletions(-)

New commits:
commit c9d1655d455ad783694e6d7f0d2e6cf3d0d0acae
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Jul 10 11:13:57 2018 +0200

    Resolves: tdf#115950 proper double click return and bail out, tdf#117063
    
        commit b649ce123dea372359ec571135a68eb3de844e5b
        CommitDate: Sun Apr 29 08:46:46 2018 +0200
    
            tdf#117063 Modify tree list double click behavior in the navigator
    
    changed the return value in SvTreeListBox::DoubleClickHdl() from
    
      return !aDoubleClickHdl.IsSet() || aDoubleClickHdl.Call(this);
    
    to an unconditional true. Earlier there was
    
        commit 1b9af08481b8f7f4bd15a30508606dff56b8e74f
        CommitDate: Tue Mar 13 16:28:40 2018 +0100
    
            tdf#116334: Actually when there is no handler, we have to return 'true'.
    
        -    aDoubleClickHdl.Call( this );
        -    return false;
        +    return !aDoubleClickHdl.IsSet() || aDoubleClickHdl.Call(this);
    
    and before that
    
        commit 7651e57573952758032ceb88f16e2dbbb6cc4e18
        CommitDate: Thu Mar 1 15:41:13 2018 +0100
    
            tdf#115950: Indicate that the dialog was already destroyed.
    
        -    return true;
        +    return false;
    
    Neither a constant false or true are correct return values here,
    but only the value the double click handler, if any, returned to
    indicate whether processing should continue (true) or not (false).
    
    If handlers don't return a proper value so the intended behaviour
    for tdf#117063 or anything else does not work then fix the
    handlers instead.
    
    If the handler returned false then don't even attempt to access
    anything in SvImpLBox::MouseButtonDown() because an OK handler may
    have destroyed everything and all is rotten.
    
    Change-Id: Ia90c21288bedd7e5078dbe4b3dd6d9f5199a2a98
    Reviewed-on: https://gerrit.libreoffice.org/57225
    Tested-by: Jenkins
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Reviewed-by: Eike Rathke <erack at redhat.com>

diff --git a/svtools/source/contnr/svimpbox.cxx b/svtools/source/contnr/svimpbox.cxx
index 6f7d0f23720a..4f6914431dbe 100644
--- a/svtools/source/contnr/svimpbox.cxx
+++ b/svtools/source/contnr/svimpbox.cxx
@@ -2019,7 +2019,13 @@ void SvImpLBox::MouseButtonDown( const MouseEvent& rMEvt )
     {
         nFlags &= (~LBoxFlags::StartEditTimer);
         pView->pHdlEntry = pEntry;
-        if( pView->DoubleClickHdl() )
+        if( !pView->DoubleClickHdl() )
+        {
+            // Handler signals nothing to be done anymore, bail out, 'this' may
+            // even be dead and destroyed.
+            return;
+        }
+        else
         {
             // if the entry was deleted within the handler
             pEntry = GetClickedEntry( aPos );
diff --git a/svtools/source/contnr/treelistbox.cxx b/svtools/source/contnr/treelistbox.cxx
index 716a1a2cc00b..ea710b2da653 100644
--- a/svtools/source/contnr/treelistbox.cxx
+++ b/svtools/source/contnr/treelistbox.cxx
@@ -426,8 +426,7 @@ void SvTreeListBox::DeselectHdl()
 
 bool SvTreeListBox::DoubleClickHdl()
 {
-    aDoubleClickHdl.Call( this );
-    return true;
+    return !aDoubleClickHdl.IsSet() || aDoubleClickHdl.Call(this);
 }
 
 


More information about the Libreoffice-commits mailing list