1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Made using/pragma fixits no long focus on change

This commit is contained in:
Brian Fiete 2020-09-05 05:39:51 -07:00
parent 97fd278e07
commit 709b337617
6 changed files with 31 additions and 10 deletions

View file

@ -759,7 +759,7 @@ namespace Beefy.theme.dark
return val;
}
public void CheckRecordScrollTop()
public void CheckRecordScrollTop(bool force = false)
{
if (mWantsCheckScrollPosition)
{
@ -784,7 +784,7 @@ namespace Beefy.theme.dark
mWantsCheckScrollPosition = false;
}
if (mEditWidget.mHasFocus)
if ((mEditWidget.mHasFocus) && (!force))
{
mTopCharId = -1;
}

View file

@ -941,8 +941,8 @@ namespace Beefy.widgets
{
#unwarn
int cursorPos = CursorTextPos;
if (mCursorTextPos >= index)
mCursorTextPos = Math.Clamp(mCursorTextPos + (int32)ofs, 0, mData.mTextLength + 1);
if (cursorPos >= index)
CursorTextPos = Math.Clamp(mCursorTextPos + (int32)ofs, 0, mData.mTextLength + 1);
if (HasSelection())
{
if (((ofs > 0) && (mSelection.Value.mStartPos >= index)) ||

View file

@ -2287,17 +2287,22 @@ namespace IDE.ui
return;
}
var targetSourceEditWidgetContent = mTargetEditWidget.Content as SourceEditWidgetContent;
var sourceEditWidgetContent = targetSourceEditWidgetContent;
var prevCursorPosition = sourceEditWidgetContent.CursorTextPos;
var prevScrollPos = mTargetEditWidget.mVertPos.mDest;
UndoBatchStart undoBatchStart = null;
var parts = String.StackSplit!(data, '|');
String fixitKind = parts[0];
String fixitFileName = parts[1];
SourceViewPanel sourceViewPanel = IDEApp.sApp.ShowSourceFile(fixitFileName);
bool focusChange = !fixitKind.StartsWith(".");
var targetSourceEditWidgetContent = mTargetEditWidget.Content as SourceEditWidgetContent;
var historyEntry = targetSourceEditWidgetContent.RecordHistoryLocation();
historyEntry.mNoMerge = true;
var sourceEditWidgetContent = targetSourceEditWidgetContent;
if (sourceEditWidgetContent.mSourceViewPanel != sourceViewPanel)
{
sourceEditWidgetContent = (SourceEditWidgetContent)sourceViewPanel.GetActivePanel().EditWidget.mEditWidgetContent;
@ -2305,6 +2310,11 @@ namespace IDE.ui
sourceEditWidgetContent.mData.mUndoManager.Add(undoBatchStart);
}
if (!focusChange)
{
sourceEditWidgetContent.CheckRecordScrollTop(true);
}
int32 fixitIdx = 0;
int32 fixitLen = 0;
StringView fixitLocStr = parts[2];
@ -2325,6 +2335,8 @@ namespace IDE.ui
else
fixitIdx = int32.Parse(fixitLocStr).GetValueOrDefault();
int prevTextLength = sourceEditWidgetContent.mData.mTextLength;
int insertCount = 0;
int dataIdx = 3;
@ -2358,6 +2370,7 @@ namespace IDE.ui
}
sourceEditWidgetContent.CursorTextPos = fixitIdx;
if (focusChange)
sourceEditWidgetContent.EnsureCursorVisible(true, true);
if (fixitLen > 0)
@ -2377,6 +2390,14 @@ namespace IDE.ui
}
}
if (!focusChange)
{
mTargetEditWidget.VertScrollTo(prevScrollPos, true);
sourceEditWidgetContent.CursorTextPos = prevCursorPosition;
int addedSize = sourceEditWidgetContent.mData.mTextLength - prevTextLength;
sourceEditWidgetContent.[Friend]AdjustCursorsAfterExternalEdit(fixitIdx, addedSize);
}
if (historyEntry != null)
{
// Make sure when we go back that we'll go back to the insert position

View file

@ -3267,7 +3267,7 @@ void BfAutoComplete::FixitAddNamespace(BfAstNode* refNode, const StringImpl& nam
BfUsingFinder usingFinder;
usingFinder.VisitMembers(refNode->GetSourceData()->mRootNode);
AddEntry(AutoCompleteEntry("fixit", StrFormat("using %s;\tusing|%s|%d||using %s;", namespaceStr.c_str(), parserData->mFileName.c_str(),
AddEntry(AutoCompleteEntry("fixit", StrFormat("using %s;\t.using|%s|%d||using %s;", namespaceStr.c_str(), parserData->mFileName.c_str(),
usingFinder.mLastIdx, namespaceStr.c_str()).c_str()));
}

View file

@ -2888,7 +2888,7 @@ BfError* BfModule::Warn(int warningNum, const StringImpl& warning, BfAstNode* re
if (warningNum != 0)
{
mCompiler->mResolvePassData->mAutoComplete->AddEntry(AutoCompleteEntry("fixit", StrFormat("#pragma warning disable %d\tusing|%s|%d||#pragma warning disable %d",
mCompiler->mResolvePassData->mAutoComplete->AddEntry(AutoCompleteEntry("fixit", StrFormat("#pragma warning disable %d\t.pragma|%s|%d||#pragma warning disable %d",
warningNum, parser->mFileName.c_str(), 0, warningNum).c_str()));
}
}

View file

@ -7356,7 +7356,7 @@ void BfModule::CheckTypeRefFixit(BfAstNode* typeRef, const char* appendName)
{
BfParserData* parser = typeRef->GetSourceData()->ToParserData();
if (parser != NULL)
mCompiler->mResolvePassData->mAutoComplete->AddEntry(AutoCompleteEntry("fixit", StrFormat("using %s;\tusing|%s|%d||using %s;", namespaceStr.c_str(), parser->mFileName.c_str(), usingFinder.mLastIdx, namespaceStr.c_str()).c_str()));
mCompiler->mResolvePassData->mAutoComplete->AddEntry(AutoCompleteEntry("fixit", StrFormat("using %s;\t.using|%s|%d||using %s;", namespaceStr.c_str(), parser->mFileName.c_str(), usingFinder.mLastIdx, namespaceStr.c_str()).c_str()));
}
}
}