diff --git a/BeefLibs/Beefy2D/src/widgets/TabbedView.bf b/BeefLibs/Beefy2D/src/widgets/TabbedView.bf index 6bc23dd0..1ad4e420 100644 --- a/BeefLibs/Beefy2D/src/widgets/TabbedView.bf +++ b/BeefLibs/Beefy2D/src/widgets/TabbedView.bf @@ -238,9 +238,7 @@ namespace Beefy.widgets mNewDraggingWindow = new WidgetWindow(parentWindow, "", (int32)(mSrcDraggingWindow.mClientX + rootX - mDragHelper.mMouseDownX), (int32)(mSrcDraggingWindow.mClientY + rootY - mDragHelper.mMouseDownY), 300, 500, - BFWindowBase.Flags.Border | BFWindowBase.Flags.ThickFrame | BFWindowBase.Flags.Resizable | BFWindowBase.Flags.SysMenu | - BFWindowBase.Flags.Caption | BFWindowBase.Flags.Minimize | BFWindowBase.Flags.ToolWindow | BFWindowBase.Flags.TopMost | - BFWindowBase.Flags.UseParentMenu | BFWindowBase.Flags.Maximize, + .Border | .ThickFrame | .Resizable | .SysMenu | .Caption | .Minimize | .TopMost | .UseParentMenu | .Maximize, subFrame); Dock(subFrame, null, DockingFrame.WidgetAlign.Top); //subFrame.AddDockedWidget(fourthTabbedView, null, DockingFrame.WidgetAlign.Left, false); diff --git a/IDE/src/ui/SourceEditWidgetContent.bf b/IDE/src/ui/SourceEditWidgetContent.bf index bc90c963..226fd665 100644 --- a/IDE/src/ui/SourceEditWidgetContent.bf +++ b/IDE/src/ui/SourceEditWidgetContent.bf @@ -6241,6 +6241,30 @@ namespace IDE.ui RefreshCollapseRegion(entry, prevAnchorLine, failed); } + for (var embedKV in mEmbeds) + { + if (var emitEmbed = embedKV.value as EmitEmbed) + { + int32 anchorIdx = -1; + int32 anchorLine = -1; + Update(emitEmbed.mAnchorId, ref anchorIdx, ref anchorLine); + + if (anchorLine != embedKV.key) + { + if (mEmbeds.GetAndRemove(embedKV.key) case .Ok(let val)) + { + if ((anchorLine != -1) && (mEmbeds.TryAdd(anchorLine, var keyPtr, var valuePtr))) + { + val.value.mLine = anchorLine; + *valuePtr = val.value; + } + else + delete val.value; + } + } + } + } + //Debug.WriteLine($"RefreshCollapseRegions Count:{mOrderedCollapseEntries.Count} Time:{sw.ElapsedMilliseconds}ms"); sw.Stop(); diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index a4c48e85..27dbcf28 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -4813,6 +4813,9 @@ namespace IDE.ui { //Debug.WriteLine("UpdateCharData: {0}", char8Data); + if (mEditWidget == null) + return; + scope AutoBeefPerf("SourceViewPanel.UpdateCharData"); charIdData.Prepare(); @@ -5431,7 +5434,9 @@ namespace IDE.ui bool hasHoverWatchOpen = (mHoverWatch != null) && (mHoverWatch.mListView != null); if (mHoverWatch == null) + { mHoverWatch = new HoverWatch(); + } if (debugExpr != null) triedShow = true; diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index 42ef33f0..27c81a09 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -2864,6 +2864,15 @@ void BfModule::DoCEEmit(BfMethodInstance* methodInstance) if (auto methodDecl = BfNodeDynCast(methodInstance->mMethodDef->mMethodDeclaration)) bodyNode = methodDecl->mBody; + auto _Classify = [&](BfParser* emitParser) + { + if (emitParser->mSourceClassifier == NULL) + return; + emitParser->mSourceClassifier->VisitChild(emitParser->mRootNode); + emitParser->mSourceClassifier->VisitChild(emitParser->mSidechannelRootNode); + emitParser->mSourceClassifier->VisitChild(emitParser->mErrorRootNode); + }; + if (!ceEmitContext.mEmitData.IsEmpty()) { SetAndRestoreValue prevCustomAttribute(mCurMethodState->mEmitRefNode, customAttribute.mRef); @@ -2887,6 +2896,7 @@ void BfModule::DoCEEmit(BfMethodInstance* methodInstance) bfReducer.mSource = emitParser; bfReducer.mAlloc = emitParser->mAlloc; bfReducer.HandleBlock(emitParser->mRootNode, false); + _Classify(emitParser); Visit(emitParser->mRootNode); FinishCEParseContext(customAttribute.mRef, typeInstance, &ceParseContext); } @@ -2914,6 +2924,7 @@ void BfModule::DoCEEmit(BfMethodInstance* methodInstance) bfReducer.mSource = emitParser; bfReducer.mAlloc = emitParser->mAlloc; bfReducer.HandleBlock(emitParser->mRootNode, false); + _Classify(emitParser); auto deferredBlock = AddDeferredBlock(emitParser->mRootNode, &mCurMethodState->mHeadScope); deferredBlock->mEmitRefNode = customAttribute.mRef; FinishCEParseContext(customAttribute.mRef, typeInstance, &ceParseContext);