Skip to content

Commit 2960476

Browse files
committed
holy fuck this is better than I imagined a week ago
1 parent 9300647 commit 2960476

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

src/cascadia/TerminalApp/TasksPaneContent.cpp

+17-7
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,31 @@ namespace winrt::TerminalApp::implementation
4444
//
4545
// huh. now that's a thought.
4646

47-
const auto tasks = _settings.GlobalSettings().ActionMap().FilterToSendInput(L""); // IVector<Model::Command>
48-
auto itemSource = winrt::single_threaded_observable_vector<TerminalApp::FilteredTask>();
49-
for (const auto& t : tasks)
47+
// const auto tasks = _settings.GlobalSettings().ActionMap().FilterToSendInput(L""); // IVector<Model::Command>
48+
// auto itemSource = winrt::single_threaded_observable_vector<TerminalApp::FilteredTask>();
49+
for (const auto& t : _allTasks)
5050
{
51-
const auto& filtered{ winrt::make<FilteredTask>(t) };
52-
filtered.UpdateFilter(queryString);
53-
itemSource.Append(filtered);
51+
// const auto& filtered{ winrt::make<FilteredTask>(t) };
52+
t.UpdateFilter(queryString);
53+
// itemSource.Append(filtered);
5454
}
5555

56-
_treeView().ItemsSource(itemSource);
56+
// _treeView().ItemsSource(itemSource);
5757
}
5858

5959
void TasksPaneContent::UpdateSettings(const CascadiaSettings& settings)
6060
{
6161
_settings = settings;
62+
63+
const auto tasks = _settings.GlobalSettings().ActionMap().FilterToSendInput(L""); // IVector<Model::Command>
64+
_allTasks = winrt::single_threaded_observable_vector<TerminalApp::FilteredTask>();
65+
for (const auto& t : tasks)
66+
{
67+
const auto& filtered{ winrt::make<FilteredTask>(t) };
68+
_allTasks.Append(filtered);
69+
}
70+
_treeView().ItemsSource(_allTasks);
71+
6272
_updateFilteredCommands();
6373
}
6474

src/cascadia/TerminalApp/TasksPaneContent.h

+15-3
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@ namespace winrt::TerminalApp::implementation
4848
friend struct TasksPaneContentT<TasksPaneContent>; // for Xaml to bind events
4949

5050
winrt::weak_ref<Microsoft::Terminal::Control::TermControl> _control{ nullptr };
51-
// std::vector<winrt::TerminalApp::TaskViewModel> _allCommands{};
5251
winrt::Microsoft::Terminal::Settings::Model::CascadiaSettings _settings{ nullptr };
5352

53+
winrt::Windows::Foundation::Collections::IObservableVector<TerminalApp::FilteredTask> _allTasks{ nullptr };
54+
5455
void _runCommandButtonClicked(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs&);
5556
void _filterTextChanged(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& args);
5657

@@ -124,6 +125,8 @@ namespace winrt::TerminalApp::implementation
124125
{
125126
c.UpdateFilter(filter);
126127
}
128+
129+
_PropertyChangedHandlers(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Visibility" });
127130
}
128131

129132
// static int Compare(const winrt::TerminalApp::FilteredCommand& first, const winrt::TerminalApp::FilteredCommand& second);
@@ -152,13 +155,22 @@ namespace winrt::TerminalApp::implementation
152155

153156
winrt::Windows::UI::Xaml::Visibility Visibility()
154157
{
155-
return (_Filter.empty() || _Weight > 0) ? winrt::Windows::UI::Xaml::Visibility::Visible : winrt::Windows::UI::Xaml::Visibility::Collapsed;
158+
if (_Filter.empty() || _Weight > 0)
159+
{
160+
return winrt::Windows::UI::Xaml::Visibility::Visible;
161+
}
162+
auto totalWeight = _Weight;
163+
for (const auto& c : _children)
164+
{
165+
totalWeight += c.Weight();
166+
}
167+
168+
return totalWeight > 0 ? winrt::Windows::UI::Xaml::Visibility::Visible : winrt::Windows::UI::Xaml::Visibility::Collapsed;
156169
};
157170

158171
private:
159172
winrt::Microsoft::Terminal::Settings::Model::Command _command{ nullptr };
160173
winrt::Windows::Foundation::Collections::IObservableVector<TerminalApp::FilteredTask> _children{ nullptr };
161-
162174
};
163175
}
164176

src/cascadia/TerminalApp/TasksPaneContent.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
x:DataType="local:FilteredTask">
3535
<mux:TreeViewItem x:Name="rootItem"
3636
ItemsSource="{x:Bind Children}"
37-
Visibility="{x:Bind Visibility}">
37+
Visibility="{x:Bind Visibility, Mode=OneWay}">
3838
<Grid>
3939
<Grid.RowDefinitions>
4040
<RowDefinition Height="*" />

0 commit comments

Comments
 (0)