Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix renaming files with long names in GridViewBrowser #898

Merged
merged 4 commits into from
Jun 5, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 15 additions & 12 deletions Files/UserControls/LayoutModes/GridViewBrowser.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -389,24 +389,27 @@
</Viewbox>
</Grid>
</Grid>
<StackPanel Grid.Row="1">
<TextBlock
Margin="0,0,0,10"
gave92 marked this conversation as resolved.
Show resolved Hide resolved
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalTextAlignment="Center"
Text="{x:Bind ItemName}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" />
<TextBlock
Grid.Row="1"
Margin="0,0,0,10"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalTextAlignment="Center"
Text="{x:Bind ItemName}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" />
<Popup Grid.Row="1"
x:Name="EditPopup"
x:Load="False">
<TextBox
Margin="0"
Width="{x:Bind local:App.AppSettings.GridViewSize, Mode=OneWay}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Text="{x:Bind ItemName}"
TextAlignment="Center"
TextWrapping="Wrap"
Visibility="Collapsed" />
</StackPanel>
TextWrapping="Wrap" />
</Popup>
</Grid>
</DataTemplate>

Expand Down
53 changes: 38 additions & 15 deletions Files/UserControls/LayoutModes/GridViewBrowser.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Input;
using Interaction = Files.Interacts.Interaction;

Expand Down Expand Up @@ -138,21 +139,33 @@ private void FileList_SelectionChanged(object sender, SelectionChangedEventArgs
public override void StartRenameItem()
{
renamingItem = SelectedItem;
GridViewItem gridViewItem = FileList.ContainerFromItem(renamingItem) as GridViewItem;
// Handle layout differences between tiles browser and photo album
StackPanel stackPanel = (App.AppSettings.LayoutMode == 2)
? (gridViewItem.ContentTemplateRoot as Grid).Children[1] as StackPanel
: (((gridViewItem.ContentTemplateRoot as Grid).Children[0] as StackPanel).Children[1] as Grid).Children[0] as StackPanel;
TextBlock textBlock = stackPanel.Children[0] as TextBlock;
TextBox textBox = stackPanel.Children[1] as TextBox;
int extensionLength = renamingItem.FileExtension?.Length ?? 0;
GridViewItem gridViewItem = FileList.ContainerFromItem(renamingItem) as GridViewItem;
TextBox textBox = null;

textBlock.Visibility = Visibility.Collapsed;
textBox.Visibility = Visibility.Visible;
// Handle layout differences between tiles browser and photo album
if (App.AppSettings.LayoutMode == 2)
{
Popup popup = (gridViewItem.ContentTemplateRoot as Grid).FindName("EditPopup") as Popup;
TextBlock textBlock = (gridViewItem.ContentTemplateRoot as Grid).Children[1] as TextBlock;
textBox = popup.Child as TextBox;
popup.IsOpen = true;
}
else
{
StackPanel stackPanel =
(((gridViewItem.ContentTemplateRoot as Grid).Children[0] as StackPanel).Children[1] as Grid).Children[0] as StackPanel;
TextBlock textBlock = stackPanel.Children[0] as TextBlock;
textBox = stackPanel.Children[1] as TextBox;
textBlock.Visibility = Visibility.Collapsed;
textBox.Visibility = Visibility.Visible;
}

textBox.Focus(FocusState.Pointer);
textBox.LostFocus += RenameTextBox_LostFocus;
textBox.KeyDown += RenameTextBox_KeyDown;
textBox.Select(0, renamingItem.ItemName.Length - extensionLength);

isRenamingItem = true;
}

Expand Down Expand Up @@ -219,12 +232,22 @@ private async void CommitRename(TextBox textBox)

private void EndRename(TextBox textBox)
{
StackPanel parentPanel = textBox.Parent as StackPanel;
TextBlock textBlock = parentPanel.Children[0] as TextBlock;
textBox.Visibility = Visibility.Collapsed;
textBlock.Visibility = Visibility.Visible;
if (App.AppSettings.LayoutMode == 2)
{
Popup popup = (textBox.Parent) as Popup;
TextBlock textBlock = (popup.Parent as Grid).Children[1] as TextBlock;
popup.IsOpen = false;
}
else
{
StackPanel parentPanel = textBox.Parent as StackPanel;
TextBlock textBlock = parentPanel.Children[0] as TextBlock;
textBox.Visibility = Visibility.Collapsed;
textBlock.Visibility = Visibility.Visible;
}

textBox.LostFocus -= RenameTextBox_LostFocus;
textBox.KeyDown += RenameTextBox_KeyDown;
textBox.KeyDown -= RenameTextBox_KeyDown;
gave92 marked this conversation as resolved.
Show resolved Hide resolved
isRenamingItem = false;
}

Expand Down Expand Up @@ -338,4 +361,4 @@ private void AppSettings_GridViewSizeChangeRequested(object sender, EventArgs e)
_iconSize = iconSize; // Update icon size
}
}
}
}