Browse Source

Flyout fixes

Krzysztof Krysiński 2 years ago
parent
commit
4b6b3c317e

+ 6 - 6
src/PixiEditor/Views/TogglableFlyout.xaml

@@ -9,8 +9,8 @@
              mc:Ignorable="d"
              mc:Ignorable="d"
              d:DesignHeight="380" d:DesignWidth="200" Name="togglableFlyout">
              d:DesignHeight="380" d:DesignWidth="200" Name="togglableFlyout">
     <Border Background="Transparent">
     <Border Background="Transparent">
-        <Grid>
-            <Border Background="#C8202020" CornerRadius="5" Padding="5" x:Name="btnBorder">
+        <StackPanel Orientation="Vertical">
+            <Border HorizontalAlignment="Right" Background="#C8202020" CornerRadius="5" Padding="5" x:Name="btnBorder">
                 <ToggleButton Padding="0" Margin="0" ToolTip="{Binding ElementName=togglableFlyout, Path=ToolTip}"
                 <ToggleButton Padding="0" Margin="0" ToolTip="{Binding ElementName=togglableFlyout, Path=ToolTip}"
                               x:Name="toggleButton" BorderThickness="0" Width="24" Height="24" Background="Transparent">
                               x:Name="toggleButton" BorderThickness="0" Width="24" Height="24" Background="Transparent">
                     <ToggleButton.Template>
                     <ToggleButton.Template>
@@ -52,9 +52,9 @@
                     </ToggleButton.Template>
                     </ToggleButton.Template>
                 </ToggleButton>
                 </ToggleButton>
             </Border>
             </Border>
-            <userControls:NestedPopup AllowsTransparency="True" x:Name="popup" StaysOpen="True" IsOpen="{Binding Path=IsChecked, ElementName=toggleButton, Mode=TwoWay}" 
-                   Child="{Binding ElementName=togglableFlyout, Path=Child}" 
-                   PopupAnimation="Fade" PlacementTarget="{Binding ElementName=btnBorder}"/>
-        </Grid>
+            <ContentControl x:Name="popup" DataContext="{Binding ElementName=togglableFlyout}"
+                              Visibility="{Binding Path=IsChecked, ElementName=toggleButton, Converter={converters:BoolToVisibilityConverter}}" 
+                   Content="{Binding ElementName=togglableFlyout, Path=Child}" />
+        </StackPanel>
     </Border>
     </Border>
 </UserControl>
 </UserControl>

+ 0 - 52
src/PixiEditor/Views/UserControls/NestedPopup.cs

@@ -1,52 +0,0 @@
-using System.Runtime.InteropServices;
-using System.Windows;
-using System.Windows.Controls.Primitives;
-using System.Windows.Interop;
-using PixiEditor.DrawingApi.Core.Numerics;
-
-namespace PixiEditor.Views.UserControls;
-
-public class NestedPopup : Popup
-{
-    public static DependencyProperty TopmostProperty = Window.TopmostProperty.AddOwner(
-        typeof(NestedPopup),
-        new FrameworkPropertyMetadata( false, OnTopmostChanged ) );
-
-    public bool Topmost
-    {
-        get { return (bool)GetValue( TopmostProperty ); }
-        set { SetValue( TopmostProperty, value ); }
-    }
-
-    private static void OnTopmostChanged( DependencyObject obj, DependencyPropertyChangedEventArgs e )
-    {
-        (obj as NestedPopup)?.UpdateWindow();
-    }
-
-    protected override void OnOpened( EventArgs e )
-    {
-        UpdateWindow();
-    }
-
-    private void UpdateWindow()
-    {
-        var hwnd = ((HwndSource)PresentationSource.FromVisual(this.Child)).Handle;
-        RectI rect;
-
-        if (GetWindowRect(hwnd, out rect))
-        {
-            SetWindowPos(hwnd, Topmost ? -1 : -2, rect.Left, rect.Top, (int)this.Width, (int)this.Height, 0);
-        }
-    }
-
-    #region P/Invoke imports & definitions
-
-    [DllImport( "user32.dll" )]
-    [return: MarshalAs( UnmanagedType.Bool )]
-    private static extern bool GetWindowRect(IntPtr hWnd, out RectI lpRect);
-
-    [DllImport( "user32", EntryPoint = "SetWindowPos" )]
-    private static extern int SetWindowPos( IntPtr hWnd, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlags );
-
-    #endregion
-}