View Issue Details

IDProjectCategoryView StatusLast Update
0002717NoesisGUIC++ SDKpublic2024-10-18 12:36
Reporternikobarli Assigned Tosfernandez  
PriorityhighSeveritymajor 
Status resolvedResolutionfixed 
Product Version3.1.3 
Target Version3.2.5Fixed in Version3.2.5 
Summary0002717: Scroll position after the focus is lost and returned
Description

Scroll position broken after the focus is lost and returned.

Please see the attached video and steps to reproduce.

This is quite problem in our software. We'd appreciate if you can provide us with a patch to fix it. Thank you.

Steps To Reproduce
  1. Apply the attached patch to Noesis sample (Hello-world)
  2. Run HelloWorld sample
  3. Click and select the bottom-most box
  4. Scroll to the top
  5. Click any other window to make the Noesis window lost focus
  6. Click the top most box
    // The content scrolls uncontrolled and a wrong box is made selected
Attached Files
repro.mp4 (385,164 bytes)   
ScrollProblem.patch (22,635 bytes)   
Index: Native/Src/Packages/Samples/HelloWorld/Data/App.xaml
===================================================================
--- Native/Src/Packages/Samples/HelloWorld/Data/App.xaml	(revision 168057)
+++ Native/Src/Packages/Samples/HelloWorld/Data/App.xaml	(working copy)
@@ -4,5 +4,6 @@
              xmlns:local="clr-namespace:HelloWorld"
              StartupUri="MainWindow.xaml">
     <Application.Resources>
+        <ResourceDictionary Source="pack://application:,,,/Noesis.GUI.Extensions;component/Theme/NoesisTheme.DarkBlue.xaml" />
     </Application.Resources>
 </Application>
Index: Native/Src/Packages/Samples/HelloWorld/Data/HelloWorld-blend.csproj
===================================================================
--- Native/Src/Packages/Samples/HelloWorld/Data/HelloWorld-blend.csproj	(revision 168057)
+++ Native/Src/Packages/Samples/HelloWorld/Data/HelloWorld-blend.csproj	(working copy)
@@ -35,6 +35,9 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Noesis.GUI.Extensions">
+      <HintPath>..\..\Commands\Data\bin\Debug\Noesis.GUI.Extensions.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Data" />
     <Reference Include="System.Xml" />
Index: Native/Src/Packages/Samples/HelloWorld/Data/MainWindow.xaml
===================================================================
--- Native/Src/Packages/Samples/HelloWorld/Data/MainWindow.xaml	(revision 168057)
+++ Native/Src/Packages/Samples/HelloWorld/Data/MainWindow.xaml	(working copy)
@@ -7,211 +7,48 @@
         mc:Ignorable="d"
         FontFamily="./#Aero Matics"
         FontSize="36"
-        Background="#FF124C7A"
+        Background="#222222"
+        Foreground="#EEEEEE"
+        Width="500" Height="500"
         Title="NoesisGUI - Hello, World!">
+  <Window.Resources>
+    <ResourceDictionary>
+      <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+        <Setter Property="Height" Value="40"/>
+        <Setter Property="Width" Value="200"/>
+        <Setter Property="BorderThickness" Value="3"/>
+        <Setter Property="Margin" Value="5"/>
+        <Setter Property="BorderBrush" Value="#666666"/>
+      </Style>
+    </ResourceDictionary>
+  </Window.Resources>
 
