1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Made Free Cursor Movement a setting (default false)

This commit is contained in:
Brian Fiete 2020-05-04 11:44:43 -07:00
parent a81f76ffcd
commit 562b565f49
4 changed files with 45 additions and 22 deletions

View file

@ -739,6 +739,7 @@ namespace Beefy.widgets
StartSelection(); StartSelection();
MoveCursorToCoord(x, y); MoveCursorToCoord(x, y);
ClampCursor();
//PrintF("~TestStruct() %d\n", mInner.mVal1); //PrintF("~TestStruct() %d\n", mInner.mVal1);
@ -808,6 +809,7 @@ namespace Beefy.widgets
if ((mMouseDown) && (mMouseFlags == .Left)) if ((mMouseDown) && (mMouseFlags == .Left))
{ {
MoveCursorToCoord(x, y); MoveCursorToCoord(x, y);
ClampCursor();
SelectToCursor(); SelectToCursor();
} }
} }
@ -2151,7 +2153,10 @@ namespace Beefy.widgets
CursorLineAndColumn = LineAndColumn(lineAndColumn.mLine, lineAndColumn.mColumn + 1); CursorLineAndColumn = LineAndColumn(lineAndColumn.mLine, lineAndColumn.mColumn + 1);
EnsureCursorVisible(true, false, false); EnsureCursorVisible(true, false, false);
CursorMoved(); CursorMoved();
break;
ClampCursor();
if (lineAndColumn != CursorLineAndColumn)
break;
} }
} }
@ -2223,8 +2228,6 @@ namespace Beefy.widgets
if (mWidgetWindow.IsKeyDown(KeyCode.Control)) if (mWidgetWindow.IsKeyDown(KeyCode.Control))
{ {
//mEditWidget.Resize(mEditWidget.mX, mEditWidget.mY, mEditWidget.mWidth, mEditWidget.mHeight + aDir);
mEditWidget.VertScrollTo(mEditWidget.mVertPos.mDest + aDir * mEditWidget.mScrollContentContainer.mHeight * 0.25f); mEditWidget.VertScrollTo(mEditWidget.mVertPos.mDest + aDir * mEditWidget.mScrollContentContainer.mHeight * 0.25f);
EnsureCursorVisible(false); EnsureCursorVisible(false);
return; return;
@ -2238,30 +2241,23 @@ namespace Beefy.widgets
float cursorX; float cursorX;
float cursorY; float cursorY;
GetTextCoordAtCursor(out cursorX, out cursorY); GetTextCoordAtCursor(out cursorX, out cursorY);
mCursorWantX = cursorX; //mCursorWantX = cursorX;
} }
//if (!mAllowVirtualCursor) lineIdx += aDir;
{
lineIdx += aDir;
float wantedX = mCursorWantX; float wantedX = mCursorWantX;
float aX; float aX;
float aY; float aY;
GetTextCoordAtLineChar(lineIdx, 0, out aX, out aY); GetTextCoordAtLineChar(lineIdx, 0, out aX, out aY);
MoveCursorToCoord(mCursorWantX, aY); MoveCursorToCoord(mCursorWantX, aY);
// Restore old desired X ClampCursor();
mCursorWantX = wantedX;
} // Restore old desired X
/*else mCursorWantX = wantedX;
{
mCursorBlinkTicks = 0;
var prevLineAndColumn = CursorLineAndColumn;
CursorLineAndColumn = LineAndColumn(Math.Max(0, prevLineAndColumn.mLine + aDir), prevLineAndColumn.mColumn);
CursorMoved();
}*/
} }
if (didSelectionMove) if (didSelectionMove)

View file

@ -318,6 +318,7 @@ namespace IDE
public bool mPerforceAutoCheckout = true; public bool mPerforceAutoCheckout = true;
public bool mSpellCheckEnabled = true; public bool mSpellCheckEnabled = true;
public bool mShowLineNumbers = true; public bool mShowLineNumbers = true;
public bool mFreeCursorMovement;
public void Serialize(StructuredData sd) public void Serialize(StructuredData sd)
{ {
@ -338,6 +339,7 @@ namespace IDE
sd.Add("PerforceAutoCheckout", mPerforceAutoCheckout); sd.Add("PerforceAutoCheckout", mPerforceAutoCheckout);
sd.Add("SpellCheckEnabled", mSpellCheckEnabled); sd.Add("SpellCheckEnabled", mSpellCheckEnabled);
sd.Add("ShowLineNumbers", mShowLineNumbers); sd.Add("ShowLineNumbers", mShowLineNumbers);
sd.Add("FreeCursorMovement", mFreeCursorMovement);
using (sd.CreateObject("Colors")) using (sd.CreateObject("Colors"))
mColors.Serialize(sd); mColors.Serialize(sd);
@ -364,6 +366,7 @@ namespace IDE
sd.Get("PerforceAutoCheckout", ref mPerforceAutoCheckout); sd.Get("PerforceAutoCheckout", ref mPerforceAutoCheckout);
sd.Get("SpellCheckEnabled", ref mSpellCheckEnabled); sd.Get("SpellCheckEnabled", ref mSpellCheckEnabled);
sd.Get("ShowLineNumbers", ref mShowLineNumbers); sd.Get("ShowLineNumbers", ref mShowLineNumbers);
sd.Get("FreeCursorMovement", ref mFreeCursorMovement);
using (sd.Open("Colors")) using (sd.Open("Colors"))
mColors.Deserialize(sd); mColors.Deserialize(sd);

View file

@ -103,6 +103,7 @@ namespace IDE.ui
}); });
AddPropertiesItem(category, "Show Line Numbers", "mShowLineNumbers"); AddPropertiesItem(category, "Show Line Numbers", "mShowLineNumbers");
AddPropertiesItem(category, "Free Cursor Movement", "mFreeCursorMovement");
category.Open(true, true); category.Open(true, true);

View file

@ -3409,6 +3409,29 @@ namespace IDE.ui
IDEApp.sApp.mSymbolReferenceHelper.SourceUpdateText(this, index); IDEApp.sApp.mSymbolReferenceHelper.SourceUpdateText(this, index);
} }
public override void ClampCursor()
{
base.ClampCursor();
if (mVirtualCursorPos == null)
return;
if (gApp.mSettings.mEditorSettings.mFreeCursorMovement)
return;
int line;
int lineChar;
GetCursorLineChar(out line, out lineChar);
float wantWidth = 0;
int virtualEnd = GetLineEndColumn(line, false, false, false, false, &wantWidth);
String curLineStr = scope String();
GetLineText(line, curLineStr);
int32 lineEnd = (int32)curLineStr.Length;
mVirtualCursorPos.ValueRef.mColumn = (.)Math.Min(mVirtualCursorPos.Value.mColumn, Math.Max(virtualEnd, lineEnd));
}
public override void PhysCursorMoved() public override void PhysCursorMoved()
{ {
//Debug.WriteLine("Cursor moved {0} {1}", CursorLineAndColumn.mLine, CursorLineAndColumn.mColumn); //Debug.WriteLine("Cursor moved {0} {1}", CursorLineAndColumn.mLine, CursorLineAndColumn.mColumn);