Skip to content

Commit 4bce964

Browse files
authored
Improve layout mode switching 2 (#2890)
1 parent df45bdb commit 4bce964

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

Files/ViewModels/FolderSettingsViewModel.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public FolderLayoutModes LayoutMode
3030
if (SetProperty(ref LayoutPreference.LayoutMode, value, nameof(LayoutMode)))
3131
{
3232
UpdateLayoutPreferencesForPath(associatedInstance.FilesystemViewModel.WorkingDirectory, LayoutPreference);
33-
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
3433
}
3534
}
3635
}
@@ -83,30 +82,40 @@ public Type GetLayoutType(string folderPath)
8382
LayoutMode = FolderLayoutModes.GridView; // Grid View
8483

8584
GridViewSize = Constants.Browser.GridViewBrowser.GridViewSizeLarge; // Size
85+
86+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
8687
});
8788

8889
public RelayCommand ToggleLayoutModeGridViewMedium => new RelayCommand(() =>
8990
{
9091
LayoutMode = FolderLayoutModes.GridView; // Grid View
9192

9293
GridViewSize = Constants.Browser.GridViewBrowser.GridViewSizeMedium; // Size
94+
95+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
9396
});
9497

9598
public RelayCommand ToggleLayoutModeGridViewSmall => new RelayCommand(() =>
9699
{
97100
LayoutMode = FolderLayoutModes.GridView; // Grid View
98101

99102
GridViewSize = Constants.Browser.GridViewBrowser.GridViewSizeSmall; // Size
103+
104+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
100105
});
101106

102107
public RelayCommand ToggleLayoutModeTiles => new RelayCommand(() =>
103108
{
104109
LayoutMode = FolderLayoutModes.TilesView; // Tiles View
110+
111+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
105112
});
106113

107114
public RelayCommand ToggleLayoutModeDetailsView => new RelayCommand(() =>
108115
{
109116
LayoutMode = FolderLayoutModes.DetailsView; // Details View
117+
118+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
110119
});
111120

112121
public int GridViewSize
@@ -119,10 +128,12 @@ public int GridViewSize
119128
if (LayoutMode == FolderLayoutModes.TilesView) // Size down from tiles to list
120129
{
121130
LayoutMode = 0;
131+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
122132
}
123133
else if (LayoutMode == FolderLayoutModes.GridView && value < Constants.Browser.GridViewBrowser.GridViewSizeSmall) // Size down from grid to tiles
124134
{
125135
LayoutMode = FolderLayoutModes.TilesView;
136+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
126137
}
127138
else if (LayoutMode != FolderLayoutModes.DetailsView) // Resize grid view
128139
{
@@ -132,6 +143,7 @@ public int GridViewSize
132143
if (LayoutMode != FolderLayoutModes.GridView) // Only update layout mode if it isn't already in grid view
133144
{
134145
LayoutMode = FolderLayoutModes.GridView;
146+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
135147
}
136148
else
137149
{
@@ -146,6 +158,7 @@ public int GridViewSize
146158
if (LayoutMode == 0) // Size up from list to tiles
147159
{
148160
LayoutMode = FolderLayoutModes.TilesView;
161+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
149162
}
150163
else // Size up from tiles to grid
151164
{
@@ -155,6 +168,7 @@ public int GridViewSize
155168
if (LayoutMode != FolderLayoutModes.GridView) // Only update layout mode if it isn't already in grid view
156169
{
157170
LayoutMode = FolderLayoutModes.GridView;
171+
LayoutModeChangeRequested?.Invoke(this, EventArgs.Empty);
158172
}
159173
else
160174
{

Files/Views/LayoutModes/GridViewBrowser.xaml.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,11 @@ private void FolderSettings_LayoutModeChangeRequested(object sender, EventArgs e
6767
{
6868
if (FolderSettings.LayoutMode == FolderLayoutModes.GridView || FolderSettings.LayoutMode == FolderLayoutModes.TilesView)
6969
{
70-
var oldTemplate = FileList.ItemTemplate;
7170
SetItemTemplate(); // Set ItemTemplate
72-
if (oldTemplate != FileList.ItemTemplate)
71+
var requestedIconSize = GetIconSize();
72+
if (requestedIconSize != currentIconSize)
7373
{
74+
currentIconSize = requestedIconSize;
7475
ReloadItemIcons();
7576
}
7677
}
@@ -87,7 +88,6 @@ private void SetItemTemplate()
8788
}
8889
else if (FolderSettings.LayoutMode == FolderLayoutModes.GridView)
8990
{
90-
currentIconSize = GetIconSize(); // Get icon size for jumps from other layouts directly to a grid size
9191
FolderSettings.GridViewSizeChangeRequested -= FolderSettings_GridViewSizeChangeRequested;
9292
FolderSettings.GridViewSizeChangeRequested += FolderSettings_GridViewSizeChangeRequested;
9393
}
@@ -377,6 +377,10 @@ private uint GetIconSize()
377377
{
378378
return Constants.Browser.GridViewBrowser.GridViewSizeSmall; // Small thumbnail
379379
}
380+
else if (FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeSmall)
381+
{
382+
return Constants.Browser.GridViewBrowser.GridViewSizeSmall; // Small thumbnail
383+
}
380384
else if (FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeMedium)
381385
{
382386
return Constants.Browser.GridViewBrowser.GridViewSizeMedium; // Medium thumbnail
@@ -387,7 +391,7 @@ private uint GetIconSize()
387391
}
388392
else
389393
{
390-
return 240; // Extra large thumbnail
394+
return Constants.Browser.GridViewBrowser.GridViewSizeMax; // Extra large thumbnail
391395
}
392396
}
393397

@@ -444,7 +448,7 @@ private void FileList_ChoosingItemContainer(ListViewBase sender, ChoosingItemCon
444448
}
445449
args.ItemContainer.DataContext = args.Item;
446450

447-
if (args.Item is ListedItem item && (!item.ItemPropertiesInitialized))
451+
if (args.Item is ListedItem item && !item.ItemPropertiesInitialized)
448452
{
449453
args.ItemContainer.PointerPressed += FileListGridItem_PointerPressed;
450454
InitializeDrag(args.ItemContainer);

0 commit comments

Comments
 (0)