Skip to content

Commit 1b2f556

Browse files
authored
Merge pull request #124 from gadfly3173/fix/launcher-tab
Enhance launcherTabsScroller scroll behavior
2 parents 3fffb0b + ed680bf commit 1b2f556

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

src/Resources/Styles.axaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,16 +230,16 @@
230230
<Setter Property="Background" Value="Red"/>
231231
</Style>
232232

233-
<Style Selector="Button.icon_button">
233+
<Style Selector="Button.icon_button, RepeatButton.icon_button">
234234
<Setter Property="BorderThickness" Value="0"/>
235235
<Setter Property="Background" Value="Transparent"/>
236236
<Setter Property="VerticalAlignment" Value="Center"/>
237237
</Style>
238-
<Style Selector="Button.icon_button /template/ ContentPresenter#PART_ContentPresenter">
238+
<Style Selector="Button.icon_button /template/ ContentPresenter#PART_ContentPresenter, RepeatButton.icon_button /template/ ContentPresenter#PART_ContentPresenter">
239239
<Setter Property="Background" Value="Transparent"/>
240240
<Setter Property="Opacity" Value="0.8"/>
241241
</Style>
242-
<Style Selector="Button.icon_button:pointerover /template/ ContentPresenter#PART_ContentPresenter">
242+
<Style Selector="Button.icon_button:pointerover /template/ ContentPresenter#PART_ContentPresenter, RepeatButton.icon_button:pointerover /template/ ContentPresenter#PART_ContentPresenter">
243243
<Setter Property="Opacity" Value="1"/>
244244
</Style>
245245

src/Views/Launcher.axaml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,18 @@
8686

8787
<!-- Pages Tabs-->
8888
<Grid x:Name="launcherTabsContainer" Grid.Column="1" Height="30" ColumnDefinitions="Auto,*,Auto" VerticalAlignment="Bottom" SizeChanged="UpdateScrollIndicator">
89-
<Button x:Name="leftScrollIndicator" Grid.Column="0" Classes="icon_button" Width="18" Height="30" Click="ScrollTabsLeft">
89+
<RepeatButton x:Name="leftScrollIndicator" Grid.Column="0" Classes="icon_button" Width="18" Height="30" Click="ScrollTabsLeft">
9090
<Path Width="8" Height="14" Stretch="Fill" Data="{StaticResource Icons.TriangleLeft}"/>
91-
</Button>
91+
</RepeatButton>
9292

9393
<ScrollViewer Grid.Column="1"
9494
x:Name="launcherTabsScroller"
9595
HorizontalScrollBarVisibility="Hidden"
9696
VerticalScrollBarVisibility="Disabled"
9797
DoubleTapped="MaximizeOrRestoreWindow"
9898
PointerPressed="BeginMoveWindow"
99-
PointerWheelChanged="ScrollTabs">
99+
PointerWheelChanged="ScrollTabs"
100+
ScrollChanged="OnTabsScrollChanged">
100101
<StackPanel x:Name="launcherTabsBar" Orientation="Horizontal" SizeChanged="UpdateScrollIndicator">
101102
<ListBox Classes="launcher_page_tabbar"
102103
ItemsSource="{Binding Pages}"
@@ -240,9 +241,9 @@
240241
</StackPanel>
241242
</ScrollViewer>
242243

243-
<Button x:Name="rightScrollIndicator" Grid.Column="2" Classes="icon_button" Width="18" Height="30" Click="ScrollTabsRight">
244+
<RepeatButton x:Name="rightScrollIndicator" Grid.Column="2" Classes="icon_button" Width="18" Height="30" Click="ScrollTabsRight">
244245
<Path Width="8" Height="14" Stretch="Fill" Data="{StaticResource Icons.TriangleRight}"/>
245-
</Button>
246+
</RepeatButton>
246247
</Grid>
247248

248249
<!-- Caption Buttons (Windows/Linux)-->

src/Views/Launcher.axaml.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private void ScrollTabs(object sender, PointerWheelEventArgs e)
232232
{
233233
if (e.Delta.Y < 0)
234234
launcherTabsScroller.LineRight();
235-
else
235+
else if (e.Delta.Y > 0)
236236
launcherTabsScroller.LineLeft();
237237
e.Handled = true;
238238
}
@@ -265,6 +265,15 @@ private void UpdateScrollIndicator(object sender, SizeChangedEventArgs e)
265265
e.Handled = true;
266266
}
267267

268+
private void OnTabsScrollChanged(object sender, ScrollChangedEventArgs e)
269+
{
270+
if (sender is ScrollViewer scrollViewer)
271+
{
272+
leftScrollIndicator.IsEnabled = scrollViewer.Offset.X > 0;
273+
rightScrollIndicator.IsEnabled = scrollViewer.Offset.X < scrollViewer.Extent.Width - scrollViewer.Viewport.Width;
274+
}
275+
}
276+
268277
private void SetupDragAndDrop(object sender, RoutedEventArgs e)
269278
{
270279
if (sender is Border border)

0 commit comments

Comments
 (0)