basctl/source/basicide/baside2b.cxx |    2 +-
 basic/source/runtime/runtime.cxx    |   14 +++++++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

New commits:
commit f9ce4b2d04b58843d7986acd9382864b0b30d617
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Fri Oct 22 20:00:01 2021 +0200
Commit:     Andreas Heinisch <andreas.heini...@yahoo.de>
CommitDate: Mon Oct 25 13:22:09 2021 +0200

    tdf#57308 - Basic IDE: Watching of a variable does not work
    
    Watching a variable which returns a value from a function always shows
    "out of scope" in the watch window of the Basic IDE. In order to resolve
    this issue, the name of the variable being watched will be searched also
    in the current method instance.
    
    Change-Id: Id383e03925956056931d199fe86d1b352cf8e4eb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124075
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>

diff --git a/basctl/source/basicide/baside2b.cxx 
b/basctl/source/basicide/baside2b.cxx
index 5457ebcce376..f320e7014c74 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -2373,7 +2373,7 @@ void WatchWindow::UpdateWatches(bool bBasicStopped)
                 eEnableChildren = TRISTATE_TRUE;
             }
 
-            if (SbxVariable const* pVar = IsSbxVariable(pSBX))
+            if (SbxVariable const* pVar = dynamic_cast<SbxVariable*>(pSBX))
             {
                 // extra treatment of arrays
                 SbxDataType eType = pVar->GetType();
diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx
index 2d7b988d7647..b6e64fbb3c35 100644
--- a/basic/source/runtime/runtime.cxx
+++ b/basic/source/runtime/runtime.cxx
@@ -3754,9 +3754,17 @@ SbxBase* SbiRuntime::FindElementExtern( const OUString& 
rName )
     }
     if ( !pElem && pMeth )
     {
-        // for statics, set the method's name in front
-        OUString aMethName = pMeth->GetName() + ":" + rName;
-        pElem = pMod->Find(aMethName, SbxClassType::DontCare);
+        const OUString aMethName = pMeth->GetName();
+        // tdf#57308 - check if the name is the current method instance
+        if (pMeth->GetName() == rName)
+        {
+            pElem = pMeth;
+        }
+        else
+        {
+            // for statics, set the method's name in front
+            pElem = pMod->Find(aMethName + ":" + rName, 
SbxClassType::DontCare);
+        }
     }
 
     // search in parameter list

Reply via email to