diff --git a/Ink Canvas/Controls/Toolbar/ToolbarRegistry.cs b/Ink Canvas/Controls/Toolbar/ToolbarRegistry.cs
index 46d94d17..e0deb13d 100644
--- a/Ink Canvas/Controls/Toolbar/ToolbarRegistry.cs
+++ b/Ink Canvas/Controls/Toolbar/ToolbarRegistry.cs
@@ -99,10 +99,15 @@ namespace Ink_Canvas.Controls.Toolbar
visible = cfg.Visible;
try
{
- var menuElement = host.Window.FindName(item.MenuPanelName) as FrameworkElement;
- if (menuElement != null)
+ var menuElement = host.Window.FindName(item.MenuPanelName);
+ if (menuElement is System.Windows.Controls.Primitives.Popup popup)
{
- menuElement.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
+ popup.IsOpen = visible;
+ LogHelper.WriteLogToFile($"ToolbarRegistry: 菜单 Popup [{item.MenuPanelName}] -> {(visible ? "Open" : "Closed")}", LogHelper.LogType.Info);
+ }
+ else if (menuElement is FrameworkElement fe)
+ {
+ fe.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
LogHelper.WriteLogToFile($"ToolbarRegistry: 菜单 [{item.MenuPanelName}] -> {(visible ? "Visible" : "Collapsed")}", LogHelper.LogType.Info);
}
else
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 59f15ff6..b291a5ca 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -2985,53 +2985,53 @@
-
-
-
-
+
+
+
+
-
+
+ Foreground="#DC2626" FontSize="12" VerticalAlignment="Center"
+ MouseDown="Border_MouseDown"
+ MouseUp="CloseBordertools_MouseUp" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index 62990d77..dd0c9bee 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -108,10 +108,17 @@ namespace Ink_Canvas
PopupPrimaryAxis.Vertical)
};
+ BorderTools.CustomPopupPlacementCallback =
+ (popupSize, targetSize, offset) => new[]
+ {
+ new CustomPopupPlacement(
+ new Point(targetSize.Width / 2 - popupSize.Width / 2, -popupSize.Height),
+ PopupPrimaryAxis.Vertical)
+ };
BlackboardLeftSide.Visibility = Visibility.Collapsed;
BlackboardCenterSide.Visibility = Visibility.Collapsed;
BlackboardRightSide.Visibility = Visibility.Collapsed;
- BorderTools.Visibility = Visibility.Collapsed;
+ BorderTools.IsOpen = false;
LeftSidePanelForPPTNavigation.Visibility = Visibility.Collapsed;
RightSidePanelForPPTNavigation.Visibility = Visibility.Collapsed;
TwoFingerGestureBorder.Visibility = Visibility.Collapsed;
diff --git a/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs b/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs
index e350ac1c..0e040f01 100644
--- a/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs
+++ b/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs
@@ -34,7 +34,7 @@ namespace Ink_Canvas
else
{
AnimationsHelper.HideWithSlideAndFade(EraserSizePanel);
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(PenPalette);
AnimationsHelper.HideWithSlideAndFade(BoardPenPalette);
diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
index 4703f75d..2a4ed97e 100644
--- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
+++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
@@ -294,7 +294,7 @@ namespace Ink_Canvas
///
private void HideSubPanelsImmediately()
{
- BorderTools.Visibility = Visibility.Collapsed;
+ BorderTools.IsOpen = false;
BoardBorderToolsPopup.IsOpen = false;
PenPalette.Visibility = Visibility.Collapsed;
BoardPenPalette.Visibility = Visibility.Collapsed;
@@ -376,7 +376,7 @@ namespace Ink_Canvas
///
internal async void HideSubPanels(string mode = null, bool autoAlignCenter = false)
{
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(PenPalette);
AnimationsHelper.HideWithSlideAndFade(BoardPenPalette);
@@ -1099,7 +1099,7 @@ namespace Ink_Canvas
{
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
@@ -1151,7 +1151,7 @@ namespace Ink_Canvas
/// 路由事件参数
private void OperatingGuideWindowIcon_MouseUp(object sender, MouseButtonEventArgs e)
{
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
@@ -1171,7 +1171,7 @@ namespace Ink_Canvas
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
@@ -1306,7 +1306,7 @@ namespace Ink_Canvas
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
@@ -1385,7 +1385,7 @@ namespace Ink_Canvas
{
//if (lastBorderMouseDownObject != sender) return;
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel);
@@ -1687,9 +1687,9 @@ namespace Ink_Canvas
/// 鼠标按钮事件参数
internal void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e)
{
- if (BorderTools.Visibility == Visibility.Visible || BoardBorderToolsPopup.IsOpen)
+ if (BorderTools.IsOpen || BoardBorderToolsPopup.IsOpen)
{
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
}
else
@@ -1697,8 +1697,7 @@ namespace Ink_Canvas
HideSubPanels();
if (currentMode == 0)
{
- UpdateBorderToolsPosition();
- AnimationsHelper.ShowWithSlideFromBottomAndFade(BorderTools);
+ AnimationsHelper.ShowPopupWithSlideAndFade(BorderTools);
}
else
{
diff --git a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs
index 30350ef6..7415c18e 100644
--- a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs
@@ -98,7 +98,7 @@ namespace Ink_Canvas
{
if (lastBorderMouseDownObject != sender || inkCanvas.Visibility != Visibility.Visible) return;
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
GridNotifications.Visibility = Visibility.Collapsed;
@@ -916,7 +916,7 @@ namespace Ink_Canvas
private void SymbolIconOpenStrokes_MouseUp(object sender, MouseButtonEventArgs e)
{
if (lastBorderMouseDownObject != sender) return;
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HidePopupWithSlideAndFade(BorderTools);
AnimationsHelper.HidePopupWithSlideAndFade(BoardBorderToolsPopup);
var openFileDialog = new OpenFileDialog();
diff --git a/Ink Canvas/MainWindow_cs/MW_Toolbar.cs b/Ink Canvas/MainWindow_cs/MW_Toolbar.cs
index 30f8204d..95c36458 100644
--- a/Ink Canvas/MainWindow_cs/MW_Toolbar.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Toolbar.cs
@@ -32,7 +32,11 @@ namespace Ink_Canvas
internal void AttachSymbolIconRedo(ToolbarImageButton btn) => SymbolIconRedo = btn;
internal void AttachCursorWithDelBtn(ToolbarImageButton btn) => CursorWithDelFloatingBarBtn = btn;
internal void AttachWhiteboardBtn(ToolbarImageButton btn) => WhiteboardFloatingBarBtn = btn;
- internal void AttachToolsBtn(ToolbarImageButton btn) => ToolsFloatingBarBtn = btn;
+ internal void AttachToolsBtn(ToolbarImageButton btn)
+ {
+ ToolsFloatingBarBtn = btn;
+ BorderTools.PlacementTarget = btn;
+ }
internal void AttachFoldIcon(ToolbarImageButton btn) => Fold_Icon = btn;
internal void InitializeToolbarPlugins()