@@ -94,13 +94,15 @@ public MainPageViewModel()
9494 {
9595 if ( Terminals . IsEmpty ( ) )
9696 IsTerminalViewOpen = true ;
97- Terminals . Add ( new TerminalView ( e ?? TerminalSelectedProfile )
97+ var termId = Guid . NewGuid ( ) . ToString ( ) ;
98+ Terminals . Add ( new TerminalModel ( )
9899 {
99- Tag = $ "Terminal { Terminals . Count } "
100+ Name = ( e ?? TerminalSelectedProfile ) . Name ,
101+ Id = termId ,
102+ Control = new TerminalView ( e ?? TerminalSelectedProfile , termId )
100103 } ) ;
101104 OnPropertyChanged ( nameof ( SelectedTerminal ) ) ;
102105 OnPropertyChanged ( nameof ( ActiveTerminal ) ) ;
103- OnPropertyChanged ( nameof ( TerminalNames ) ) ;
104106 } ) ;
105107 TerminalToggleCommand = new RelayCommand ( ( ) =>
106108 {
@@ -122,14 +124,13 @@ public MainPageViewModel()
122124 } ) ;
123125 TerminalCloseCommand = new RelayCommand < string > ( ( name ) =>
124126 {
125- var terminal = Terminals . First ( x => x . Tag . ToString ( ) == name ) ;
126- ( terminal as IDisposable ) ? . Dispose ( ) ;
127+ var terminal = Terminals . First ( x => x . Id == name ) ;
128+ terminal . Dispose ( ) ;
127129 Terminals . Remove ( terminal ) ;
128130 SelectedTerminal = int . Min ( SelectedTerminal , Terminals . Count - 1 ) ;
129131 if ( Terminals . IsEmpty ( ) )
130132 IsTerminalViewOpen = false ;
131133 OnPropertyChanged ( nameof ( ActiveTerminal ) ) ;
132- OnPropertyChanged ( nameof ( TerminalNames ) ) ;
133134 } ) ;
134135 TerminalSelectedProfile = TerminalProfiles [ 0 ] ;
135136 GeneralSettingsService . PropertyChanged += GeneralSettingsService_PropertyChanged ;
@@ -345,10 +346,9 @@ public bool IsTerminalViewOpen
345346 set => SetProperty ( ref _isTerminalViewOpen , value ) ;
346347 }
347348
348- public Control ? ActiveTerminal => SelectedTerminal >= 0 && SelectedTerminal < Terminals . Count ? Terminals [ SelectedTerminal ] : null ;
349+ public Control ? ActiveTerminal => SelectedTerminal >= 0 && SelectedTerminal < Terminals . Count ? Terminals [ SelectedTerminal ] . Control : null ;
349350
350- public List < Control > Terminals { get ; } = new ( ) ;
351- public List < string > TerminalNames => Terminals . Select ( x => x . Tag . ToString ( ) ! ) . ToList ( ) ;
351+ public ObservableCollection < TerminalModel > Terminals { get ; } = new ( ) ;
352352
353353 private int _selectedTerminal ;
354354 public int SelectedTerminal
0 commit comments