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:
parent
a81f76ffcd
commit
562b565f49
4 changed files with 45 additions and 22 deletions
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue