Skip to content

Commit

Permalink
A few small changes
Browse files Browse the repository at this point in the history
  • Loading branch information
teaP committed Aug 28, 2019
1 parent 891bfdb commit a26b7e1
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 52 deletions.
4 changes: 2 additions & 2 deletions dev/Generated/TabView.properties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ void TabViewProperties::EnsureProperties()
winrt::name_of<bool>(),
winrt::name_of<winrt::TabView>(),
false /* isAttached */,
ValueHelper<bool>::BoxValueIfNecessary(true),
ValueHelper<bool>::BoxValueIfNecessary(false),
nullptr);
}
if (!s_CanReorderTabsProperty)
Expand Down Expand Up @@ -116,7 +116,7 @@ void TabViewProperties::EnsureProperties()
winrt::name_of<int>(),
winrt::name_of<winrt::TabView>(),
false /* isAttached */,
ValueHelper<int>::BoxValueIfNecessary(-1),
ValueHelper<int>::BoxValueIfNecessary(0),
winrt::PropertyChangedCallback(&OnSelectedIndexPropertyChanged));
}
if (!s_SelectedItemProperty)
Expand Down
73 changes: 39 additions & 34 deletions dev/TabView/TabView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,14 +224,15 @@ void TabView::OnListViewLoaded(const winrt::IInspectable&, const winrt::RoutedEv
TabItems(lvItems);
}

if (ReadLocalValue(s_SelectedIndexProperty) != winrt::DependencyProperty::UnsetValue())
{
UpdateSelectedIndex();
}
if (ReadLocalValue(s_SelectedItemProperty) != winrt::DependencyProperty::UnsetValue())
{
UpdateSelectedItem();
}
else
{
// If SelectedItem wasn't set, default to selecting the first tab
UpdateSelectedIndex();
}

SelectedIndex(listView.SelectedIndex());
SelectedItem(listView.SelectedItem());
Expand Down Expand Up @@ -514,45 +515,49 @@ void TabView::UpdateTabWidths()
// Note: can be infinite
auto availableWidth = previousAvailableSize.Width - widthTaken;