-    <Window.Resources>
-        <Storyboard x:Key="Intro">
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="Word">
-                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="276.8">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <CubicEase EasingMode="EaseInOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="GUI">
-                <EasingColorKeyFrame KeyTime="0" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.5" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.8" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:1.2" Value="#FF2AA6E2"/>
-            </ColorAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="Logo">
-                <EasingDoubleKeyFrame KeyTime="0" Value="-4"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Logo">
-                <EasingDoubleKeyFrame KeyTime="0" Value="-180"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <ExponentialEase EasingMode="EaseInOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="Logo">
-                <EasingDoubleKeyFrame KeyTime="0" Value="0.5"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <BackEase EasingMode="EaseOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="Logo">
-                <EasingDoubleKeyFrame KeyTime="0" Value="0.5"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <BackEase EasingMode="EaseOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="Line1">
-                <EasingColorKeyFrame KeyTime="0" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.3" Value="#FF2AA6E2"/>
-            </ColorAnimationUsingKeyFrames>
-            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="Line2">
-                <EasingColorKeyFrame KeyTime="0" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.1" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.4" Value="#FF2AA6E2"/>
-            </ColorAnimationUsingKeyFrames>
-            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="Line3">
-                <EasingColorKeyFrame KeyTime="0" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#002AA6E2"/>
-                <EasingColorKeyFrame KeyTime="0:0:0.5" Value="#FF2AA6E2"/>
-            </ColorAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="GUI">
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="1.1"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.2" Value="1">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <ExponentialEase EasingMode="EaseInOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="GUI">
-                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="1.1"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.2" Value="1">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <ExponentialEase EasingMode="EaseInOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="Hello">
-                <EasingColorKeyFrame KeyTime="0" Value="Transparent"/>
-                <EasingColorKeyFrame KeyTime="0:0:1" Value="Transparent"/>
-                <EasingColorKeyFrame KeyTime="0:0:1.3" Value="White">
-                    <EasingColorKeyFrame.EasingFunction>
-                        <SineEase EasingMode="EaseInOut"/>
-                    </EasingColorKeyFrame.EasingFunction>
-                </EasingColorKeyFrame>
-            </ColorAnimationUsingKeyFrames>
-            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="World">
-                <EasingColorKeyFrame KeyTime="0" Value="Transparent"/>
-                <EasingColorKeyFrame KeyTime="0:0:1.2" Value="Transparent"/>
-                <EasingColorKeyFrame KeyTime="0:0:1.5" Value="White">
-                    <EasingColorKeyFrame.EasingFunction>
-                        <SineEase EasingMode="EaseInOut"/>
-                    </EasingColorKeyFrame.EasingFunction>
-                </EasingColorKeyFrame>
-            </ColorAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="Hello">
-                <EasingDoubleKeyFrame KeyTime="0" Value="-40"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-40"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.3" Value="0">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <SineEase EasingMode="EaseInOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="World">
-                <EasingDoubleKeyFrame KeyTime="0" Value="-40"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.2" Value="-40"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <SineEase EasingMode="EaseInOut"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" Storyboard.TargetName="Hello">
-                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="20"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.3" Value="0">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <BackEase EasingMode="EaseIn"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" Storyboard.TargetName="World">
-                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.2" Value="20"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0">
-                    <EasingDoubleKeyFrame.EasingFunction>
-                        <BackEase EasingMode="EaseIn"/>
-                    </EasingDoubleKeyFrame.EasingFunction>
-                </EasingDoubleKeyFrame>
-            </DoubleAnimationUsingKeyFrames>
-        </Storyboard>
-    </Window.Resources>
-    <Window.Triggers>
-        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
-            <BeginStoryboard Storyboard="{StaticResource Intro}"/>
-        </EventTrigger>
-    </Window.Triggers>
-    <Grid>
-        <Viewbox>
-            <Grid Width="325.8" Margin="24">
-                <Grid HorizontalAlignment="Center">
-                    <Grid.ColumnDefinitions>
-                        <ColumnDefinition Width="Auto"/>
-                        <ColumnDefinition Width="Auto"/>
-                    </Grid.ColumnDefinitions>
-                    <Grid.RowDefinitions>
-                        <RowDefinition/>
-                        <RowDefinition/>
-                    </Grid.RowDefinitions>
-                    <Grid x:Name="Logo" Grid.Column="0" RenderTransformOrigin="0.5,0.5" Width="49">
-                        <Grid.RenderTransform>
-                            <TransformGroup>
-                                <ScaleTransform/>
-                                <SkewTransform/>
-                                <RotateTransform/>
-                                <TranslateTransform/>
-                            </TransformGroup>
-                        </Grid.RenderTransform>
-                        <Path x:Name="Line1" Data="M6.1,16 L13.7,5.7 32,8 35.7,16.7 39.4,11.9 35.5,3 11.2,0 0,15.2 3.8,24.1 9.5,24.8 6.1,16 z" Fill="#FF2AA6E2" VerticalAlignment="Center" Height="24.8" Margin="0,5.5,9.6,16.5"/>
-                        <Path x:Name="Line2" Data="M15.5,6 L20.6,17.8 9.5,32.6 0,31.4 2.4,37 12.1,38.1 26.8,18.5 19.2,1.2 9.7,0 6.2,4.6 15.5,6.1 z" Fill="#FF2AA6E2" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Height="38.1" Margin="22.2,0,0,8.7"/>
-                        <Path x:Name="Line3" Data="M26,26.8 L13.3,25.4 6.1,8.4 6,8.4 11.8,0.8 5.7,0 0,7.8 9.5,30.3 28.4,32.5 34.1,24.8 31.9,19.4 z" Fill="#FF2AA6E2" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Height="32.5" Margin="9.3,14.3,5.6,0"/>
-                    </Grid>
-                    <Grid x:Name="Word" Grid.Column="1" Width="276.8">
-                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
-                            <Path x:Name="Noesis" Data="M26.0999999999999,16.9L25.8,16.9C25.2,16.9 24.5999999999999,16.6999999999999 24.0999999999999,16.4 23.5999999999999,16.1 23.0999999999999,15.6999999999999 22.6999999999998,15.1999999999999L12.0999999999999,2.99999999999989C11.1999999999998,1.99999999999989 10.1999999999998,1.19999999999993 9.19999999999982,0.799999999999841 8.19999999999982,0.299999999999841 6.99999999999977,0.0999999999997954 5.49999999999977,0.0999999999997954L-2.27373675443232E-13,0.0999999999997954 -2.27373675443232E-13,21.9999999999998 5.19999999999982,21.9999999999998 5.19999999999982,5.19999999999982 5.49999999999977,5.19999999999982C6.09999999999968,5.19999999999982 6.69999999999982,5.39999999999986 7.19999999999982,5.69999999999982 7.79999999999973,5.99999999999977 8.19999999999982,6.39999999999986 8.59999999999991,6.89999999999986L19,18.9999999999999C19.9000000000001,20.0999999999999 20.9000000000001,20.8999999999999 21.9000000000001,21.3999999999999 23,21.8999999999999 24.2,22.0999999999999 25.8000000000002,22.0999999999999L31.3000000000002,22.0999999999999 31.3000000000002,-1.13686837721616E-13 26.1000000000001,-1.13686837721616E-13 26.0999999999999,16.9z M59.3,0L42.3999999999999,0C36.8999999999999,0,34.0999999999999,2.29999999999995,34.0999999999999,7L34.0999999999999,15C34.0999999999999,19.6,36.8999999999999,22,42.3999999999999,22L59.3,22C64.8,22,67.5999999999999,19.7,67.5999999999999,15L67.5999999999999,7C67.5999999999999,2.39999999999998,64.8,0,59.3,0z M62.2,15C62.2,16.2,61.2,16.9,59.3,16.9L42.3999999999999,16.9C40.4999999999998,16.9,39.4999999999998,16.3,39.4999999999998,15L39.4999999999998,7C39.4999999999998,5.70000000000005,40.4999999999998,5.10000000000002,42.3999999999999,5.10000000000002L59.3,5.10000000000002C61.2,5.10000000000002,62.2,5.70000000000005,62.2,7L62.2,15z M75.7,15.7999999999997L75.7,13.5999999999999 100.9,13.5999999999999 100.9,8.49999999999989 75.7,8.49999999999989 75.7,6.29999999999984C75.7,5.5999999999998,76.1000000000001,5.19999999999982,76.9000000000001,5.19999999999982L101,5.19999999999982 101,-2.27373675443232E-13 76.9000000000001,-2.27373675443232E-13C72.5,-2.27373675443232E-13,70.3000000000002,1.79999999999973,70.3000000000002,5.29999999999973L70.3000000000002,16.4999999999998C70.3000000000002,20.0999999999998,72.5000000000002,21.8999999999998,76.9000000000001,21.8999999999998L101.1,21.8999999999998 101.1,16.7999999999997 76.9000000000001,16.7999999999997C76.1000000000001,16.8999999999998,75.7,16.4999999999998,75.7,15.7999999999997z M128.5,8.39999999999998L110.2,8.39999999999998C109.4,8.39999999999998,108.9,8.10000000000002,108.9,7.60000000000002L108.9,5.89999999999998C108.9,5.39999999999998,109.3,5.10000000000002,110.2,5.10000000000002L134.4,5.10000000000002 134.4,0 110.2,0C105.8,0,103.6,1.79999999999995,103.6,5.29999999999995L103.6,8.79999999999995C103.6,11.9,105.8,13.5,110.2,13.5L128.5,13.5C129.3,13.5,129.7,13.8,129.7,14.3L129.7,16.0999999999999C129.7,16.5999999999999,129.3,16.8999999999999,128.5,16.8999999999999L104.3,16.8999999999999 104.3,21.9999999999999 128.5,21.9999999999999C132.9,21.9999999999999,135.1,20.1999999999999,135.1,16.6999999999999L135.1,13.6999999999999C135.1,10.1999999999999,132.9,8.39999999999998,128.5,8.39999999999998z M137.8,0L143.2,0 143.2,21.9 137.8,21.9z M170.8,8.39999999999998L152.5,8.39999999999998C151.7,8.39999999999998,151.2,8.10000000000002,151.2,7.60000000000002L151.2,5.89999999999998C151.2,5.39999999999998,151.6,5.10000000000002,152.5,5.10000000000002L176.7,5.10000000000002 176.7,0 152.5,0C148.1,0,145.9,1.79999999999995,145.9,5.29999999999995L145.9,8.79999999999995C145.9,11.9,148.1,13.5,152.5,13.5L170.8,13.5C171.6,13.5,172,13.8,172,14.3L172,16.0999999999999C172,16.5999999999999,171.6,16.8999999999999,170.8,16.8999999999999L146.6,16.8999999999999 146.6,21.9999999999999 170.8,21.9999999999999C175.2,21.9999999999999,177.4,20.1999999999999,177.4,16.6999999999999L177.4,13.6999999999999C177.3,10.1999999999999,175.1,8.39999999999998,170.8,8.39999999999998z" Fill="White" VerticalAlignment="Center" Margin="12,0,0,0"/>
-                            <Path x:Name="GUI" Data="M61.9000244140625,16.1C61.9000244140625,16.6,61.5000244140624,16.9,60.7000244140625,16.9L41.5000244140624,16.9C40.7000244140625,16.9,40.2000244140625,16.6,40.2000244140625,16.1L40.2000244140625,0.100000000000023 34.8000244140624,0.100000000000023 34.8000244140624,16.7C34.8000244140624,20.3000000000001,37.0000244140624,22.1,41.4000244140623,22.1L60.6000244140623,22.1C65.0000244140624,22.1,67.2000244140622,20.3000000000001,67.2000244140622,16.8000000000001L67.2000244140622,1.13686837721616E-13 61.8000244140621,1.13686837721616E-13 61.8000244140621,16.1000000000001z M70.0000244140624,0L75.4000244140625,0 75.4000244140625,21.9 70.0000244140624,21.9z M20.1000244140623,8.60000000000002L20.1000244140623,14 26.8000244140624,14 26.8000244140624,16.9 6.60002441406232,16.9C5.80002441406236,16.9,5.30002441406236,16.5,5.30002441406236,15.8L5.30002441406236,6.19999999999993C5.30002441406236,5.49999999999989,5.70002441406245,5.09999999999991,6.60002441406232,5.09999999999991L31.6000244140623,5.09999999999991 31.6000244140623,-1.13686837721616E-13 6.60002441406232,-1.13686837721616E-13C2.20002441406223,-1.13686837721616E-13,2.44140624090505E-05,1.79999999999984,2.44140624090505E-05,5.29999999999984L2.44140624090505E-05,16.4999999999999C2.44140624090505E-05,20.0999999999999,2.20002441406245,21.8999999999999,6.60002441406232,21.8999999999999L32.2000244140622,21.8999999999999 32.2000244140622,8.49999999999989 20.1000244140623,8.49999999999989z" Fill="#FF2AA6E2" VerticalAlignment="Center" Margin="12,0,0,0" RenderTransformOrigin="1,0.5">
-                                <Path.RenderTransform>
-                                    <TransformGroup>
-                                        <ScaleTransform/>
-                                        <SkewTransform/>
-                                        <RotateTransform/>
-                                        <TranslateTransform/>
-                                    </TransformGroup>
-                                </Path.RenderTransform>
-                            </Path>
-                        </StackPanel>
-                    </Grid>
-                    <StackPanel x:Name="HelloWorld" Grid.Row="1" Grid.ColumnSpan="2" Margin="0,15,0,0" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <TextBlock x:Name="Hello" Text="Hello," Foreground="White" RenderTransformOrigin="0.5,0.5">
-                            <TextBlock.RenderTransform>
-                                <TransformGroup>
-                                    <ScaleTransform/>
-                                    <SkewTransform/>
-                                    <RotateTransform/>
-                                    <TranslateTransform/>
-                                </TransformGroup>
-                            </TextBlock.RenderTransform>
-                        </TextBlock>
-                        <TextBlock x:Name="World" Text="World!" Foreground="White" Margin="5,0,0,0" RenderTransformOrigin="0.5,0.5">
-                            <TextBlock.RenderTransform>
-                                <TransformGroup>
-                                    <ScaleTransform/>
-                                    <SkewTransform/>
-                                    <RotateTransform/>
-                                    <TranslateTransform/>
-                                </TransformGroup>
-                            </TextBlock.RenderTransform>
-                        </TextBlock>
-                    </StackPanel>
-                </Grid>
-            </Grid>
-        </Viewbox>
-    </Grid>
+  <ScrollViewer>
+    <ListBox>
+      <ListBox.Template>
+        <ControlTemplate>
+          <ItemsPresenter/>
+        </ControlTemplate>
+      </ListBox.Template>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+      <Border/>
+    </ListBox>
+  </ScrollViewer>
 </Window>
