Skip to content

Commit

Permalink
this fixes that random item reuse problem
Browse files Browse the repository at this point in the history
  • Loading branch information
zadjii-msft committed Feb 19, 2024
1 parent 8418d6a commit 365c068
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 9 deletions.
19 changes: 19 additions & 0 deletions src/cascadia/TerminalApp/TasksPaneContent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ namespace winrt::TerminalApp::implementation

// UpdateSettings(settings);
}


MUX::Controls::TreeViewNode _buildTreeViewNode(const Model::Command& task)
{
MUX::Controls::TreeViewNode item{};
Expand All @@ -52,6 +54,7 @@ namespace winrt::TerminalApp::implementation
}
return item;
}

void TasksPaneContent::UpdateSettings(const CascadiaSettings& settings)
{
// _treeView().RootNodes().Clear();
Expand All @@ -71,6 +74,22 @@ namespace winrt::TerminalApp::implementation
_treeView().ItemsSource(itemSource);
}

void TasksPaneContent::_containerContentChanging(
const Windows::UI::Xaml::Controls::ListViewBase& /*sender*/,
const Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs& args)
{
const auto itemContainer = args.ItemContainer();
if (args.InRecycleQueue() && itemContainer && itemContainer.ContentTemplate())
{
// _listViewItemsCache[itemContainer.ContentTemplate()].insert(itemContainer);
itemContainer.DataContext(nullptr);
}
else
{
itemContainer.DataContext(args.Item());
}
}

winrt::Windows::UI::Xaml::FrameworkElement TasksPaneContent::GetRoot()
{
return *this;
Expand Down
6 changes: 5 additions & 1 deletion src/cascadia/TerminalApp/TasksPaneContent.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,12 @@ namespace winrt::TerminalApp::implementation
til::typed_event<> FocusRequested;

private:
friend struct TasksPaneContentT<TasksPaneContent>; // for Xaml to bind events

// winrt::Windows::UI::Xaml::Controls::Grid _root{ nullptr };
// winrt::Microsoft::UI::Xaml::Controls::TreeView _treeView{ nullptr };

void _containerContentChanging(const Windows::UI::Xaml::Controls::ListViewBase& sender, const Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs& args);
};

struct TaskViewModel : TaskViewModelT<TaskViewModel>
Expand Down Expand Up @@ -72,7 +76,7 @@ namespace winrt::TerminalApp::implementation

private:
winrt::Microsoft::Terminal::Settings::Model::Command _command{ nullptr };
winrt::Windows::Foundation::Collections::IObservableVector<TerminalApp::TaskViewModel> _children{};
winrt::Windows::Foundation::Collections::IObservableVector<TerminalApp::TaskViewModel> _children{ nullptr };
};
}

Expand Down
28 changes: 20 additions & 8 deletions src/cascadia/TerminalApp/TasksPaneContent.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@
</DataTemplate>
<DataTemplate x:Key="TaskItemTemplate"
x:DataType="local:TaskViewModel">
<mux:TreeViewItem x:Name="asdf"
ItemsSource="{x:Bind Children}">
<mux:TreeViewItem ItemsSource="{x:Bind Children}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
Expand All @@ -59,30 +58,43 @@
Fill="{ThemeResource SystemControlBackgroundBaseMediumBrush}"/>-->
<TextBlock Grid.Column="1"
Margin="12,6,0,0"
x:Phase="1"
Style="{ThemeResource BaseTextBlockStyle}"
Text="{x:Bind Name, Mode=OneWay}" />
<TextBlock Grid.Row="1"
Grid.Column="1"
Margin="12,0,0,6"
x:Phase="2"
MaxLines="1"
Style="{ThemeResource BodyTextBlockStyle}"
Text="{x:Bind Input}"
Visibility="{Binding ElementName=asdf, Path=IsSelected}" />
Text="{x:Bind Input}" />
</Grid>
</mux:TreeViewItem>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>

<StackPanel Orientation="Vertical">
<Grid Background="Red">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<TextBlock x:Name="_title"
Grid.Row="0"
Margin="9"
FontSize="24"
Text="Tasks" />

<TextBox x:Name="_filterBox"
Grid.Row="1"
Margin="8" />

<mux:TreeView x:Name="_treeView"
Grid.Row="2"
Background="Blue"
CanDragItems="False"
CanReorderItems="False"
ItemTemplate="{StaticResource TaskItemTemplate}" />
</StackPanel>
</Grid>

</UserControl>

0 comments on commit 365c068

Please sign in to comment.