Skip to content

Commit

Permalink
[broken] drag and drop don't work
Browse files Browse the repository at this point in the history
  • Loading branch information
carlos-zamora committed Sep 20, 2024
1 parent 0e304d8 commit 2cef0c1
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 8 deletions.
55 changes: 52 additions & 3 deletions src/cascadia/TerminalSettingsEditor/NewTabMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,60 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
_ViewModel = e.Parameter().as<Editor::NewTabMenuViewModel>();
}

void NewTabMenu::FolderNameTextBox_TextChanged(const IInspectable& sender, const Controls::TextChangedEventArgs& /*e*/)
{
void NewTabMenu::FolderNameTextBox_TextChanged(const IInspectable& sender, const Controls::TextChangedEventArgs& /*e*/)
{
const auto isTextEmpty = sender.as<Controls::TextBox>().Text().empty();
AddFolderButton().IsEnabled(!isTextEmpty);
}
}

void NewTabMenu::TreeView_DragItemsStarting(const winrt::Microsoft::UI::Xaml::Controls::TreeView& /*sender*/, const winrt::Microsoft::UI::Xaml::Controls::TreeViewDragItemsStartingEventArgs& e)
{
_draggedEntry = e.Items().GetAt(0).as<Editor::NewTabMenuEntryViewModel>();
}

void NewTabMenu::TreeView_DragOver(const IInspectable& /*sender*/, const winrt::Windows::UI::Xaml::DragEventArgs& e)
{
e.AcceptedOperation(Windows::ApplicationModel::DataTransfer::DataPackageOperation::Move);
OutputDebugString(L"TreeView_DragOver\n");
}

void NewTabMenu::TreeView_Drop(const IInspectable& /*sender*/, const winrt::Windows::UI::Xaml::DragEventArgs& /*e*/)
{
OutputDebugString(L"TreeView_Drop\n");
}

void NewTabMenu::TreeView_DragItemsCompleted(const winrt::Microsoft::UI::Xaml::Controls::TreeView& /*sender*/, const winrt::Microsoft::UI::Xaml::Controls::TreeViewDragItemsCompletedEventArgs& /*e*/)
{
_draggedEntry = nullptr;
}

void NewTabMenu::TreeViewItem_DragOver(const IInspectable& /*sender*/, const DragEventArgs& e)
{
e.AcceptedOperation(Windows::ApplicationModel::DataTransfer::DataPackageOperation::Move);
}

void NewTabMenu::TreeViewItem_Drop(const IInspectable& sender, const DragEventArgs& /*e*/)
{
auto element = sender.as<FrameworkElement>();
auto entry = element.DataContext().as<Editor::NewTabMenuEntryViewModel>();
if (entry.Type() == NewTabMenuEntryType::Folder)
{
// add to the current folder
auto folderEntry = entry.as<Editor::FolderEntryViewModel>();
folderEntry.Entries().Append(_draggedEntry);
}
else
{
// create a parent folder and add both entries to it
// TODO CARLOS: localize
auto folderEntry = winrt::make<FolderEntryViewModel>(FolderEntry{ L"New Folder" });
folderEntry.Entries().Append(entry);
folderEntry.Entries().Append(_draggedEntry);

// TODO CARLOS: this is wrong, we should be placing the folder in the same place as before, but we're testing this stuff out
_ViewModel.Entries().Append(folderEntry);
}
}

DataTemplate NewTabMenuEntryTemplateSelector::SelectTemplateCore(const IInspectable& item, const DependencyObject& /*container*/)
{
Expand Down
10 changes: 10 additions & 0 deletions src/cascadia/TerminalSettingsEditor/NewTabMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,21 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
void OnNavigatedTo(const winrt::Windows::UI::Xaml::Navigation::NavigationEventArgs& e);
void FolderNameTextBox_TextChanged(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::UI::Xaml::Controls::TextChangedEventArgs& e);

void TreeView_DragItemsStarting(const winrt::Microsoft::UI::Xaml::Controls::TreeView& sender, const winrt::Microsoft::UI::Xaml::Controls::TreeViewDragItemsStartingEventArgs& e);
void TreeView_DragOver(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::UI::Xaml::DragEventArgs& e);
void TreeView_Drop(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::UI::Xaml::DragEventArgs& e);
void TreeView_DragItemsCompleted(const winrt::Microsoft::UI::Xaml::Controls::TreeView& sender, const winrt::Microsoft::UI::Xaml::Controls::TreeViewDragItemsCompletedEventArgs& e);

void TreeViewItem_DragOver(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::UI::Xaml::DragEventArgs& e);
void TreeViewItem_Drop(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::UI::Xaml::DragEventArgs& e);

WINRT_CALLBACK(PropertyChanged, Windows::UI::Xaml::Data::PropertyChangedEventHandler);
WINRT_OBSERVABLE_PROPERTY(Editor::NewTabMenuViewModel, ViewModel, _PropertyChangedHandlers, nullptr);

private:
Editor::NewTabMenuEntryTemplateSelector _entryTemplateSelector{ nullptr };

Editor::NewTabMenuEntryViewModel _draggedEntry{ nullptr };
};

struct NewTabMenuEntryTemplateSelector : public NewTabMenuEntryTemplateSelectorT<NewTabMenuEntryTemplateSelector>
Expand Down
24 changes: 19 additions & 5 deletions src/cascadia/TerminalSettingsEditor/NewTabMenu.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@

