Skip to content

Commit 365c068

Browse files
committed
this fixes that random item reuse problem
1 parent 8418d6a commit 365c068

File tree

3 files changed

+44
-9
lines changed

3 files changed

+44
-9
lines changed

src/cascadia/TerminalApp/TasksPaneContent.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ namespace winrt::TerminalApp::implementation
3939

4040
// UpdateSettings(settings);
4141
}
42+
43+
4244
MUX::Controls::TreeViewNode _buildTreeViewNode(const Model::Command& task)
4345
{
4446
MUX::Controls::TreeViewNode item{};
@@ -52,6 +54,7 @@ namespace winrt::TerminalApp::implementation
5254
}
5355
return item;
5456
}
57+
5558
void TasksPaneContent::UpdateSettings(const CascadiaSettings& settings)
5659
{
5760
// _treeView().RootNodes().Clear();
@@ -71,6 +74,22 @@ namespace winrt::TerminalApp::implementation
7174
_treeView().ItemsSource(itemSource);
7275
}
7376

77+
void TasksPaneContent::_containerContentChanging(
78+
const Windows::UI::Xaml::Controls::ListViewBase& /*sender*/,
79+
const Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs& args)
80+
{
81+
const auto itemContainer = args.ItemContainer();
82+
if (args.InRecycleQueue() && itemContainer && itemContainer.ContentTemplate())
83+
{
84+
// _listViewItemsCache[itemContainer.ContentTemplate()].insert(itemContainer);
85+
itemContainer.DataContext(nullptr);
86+
}
87+
else
88+
{
89+
itemContainer.DataContext(args.Item());
90+
}
91+
}
92+
7493
winrt::Windows::UI::Xaml::FrameworkElement TasksPaneContent::GetRoot()
7594
{
7695
return *this;

src/cascadia/TerminalApp/TasksPaneContent.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ namespace winrt::TerminalApp::implementation
3838
til::typed_event<> FocusRequested;
3939

4040
private:
41+
friend struct TasksPaneContentT<TasksPaneContent>; // for Xaml to bind events
42+
4143
// winrt::Windows::UI::Xaml::Controls::Grid _root{ nullptr };
4244
// winrt::Microsoft::UI::Xaml::Controls::TreeView _treeView{ nullptr };
45+
46+
void _containerContentChanging(const Windows::UI::Xaml::Controls::ListViewBase& sender, const Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs& args);
4347
};
4448

4549
struct TaskViewModel : TaskViewModelT<TaskViewModel>
@@ -72,7 +76,7 @@ namespace winrt::TerminalApp::implementation
7276

7377
private:
7478
winrt::Microsoft::Terminal::Settings::Model::Command _command{ nullptr };
75-
winrt::Windows::Foundation::Collections::IObservableVector<TerminalApp::TaskViewModel> _children{};
79+
winrt::Windows::Foundation::Collections::IObservableVector<TerminalApp::TaskViewModel> _children{ nullptr };
7680
};
7781
}
7882

src/cascadia/TerminalApp/TasksPaneContent.xaml

+20-8
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
</DataTemplate>
3333
<DataTemplate x:Key="TaskItemTemplate"
3434
x:DataType="local:TaskViewModel">
35-
<mux:TreeViewItem x:Name="asdf"
36-
ItemsSource="{x:Bind Children}">
35+
<mux:TreeViewItem ItemsSource="{x:Bind Children}">
3736
<Grid>
3837
<Grid.RowDefinitions>
3938
<RowDefinition Height="*" />
@@ -59,30 +58,43 @@
5958
Fill="{ThemeResource SystemControlBackgroundBaseMediumBrush}"/>-->
6059
<TextBlock Grid.Column="1"
6160
Margin="12,6,0,0"
62-
x:Phase="1"
6361
Style="{ThemeResource BaseTextBlockStyle}"
6462
Text="{x:Bind Name, Mode=OneWay}" />
6563
<TextBlock Grid.Row="1"
6664
Grid.Column="1"
6765
Margin="12,0,0,6"
68-
x:Phase="2"
6966
MaxLines="1"
7067
Style="{ThemeResource BodyTextBlockStyle}"
71-
Text="{x:Bind Input}"
72-
Visibility="{Binding ElementName=asdf, Path=IsSelected}" />
68+
Text="{x:Bind Input}" />
7369
</Grid>
7470
</mux:TreeViewItem>
7571
</DataTemplate>
7672
</ResourceDictionary>
7773
</UserControl.Resources>
7874

79-
<StackPanel Orientation="Vertical">
75+
<Grid Background="Red">
76+
<Grid.RowDefinitions>
77+
<RowDefinition Height="Auto" />
78+
<RowDefinition Height="Auto" />
79+
<RowDefinition Height="*" />
80+
</Grid.RowDefinitions>
81+
8082
<TextBlock x:Name="_title"
83+
Grid.Row="0"
8184
Margin="9"
8285
FontSize="24"
8386
Text="Tasks" />
87+
88+
<TextBox x:Name="_filterBox"
89+
Grid.Row="1"
90+
Margin="8" />
91+
8492
<mux:TreeView x:Name="_treeView"
93+
Grid.Row="2"
94+
Background="Blue"
95+
CanDragItems="False"
96+
CanReorderItems="False"
8597
ItemTemplate="{StaticResource TaskItemTemplate}" />
86-
</StackPanel>
98+
</Grid>
8799

88100
</UserControl>

0 commit comments

Comments
 (0)