View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003587 | NoesisGUI | C++ SDK | public | 2024-08-02 12:33 | 2025-05-20 19:03 |
| Reporter | nikobarli | Assigned To | sfernandez | ||
| Priority | normal | Severity | major | ||
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.2.4 | ||||
| Target Version | 3.2.8 | Fixed in Version | 3.2.8 | ||
| Summary | 0003587: Focus is not moved appropriately using Tab key | ||||
| Description | For example the following XAML behaves weirdly and doesn't match WPF behavior When the focus initially set to "TabIndex: none A" and we click Tab repeatedly, the focus just moves between "TabIndex: none A" and "TabIndex: none B" button. When the focus initially set to "TabIndex: 0" and we click Tab repeatedly, the focus moves to "TabIndex: 1" "TabIndex: 2" "TabIndex: 3" "TabIndex: none A" "TabIndex: none B", but then it just loops between "TabIndex: none A" and "TabIndex: none B" <StackPanel Width="400" > | ||||
| Steps To Reproduce | Please apply the attached patch to the Noesis sample code. | ||||
| Attached Files | NoesisGUI-win-x84_64_TestFocus.patch (7,472 bytes)
Index: Native/Src/Packages/Samples/Buttons/Data/MainWindow.xaml
===================================================================
--- Native/Src/Packages/Samples/Buttons/Data/MainWindow.xaml (revision 174740)
+++ Native/Src/Packages/Samples/Buttons/Data/MainWindow.xaml (working copy)
@@ -8,108 +8,13 @@
Title="NoesisGUI - Buttons"
d:DesignWidth="1280" d:DesignHeight="720">
- <Window.Resources>
- <Storyboard x:Key="Intro">
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="StartButton">
- <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="1">
- <EasingDoubleKeyFrame.EasingFunction>
- <BackEase EasingMode="EaseOut" Amplitude="0.5"/>
- </EasingDoubleKeyFrame.EasingFunction>
- </EasingDoubleKeyFrame>
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="StartButton">
- <EasingDoubleKeyFrame KeyTime="0" Value="-200"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-200"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="0">
- <EasingDoubleKeyFrame.EasingFunction>
- <CircleEase EasingMode="EaseOut"/>
- </EasingDoubleKeyFrame.EasingFunction>
- </EasingDoubleKeyFrame>
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="SettingsButton">
- <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="1">
- <EasingDoubleKeyFrame.EasingFunction>
- <BackEase EasingMode="EaseOut" Amplitude="0.5"/>
- </EasingDoubleKeyFrame.EasingFunction>
- </EasingDoubleKeyFrame>
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="SettingsButton">
- <EasingDoubleKeyFrame KeyTime="0" Value="-200"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="-200"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="0">
- <EasingDoubleKeyFrame.EasingFunction>
- <CircleEase EasingMode="EaseOut"/>
- </EasingDoubleKeyFrame.EasingFunction>
- </EasingDoubleKeyFrame>
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="ExitButton">
- <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1">
- <EasingDoubleKeyFrame.EasingFunction>
- <BackEase EasingMode="EaseOut" Amplitude="0.5"/>
- </EasingDoubleKeyFrame.EasingFunction>
- </EasingDoubleKeyFrame>
- </DoubleAnimationUsingKeyFrames>
- <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="ExitButton">
- <EasingDoubleKeyFrame KeyTime="0" Value="-200"/>
- <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-200"/>
- <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0">
- <EasingDoubleKeyFrame.EasingFunction>
- <CircleEase EasingMode="EaseOut"/>
- </EasingDoubleKeyFrame.EasingFunction>
- </EasingDoubleKeyFrame>
- </DoubleAnimationUsingKeyFrames>
- </Storyboard>
- </Window.Resources>
- <Window.Triggers>
- <EventTrigger RoutedEvent="FrameworkElement.Loaded">
- <BeginStoryboard Storyboard="{StaticResource Intro}"/>
- </EventTrigger>
- </Window.Triggers>
- <Grid x:Name="LayoutRoot" Background="{StaticResource NoesisLogoBg}">
- <Grid.RowDefinitions>
- <RowDefinition Height="80*"/>
- <RowDefinition Height="800*"/>
- <RowDefinition Height="120*"/>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="40*"/>
- <ColumnDefinition Width="900*"/>
- <ColumnDefinition Width="60*"/>
- </Grid.ColumnDefinitions>
- <Grid Grid.Column="1" Grid.Row="1">
- <Grid.RowDefinitions>
- <RowDefinition Height="200*"/>
- <RowDefinition Height="800*"/>
- </Grid.RowDefinitions>
- <Viewbox x:Name="Logo" Stretch="Uniform">
- <StackPanel Orientation="Horizontal">
- <Path Data="{StaticResource NoesisLogoGeometry}" Fill="{StaticResource NoesisLogoBlueBg}" Stretch="Uniform"/>
- <Path Data="{StaticResource NoesisTextGeometry}" Fill="White" Stretch="Uniform" Margin="40,0,0,0" VerticalAlignment="Center"/>
- <Path Data="{StaticResource NoesisGuiTextGeometry}" Fill="{StaticResource NoesisLogoBlueBg}" Stretch="Uniform" Margin="40,0,0,0" VerticalAlignment="Center"/>
- </StackPanel>
- </Viewbox>
- <Viewbox Grid.Row="1" Stretch="Uniform">
- <Grid Height="460" Width="768">
- <Grid.RowDefinitions>
- <RowDefinition Height="100*"/>
- <RowDefinition Height="100*"/>
- <RowDefinition Height="30*"/>
- <RowDefinition Height="100*"/>
- <RowDefinition Height="30*"/>
- <RowDefinition Height="100*"/>
- </Grid.RowDefinitions>
- <Button x:Name="StartButton" Grid.Row="1" Content="START" Command="{Binding StartCommand}"/>
- <Button x:Name="SettingsButton" Grid.Row="3" Content="SETTINGS" Command="{Binding SettingsCommand}"/>
- <Button x:Name="ExitButton" Grid.Row="5" Content="EXIT" Command="{Binding ExitCommand}"/>
- </Grid>
- </Viewbox>
- </Grid>
- </Grid>
+ <StackPanel Width="400" >
+ <Button Content="TabIndex: none A"/>
+ <Button Content="TabIndex: none B"/>
+ <Button TabIndex="0" Content="TabIndex: 0"/>
+ <Button TabIndex="1" Content="TabIndex: 1"/>
+ <Button TabIndex="2" Content="TabIndex: 2" IsEnabled="True"/>
+ <Button TabIndex="3" Content="TabIndex: 3"/>
+ </StackPanel>
</Window>
\ No newline at end of file
| ||||
| Platform | Windows | ||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2024-08-02 12:33 | nikobarli | New Issue | |
| 2024-08-02 12:33 | nikobarli | File Added: NoesisGUI-win-x84_64_TestFocus.patch | |
| 2024-08-05 14:18 | jsantos | Assigned To | => sfernandez |
| 2024-08-05 14:18 | jsantos | Status | new => assigned |
| 2024-08-05 14:18 | jsantos | Target Version | => 3.2.5 |
| 2024-10-24 16:43 | sfernandez | Target Version | 3.2.5 => 3.2.6 |
| 2024-11-22 18:18 | jsantos | Target Version | 3.2.6 => 3.2.7 |
| 2025-01-20 17:43 | jsantos | Target Version | 3.2.7 => 3.2.8 |
| 2025-05-20 19:03 | sfernandez | Status | assigned => resolved |
| 2025-05-20 19:03 | sfernandez | Resolution | open => fixed |
| 2025-05-20 19:03 | sfernandez | Fixed in Version | => 3.2.8 |