12
12
using Files . Interacts ;
13
13
using System . IO ;
14
14
using System . Runtime . CompilerServices ;
15
+ using Windows . System ;
16
+ using Windows . UI . Xaml . Input ;
15
17
16
18
namespace Files
17
19
{
@@ -26,6 +28,7 @@ public sealed partial class GenericFileBrowser : Page
26
28
public Page GFBPageName ;
27
29
public ContentDialog AddItemBox ;
28
30
public ContentDialog NameBox ;
31
+ public string previousFileName ;
29
32
public TextBox inputFromRename ;
30
33
public string inputForRename ;
31
34
public Flyout CopiedFlyout ;
@@ -152,11 +155,6 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
152
155
}
153
156
}
154
157
155
- private void AddItem_Click ( object sender , RoutedEventArgs e )
156
- {
157
- //await AddDialog.ShowAsync();
158
- }
159
-
160
158
private void Clipboard_ContentChanged ( object sender , object e )
161
159
{
162
160
try
@@ -199,7 +197,6 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
199
197
200
198
Clipboard_ContentChanged ( null , null ) ;
201
199
tabInstance . AlwaysPresentCommands . isEnabled = true ;
202
- tabInstance . AddItemButton . Click += AddItem_Click ;
203
200
204
201
TextState . isVisible = Visibility . Collapsed ;
205
202
@@ -298,37 +295,32 @@ private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialo
298
295
this . progressBar . Visibility = Visibility . Collapsed ;
299
296
}
300
297
301
- private async void AllView_CellEditEnded ( object sender , DataGridCellEditEndedEventArgs e )
298
+ private void AllView_PreparingCellForEdit ( object sender , DataGridPreparingCellForEditEventArgs e )
302
299
{
303
- var newCellText = ( data . SelectedItem as ListedItem ) ? . FileName ;
304
- var selectedItem = tabInstance . instanceViewModel . FilesAndFolders [ e . Row . GetIndex ( ) ] ;
305
- if ( selectedItem . FileType == "Folder" )
306
- {
307
- StorageFolder FolderToRename = await StorageFolder . GetFolderFromPathAsync ( selectedItem . FilePath ) ;
308
- if ( FolderToRename . Name != newCellText )
309
- {
310
- await FolderToRename . RenameAsync ( newCellText ) ;
311
- AllView . CommitEdit ( ) ;
312
- }
313
- else
314
- {
315
- AllView . CancelEdit ( ) ;
316
- }
317
- }
318
- else
300
+ var textBox = e . EditingElement as TextBox ;
301
+ var selectedItem = data . SelectedItem as ListedItem ;
302
+ int extensionLength = selectedItem . DotFileExtension ? . Length ?? 0 ;
303
+
304
+ previousFileName = selectedItem . FileName ;
305
+ textBox . Focus ( FocusState . Programmatic ) ; // Without this, cannot edit text box when renaming via right-click
306
+ textBox . Select ( 0 , selectedItem . FileName . Length - extensionLength ) ;
307
+ }
308
+
309
+ private async void AllView_CellEditEnding ( object sender , DataGridCellEditEndingEventArgs e )
310
+ {
311
+ if ( e . EditAction == DataGridEditAction . Cancel )
312
+ return ;
313
+
314
+ var selectedItem = data . SelectedItem as ListedItem ;
315
+ string currentName = previousFileName ;
316
+ string newName = ( e . EditingElement as TextBox ) . Text ;
317
+
318
+ bool successful = await tabInstance . instanceInteraction . RenameFileItem ( selectedItem , currentName , newName ) ;
319
+ if ( ! successful )
319
320
{
320
- StorageFile fileToRename = await StorageFile . GetFileFromPathAsync ( selectedItem . FilePath ) ;
321
- if ( fileToRename . Name != newCellText )
322
- {
323
- await fileToRename . RenameAsync ( newCellText ) ;
324
- AllView . CommitEdit ( ) ;
325
- }
326
- else
327
- {
328
- AllView . CancelEdit ( ) ;
329
- }
321
+ selectedItem . FileName = currentName ;
322
+ ( ( sender as DataGrid ) . Columns [ 1 ] . GetCellContent ( e . Row ) as TextBlock ) . Text = currentName ;
330
323
}
331
- //Navigation.NavigationActions.Refresh_Click(null, null);
332
324
}
333
325
334
326
private void ContentDialog_Loaded ( object sender , RoutedEventArgs e )
@@ -408,8 +400,17 @@ private void AllView_Sorting(object sender, DataGridColumnEventArgs e)
408
400
else if ( e . Column != iconColumn )
409
401
SortedColumn = e . Column ;
410
402
}
403
+
404
+ private void AllView_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
405
+ {
406
+ if ( e . Key == VirtualKey . Enter )
407
+ {
408
+ tabInstance . instanceInteraction . List_ItemClick ( null , null ) ;
409
+ e . Handled = true ;
410
+ }
411
+ }
411
412
}
412
-
413
+
413
414
public class EmptyFolderTextState : INotifyPropertyChanged
414
415
{
415
416
public Visibility _isVisible ;
0 commit comments