mirror of
https://github.com/microsoft/terminal.git
synced 2026-04-05 21:45:25 +00:00
## Summary of the Pull Request This PR introduces a new profile setting, `dragDropDelimiter`, which allows users to configure the string separator used when dragging and dropping multiple files into the terminal. The default behavior remains a single space (`" "`) for backward compatibility. ## References and Relevant Issues * Closes #19565 ## Detailed Description of the Pull Request / Additional comments **Implementation Details:** * **Settings:** Added `DragDropDelimiter` to `MTSMSettings.h` and `Profile.idl`. * **Control:** Wired the setting through `ControlProperties.h` so the terminal logic can see it. * **Logic:** Updated `TermControl::OnDrop` to use the new delimiter when joining paths. * **UI:** Added the text box in the Advanced Settings page and updated the ViewModel. ## Validation Steps Performed * **Manual Verification:** * Verified default behavior (space separator) works as before. * Configured `dragDropDelimiter` to `", "`, `";"`, and custom strings in `settings.json` and from settings UI. * Confirmed dropped files are joined correctly. * **Build:** Validated that the solution builds cleanly. ## Notes for Reviewers 1. **Delimiter Length:** Currently, there is no limit on the maximum length of the delimiter string. Let me know if this should be changed. 3. **Localization:** I changed only `Resources/en-US` file. 4. **ViewModel:** In `ProfileViewModel.cpp`, I added the `else if` block for the new setting, but left it empty because no other UI logic currently depends on it. ## PR Checklist - [x] Closes #19565 - [ ] Documentation updated - [x] Schema updated (if necessary)
146 lines
6.9 KiB
Plaintext
146 lines
6.9 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
import "EnumEntry.idl";
|
|
import "MainPage.idl";
|
|
import "Appearances.idl";
|
|
import "ColorSchemesPageViewModel.idl";
|
|
|
|
#include "ViewModelHelpers.idl.h"
|
|
|
|
#define OBSERVABLE_PROJECTED_PROFILE_SETTING(Type, Name) \
|
|
OBSERVABLE_PROJECTED_SETTING(Type, Name); \
|
|
Object Name##OverrideSource { get; }
|
|
|
|
namespace Microsoft.Terminal.Settings.Editor
|
|
{
|
|
runtimeclass DeleteProfileEventArgs
|
|
{
|
|
Guid ProfileGuid { get; };
|
|
}
|
|
|
|
runtimeclass BellSoundViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
|
|
{
|
|
String Path { get; };
|
|
String DisplayPath { get; };
|
|
String SubText { get; };
|
|
Boolean ShowDirectory { get; };
|
|
Boolean FileExists { get; };
|
|
}
|
|
|
|
enum ProfileSubPage
|
|
{
|
|
Base = 0,
|
|
Appearance = 1,
|
|
Terminal = 2,
|
|
Advanced = 3
|
|
};
|
|
|
|
runtimeclass ProfileViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
|
|
{
|
|
event Windows.Foundation.TypedEventHandler<ProfileViewModel, DeleteProfileEventArgs> DeleteProfileRequested;
|
|
|
|
void SetupAppearances(Windows.Foundation.Collections.IObservableVector<ColorSchemeViewModel> schemesList);
|
|
|
|
void SetAcrylicOpacityPercentageValue(Double value);
|
|
|
|
String BellStylePreview { get; };
|
|
Boolean IsBellStyleFlagSet(UInt32 flag);
|
|
void SetBellStyleAudible(Windows.Foundation.IReference<Boolean> on);
|
|
void SetBellStyleWindow(Windows.Foundation.IReference<Boolean> on);
|
|
void SetBellStyleTaskbar(Windows.Foundation.IReference<Boolean> on);
|
|
|
|
String BellSoundPreview { get; };
|
|
Windows.Foundation.Collections.IObservableVector<BellSoundViewModel> CurrentBellSounds { get; };
|
|
void RequestAddBellSound(String path);
|
|
void RequestDeleteBellSound(BellSoundViewModel vm);
|
|
|
|
IInspectable CurrentAntiAliasingMode;
|
|
Windows.Foundation.Collections.IObservableVector<Microsoft.Terminal.Settings.Editor.EnumEntry> AntiAliasingModeList { get; };
|
|
|
|
IInspectable CurrentCloseOnExitMode;
|
|
Windows.Foundation.Collections.IObservableVector<Microsoft.Terminal.Settings.Editor.EnumEntry> CloseOnExitModeList { get; };
|
|
|
|
IInspectable CurrentScrollState;
|
|
Windows.Foundation.Collections.IObservableVector<Microsoft.Terminal.Settings.Editor.EnumEntry> ScrollStateList { get; };
|
|
|
|
Double LeftPadding { get; set; };
|
|
Double TopPadding { get; set; };
|
|
Double RightPadding { get; set; };
|
|
Double BottomPadding { get; set; };
|
|
|
|
IInspectable CurrentPathTranslationStyle;
|
|
Windows.Foundation.Collections.IObservableVector<Microsoft.Terminal.Settings.Editor.EnumEntry> PathTranslationStyleList { get; };
|
|
|
|
String CurrentStartingDirectoryPreview { get; };
|
|
Boolean UseParentProcessDirectory;
|
|
|
|
Boolean CanDeleteProfile { get; };
|
|
Boolean FocusDeleteButton;
|
|
Boolean IsBaseLayer;
|
|
ProfileSubPage CurrentPage;
|
|
AppearanceViewModel DefaultAppearance { get; };
|
|
Guid OriginalProfileGuid { get; };
|
|
Boolean HasUnfocusedAppearance { get; };
|
|
Boolean EditableUnfocusedAppearance { get; };
|
|
Boolean ShowUnfocusedAppearance { get; };
|
|
AppearanceViewModel UnfocusedAppearance { get; };
|
|
|
|
Boolean ShowMarksAvailable { get; };
|
|
Boolean AutoMarkPromptsAvailable { get; };
|
|
Boolean RepositionCursorWithMouseAvailable { get; };
|
|
|
|
Windows.UI.Xaml.Controls.IconElement IconPreview { get; };
|
|
String EvaluatedIcon { get; };
|
|
String LocalizedIcon { get; };
|
|
String IconPath;
|
|
Boolean UsingNoIcon { get; };
|
|
|
|
String TabTitlePreview { get; };
|
|
String AnswerbackMessagePreview { get; };
|
|
Windows.UI.Color TabColorPreview { get; };
|
|
Windows.UI.Color TabThemeColorPreview { get; };
|
|
|
|
void CreateUnfocusedAppearance();
|
|
void DeleteUnfocusedAppearance();
|
|
|
|
Boolean Orphaned { get; };
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, Name);
|
|
PERMANENT_OBSERVABLE_PROJECTED_SETTING(Guid, Guid);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, Source);
|
|
PERMANENT_OBSERVABLE_PROJECTED_SETTING(Guid, ConnectionType);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, Hidden);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Microsoft.Terminal.Settings.Model.IMediaResource, Icon);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Microsoft.Terminal.Settings.Model.CloseOnExitMode, CloseOnExit);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, TabTitle);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Windows.Foundation.IReference<Microsoft.Terminal.Core.Color>, TabColor);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, SuppressApplicationTitle);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, UseAcrylic);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Single, Opacity);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Microsoft.Terminal.Control.ScrollbarState, ScrollState);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, Padding);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, Commandline);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, StartingDirectory);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Microsoft.Terminal.Control.TextAntialiasingMode, AntialiasingMode);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Int32, HistorySize);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, SnapOnInput);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, AltGrAliasing);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Microsoft.Terminal.Settings.Model.BellStyle, BellStyle);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Windows.Foundation.Collections.IVector<Microsoft.Terminal.Settings.Model.IMediaResource>, BellSound);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, Elevate);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, ReloadEnvironmentVariables);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, RightClickContextMenu);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, ShowMarks);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, AutoMarkPrompts);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, RepositionCursorWithMouse);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, ForceVTInput);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, AllowKittyKeyboardMode);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, AllowVtChecksumReport);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, AnswerbackMessage);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, RainbowSuggestions);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Microsoft.Terminal.Control.PathTranslationStyle, PathTranslationStyle);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, DragDropDelimiter);
|
|
OBSERVABLE_PROJECTED_PROFILE_SETTING(Boolean, AllowVtClipboardWrite);
|
|
}
|
|
}
|