Remove NoparaPasswordBox.
MODIFY
WalletWasabi.Gui/App.xaml
WalletWasabi.Gui/App.xaml
<StyleInclude Source="resm:WalletWasabi.Gui.Controls.GroupBox.xaml?assembly=WalletWasabi.Gui" />
<StyleInclude Source="resm:WalletWasabi.Gui.Styles.Styles.xaml?assembly=WalletWasabi.Gui" />
<StyleInclude Source="resm:WalletWasabi.Gui.Icons.Icons.xaml?assembly=WalletWasabi.Gui" />
- <StyleInclude Source="resm:WalletWasabi.Gui.Controls.NoparaPasswordBox.xaml?assembly=WalletWasabi.Gui" />
<StyleInclude Source="resm:WalletWasabi.Gui.Controls.TogglePasswordBox.xaml?assembly=WalletWasabi.Gui" />
<StyleInclude Source="resm:WalletWasabi.Gui.Controls.MultiTextBox.xaml?assembly=WalletWasabi.Gui" />
<StyleInclude Source="resm:WalletWasabi.Gui.Controls.BusyIndicator.xaml?assembly=WalletWasabi.Gui" />

MODIFY
WalletWasabi.Gui/Controls/LockScreen/PinLockScreen.xaml
WalletWasabi.Gui/Controls/LockScreen/PinLockScreen.xaml
<Grid Classes="Shade" Background="{DynamicResource ThemeBackgroundBrush}">
<controls:GroupBox VerticalAlignment="Center" HorizontalAlignment="Center" TextBlock.FontSize="25" Padding="20" Margin="10">
<DockPanel LastChildFill="True">
- <controls:NoparaPasswordBox x:Name="InputField" Password="{Binding PinInput}" Width="300" DockPanel.Dock="Top" Margin="4 0 4 20" Watermark="PIN" UseFloatingWatermark="True" />
+ <controls:TogglePasswordBox x:Name="InputField" Text="{Binding PinInput}" Width="300" DockPanel.Dock="Top" Margin="4 0 4 20" Watermark="PIN" />
<Grid DockPanel.Dock="Bottom">
<TextBlock Text="Wrong PIN!" Margin="0,12,0,0" VerticalAlignment="Center" FontSize="20" Classes="warningMessage" IsVisible="{Binding WarningMessageVisible}" />
</Grid>

MODIFY
WalletWasabi.Gui/Controls/LockScreen/PinLockScreen.xaml.cs
WalletWasabi.Gui/Controls/LockScreen/PinLockScreen.xaml.cs
@@ -28,7 +28,7 @@ namespace WalletWasabi.Gui.Controls.LockScreen
{
InitializeComponent();
- var inputField = this.FindControl<NoparaPasswordBox>("InputField");
+ var inputField = this.FindControl<TogglePasswordBox>("InputField");
this.WhenAnyValue(x => x.IsLocked)
.Where(x => x)
@@ -53,7 +53,7 @@ namespace WalletWasabi.Gui.Controls.LockScreen
.ObserveOn(RxApp.MainThreadScheduler)
.Subscribe(_ =>
{
- var inputField = this.FindControl<NoparaPasswordBox>("InputField");
+ var inputField = this.FindControl<TogglePasswordBox>("InputField");
inputField.Focus();
});
}