ScrollProblem.patch (22,635 bytes)   
PlatformAny

Activities

sfernandez

sfernandez

2023-10-10 13:01

manager   ~0008799

Are you still on 3.1.3 version?

The code that produces this situation is in FrameworkElement::OnGotFocus(), it is bringing into view the element when it gets focused.

In 3.2 we have implemented the FocusManager so we can now differentiate between logical and keyboard focus. I verified that in WPF when a window loses focus, the logical focus remains, so when returning the focus to the window, the logical focus does not change and that code in FrameworkElement is not exectuted. We will fix it for 3.2 version, but in 3.1 it will require a bit more of a hack, let me think about it to provide a patch.

nikobarli

nikobarli

2023-10-11 01:46

reporter   ~0008801

Last edited: 2023-10-11 01:49

Hi Sergio,

Thank you for looking into this issue immediately.

We plan to shift to 3.2.x in our next development branch. But the currently active branch is still using 3.1.3 (cannot upgrade because of risk management).

nikobarli

nikobarli

2024-04-23 02:15

reporter   ~0009399

Just as an update. We are currently moving to version 3.2.3 thus we no longer need this fix for 3.1.x. Thanks.

sfernandez

sfernandez

2024-09-02 14:21

manager   ~0009928

Hello Niko,

I'm working on this issue, but in the meantime I think it is safe to just comment in FrameworkElement.cpp the LostKeyboardFocus event handler:

