record mouse clicks in CodeEdit for navigation
This commit is contained in:
@@ -14,6 +14,7 @@ using SharpIDE.Application.Features.Debugging;
|
|||||||
using SharpIDE.Application.Features.Events;
|
using SharpIDE.Application.Features.Events;
|
||||||
using SharpIDE.Application.Features.FilePersistence;
|
using SharpIDE.Application.Features.FilePersistence;
|
||||||
using SharpIDE.Application.Features.FileWatching;
|
using SharpIDE.Application.Features.FileWatching;
|
||||||
|
using SharpIDE.Application.Features.NavigationHistory;
|
||||||
using SharpIDE.Application.Features.Run;
|
using SharpIDE.Application.Features.Run;
|
||||||
using SharpIDE.Application.Features.SolutionDiscovery;
|
using SharpIDE.Application.Features.SolutionDiscovery;
|
||||||
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||||
@@ -54,6 +55,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
[Inject] private readonly IdeCodeActionService _ideCodeActionService = null!;
|
[Inject] private readonly IdeCodeActionService _ideCodeActionService = null!;
|
||||||
[Inject] private readonly FileChangedService _fileChangedService = null!;
|
[Inject] private readonly FileChangedService _fileChangedService = null!;
|
||||||
[Inject] private readonly IdeApplyCompletionService _ideApplyCompletionService = null!;
|
[Inject] private readonly IdeApplyCompletionService _ideApplyCompletionService = null!;
|
||||||
|
[Inject] private readonly IdeNavigationHistoryService _navigationHistoryService = null!;
|
||||||
|
|
||||||
private readonly List<string> _codeCompletionTriggers =
|
private readonly List<string> _codeCompletionTriggers =
|
||||||
[
|
[
|
||||||
@@ -341,9 +343,20 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
// return base._FilterCodeCompletionCandidates(candidates);
|
// return base._FilterCodeCompletionCandidates(candidates);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
// This only gets invoked if the Node is focused
|
||||||
public override void _GuiInput(InputEvent @event)
|
public override void _GuiInput(InputEvent @event)
|
||||||
{
|
{
|
||||||
if (@event is InputEventKey { Pressed: true } keyEvent)
|
if (@event is InputEventMouseButton { Pressed: true } mouseEvent)
|
||||||
|
{
|
||||||
|
var (col, line) = GetLineColumnAtPos((Vector2I)mouseEvent.Position);
|
||||||
|
var current = _navigationHistoryService.Current;
|
||||||
|
if (current!.File != _currentFile) throw new InvalidOperationException("Current navigation history file does not match the focused code editor file.");
|
||||||
|
if (current.LinePosition.Line != line) // Only record a new navigation if the line has changed
|
||||||
|
{
|
||||||
|
_navigationHistoryService.RecordNavigation(_currentFile, new SharpIdeFileLinePosition(line, col));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (@event is InputEventKey { Pressed: true } keyEvent)
|
||||||
{
|
{
|
||||||
var codeCompletionSelectedIndex = GetCodeCompletionSelectedIndex();
|
var codeCompletionSelectedIndex = GetCodeCompletionSelectedIndex();
|
||||||
var isCodeCompletionPopupOpen = codeCompletionSelectedIndex is not -1;
|
var isCodeCompletionPopupOpen = codeCompletionSelectedIndex is not -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user