View Issue Details

IDProjectCategoryView StatusLast Update
0004684NoesisGUIC++ SDKpublic2026-01-12 12:37
Reporternet8floz Assigned Tosfernandez  
PrioritynormalSeveritymajor 
Status assignedResolutionopen 
Product VersionStudio_Beta 
Summary0004684: Popups use wrong position inside layout scalers
Description

when using a combobox in a LayoutScaler the pop over position is incorrect and blocks the combobox itself leading to visual glitches and inability to use controls

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:noesis="clr-namespace:NoesisGUIExtensions"
  d:DataContext="InGamePauseScreenVM Data 01"
  Background="#00000000"
  mc:Ignorable="d" xmlns:system="clr-namespace:System;assembly=mscorlib" d:DesignWidth="1280" d:DesignHeight="720" xmlns:b="http://schemas.microsoft.com/xaml/behaviors">
  <Page.Resources>
    <ResourceDictionary>

    </ResourceDictionary>
  </Page.Resources>
  <Page.Visibility>
    <Binding Path="show_screen">
      <Binding.Converter>
        <BooleanToVisibilityConverter />
      </Binding.Converter>
    </Binding>
  </Page.Visibility>

  <noesis:LayoutScaler ReferenceResolution="640,360" ScaleFactor="1.207">
    <Grid>
      <Border Background="#FF000000" BorderBrush="#FF000000" BorderThickness="1" Opacity="0.946"/>
      <Border BorderBrush="#FF000000" BorderThickness="1" Opacity="0.057">
        <Border.Background>
          <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
            <GradientStop Offset="0" Color="#FF14ACD3"/>
            <GradientStop Offset="1" Color="#FF00D9FF"/>
            <GradientStop Offset="0.8741006" Color="#FF16C539"/>
          </LinearGradientBrush>
        </Border.Background>
      </Border>
      <StackPanel Margin="25,25,25,25" HorizontalAlignment="Left" VerticalAlignment="Top"/>
      <Grid x:Name="Settings" HorizontalAlignment="Right" Width="304" Margin="0,28,31,0" VerticalAlignment="Top">
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="5*"/>
          <ColumnDefinition Width="20"/>
          <ColumnDefinition Width="5*"/>
        </Grid.ColumnDefinitions>
        <StackPanel x:Name="GameUpscaleText" VerticalAlignment="Top" Margin="0,0,0,10"/>
        <Grid x:Name="GameUpscaleCell" Grid.Column="2" Height="12" VerticalAlignment="Top" Margin="0,0,0,10">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="8*"/>
          </Grid.ColumnDefinitions>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=display_settings.game_upscale, StringFormat=F2}" Style="{DynamicResource DefaultText}" TextAlignment="Center" VerticalAlignment="Center" FontSize="5"/>
          <Slider x:Name="GameUpscaleSlider" Value="{Binding Path=display_settings.game_upscale, Mode=TwoWay}" Template="{DynamicResource SettingsSlider}" Grid.Column="1" IsSnapToTickEnabled="True" SmallChange="0.25" TickFrequency="0.25" Minimum="0.25" Maximum="2" LargeChange="0.25">
            <b:Interaction.Triggers>
              <b:EventTrigger EventName="LostMouseCapture">
                <b:InvokeCommandAction Command="{Binding Path=display_settings.game_upscale_changed}" CommandParameter="1"/>
              </b:EventTrigger>
            </b:Interaction.Triggers>
          </Slider>
        </Grid>
        <StackPanel x:Name="UIScaleText" Grid.Row="1" VerticalAlignment="Top" Margin="0,0,0,10"/>
        <Grid x:Name="UIScaleCell" Grid.Column="2" Height="12" VerticalAlignment="Top" Grid.Row="1" Margin="0,0,0,10">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="8*"/>
          </Grid.ColumnDefinitions>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=display_settings.ui_scale, StringFormat=F1}" Style="{DynamicResource DefaultText}" TextAlignment="Center" VerticalAlignment="Center" FontSize="5"/>
          <Slider x:Name="UIScaleSlider" Value="{Binding Path=display_settings.ui_scale, Mode=TwoWay}" Template="{DynamicResource SettingsSlider}" IsSnapToTickEnabled="True" Minimum="0.8" Maximum="1.2" LargeChange="0.1" Grid.ColumnSpan="2" Margin="25,0,4,0" TickFrequency="0.1">
            <b:Interaction.Triggers>
              <b:EventTrigger EventName="LostMouseCapture">
                <b:InvokeCommandAction Command="{Binding Path=display_settings.ui_scale_changed}" CommandParameter="1"/>
              </b:EventTrigger>
            </b:Interaction.Triggers>
          </Slider>
        </Grid>
        <StackPanel x:Name="FullScreenToggleText" Grid.Row="2" VerticalAlignment="Top" Margin="0,0,0,10"/>
        <ToggleButton x:Name="FullScreenToggle" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Top" IsChecked="{Binding Path=display_settings.is_fullscreen, Mode=TwoWay}" Content="X" Command="{Binding Path=display_settings.is_fullscreen_changed}" CommandParameter="{Binding Path=display_settings.is_fullscreen}" Margin="0,0,0,10"/>
        <StackPanel x:Name="FullScreenRestText" Grid.Row="3" VerticalAlignment="Top" Margin="0,0,0,10"/>
        <ComboBox x:Name="FullScreenResComboBox" Grid.Row="3" Grid.Column="2" MaxDropDownHeight="200" VerticalAlignment="Top" IsSynchronizedWithCurrentItem="False" SelectedIndex="{Binding Path=display_settings.selected_resolution_index, Mode=TwoWay}" ScrollViewer.CanContentScroll="True" Margin="0,0,0,10">
          <b:Interaction.Triggers>
            <b:EventTrigger EventName="LostMouseCapture">
              <b:InvokeCommandAction Command="{Binding Path=display_settings.resolution_index_changed}" CommandParameter="1"/>
            </b:EventTrigger>
          </b:Interaction.Triggers>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
        </ComboBox>
        <StackPanel x:Name="FullScreenText001" Grid.Row="4" Margin="0,0,0,10"/>
        <ComboBox x:Name="FullScreenResComboBox001" Grid.Row="4" Grid.Column="2" MaxDropDownHeight="200" VerticalAlignment="Top" ScrollViewer.CanContentScroll="False" IsSynchronizedWithCurrentItem="False" SelectedIndex="{Binding Path=display_settings.selected_refresh_rate_index}" Margin="0,0,0,10">
          <b:Interaction.Triggers>
            <b:EventTrigger EventName="LostMouseCapture">
              <b:InvokeCommandAction Command="{Binding Path=display_settings.refresh_rate_index_changed}" CommandParameter="1"/>
            </b:EventTrigger>
          </b:Interaction.Triggers>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
          <ComboBoxItem Content="ComboBoxItem" Width="80"/>
        </ComboBox>
        <StackPanel x:Name="VerticalSyncText" Grid.Row="5" VerticalAlignment="Top" Grid.RowSpan="2" Margin="0,0,0,10"/>
        <ToggleButton Grid.Column="2" Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Top" IsChecked="{Binding Path=display_settings.vsync_enabled, Mode=TwoWay}" Content="X" Command="{Binding Path=display_settings.vsync_enabled_changed}" CommandParameter="{Binding Path=display_settings.vsync_enabled}" Margin="0,0,0,10"/>
      </Grid>
    </Grid>
  </noesis:LayoutScaler>
</Page>
PlatformAny

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2026-01-09 17:46 net8floz New Issue
2026-01-09 17:46 net8floz Description Updated
2026-01-12 12:37 jsantos Description Updated
2026-01-12 12:37 jsantos Assigned To => sfernandez
2026-01-12 12:37 jsantos Status new => assigned