if (TabWidthMode() == winrt::TabViewWidthMode::SizeToContent)
// Size can be 0 when window is first created; in that case, skip calculations; we'll get a new size soon
if (availableWidth > 0)
{
tabColumn.MaxWidth(availableWidth);
tabColumn.Width(winrt::GridLengthHelper::FromValueAndType(1.0, winrt::GridUnitType::Auto));
if (auto listview = m_listView.get())
if (TabWidthMode() == winrt::TabViewWidthMode::SizeToContent)
{
listview.MaxWidth(availableWidth);
winrt::FxScrollViewer::SetHorizontalScrollBarVisibility(listview, winrt::Windows::UI::Xaml::Controls::ScrollBarVisibility::Auto);
tabColumn.MaxWidth(availableWidth);
tabColumn.Width(winrt::GridLengthHelper::FromValueAndType(1.0, winrt::GridUnitType::Auto));
if (auto listview = m_listView.get())
{
listview.MaxWidth(availableWidth);
winrt::FxScrollViewer::SetHorizontalScrollBarVisibility(listview, winrt::Windows::UI::Xaml::Controls::ScrollBarVisibility::Auto);
}
}
}
else if (TabWidthMode() == winrt::TabViewWidthMode::Equal)
{
// Tabs should all be the same size, proportional to the amount of space.
double minTabWidth = unbox_value<double>(SharedHelpers::FindResource(c_tabViewItemMinWidthName, winrt::Application::Current().Resources(), box_value(c_tabMinimumWidth)));
double maxTabWidth = unbox_value<double>(SharedHelpers::FindResource(c_tabViewItemMaxWidthName, winrt::Application::Current().Resources(), box_value(c_tabMaximumWidth)));
else if (TabWidthMode() == winrt::TabViewWidthMode::Equal)
{
// Tabs should all be the same size, proportional to the amount of space.
double minTabWidth = unbox_value<double>(SharedHelpers::FindResource(c_tabViewItemMinWidthName, winrt::Application::Current().Resources(), box_value(c_tabMinimumWidth)));
double maxTabWidth = unbox_value<double>(SharedHelpers::FindResource(c_tabViewItemMaxWidthName, winrt::Application::Current().Resources(), box_value(c_tabMaximumWidth)));

// Calculate the proportional width of each tab given the width of the ScrollViewer.
auto padding = Padding();
double tabWidthForScroller = (availableWidth - (padding.Left + padding.Right)) / (double)(TabItems().Size());
// Calculate the proportional width of each tab given the width of the ScrollViewer.
auto padding = Padding();
double tabWidthForScroller = (availableWidth - (padding.Left + padding.Right)) / (double)(TabItems().Size());

tabWidth = std::clamp(tabWidthForScroller, minTabWidth, maxTabWidth);
tabWidth = std::clamp(tabWidthForScroller, minTabWidth, maxTabWidth);

// Size tab column to needed size
tabColumn.MaxWidth(availableWidth);
auto requiredWidth = tabWidth * TabItems().Size();
if (requiredWidth >= availableWidth)
{
tabColumn.Width(winrt::GridLengthHelper::FromPixels(availableWidth));
if (auto listview = m_listView.get())
// Size tab column to needed size
tabColumn.MaxWidth(availableWidth);
auto requiredWidth = tabWidth * TabItems().Size();
if (requiredWidth >= availableWidth)
{
winrt::FxScrollViewer::SetHorizontalScrollBarVisibility(listview, winrt::Windows::UI::Xaml::Controls::ScrollBarVisibility::Visible);
tabColumn.Width(winrt::GridLengthHelper::FromPixels(availableWidth));
if (auto listview = m_listView.get())
{
winrt::FxScrollViewer::SetHorizontalScrollBarVisibility(listview, winrt::Windows::UI::Xaml::Controls::ScrollBarVisibility::Visible);
}
}
}
else
{
tabColumn.Width(winrt::GridLengthHelper::FromValueAndType(1.0, winrt::GridUnitType::Auto));
if (auto listview = m_listView.get())
else
{
winrt::FxScrollViewer::SetHorizontalScrollBarVisibility(listview, winrt::Windows::UI::Xaml::Controls::ScrollBarVisibility::Hidden);
tabColumn.Width(winrt::GridLengthHelper::FromValueAndType(1.0, winrt::GridUnitType::Auto));
if (auto listview = m_listView.get())
{
winrt::FxScrollViewer::SetHorizontalScrollBarVisibility(listview, winrt::Windows::UI::Xaml::Controls::ScrollBarVisibility::Hidden);
}
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions dev/TabView/TabView.idl
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,14 @@ unsealed runtimeclass TabView : Windows.UI.Xaml.Controls.Control
Windows.UI.Xaml.DataTemplate TabItemTemplate;
Windows.UI.Xaml.Controls.DataTemplateSelector TabItemTemplateSelector{ get; set; };

[MUX_DEFAULT_VALUE("true")]
[MUX_DEFAULT_VALUE("false")]
Boolean CanDragTabs{ get; set; };
[MUX_DEFAULT_VALUE("true")]
Boolean CanReorderTabs{ get; set; };
[MUX_DEFAULT_VALUE("true")]
Boolean AllowDropTabs{ get; set; };

[MUX_DEFAULT_VALUE("-1")]
[MUX_DEFAULT_VALUE("0")]
[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
Int32 SelectedIndex;

Expand Down
11 changes: 3 additions & 8 deletions dev/TabView/TabView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@
<Style x:Name="TabViewButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{ThemeResource TabViewItemHeaderBackground}"/>
<Setter Property="Foreground" Value="{ThemeResource SystemControlBackgroundBaseMediumBrush}"/>
<Setter Property="CornerRadius" Value="{ThemeResource TabViewItemCornerRadius}"/>
<Setter Property="CornerRadius" Value="{Binding Source={ThemeResource OverlayCornerRadius}, Converter={StaticResource TopCornerRadiusFilterConverter}}"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="FontFamily" Value="Segoe MDL2 Assets"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
Expand Down Expand Up @@ -304,39 +304,34 @@
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundPointerOver}" />
<Setter Target="IconControl.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPointerOver}" />
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPointerOver}" />
</VisualState.Setters>
</VisualState>

<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundPressed}" />
<Setter Target="IconControl.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPressed}" />
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPressed}" />
</VisualState.Setters>
</VisualState>

<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundSelected}" />
<Setter Target="IconControl.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundSelected}" />
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundSelected}" />
</VisualState.Setters>
</VisualState>

<VisualState x:Name="PointerOverSelected">
<VisualState.Setters>
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundSelected}" />
<Setter Target="IconControl.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPointerOver}" />
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPointerOver}" />
</VisualState.Setters>
</VisualState>

<VisualState x:Name="PressedSelected">
<VisualState.Setters>
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundSelected}" />
<Setter Target="IconControl.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPressed}" />
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource TabViewItemHeaderForegroundPressed}" />
</VisualState.Setters>
</VisualState>
Expand Down Expand Up @@ -490,7 +485,7 @@
BorderThickness="{TemplateBinding BorderThickness}"
Control.IsTemplateFocusTarget="True"
Padding="{ThemeResource TabViewItemHeaderPadding}"
CornerRadius="{ThemeResource TabViewItemCornerRadius}"
CornerRadius="{Binding Source={ThemeResource OverlayCornerRadius}, Converter={StaticResource TopCornerRadiusFilterConverter}}"
FocusVisualMargin="{TemplateBinding FocusVisualMargin}">

<Grid.ColumnDefinitions>
Expand All @@ -506,7 +501,7 @@
<ContentControl x:Name="IconControl"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TabViewTemplateSettings.IconElement}"
IsTabStop="False"
Foreground="{TemplateBinding Foreground}" />
Foreground="{ThemeResource TabViewItemIconForeground}" />
</Viewbox>