MODIFY
WalletWasabi.Gui/Controls/TogglePasswordBox.xaml
WalletWasabi.Gui/Controls/TogglePasswordBox.xaml
<Style Selector="controls|TogglePasswordBox">
<Setter Property="Cursor" Value="IBeam" />
</Style>
+ <Style Selector="Button">
+ <Setter Property="Cursor" Value="Hand" />
+ </Style>
+ <Style Selector="Button:pointerover /template/ ContentPresenter">
+ <Setter Property="Opacity" Value="0.8" />
+ </Style>
+ <Style Selector="Button:pressed /template/ ContentPresenter">
+ <Setter Property="Opacity" Value="0.6" />
+ <Setter Property="Background" Value="Transparent" />
+ </Style>
</Styles>

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/CoinJoinTabView.xaml
WalletWasabi.Gui/Controls/WalletExplorer/CoinJoinTabView.xaml
</StackPanel>
</StackPanel>
<StackPanel IsVisible="{Binding !IsWatchOnly}" Grid.Column="0" Spacing="10">
- <controls:NoparaPasswordBox Password="{Binding Password}" Watermark="Password" UseFloatingWatermark="True" MinWidth="173" Margin="0 20 0 0">
+ <controls:TogglePasswordBox Text="{Binding Password}" MinWidth="173" Margin="0 20 0 0">
<i:Interaction.Behaviors>
<behaviors:CommandOnEnterBehavior Command="{Binding EnqueueCommand}" />
</i:Interaction.Behaviors>
- </controls:NoparaPasswordBox>
+ </controls:TogglePasswordBox>
<DockPanel Grid.Row="0" Grid.Column="1" LastChildFill="True" IsEnabled="{Binding !IsEnqueueBusy}">
<Button Command="{Binding EnqueueCommand}" DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal">

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/PinPadView.xaml
WalletWasabi.Gui/Controls/WalletExplorer/PinPadView.xaml
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450">
<controls:GroupBox Title="{Binding Title}" TextBlock.FontSize="30" Padding="20" Margin="10">
<DockPanel LastChildFill="True">
- <controls:NoparaPasswordBox DockPanel.Dock="Top" Margin="4 0 4 20" Password="{Binding MaskedPin}" Watermark="PIN" UseFloatingWatermark="True"></controls:NoparaPasswordBox>
+ <controls:TogglePasswordBox DockPanel.Dock="Top" Margin="4 0 4 20" Text="{Binding MaskedPin}" Watermark="PIN" />
<StackPanel DockPanel.Dock="Bottom">
<Button Margin="4 20" Content="Send PIN to Device" Command="{Binding SendPinCommand}" />
<TextBlock Text="{Binding WarningMessage}" Classes="warningMessage" />

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/SendTabView.xaml
WalletWasabi.Gui/Controls/WalletExplorer/SendTabView.xaml
</StackPanel>
</StackPanel>
<StackPanel Spacing="10" Orientation="Horizontal">
- <controls:NoparaPasswordBox Password="{Binding Password}" IsVisible="{Binding !IsWatchOnly}" Watermark="Password" UseFloatingWatermark="True" MinWidth="173" MaxWidth="173">
+ <controls:TogglePasswordBox Text="{Binding Password}" IsVisible="{Binding !IsWatchOnly}" MinWidth="173" MaxWidth="173">
<i:Interaction.Behaviors>
<behaviors:CommandOnEnterBehavior Command="{Binding BuildTransactionCommand}" />
</i:Interaction.Behaviors>
- </controls:NoparaPasswordBox>
+ </controls:TogglePasswordBox>
<DockPanel VerticalAlignment="Top" LastChildFill="True">
<Button Command="{Binding BuildTransactionCommand}" DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal">

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/WalletInfoView.xaml
WalletWasabi.Gui/Controls/WalletExplorer/WalletInfoView.xaml
</controls:ExtendedTextBox>
</StackPanel>
<StackPanel IsVisible="{Binding !IsWatchOnly}" Margin="0 10 0 0" Spacing="10" Orientation="Horizontal">
- <controls:NoparaPasswordBox Password="{Binding Password}" Watermark="Password" UseFloatingWatermark="True" MinWidth="173" MaxWidth="173">
+ <controls:TogglePasswordBox Text="{Binding Password}" MinWidth="173" MaxWidth="173">
<i:Interaction.Behaviors>
<behaviors:CommandOnEnterBehavior Command="{Binding ToggleSensitiveKeysCommand}" />
</i:Interaction.Behaviors>
- </controls:NoparaPasswordBox>
+ </controls:TogglePasswordBox>
<DockPanel VerticalAlignment="Top" LastChildFill="True">
<Button Content="{Binding ShowSensitiveKeys, StringFormat=\{0\} Sensitive Keys, Converter={StaticResource BooleanStringConverter}, ConverterParameter=Hide:Show}" Command="{Binding ToggleSensitiveKeysCommand}" DockPanel.Dock="Right" />
<Grid></Grid>

