Skip to content

Commit ac0b264

Browse files
authored
Drop WPF-based UI helpers on Windows (#1417)
We've been shipping with the in-process Avalonia-based UI helpers on all platforms, including Windows, since [GCM 2.1.2](https://github.com/git-ecosystem/git-credential-manager/releases/tag/v2.1.2), and have not seen any major issues. Drop all the WPF projects and code, but retain then UI helper command infrastructure as this is useful for reference and future testing and UI mocking.
2 parents 6e49d9e + 1e904d1 commit ac0b264

File tree

71 files changed

+61
-3753
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+61
-3753
lines changed

Git-Credential-Manager.sln

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket", "src\
3535
EndProject
3636
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket.Tests", "src\shared\Atlassian.Bitbucket.Tests\Atlassian.Bitbucket.Tests.csproj", "{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}"
3737
EndProject
38-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.UI.Windows", "src\windows\Core.UI.Windows\Core.UI.Windows.csproj", "{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}"
39-
EndProject
4038
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packaging.Linux", "src\linux\Packaging.Linux\Packaging.Linux.csproj", "{AD2A935F-3720-4802-8119-6A9B35B254DF}"
4139
EndProject
4240
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "linux", "linux", "{8F9D7E67-7DD7-4E32-9134-423281AF00E9}"
4341
EndProject
44-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.UI.Windows", "src\windows\GitHub.UI.Windows\GitHub.UI.Windows.csproj", "{0A86ED89-1FC5-42AA-925C-4578FA30607A}"
45-
EndProject
46-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket.UI.Windows", "src\windows\Atlassian.Bitbucket.UI.Windows\Atlassian.Bitbucket.UI.Windows.csproj", "{3F015046-DAF2-4D2A-96EC-F9782F169E45}"
47-
EndProject
4842
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitLab", "src\shared\GitLab\GitLab.csproj", "{570897DC-A85C-4598-B793-9A00CF710119}"
4943
EndProject
5044
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitLab.Tests", "src\shared\GitLab.Tests\GitLab.Tests.csproj", "{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}"
5145
EndProject
52-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitLab.UI.Windows", "src\windows\GitLab.UI.Windows\GitLab.UI.Windows.csproj", "{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}"
53-
EndProject
54-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Git-Credential-Manager.UI.Windows", "src\windows\Git-Credential-Manager.UI.Windows\Git-Credential-Manager.UI.Windows.csproj", "{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}"
55-
EndProject
5646
Global
5747
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5848
Debug|Any CPU = Debug|Any CPU
@@ -245,16 +235,6 @@ Global
245235
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.MacRelease|Any CPU.Build.0 = Release|Any CPU
246236
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
247237
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
248-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
249-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
250-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
251-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
252-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
253-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
254-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
255-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
256-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
257-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
258238
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
259239
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
260240
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
@@ -265,26 +245,6 @@ Global
265245
{AD2A935F-3720-4802-8119-6A9B35B254DF}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
266246
{AD2A935F-3720-4802-8119-6A9B35B254DF}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
267247
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
268-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
269-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
270-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.Release|Any CPU.ActiveCfg = Release|Any CPU
271-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
272-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
273-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
274-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
275-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
276-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
277-
{0A86ED89-1FC5-42AA-925C-4578FA30607A}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
278-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
279-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
280-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.Release|Any CPU.ActiveCfg = Release|Any CPU
281-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
282-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
283-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
284-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
285-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
286-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
287-
{3F015046-DAF2-4D2A-96EC-F9782F169E45}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
288248
{570897DC-A85C-4598-B793-9A00CF710119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
289249
{570897DC-A85C-4598-B793-9A00CF710119}.Debug|Any CPU.Build.0 = Debug|Any CPU
290250
{570897DC-A85C-4598-B793-9A00CF710119}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -317,26 +277,6 @@ Global
317277
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.MacRelease|Any CPU.Build.0 = Release|Any CPU
318278
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
319279
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
320-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
321-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
322-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.Release|Any CPU.ActiveCfg = Release|Any CPU
323-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
324-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
325-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
326-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
327-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
328-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
329-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
330-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
331-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
332-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
333-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
334-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
335-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
336-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.WindowsRelease|Any CPU.ActiveCfg = Debug|Any CPU
337-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
338-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
339-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
340280
EndGlobalSection
341281
GlobalSection(SolutionProperties) = preSolution
342282
HideSolutionNode = FALSE
@@ -357,15 +297,10 @@ Global
357297
{85903170-9E52-4B53-A6E4-3F416F684FAE} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
358298
{B49881A6-E734-490E-8EA7-FB0D9E296CFB} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
359299
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
360-
{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
361300
{8F9D7E67-7DD7-4E32-9134-423281AF00E9} = {A7FC1234-95E3-4496-B5F7-4306F41E6A0E}
362301
{AD2A935F-3720-4802-8119-6A9B35B254DF} = {8F9D7E67-7DD7-4E32-9134-423281AF00E9}
363-
{0A86ED89-1FC5-42AA-925C-4578FA30607A} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
364-
{3F015046-DAF2-4D2A-96EC-F9782F169E45} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
365302
{570897DC-A85C-4598-B793-9A00CF710119} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
366303
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
367-
{83EAC1F9-8E1F-41FC-8FC9-2C452452D64E} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
368-
{01BF56EC-AAC1-4BCA-8204-EE51D968DF5C} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
369304
EndGlobalSection
370305
GlobalSection(ExtensibilityGlobals) = postSolution
371306
SolutionGuid = {0EF9FC65-E6BA-45D4-A455-262A9EA4366B}

src/shared/Core/Authentication/MicrosoftAuthentication.cs

Lines changed: 10 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111
using System.Text;
1212
using System.Threading;
1313
using GitCredentialManager.UI;
14+
using GitCredentialManager.UI.Controls;
1415
using GitCredentialManager.UI.ViewModels;
1516
using GitCredentialManager.UI.Views;
1617
using Microsoft.Identity.Client.AppConfig;
1718

1819
#if NETFRAMEWORK
19-
using System.Drawing;
20-
using System.Windows.Forms;
2120
using Microsoft.Identity.Client.Broker;
2221
#endif
2322

@@ -118,10 +117,6 @@ public class MicrosoftAuthentication : AuthenticationBase, IMicrosoftAuthenticat
118117
"live", "liveconnect", "liveid",
119118
};
120119

121-
#if NETFRAMEWORK
122-
private DummyWindow _dummyWindow;
123-
#endif
124-
125120
public MicrosoftAuthentication(ICommandContext context)
126121
: base(context) { }
127122

@@ -130,6 +125,8 @@ public MicrosoftAuthentication(ICommandContext context)
130125
public async Task<IMicrosoftAuthenticationResult> GetTokenForUserAsync(
131126
string authority, string clientId, Uri redirectUri, string[] scopes, string userName, bool msaPt)
132127
{
128+
var uiCts = new CancellationTokenSource();
129+
133130
// Check if we can and should use OS broker authentication
134131
bool useBroker = CanUseBroker();
135132
Context.Trace.WriteLine(useBroker
@@ -144,7 +141,7 @@ public async Task<IMicrosoftAuthenticationResult> GetTokenForUserAsync(
144141
try
145142
{
146143
// Create the public client application for authentication
147-
IPublicClientApplication app = await CreatePublicClientApplicationAsync(authority, clientId, redirectUri, useBroker, msaPt);
144+
IPublicClientApplication app = await CreatePublicClientApplicationAsync(authority, clientId, redirectUri, useBroker, msaPt, uiCts);
148145

149146
AuthenticationResult result = null;
150147

@@ -261,10 +258,8 @@ public async Task<IMicrosoftAuthenticationResult> GetTokenForUserAsync(
261258
}
262259
finally
263260
{
264-
#if NETFRAMEWORK
265-
// If we created a dummy window during authentication we should dispose of it now that we're done
266-
_dummyWindow?.Dispose();
267-
#endif
261+
// If we created some global UI (e.g. progress) during authentication we should dismiss them now that we're done
262+
uiCts.Cancel();
268263
}
269264
}
270265

@@ -451,8 +446,8 @@ private async Task<AuthenticationResult> GetAccessTokenSilentlyAsync(
451446
}
452447
}
453448

454-
private async Task<IPublicClientApplication> CreatePublicClientApplicationAsync(
455-
string authority, string clientId, Uri redirectUri, bool enableBroker, bool msaPt)
449+
private async Task<IPublicClientApplication> CreatePublicClientApplicationAsync(string authority,
450+
string clientId, Uri redirectUri, bool enableBroker, bool msaPt, CancellationTokenSource uiCts)
456451
{
457452
var httpFactoryAdaptor = new MsalHttpClientFactoryAdaptor(Context.HttpClientFactory);
458453

@@ -495,11 +490,8 @@ private async Task<IPublicClientApplication> CreatePublicClientApplicationAsync(
495490
}
496491
else if (enableBroker) // Only actually need to set a parent window when using the Windows broker
497492
{
498-
#if NETFRAMEWORK
499-
Context.Trace.WriteLine($"Using dummy parent window for MSAL authentication dialogs.");
500-
_dummyWindow = new DummyWindow();
501-
appBuilder.WithParentActivityOrWindow(_dummyWindow.ShowAndGetHandle);
502-
#endif
493+
Context.Trace.WriteLine("Using progress parent window for MSAL authentication dialogs.");
494+
appBuilder.WithParentActivityOrWindow(() => ProgressWindow.ShowAndGetHandle(uiCts.Token));
503495
}
504496
}
505497
}
@@ -899,73 +891,5 @@ public MsalResult(AuthenticationResult msalResult)
899891
public string AccessToken => _msalResult.AccessToken;
900892
public string AccountUpn => _msalResult.Account?.Username;
901893
}
902-
903-
#if NETFRAMEWORK
904-
private class DummyWindow : IDisposable
905-
{
906-
private readonly Thread _staThread;
907-
private readonly ManualResetEventSlim _readyEvent;
908-
private Form _window;
909-
private IntPtr _handle;
910-
911-
public DummyWindow()
912-
{
913-
_staThread = new Thread(ThreadProc);
914-
_staThread.SetApartmentState(ApartmentState.STA);
915-
_readyEvent = new ManualResetEventSlim();
916-
}
917-
918-
public IntPtr ShowAndGetHandle()
919-
{
920-
_staThread.Start();
921-
_readyEvent.Wait();
922-
return _handle;
923-
}
924-
925-
public void Dispose()
926-
{
927-
_window?.Invoke(() => _window.Close());
928-
929-
if (_staThread.IsAlive)
930-
{
931-
_staThread.Join();
932-
}
933-
}
934-
935-
private void ThreadProc()
936-
{
937-
System.Windows.Forms.Application.EnableVisualStyles();
938-
_window = new Form
939-
{
940-
TopMost = true,
941-
ControlBox = false,
942-
MaximizeBox = false,
943-
MinimizeBox = false,
944-
ClientSize = new Size(182, 46),
945-
FormBorderStyle = FormBorderStyle.None,
946-
StartPosition = FormStartPosition.CenterScreen,
947-
};
948-
949-
var progress = new ProgressBar
950-
{
951-
Style = ProgressBarStyle.Marquee,
952-
Location = new Point(12, 12),
953-
Size = new Size(158, 23),
954-
MarqueeAnimationSpeed = 30,
955-
};
956-
957-
_window.Controls.Add(progress);
958-
_window.Shown += (s, e) =>
959-
{
960-
_handle = _window.Handle;
961-
_readyEvent.Set();
962-
};
963-
964-
_window.ShowDialog();
965-
_window.Dispose();
966-
_window = null;
967-
}
968-
}
969-
#endif
970894
}
971895
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<Window xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
mc:Ignorable="d" d:DesignWidth="182" d:DesignHeight="46"
6+
SizeToContent="WidthAndHeight" CanResize="False" Topmost="True"
7+
ExtendClientAreaChromeHints="NoChrome" ExtendClientAreaToDecorationsHint="True"
8+
ShowInTaskbar="False" Title="Git Credential Manager" WindowStartupLocation="CenterScreen"
9+
x:Class="GitCredentialManager.UI.Controls.ProgressWindow">
10+
<ProgressBar Orientation="Horizontal"
11+
IsIndeterminate="True"
12+
Margin="20"
13+
Width="158" Height="23" />
14+
</Window>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
using Avalonia;
5+
using Avalonia.Controls;
6+
using Avalonia.Markup.Xaml;
7+
8+
namespace GitCredentialManager.UI.Controls;
9+
10+
public partial class ProgressWindow : Window
11+
{
12+
public ProgressWindow()
13+
{
14+
InitializeComponent();
15+
}
16+
17+
private void InitializeComponent()
18+
{
19+
AvaloniaXamlLoader.Load(this);
20+
}
21+
22+
public static IntPtr ShowAndGetHandle(CancellationToken ct)
23+
{
24+
var tsc = new TaskCompletionSource<IntPtr>();
25+
26+
Window CreateWindow()
27+
{
28+
var window = new ProgressWindow();
29+
window.Loaded += (s, e) => tsc.SetResult(window.TryGetPlatformHandle()?.Handle ?? IntPtr.Zero);
30+
return window;
31+
}
32+
33+
Task _ = AvaloniaUi.ShowWindowAsync(CreateWindow, IntPtr.Zero, ct);
34+
35+
return tsc.Task.GetAwaiter().GetResult();
36+
}
37+
}

src/windows/Atlassian.Bitbucket.UI.Windows/Assets/Styles.xaml

Lines changed: 0 additions & 6 deletions
This file was deleted.
Binary file not shown.

src/windows/Atlassian.Bitbucket.UI.Windows/Atlassian.Bitbucket.UI.Windows.csproj

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/windows/Atlassian.Bitbucket.UI.Windows/Commands/CredentialsCommandImpl.cs

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)