34a6b1913c
Sets the tooltip text on the '+' button based on the keyboard modifiers when dragging and dropping. ## Validation Steps Performed Manually tested - dragged a directory onto the '+ button and saw that * The text changed when `shift` was pressed * The text changed when `alt` was pressed * The text changed back when `shift` or `alt` were released Closes #10722
86 lines
2.7 KiB
C++
86 lines
2.7 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
#include "pch.h"
|
|
#include "TabRowControl.h"
|
|
|
|
#include "TabRowControl.g.cpp"
|
|
#include <LibraryResources.h>
|
|
|
|
using namespace winrt::Windows::ApplicationModel::DataTransfer;
|
|
|
|
using namespace winrt;
|
|
using namespace winrt::Microsoft::UI::Xaml;
|
|
using namespace winrt::Windows::UI::Text;
|
|
|
|
namespace winrt
|
|
{
|
|
namespace MUX = Microsoft::UI::Xaml;
|
|
namespace WUX = Windows::UI::Xaml;
|
|
}
|
|
|
|
namespace winrt::TerminalApp::implementation
|
|
{
|
|
TabRowControl::TabRowControl()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
// Method Description:
|
|
// - Bound in the Xaml editor to the [+] button.
|
|
// Arguments:
|
|
// <unused>
|
|
void TabRowControl::OnNewTabButtonClick(IInspectable const&, Controls::SplitButtonClickEventArgs const&)
|
|
{
|
|
}
|
|
|
|
// Method Description:
|
|
// - Bound in Drag&Drop of the Xaml editor to the [+] button.
|
|
// Arguments:
|
|
// <unused>
|
|
void TabRowControl::OnNewTabButtonDrop(IInspectable const&, winrt::Windows::UI::Xaml::DragEventArgs const&)
|
|
{
|
|
}
|
|
|
|
// Method Description:
|
|
// - Bound in Drag-over of the Xaml editor to the [+] button.
|
|
// Allows drop of 'StorageItems' which will be used as StartingDirectory
|
|
// Arguments:
|
|
// - <unused>
|
|
// - e: DragEventArgs which hold the items
|
|
void TabRowControl::OnNewTabButtonDragOver(IInspectable const&, winrt::Windows::UI::Xaml::DragEventArgs const& e)
|
|
{
|
|
// We can only handle drag/dropping StorageItems (files).
|
|
// If the format on the clipboard is anything else, returning
|
|
// early here will prevent the drag/drop from doing anything.
|
|
if (!e.DataView().Contains(StandardDataFormats::StorageItems()))
|
|
{
|
|
return;
|
|
}
|
|
|
|
// Make sure to set the AcceptedOperation, so that we can later receive the path in the Drop event
|
|
e.AcceptedOperation(DataPackageOperation::Copy);
|
|
|
|
const auto modifiers = static_cast<uint32_t>(e.Modifiers());
|
|
if (WI_IsFlagSet(modifiers, static_cast<uint32_t>(DragDrop::DragDropModifiers::Alt)))
|
|
{
|
|
e.DragUIOverride().Caption(RS_(L"DropPathTabSplit/Text"));
|
|
}
|
|
else if (WI_IsFlagSet(modifiers, static_cast<uint32_t>(DragDrop::DragDropModifiers::Shift)))
|
|
{
|
|
e.DragUIOverride().Caption(RS_(L"DropPathTabNewWindow/Text"));
|
|
}
|
|
else
|
|
{
|
|
e.DragUIOverride().Caption(RS_(L"DropPathTabRun/Text"));
|
|
}
|
|
|
|
// Sets if the caption is visible
|
|
e.DragUIOverride().IsCaptionVisible(true);
|
|
// Sets if the dragged content is visible
|
|
e.DragUIOverride().IsContentVisible(false);
|
|
// Sets if the glyph is visible
|
|
e.DragUIOverride().IsGlyphVisible(false);
|
|
}
|
|
}
|