<ContentPresenter x:Name="ContentPresenter"
Expand Down
8 changes: 5 additions & 3 deletions dev/TabView/TabView_themeresources.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<StaticResource x:Key="TabViewBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
<StaticResource x:Key="TabViewBackground" ResourceKey="SystemControlBackgroundListLowBrush" />
<StaticResource x:Key="TabViewItemHeaderBackground" ResourceKey="SystemControlTransparentBrush" />
<StaticResource x:Key="TabViewItemHeaderBackgroundSelected" ResourceKey="SystemControlBackgroundAltHighBrush" />
<StaticResource x:Key="TabViewItemHeaderBackgroundPointerOver" ResourceKey="SystemAltMediumLowColor" />
Expand All @@ -16,6 +16,7 @@
<StaticResource x:Key="TabViewItemHeaderForegroundSelected" ResourceKey="SystemControlForegroundBaseHighBrush" />
<StaticResource x:Key="TabViewItemHeaderForegroundPointerOver" ResourceKey="SystemControlForegroundBaseHighBrush" />
<StaticResource x:Key="TabViewItemHeaderForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
<StaticResource x:Key="TabViewItemIconForeground" ResourceKey="SystemControlForegroundBaseMediumBrush" />
<StaticResource x:Key="TabViewItemSeparator" ResourceKey="SystemControlForegroundBaseLowBrush" />
</ResourceDictionary>

Expand All @@ -30,6 +31,7 @@
<StaticResource x:Key="TabViewItemHeaderForegroundSelected" ResourceKey="SystemControlForegroundBaseHighBrush" />
<StaticResource x:Key="TabViewItemHeaderForegroundPointerOver" ResourceKey="SystemControlForegroundBaseHighBrush" />
<StaticResource x:Key="TabViewItemHeaderForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
<StaticResource x:Key="TabViewItemIconForeground" ResourceKey="SystemControlForegroundBaseMediumBrush" />
<StaticResource x:Key="TabViewItemSeparator" ResourceKey="SystemControlForegroundBaseLowBrush" />
</ResourceDictionary>

Expand All @@ -44,20 +46,20 @@
<StaticResource x:Key="TabViewItemHeaderForegroundSelected" ResourceKey="SystemControlForegroundBaseHighBrush" />
<StaticResource x:Key="TabViewItemHeaderForegroundPointerOver" ResourceKey="SystemControlForegroundBaseHighBrush" />
<StaticResource x:Key="TabViewItemHeaderForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
<StaticResource x:Key="TabViewItemIconForeground" ResourceKey="SystemControlForegroundBaseMediumBrush" />
<StaticResource x:Key="TabViewItemSeparator" ResourceKey="SystemControlForegroundBaseLowBrush" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>

<Thickness x:Key="TabViewHeaderPadding">8,8,0,0</Thickness>
<CornerRadius x:Key="TabViewItemCornerRadius">4,4,0,0</CornerRadius>
<Thickness x:Key="TabViewItemHeaderPadding">12,8,10,8</Thickness>

<x:Double x:Key="TabViewItemMaxWidth">240</x:Double>
<x:Double x:Key="TabViewItemMinWidth">100</x:Double>

<x:Double x:Key="TabViewItemHeaderFontSize">12</x:Double>
<x:Double x:Key="TabViewItemHeaderIconSize">16</x:Double>
<Thickness x:Key="TabViewItemHeaderIconMargin">0,0,8,0</Thickness>
<Thickness x:Key="TabViewItemHeaderIconMargin">0,0,10,0</Thickness>

<x:Double x:Key="TabViewItemHeaderCloseButtonSize">16</x:Double>
<x:Double x:Key="TabViewItemHeaderCloseFontSize">12</x:Double>
Expand Down
6 changes: 3 additions & 3 deletions dev/TabView/TestUI/TabViewPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
<controls:TabView
x:Name="Tabs"
TabWidthMode="Equal"
SelectedIndex="0"
CanDragTabs="True"
SelectionChanged="TabViewSelectionChanged"
TabCloseRequested="TabViewTabCloseRequested"
TabDragStarting="OnTabDragStarting"
Expand Down Expand Up @@ -159,7 +159,7 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<controls:TabView x:Name="DataBindingTabView" IsAddTabButtonVisible="false" Background="#66336699">
<controls:TabView x:Name="DataBindingTabView" IsAddTabButtonVisible="false" Background="#66336699" SelectedIndex="2">
<controls:TabView.TabItemTemplate>
<DataTemplate x:DataType="local:TabDataItem">
<controls:TabViewItem Header="{x:Bind Header}" IconSource="{x:Bind IconSource}" Content="{x:Bind Content}">
Expand All @@ -179,7 +179,7 @@

<controls:TabView x:Name="SecondTabView"
Grid.Column="2"
SelectedIndex="0"
CanDragTabs="True"
IsAddTabButtonVisible="false"
TabDragStarting="OnTabDragStarting"
TabStripDragOver="OnTabStripDragOver"
Expand Down

0 comments on commit a26b7e1

Please sign in to comment.