Skip to content

Commit b05367a

Browse files
authored
Allow restoring tabs from previous instance using ctrl+shift+t (#5985)
1 parent 0f2756c commit b05367a

File tree

6 files changed

+25
-7
lines changed

6 files changed

+25
-7
lines changed

Files/Helpers/AppUpdater.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ private async Task<StorePackageUpdateResult> DownloadUpdates(IReadOnlyList<Store
7878
context = await Task.Run(() => StoreContext.GetDefault());
7979
}
8080

81+
App.SaveSessionTabs(); // save the tabs so they can be restored after the update completes
8182
var downloadOperation = context.RequestDownloadAndInstallStorePackageUpdatesAsync(updateList);
8283
return await downloadOperation.AsTask();
8384
}

Files/Helpers/ContextFlyoutItemHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@ public static List<ContextMenuFlyoutItemViewModel> GetBaseItemMenuItems(BaseLayo
869869
OverlayLayerGlyph = "\uF026",
870870
},
871871
Command = commandsViewModel.ShareItemCommand,
872-
ShowItem = DataTransferManager.IsSupported() && !selectedItems.Any(i => i.IsHiddenItem || (i.IsShortcutItem && !i.IsLinkItem) || i.PrimaryItemAttribute == StorageItemTypes.Folder),
872+
ShowItem = DataTransferManager.IsSupported() && !selectedItems.Any(i => i.IsHiddenItem || (i.IsShortcutItem && !i.IsLinkItem) || (i.PrimaryItemAttribute == StorageItemTypes.Folder && !i.IsZipItem)),
873873
},
874874
new ContextMenuFlyoutItemViewModel()
875875
{

Files/Interacts/BaseLayoutCommandImplementationModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ async void Manager_DataRequested(DataTransferManager sender, DataRequestedEventA
378378
return;
379379
}
380380
}
381-
else if (item.PrimaryItemAttribute == StorageItemTypes.Folder)
381+
else if (item.PrimaryItemAttribute == StorageItemTypes.Folder && !item.IsZipItem)
382382
{
383383
if (await StorageItemHelpers.ToStorageItem<BaseStorageFolder>(item.ItemPath, associatedInstance) is BaseStorageFolder folder)
384384
{

Files/UserControls/MultitaskingControl/BaseMultitaskingControl.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public BaseMultitaskingControl()
4141
public ObservableCollection<TabItem> Items => MainPageViewModel.AppInstances;
4242

4343
// RecentlyClosedTabs is shared between all multitasking controls
44-
public static List<ITabItem> RecentlyClosedTabs { get; private set; } = new List<ITabItem>();
44+
public static List<TabItemArguments[]> RecentlyClosedTabs { get; private set; } = new List<TabItemArguments[]>();
4545

4646
private void MultitaskingControl_CurrentInstanceChanged(object sender, CurrentInstanceChangedEventArgs e)
4747
{
@@ -111,9 +111,12 @@ public async void ReopenClosedTab(object sender, RoutedEventArgs e)
111111
if (!isRestoringClosedTab && RecentlyClosedTabs.Any())
112112
{
113113
isRestoringClosedTab = true;
114-
ITabItem lastTab = RecentlyClosedTabs.Last();
114+
var lastTab = RecentlyClosedTabs.Last();
115115
RecentlyClosedTabs.Remove(lastTab);
116-
await MainPageViewModel.AddNewTabByParam(lastTab.TabItemArguments.InitialPageType, lastTab.TabItemArguments.NavigationArg);
116+
foreach (var item in lastTab)
117+
{
118+
await MainPageViewModel.AddNewTabByParam(item.InitialPageType, item.NavigationArg);
119+
}
117120
isRestoringClosedTab = false;
118121
}
119122
}
@@ -133,7 +136,9 @@ public void CloseTab(TabItem tabItem)
133136
{
134137
Items.Remove(tabItem);
135138
tabItem?.Unload(); // Dispose and save tab arguments
136-
RecentlyClosedTabs.Add((ITabItem)tabItem);
139+
RecentlyClosedTabs.Add(new TabItemArguments[] {
140+
tabItem.TabItemArguments
141+
});
137142
}
138143
}
139144

Files/ViewModels/MainPageViewModel.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,18 @@ public async void OnNavigatedTo(NavigationEventArgs e)
330330
{
331331
try
332332
{
333+
// add last session tabs to closed tabs stack if those tabs are not about to be opened
334+
if(!App.AppSettings.ResumeAfterRestart && !App.AppSettings.ContinueLastSessionOnStartUp)
335+
{
336+
var items = new TabItemArguments[App.AppSettings.LastSessionPages.Length];
337+
for(int i = 0; i < items.Length; i++)
338+
{
339+
var tabArgs = TabItemArguments.Deserialize(App.AppSettings.LastSessionPages[i]);
340+
items[i] = tabArgs;
341+
}
342+
BaseMultitaskingControl.RecentlyClosedTabs.Add(items);
343+
}
344+
333345
if (App.AppSettings.ResumeAfterRestart)
334346
{
335347
App.AppSettings.ResumeAfterRestart = false;

Files/ViewModels/NavToolbarViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,7 @@ public List<ListedItem> SelectedItems
976976
}
977977

978978
public bool CanCopy => SelectedItems is not null && SelectedItems.Any();
979-
public bool CanShare => SelectedItems is not null && SelectedItems.Any() && DataTransferManager.IsSupported() && !SelectedItems.Any(x => (x.IsShortcutItem && !x.IsLinkItem) || x.IsHiddenItem || x.PrimaryItemAttribute == StorageItemTypes.Folder);
979+
public bool CanShare => SelectedItems is not null && SelectedItems.Any() && DataTransferManager.IsSupported() && !SelectedItems.Any(x => (x.IsShortcutItem && !x.IsLinkItem) || x.IsHiddenItem || (x.PrimaryItemAttribute == StorageItemTypes.Folder && !x.IsZipItem));
980980
public bool CanRename => SelectedItems is not null && SelectedItems.Count == 1;
981981

982982
public void Dispose()

0 commit comments

Comments
 (0)