diff --git a/src/AdvancedCalculator/ViewModels/MainViewModel.cs b/src/AdvancedCalculator/ViewModels/MainViewModel.cs index 222de45..76f2a35 100644 --- a/src/AdvancedCalculator/ViewModels/MainViewModel.cs +++ b/src/AdvancedCalculator/ViewModels/MainViewModel.cs @@ -35,6 +35,10 @@ public partial class MainViewModel : ViewModelBase [ObservableProperty] private int _selectedHistoryIndex = -1; + // Caret position in the input TextBox + [ObservableProperty] + private int _caretIndex; + public ObservableCollection History { get; } public ObservableCollection Variables { get; } @@ -61,6 +65,11 @@ public partial class MainViewModel : ViewModelBase if (string.IsNullOrWhiteSpace(functionDefintionItem.FunctionName)) return; InsertToken(functionDefintionItem.FunctionName + "()"); + // Place caret inside the parentheses + if (!string.IsNullOrEmpty(InputText)) + { + CaretIndex = Math.Max(0, InputText.Length - 1); + } // Close the functions flyout after insertion for smoother UX IsFunctionsPanelOpen = false; } diff --git a/src/AdvancedCalculator/Views/MainView.axaml b/src/AdvancedCalculator/Views/MainView.axaml index 5274b5a..ecef799 100644 --- a/src/AdvancedCalculator/Views/MainView.axaml +++ b/src/AdvancedCalculator/Views/MainView.axaml @@ -183,7 +183,9 @@ - diff --git a/src/AdvancedCalculator/Views/MainView.axaml.cs b/src/AdvancedCalculator/Views/MainView.axaml.cs index bb86741..d6c645e 100644 --- a/src/AdvancedCalculator/Views/MainView.axaml.cs +++ b/src/AdvancedCalculator/Views/MainView.axaml.cs @@ -94,6 +94,9 @@ public partial class MainView : UserControl _vm?.InsertFunctionCommand.CanExecute(item) == true) { _vm.InsertFunctionCommand.Execute(item); + // Return focus to the input box so the caret is active + var input = this.FindControl("InputBox"); + input?.Focus(); e.Handled = true; } }