Index: FrameworkElement.cpp

--- FrameworkElement.cpp (revision 14313)
+++ FrameworkElement.cpp (working copy)
@@ -4396,7 +4396,7 @@
DependencyObject* focusScope = FocusManager::GetFocusScope(element);
if (focusScope != nullptr && focusScope != element && args.newFocus == nullptr)
{

  • FocusManager::SetFocusedElement(focusScope, nullptr);
  • //FocusManager::SetFocusedElement(focusScope, nullptr);
    }
    }
    });

Could you please try that?

nikobarli

nikobarli

2024-09-03 05:51

reporter   ~0009934

Hi Sergio,

Thank you for the patch. We tried it that while it can fix some of the scenarios we have, there are other scenarios that still have the problems.
We then tried to find similar places and found that the remaining scenarios are fixed when we also comment out SetFocusedElement in GotKeyboardFocusEvent.
Does it make sense to you ?

Index: FrameworkElement.cpp

--- FrameworkElement.cpp (revision 175058)
+++ FrameworkElement.cpp (working copy)
@@ -4380,7 +4380,7 @@
DependencyObject* focusScope = FocusManager::GetFocusScope(element);
if (focusScope != nullptr && focusScope != element)
{

  • FocusManager::SetFocusedElement(focusScope, element);
  • //FocusManager::SetFocusedElement(focusScope, element);
    }
    }
    });
    @@ -4395,7 +4395,7 @@
    DependencyObject* focusScope = FocusManager::GetFocusScope(element);
    if (focusScope != nullptr && focusScope != element && args.newFocus == nullptr)
    {
  • FocusManager::SetFocusedElement(focusScope, nullptr);
  • //FocusManager::SetFocusedElement(focusScope, nullptr);
    }
    }
    });