MODIFY
WalletWasabi.Gui/Tabs/SettingsView.xaml
WalletWasabi.Gui/Tabs/SettingsView.xaml
<TextBlock Margin="0 10" VerticalAlignment="Center">Note that, if you forget your PIN, you can clear it by manually deleting the hashed PIN from your UI config file.</TextBlock>
<DockPanel LastChildFill="True">
<Button DockPanel.Dock="Left" Content="{Binding IsPinSet, Converter={StaticResource BooleanStringConverter}, ConverterParameter=Clear:Set}" Margin="0 0 10 0" Command="{Binding SetClearPinCommand}" />
- <controls:NoparaPasswordBox Watermark="PIN" Password="{Binding PinBoxText}" UseFloatingWatermark="True" />
+ <controls:TogglePasswordBox Watermark="PIN" Text="{Binding PinBoxText}" />
</DockPanel>
<TextBlock Text="{Binding PinWarningMessage}" Classes="warningMessage" Margin="0 0 3 0" />
</StackPanel>

MODIFY
WalletWasabi.Gui/Tabs/WalletManager/GenerateWalletView.xaml
WalletWasabi.Gui/Tabs/WalletManager/GenerateWalletView.xaml
<TextBlock Text="You cannot recover your wallet without your password. Therefore we strongly advise you to use a password that you will not forget." TextWrapping="Wrap" />
</StackPanel>
<controls:ExtendedTextBox Text="{Binding WalletName}" Watermark="Wallet Name" UseFloatingWatermark="True" />
- <controls:NoparaPasswordBox Password="{Binding Password}" Watermark="Choose a password" UseFloatingWatermark="True">
+ <controls:TogglePasswordBox Text="{Binding Password}" Watermark="Choose a password">
<i:Interaction.Behaviors>
<behaviors:CommandOnEnterBehavior Command="{Binding GenerateCommand}" />
</i:Interaction.Behaviors>
- </controls:NoparaPasswordBox>
+ </controls:TogglePasswordBox>
</StackPanel>
</Grid>
</controls:GroupBox>

MODIFY
WalletWasabi.Gui/Tabs/WalletManager/LoadWalletView.xaml
WalletWasabi.Gui/Tabs/WalletManager/LoadWalletView.xaml
<StackPanel>
<TextBlock Text="Select a wallet to test its password!" FontWeight="Bold" />
</StackPanel>
- <controls:TogglePasswordBox />
+ <controls:TogglePasswordBox Text="{Binding Password}" />
<StackPanel>
<TextBlock Text="Why the unconventional password masking?" FontWeight="Bold" />
<TextBlock Text="We received numerous reports on losing or mistyping passwords. This experiment aims to disrupt users' typical workflow at wallet generation, forcing them to pay more attention than otherwise would." TextWrapping="Wrap" />

MODIFY
WalletWasabi.Gui/Tabs/WalletManager/RecoverWalletView.xaml
WalletWasabi.Gui/Tabs/WalletManager/RecoverWalletView.xaml
<TextBlock Text="At recovery, the wallet is unable to check if your password is correct or not. If you provide the wrong password, a wallet will be recovered with the provided Recovery Words and password combination." TextWrapping="Wrap" />
</StackPanel>
<controls:ExtendedTextBox Text="{Binding WalletName}" Watermark="Wallet Name" UseFloatingWatermark="True" />
- <controls:NoparaPasswordBox Password="{Binding Password}" Watermark="Password" UseFloatingWatermark="True" />
+ <controls:TogglePasswordBox Text="{Binding Password}" />
<controls:ExtendedTextBox Text="{Binding MnemonicWords}" Watermark="Recovery Words" UseFloatingWatermark="True" CaretIndex="{Binding CaretIndex}">
<i:Interaction.Behaviors>
<behaviors:SuggestionBehavior SuggestionItems="{Binding Suggestions}" />

Remove NoparaPasswordBox.