diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index a43ce585..51d9d475 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -3957,7 +3957,7 @@ namespace IDE if (sourceViewPanel != null) { if (sourceViewPanel.mEditWidget.mEditWidgetContent.GetCursorLineChar(var line, var lineChar)) - sourceViewPanel.UpdateMouseover(true, true, line, lineChar); + sourceViewPanel.UpdateMouseover(true, true, line, lineChar, true); } } diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index c1d98643..e3867de8 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -160,6 +160,8 @@ namespace IDE.ui { public int32 mCursorPos; public String mResult ~ delete _; + public int32? mLine; + public int32? mLineChar; public ~this() { @@ -4722,7 +4724,7 @@ namespace IDE.ui delete parser; } - public void UpdateMouseover(bool mouseoverFired, bool mouseInbounds, int line, int lineChar) + public void UpdateMouseover(bool mouseoverFired, bool mouseInbounds, int line, int lineChar, bool isManual = false) { @@ -5008,6 +5010,11 @@ namespace IDE.ui mHoverResolveTask = new HoverResolveTask(); mHoverResolveTask.mCursorPos = (int32)textIdx; + if (isManual) + { + mHoverResolveTask.mLine = (.)line; + mHoverResolveTask.mLineChar = (.)lineChar; + } } } @@ -5201,6 +5208,16 @@ namespace IDE.ui #if IDE_C_SUPPORT hasClangHoverErrorData = mClangHoverErrorData != null; #endif + + if (mHoverResolveTask != null) + { + if (mHoverResolveTask.mLine != null) + { + UpdateMouseover(true, true, mHoverResolveTask.mLine.Value, mHoverResolveTask.mLineChar.Value, true); + return; + } + } + if (((mouseoverFired) || (mHoverWatch != null) || (hasClangHoverErrorData) || (mHoverResolveTask?.mResult != null)) && (mousePos.x >= 0)) { diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 039b4126..9bd0fa6f 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -11441,7 +11441,7 @@ BfTypedValue BfExprEvaluator::DoImplicitArgCapture(BfAstNode* refNode, BfMethodI BfMethodInstance* methodRefMethodInst = methodRefType->mMethodRef; BF_ASSERT(methodRefMethodInst == methodInstance); - + auto paramType = methodInstance->GetParamType(paramIdx); int dataIdx = methodRefType->GetDataIdxFromParamIdx(paramIdx);