sfernandez

sfernandez

2024-09-03 10:11

manager   ~0009935

If you comment the FocusManager::SetFocusedElement(focusScope, element) call in the GotKeyboardFocus event handler then IsFocused property won't be updated and GotFocus/LostFocus events will never be fired.

Can you explain what remaining scenarios don't work if you only comment the call to SetFocusedElement(nullptr) in LostKeyboardFocus()?

nikobarli

nikobarli

2024-09-04 11:56

reporter   ~0009942

We are currently re-examining the cases. We'll get back to you later. Thanks.

sfernandez

sfernandez

2024-10-18 12:36

manager   ~0010027

We fixed the issue where scroll was reset when window was deactivated and activated again, so I'm closing this ticket.
In case you find any other problem please reopen or create a new ticket.
Thanks for your feedback!

Issue History

Date Modified Username Field Change
2023-10-10 06:36 nikobarli New Issue
2023-10-10 06:36 nikobarli File Added: repro.mp4
2023-10-10 06:36 nikobarli File Added: ScrollProblem.patch
2023-10-10 11:04 jsantos Assigned To => sfernandez
2023-10-10 11:04 jsantos Status new => assigned
2023-10-10 11:04 jsantos Target Version => 3.2.3
2023-10-10 13:01 sfernandez Status assigned => feedback
2023-10-10 13:01 sfernandez Note Added: 0008799
2023-10-11 01:46 nikobarli Note Added: 0008801
2023-10-11 01:46 nikobarli Status feedback => assigned
2023-10-11 01:49 nikobarli Note Edited: 0008801
2024-01-22 11:46 sfernandez Target Version 3.2.3 => 3.2.4
2024-04-23 02:15 nikobarli Note Added: 0009399
2024-06-03 17:18 jsantos Target Version 3.2.4 => 3.2.5
2024-08-30 11:14 jsantos Priority normal => high
2024-09-02 14:21 sfernandez Status assigned => feedback
2024-09-02 14:21 sfernandez Note Added: 0009928
2024-09-03 05:51 nikobarli Note Added: 0009934
2024-09-03 05:51 nikobarli Status feedback => assigned
2024-09-03 10:11 sfernandez Status assigned => feedback
2024-09-03 10:11 sfernandez Note Added: 0009935
2024-09-04 11:56 nikobarli Note Added: 0009942
2024-09-04 11:56 nikobarli Status feedback => assigned
2024-10-18 12:36 sfernandez Status assigned => resolved
2024-10-18 12:36 sfernandez Resolution open => fixed
2024-10-18 12:36 sfernandez Fixed in Version => 3.2.5
2024-10-18 12:36 sfernandez Note Added: 0010027