From aa0d066944a48cad3b76880ee96e1b3796bbc4ee Mon Sep 17 00:00:00 2001 From: leo Date: Sat, 8 Feb 2025 14:55:55 +0800 Subject: [PATCH] enhance: move `Create New Page` button out of tab list if scroll arrow is visible (#958) Signed-off-by: leo --- src/Views/LauncherTabBar.axaml | 21 +++++++++++++++++++-- src/Views/LauncherTabBar.axaml.cs | 9 ++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/Views/LauncherTabBar.axaml b/src/Views/LauncherTabBar.axaml index 5be41a13..c957d134 100644 --- a/src/Views/LauncherTabBar.axaml +++ b/src/Views/LauncherTabBar.axaml @@ -7,7 +7,7 @@ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="SourceGit.Views.LauncherTabBar" x:DataType="vm:Launcher"> - + @@ -96,7 +96,8 @@ - diff --git a/src/Views/LauncherTabBar.axaml.cs b/src/Views/LauncherTabBar.axaml.cs index f8c9107c..129ce892 100644 --- a/src/Views/LauncherTabBar.axaml.cs +++ b/src/Views/LauncherTabBar.axaml.cs @@ -43,6 +43,9 @@ namespace SourceGit.Views if (containerEndX < startX || containerEndX > endX) continue; + if (OuterNewTabBtn.IsVisible && i == count - 1) + break; + var separatorX = containerEndX - startX + LauncherTabsScroller.Bounds.X; context.DrawLine(separatorPen, new Point(separatorX, separatorY), new Point(separatorX, separatorY + 20)); } @@ -88,7 +91,7 @@ namespace SourceGit.Views x = drawRightX - 6; } - if (drawRightX < LauncherTabsScroller.Bounds.Right) + if (drawRightX <= LauncherTabsScroller.Bounds.Right) { ctx.LineTo(new Point(x, y)); x = drawRightX; @@ -146,11 +149,15 @@ namespace SourceGit.Views LeftScrollIndicator.IsEnabled = LauncherTabsScroller.Offset.X > 0; RightScrollIndicator.IsVisible = true; RightScrollIndicator.IsEnabled = LauncherTabsScroller.Offset.X < LauncherTabsScroller.Extent.Width - LauncherTabsScroller.Viewport.Width; + InnerNewTabBtn.IsVisible = false; + OuterNewTabBtn.IsVisible = true; } else { LeftScrollIndicator.IsVisible = false; RightScrollIndicator.IsVisible = false; + InnerNewTabBtn.IsVisible = true; + OuterNewTabBtn.IsVisible = false; } InvalidateVisual();