aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--support/hololens/ServoApp/BrowserPage.cpp12
-rw-r--r--support/hololens/ServoApp/BrowserPage.h4
-rw-r--r--support/hololens/ServoApp/BrowserPage.xaml220
3 files changed, 134 insertions, 102 deletions
diff --git a/support/hololens/ServoApp/BrowserPage.cpp b/support/hololens/ServoApp/BrowserPage.cpp
index a9de7e2942d..98521ccd7da 100644
--- a/support/hololens/ServoApp/BrowserPage.cpp
+++ b/support/hololens/ServoApp/BrowserPage.cpp
@@ -7,6 +7,7 @@
#include "BrowserPage.h"
#include "BrowserPage.g.cpp"
+using namespace std::placeholders;
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::UI::Xaml;
using namespace winrt::Windows::UI::Core;
@@ -50,6 +51,17 @@ void BrowserPage::BindServoEvents() {
});
servoControl().OnCaptureGesturesEnded(
[=] { navigationBar().IsHitTestVisible(true); });
+ urlTextbox().GotFocus(std::bind(&BrowserPage::OnURLFocused, this, _1));
+}
+
+void BrowserPage::OnURLFocused(Windows::Foundation::IInspectable const &) {
+ urlTextbox().SelectAll();
+}
+
+void BrowserPage::OnURLKeyboardAccelerator(
+ Windows::Foundation::IInspectable const &,
+ Windows::UI::Xaml::Input::KeyboardAcceleratorInvokedEventArgs const &) {
+ urlTextbox().Focus(FocusState::Programmatic);
}
void BrowserPage::LoadServoURI(Uri uri) {
diff --git a/support/hololens/ServoApp/BrowserPage.h b/support/hololens/ServoApp/BrowserPage.h
index 8c3a540d4c1..6c1af3f9059 100644
--- a/support/hololens/ServoApp/BrowserPage.h
+++ b/support/hololens/ServoApp/BrowserPage.h
@@ -26,6 +26,10 @@ public:
Windows::UI::Xaml::RoutedEventArgs const &);
void OnURLEdited(Windows::Foundation::IInspectable const &,
Windows::UI::Xaml::Input::KeyRoutedEventArgs const &);
+ void OnURLFocused(Windows::Foundation::IInspectable const &);
+ void OnURLKeyboardAccelerator(
+ Windows::Foundation::IInspectable const &,
+ Windows::UI::Xaml::Input::KeyboardAcceleratorInvokedEventArgs const &);
void Shutdown();
void LoadServoURI(Windows::Foundation::Uri uri);
void SetTransientMode(bool);
diff --git a/support/hololens/ServoApp/BrowserPage.xaml b/support/hololens/ServoApp/BrowserPage.xaml
index 386a20accac..3cd8aabff55 100644
--- a/support/hololens/ServoApp/BrowserPage.xaml
+++ b/support/hololens/ServoApp/BrowserPage.xaml
@@ -7,108 +7,124 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
- <Page.Resources>
- <Style x:Key="NavigationBarButton" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="Foreground" Value="{ThemeResource ButtonForeground}"/>
- <Setter Property="BorderBrush" Value="{ThemeResource ButtonBorderBrush}"/>
- <Setter Property="BorderThickness" Value="{ThemeResource ButtonBorderThemeThickness}"/>
- <Setter Property="Padding" Value="0"/>
- <Setter Property="Margin" Value="10,2"/>
- <Setter Property="MinWidth" Value="30"/>
- <Setter Property="MinHeight" Value="30"/>
- <Setter Property="HorizontalAlignment" Value="Center"/>
- <Setter Property="VerticalAlignment" Value="Center"/>
- <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
- <Setter Property="FontWeight" Value="Normal"/>
- <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
- <Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}"/>
- <Setter Property="FocusVisualMargin" Value="-3"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" CornerRadius="{TemplateBinding CornerRadius}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal">
- <Storyboard>
- <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="PointerOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBackgroundPointerOver}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBorderBrushPointerOver}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonForegroundPointerOver}"/>
- </ObjectAnimationUsingKeyFrames>
- <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBackgroundPressed}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBorderBrushPressed}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonForegroundPressed}"/>
- </ObjectAnimationUsingKeyFrames>
- <PointerDownThemeAnimation Storyboard.TargetName="ContentPresenter"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Opacity">
- <DiscreteObjectKeyFrame KeyTime="0" Value="0.2"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- </ContentPresenter>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Page.Resources>
+ <Page.Resources>
+ <Style x:Key="NavigationBarButton" TargetType="Button">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="Foreground" Value="{ThemeResource ButtonForeground}"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource ButtonBorderBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource ButtonBorderThemeThickness}"/>
+ <Setter Property="Padding" Value="0"/>
+ <Setter Property="Margin" Value="10,2"/>
+ <Setter Property="MinWidth" Value="30"/>
+ <Setter Property="MinHeight" Value="30"/>
+ <Setter Property="HorizontalAlignment" Value="Center"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
+ <Setter Property="FontWeight" Value="Normal"/>
+ <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
+ <Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}"/>
+ <Setter Property="FocusVisualMargin" Value="-3"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" CornerRadius="{TemplateBinding CornerRadius}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="PointerOver">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBackgroundPointerOver}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBorderBrushPointerOver}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonForegroundPointerOver}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBackgroundPressed}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBorderBrushPressed}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonForegroundPressed}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <PointerDownThemeAnimation Storyboard.TargetName="ContentPresenter"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Opacity">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="0.2"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ </ContentPresenter>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </Page.Resources>
- <Grid VerticalAlignment="Stretch">
- <Grid.RowDefinitions>
- <RowDefinition Height="auto"/>
- <RowDefinition Height="*"/>
- <RowDefinition Height="auto"/>
- </Grid.RowDefinitions>
- <Grid Grid.Row="0" x:Name="navigationBar" Background="{ThemeResource InkToolbarButtonBackgroundThemeBrush}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="auto"/>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="auto"/>
- </Grid.ColumnDefinitions>
- <StackPanel Orientation="Horizontal" Grid.Column="0">
- <Button Style="{StaticResource NavigationBarButton}" x:Name="backButton" IsTabStop="true" IsEnabled="false" Click="OnBackButtonClicked" AutomationProperties.Name="Back">
- <Image Source="Assets/UI/back.png" Height="12"></Image>
- </Button>
- <Button Style="{StaticResource NavigationBarButton}" x:Name="forwardButton" IsTabStop="true" IsEnabled="false" Click="OnForwardButtonClicked" AutomationProperties.Name="Forward">
- <Image Source="Assets/UI/forward.png" Height="12"></Image>
- </Button>
- <Button Style="{StaticResource NavigationBarButton}" x:Name="reloadButton" IsTabStop="true" IsEnabled="false" Visibility="Visible" Click="OnReloadButtonClicked" AutomationProperties.Name="Reload">
- <Image Source="Assets/UI/reload.png" Height="12"></Image>
- </Button>
- <Button Style="{StaticResource NavigationBarButton}" x:Name="stopButton" IsTabStop="true" IsEnabled="false" Visibility="Collapsed" Click="OnStopButtonClicked" AutomationProperties.Name="Stop">
- <Image Source="Assets/UI/stop.png" Height="12"></Image>
- </Button>
- </StackPanel>
- <TextBox Text="" IsTabStop="true" InputScope="Url" PlaceholderText="Type a URL" x:Name="urlTextbox" Grid.Column="1" KeyUp="OnURLEdited" IsSpellCheckEnabled="False" Margin="3,0"/>
- <ProgressRing x:Name="urlbarLoadingIndicator" Grid.Column="2" Margin="10,0"/>
+ <Grid VerticalAlignment="Stretch">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="auto"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="auto"/>
+ </Grid.RowDefinitions>
+ <Grid Grid.Row="0" x:Name="navigationBar" Background="{ThemeResource InkToolbarButtonBackgroundThemeBrush}">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="auto"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="auto"/>
+ </Grid.ColumnDefinitions>
+ <StackPanel Orientation="Horizontal" Grid.Column="0">
+ <Button Style="{StaticResource NavigationBarButton}" x:Name="backButton" IsTabStop="true" IsEnabled="false" Click="OnBackButtonClicked" AutomationProperties.Name="Back">
+ <Image Source="Assets/UI/back.png" Height="12"></Image>
+ <Button.KeyboardAccelerators>
+ <KeyboardAccelerator Key="Left" Modifiers="Menu" />
+ </Button.KeyboardAccelerators>
+ </Button>
+ <Button Style="{StaticResource NavigationBarButton}" x:Name="forwardButton" IsTabStop="true" IsEnabled="false" Click="OnForwardButtonClicked" AutomationProperties.Name="Forward">
+ <Image Source="Assets/UI/forward.png" Height="12"></Image>
+ <Button.KeyboardAccelerators>
+ <KeyboardAccelerator Key="Right" Modifiers="Menu" />
+ </Button.KeyboardAccelerators>
+ </Button>
+ <Button Style="{StaticResource NavigationBarButton}" x:Name="reloadButton" IsTabStop="true" IsEnabled="false" Visibility="Visible" Click="OnReloadButtonClicked" AutomationProperties.Name="Reload">
+ <Image Source="Assets/UI/reload.png" Height="12"></Image>
+ <Button.KeyboardAccelerators>
+ <KeyboardAccelerator Key="R" Modifiers="Control" />
+ </Button.KeyboardAccelerators>
+ </Button>
+ <Button Style="{StaticResource NavigationBarButton}" x:Name="stopButton" IsTabStop="true" IsEnabled="false" Visibility="Collapsed" Click="OnStopButtonClicked" AutomationProperties.Name="Stop">
+ <Image Source="Assets/UI/stop.png" Height="12"></Image>
+ <Button.KeyboardAccelerators>
+ <KeyboardAccelerator Key="Escape" Modifiers="None" />
+ </Button.KeyboardAccelerators>
+ </Button>
+ </StackPanel>
+ <TextBox Text="" IsTabStop="true" InputScope="Url" PlaceholderText="Type a URL" x:Name="urlTextbox" Grid.Column="1" KeyUp="OnURLEdited" IsSpellCheckEnabled="False" Margin="3,0">
+ <TextBox.KeyboardAccelerators>
+ <KeyboardAccelerator Key="L" Modifiers="Control" Invoked="OnURLKeyboardAccelerator"/>
+ </TextBox.KeyboardAccelerators>
+ </TextBox>
+ <ProgressRing x:Name="urlbarLoadingIndicator" Grid.Column="2" Margin="10,0"/>
+ </Grid>
+ <local:ServoControl TabIndex="0" x:Name="servoControl" Grid.Row="1"/>
+ <ProgressBar x:Name="transientLoadingIndicator" Visibility="Collapsed" Grid.Row="2"/>
</Grid>
- <local:ServoControl TabIndex="0" x:Name="servoControl" Grid.Row="1"/>
- <ProgressBar x:Name="transientLoadingIndicator" Visibility="Collapsed" Grid.Row="2"/>
- </Grid>
</Page>