<DataTemplate x:Key="ProfileEntryTemplate"
x:DataType="local:ProfileEntryViewModel">
<muxc:TreeViewItem AutomationProperties.Name="{x:Bind ProfileEntry.Profile.Name, Mode=OneWay}">
<muxc:TreeViewItem AutomationProperties.Name="{x:Bind ProfileEntry.Profile.Name, Mode=OneWay}"
DragOver="TreeViewItem_DragOver"
Drop="TreeViewItem_Drop">
<muxc:TreeViewItem.Content>
<StackPanel Orientation="Horizontal"
Spacing="10">
Expand All @@ -52,7 +54,9 @@
<DataTemplate x:Key="SeparatorEntryTemplate"
x:DataType="local:SeparatorEntryViewModel">
<muxc:TreeViewItem x:Uid="NewTabMenuEntry_Separator"
FontStyle="Italic"/>
FontStyle="Italic"
DragOver="TreeViewItem_DragOver"
Drop="TreeViewItem_Drop"/>
</DataTemplate>

<!-- TODO CARLOS: I'm using TreeViewItem.ItemsSource to recursively define
Expand All @@ -65,7 +69,9 @@
x:DataType="local:FolderEntryViewModel">
<muxc:TreeViewItem AutomationProperties.Name="{x:Bind Name, Mode=OneWay}"
ItemsSource="{x:Bind Entries, Mode=TwoWay}"
IsExpanded="True">
IsExpanded="True"
DragOver="TreeViewItem_DragOver"
Drop="TreeViewItem_Drop">
<muxc:TreeViewItem.Content>
<StackPanel Orientation="Horizontal" Spacing="10">
<!--<Image Source="{x:Bind Icon}"
Expand All @@ -80,13 +86,17 @@
<DataTemplate x:Key="MatchProfilesEntryTemplate"
x:DataType="local:MatchProfilesEntryViewModel">
<muxc:TreeViewItem FontStyle="Italic"
Content="{x:Bind DisplayText, Mode=OneWay}"/>
Content="{x:Bind DisplayText, Mode=OneWay}"
DragOver="TreeViewItem_DragOver"
Drop="TreeViewItem_Drop"/>
</DataTemplate>

<DataTemplate x:Key="RemainingProfilesEntryTemplate"
x:DataType="local:RemainingProfilesEntryViewModel">
<muxc:TreeViewItem x:Uid="NewTabMenuEntry_RemainingProfiles"
FontStyle="Italic"/>
FontStyle="Italic"
DragOver="TreeViewItem_DragOver"
Drop="TreeViewItem_Drop"/>
</DataTemplate>

<local:NewTabMenuEntryTemplateSelector x:Key="NewTabMenuEntryTemplateSelector"
Expand Down Expand Up @@ -120,6 +130,10 @@
CanDragItems="True"
CanReorderItems="True"
SelectionMode="None"
DragItemsStarting="TreeView_DragItemsStarting"
DragOver="TreeView_DragOver"
Drop="TreeView_Drop"
DragItemsCompleted="TreeView_DragItemsCompleted"
ItemsSource="{x:Bind ViewModel.Entries, Mode=OneWay}"
ItemTemplateSelector="{StaticResource NewTabMenuEntryTemplateSelector}"/>
</Border>
Expand Down

1 comment on commit 2cef0c1

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@check-spelling-bot Report

🔴 Please review

See the 📜action log or 📝 job summary for details.

Unrecognized words (1)

Profiels

Previously acknowledged words that are now absent vtio vtpt 🫥
To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/terminal.git repository
on the dev/cazamor/SUI/newTabMenu branch (ℹ️ how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/v0.0.22/apply.pl' |
perl - 'https://github.com/microsoft/terminal/actions/runs/10964190817/attempts/1'
Available 📚 dictionaries could cover words (expected and unrecognized) not in the 📘 dictionary

This includes both expected items (2221) from .github/actions/spelling/expect/04cdb9b77d6827c0202f51acd4205b017015bfff.txt
.github/actions/spelling/expect/alphabet.txt
.github/actions/spelling/expect/expect.txt
.github/actions/spelling/expect/web.txt and unrecognized words (1)

Dictionary Entries Covers Uniquely
cspell:cpp/src/lang-jargon.txt 11 1 1
cspell:swift/src/swift.txt 53 1 1
cspell:gaming-terms/dict/gaming-terms.txt 59 1 1
cspell:monkeyc/src/monkeyc_keywords.txt 123 1 1
cspell:cryptocurrencies/cryptocurrencies.txt 125 1 1

Consider adding them (in .github/workflows/spelling2.yml) for uses: check-spelling/[email protected] in its with:

      with:
        extra_dictionaries:
          cspell:cpp/src/lang-jargon.txt
          cspell:swift/src/swift.txt
          cspell:gaming-terms/dict/gaming-terms.txt
          cspell:monkeyc/src/monkeyc_keywords.txt
          cspell:cryptocurrencies/cryptocurrencies.txt

To stop checking additional dictionaries, add (in .github/workflows/spelling2.yml) for uses: check-spelling/[email protected] in its with:

check_extra_dictionaries: ''
Errors (1)

See the 📜action log or 📝 job summary for details.

❌ Errors Count
❌ ignored-expect-variant 6

See ❌ Event descriptions for more information.

✏️ Contributor please read this

By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.

If the listed items are:

  • ... misspelled, then please correct them instead of using the command.
  • ... names, please add them to .github/actions/spelling/allow/names.txt.
  • ... APIs, you can add them to a file in .github/actions/spelling/allow/.
  • ... just things you're using, please add them to an appropriate file in .github/actions/spelling/expect/.
  • ... tokens you only need in one place and shouldn't generally be used, you can add an item in an appropriate file in .github/actions/spelling/patterns/.

See the README.md in each directory for more information.

🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

Please sign in to comment.