Skip to content

Commit

Permalink
Address feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
lhecker committed Dec 18, 2021
1 parent 21e912d commit 1bf8011
Show file tree
Hide file tree
Showing 24 changed files with 257 additions and 345 deletions.
38 changes: 19 additions & 19 deletions src/cascadia/TerminalControl/ControlInteractivity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// Return Value:
// - if the click is in the same position as the last click and within the timeout, the number of clicks within that time window
// - otherwise, 1
unsigned int ControlInteractivity::_numberOfClicks(til::point clickPos,
unsigned int ControlInteractivity::_numberOfClicks(Core::Point clickPos,
Timestamp clickTime)
{
// if click occurred at a different location or past the multiClickTimer...
Expand Down Expand Up @@ -193,9 +193,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
const unsigned int pointerUpdateKind,
const uint64_t timestamp,
const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const til::point pixelPosition)
const Core::Point pixelPosition)
{
const til::point terminalPosition = _getTerminalPosition(pixelPosition);
const til::point terminalPosition = _getTerminalPosition(til::point{ pixelPosition });

const auto altEnabled = modifiers.IsAltPressed();
const auto shiftEnabled = modifiers.IsShiftPressed();
Expand Down Expand Up @@ -266,7 +266,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
}
}

void ControlInteractivity::TouchPressed(const til::point contactPoint)
void ControlInteractivity::TouchPressed(const Core::Point contactPoint)
{
_touchAnchor = contactPoint;
}
Expand All @@ -275,10 +275,10 @@ namespace winrt::Microsoft::Terminal::Control::implementation
const unsigned int pointerUpdateKind,
const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const bool focused,
const til::point pixelPosition,
const Core::Point pixelPosition,
const bool pointerPressedInBounds)
{
const til::point terminalPosition = _getTerminalPosition(pixelPosition);
const til::point terminalPosition = _getTerminalPosition(til::point{ pixelPosition });

// Short-circuit isReadOnly check to avoid warning dialog
if (focused && !_core->IsInReadOnlyMode() && _canSendVTMouseInput(modifiers))
Expand All @@ -297,8 +297,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// (practically always the width) away from the clickdown point.
const auto fontSizeInDips = _core->FontSizeInDips();
const auto touchdownPoint = *_singleClickTouchdownPos;
const auto dx = pixelPosition.x - touchdownPoint.x;
const auto dy = pixelPosition.y - touchdownPoint.y;
const auto dx = pixelPosition.X - touchdownPoint.X;
const auto dy = pixelPosition.Y - touchdownPoint.Y;
const auto w = fontSizeInDips.width;
const auto distanceSquared = dx * dx + dy * dy;
const auto maxDistanceSquared = w * w / 16; // (w /4)^2
Expand All @@ -309,7 +309,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// _touchdown_ point here. We want to start the selection
// from where the user initially clicked, not where they are
// now.
_core->SetSelectionAnchor(_getTerminalPosition(touchdownPoint));
_core->SetSelectionAnchor(_getTerminalPosition(til::point{ touchdownPoint }));

// stop tracking the touchdown point
_singleClickTouchdownPos = std::nullopt;
Expand All @@ -322,7 +322,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
_core->SetHoveredCell(terminalPosition.to_core_point());
}

void ControlInteractivity::TouchMoved(const til::point newTouchPoint,
void ControlInteractivity::TouchMoved(const Core::Point newTouchPoint,
const bool focused)
{
if (focused &&
Expand All @@ -335,7 +335,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
const auto fontSizeInDips{ _core->FontSizeInDips() };

// Get the difference between the point we've dragged to and the start of the touch.
const auto dy = static_cast<double>(newTouchPoint.y - anchor.y);
const auto dy = static_cast<double>(newTouchPoint.Y - anchor.Y);

// Start viewport scroll after we've moved more than a half row of text
if (std::abs(dy) > (fontSizeInDips.height / 2.0))
Expand All @@ -362,9 +362,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
void ControlInteractivity::PointerReleased(Control::MouseButtonState buttonState,
const unsigned int pointerUpdateKind,
const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const til::point pixelPosition)
const Core::Point pixelPosition)
{
const til::point terminalPosition = _getTerminalPosition(pixelPosition);
const til::point terminalPosition = _getTerminalPosition(til::point{ pixelPosition });
// Short-circuit isReadOnly check to avoid warning dialog
if (!_core->IsInReadOnlyMode() && _canSendVTMouseInput(modifiers))
{
Expand Down Expand Up @@ -405,10 +405,10 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// - delta: the mouse wheel delta that triggered this event.
bool ControlInteractivity::MouseWheel(const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const int32_t delta,
const til::point pixelPosition,
const Core::Point pixelPosition,
const Control::MouseButtonState buttonState)
{
const til::point terminalPosition = _getTerminalPosition(pixelPosition);
const til::point terminalPosition = _getTerminalPosition(til::point{ pixelPosition });

// Short-circuit isReadOnly check to avoid warning dialog
if (!_core->IsInReadOnlyMode() && _canSendVTMouseInput(modifiers))
Expand Down Expand Up @@ -473,7 +473,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// - pixelPosition: the location of the mouse during this event
// - isLeftButtonPressed: true iff the left mouse button was pressed during this event.
void ControlInteractivity::_mouseScrollHandler(const double mouseDelta,
const til::point pixelPosition,
const Core::Point pixelPosition,
const bool isLeftButtonPressed)
{
// GH#9955.b: Start scrolling from our internal scrollbar position. This
Expand Down Expand Up @@ -576,9 +576,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// - Sets selection's end position to match supplied cursor position, e.g. while mouse dragging.
// Arguments:
// - cursorPosition: in pixels, relative to the origin of the control
void ControlInteractivity::SetEndSelectionPoint(const til::point pixelPosition)
void ControlInteractivity::SetEndSelectionPoint(const Core::Point pixelPosition)
{
_core->SetEndSelectionPoint(_getTerminalPosition(pixelPosition));
_core->SetEndSelectionPoint(_getTerminalPosition(til::point{ pixelPosition }));
_selectionNeedsToBeCopied = true;
}

Expand All @@ -590,7 +590,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
// NOTE: origin (0,0) is top-left.
// Return Value:
// - the corresponding viewport terminal position for the given Point parameter
til::point ControlInteractivity::_getTerminalPosition(const til::point& pixelPosition)
til::point ControlInteractivity::_getTerminalPosition(const til::point pixelPosition)
{
// Get the size of the font, which is in pixels
const til::size fontSize{ _core->GetFont().GetSize() };
Expand Down
28 changes: 14 additions & 14 deletions src/cascadia/TerminalControl/ControlInteractivity.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,27 +52,27 @@ namespace winrt::Microsoft::Terminal::Control::implementation
const unsigned int pointerUpdateKind,
const uint64_t timestamp,
const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const til::point pixelPosition);
void TouchPressed(const til::point contactPoint);
const Core::Point pixelPosition);
void TouchPressed(const Core::Point contactPoint);

void PointerMoved(Control::MouseButtonState buttonState,
const unsigned int pointerUpdateKind,
const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const bool focused,
const til::point pixelPosition,
const Core::Point pixelPosition,
const bool pointerPressedInBounds);
void TouchMoved(const til::point newTouchPoint,
void TouchMoved(const Core::Point newTouchPoint,
const bool focused);

void PointerReleased(Control::MouseButtonState buttonState,
const unsigned int pointerUpdateKind,
const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const til::point pixelPosition);
const Core::Point pixelPosition);
void TouchReleased();

bool MouseWheel(const ::Microsoft::Terminal::Core::ControlKeyStates modifiers,
const int32_t delta,
const til::point pixelPosition,
const Core::Point pixelPosition,
const Control::MouseButtonState state);

void UpdateScrollbar(const double newValue);
Expand All @@ -82,7 +82,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
bool CopySelectionToClipboard(bool singleLine,
const Windows::Foundation::IReference<CopyFormat>& formats);
void RequestPasteTextFromClipboard();
void SetEndSelectionPoint(const til::point pixelPosition);
void SetEndSelectionPoint(const Core::Point pixelPosition);
bool ManglePathsForWsl();

TYPED_EVENT(OpenHyperlink, IInspectable, Control::OpenHyperlinkEventArgs);
Expand All @@ -105,7 +105,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation

// If this is set, then we assume we are in the middle of panning the
// viewport via touch input.
std::optional<til::point> _touchAnchor;
std::optional<Core::Point> _touchAnchor;

using Timestamp = uint64_t;

Expand All @@ -114,9 +114,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
Timestamp _multiClickTimer;
unsigned int _multiClickCounter;
Timestamp _lastMouseClickTimestamp;
std::optional<til::point> _lastMouseClickPos;
std::optional<til::point> _singleClickTouchdownPos;
std::optional<til::point> _lastMouseClickPosNoSelection;
std::optional<Core::Point> _lastMouseClickPos;
std::optional<Core::Point> _singleClickTouchdownPos;
std::optional<Core::Point> _lastMouseClickPosNoSelection;
// This field tracks whether the selection has changed meaningfully
// since it was last copied. It's generally used to prevent copyOnSelect
// from firing when the pointer _just happens_ to be released over the
Expand All @@ -129,20 +129,20 @@ namespace winrt::Microsoft::Terminal::Control::implementation

std::optional<interval_tree::IntervalTree<til::point, size_t>::interval> _lastHoveredInterval{ std::nullopt };

unsigned int _numberOfClicks(til::point clickPos, Timestamp clickTime);
unsigned int _numberOfClicks(Core::Point clickPos, Timestamp clickTime);
void _updateSystemParameterSettings() noexcept;

void _mouseTransparencyHandler(const double mouseDelta);
void _mouseZoomHandler(const double mouseDelta);
void _mouseScrollHandler(const double mouseDelta,
const til::point terminalPosition,
const Core::Point terminalPosition,
const bool isLeftButtonPressed);

void _hyperlinkHandler(const std::wstring_view uri);
bool _canSendVTMouseInput(const ::Microsoft::Terminal::Core::ControlKeyStates modifiers);

void _sendPastedTextToConnection(std::wstring_view wstr);
til::point _getTerminalPosition(const til::point& pixelPosition);
til::point _getTerminalPosition(const til::point pixelPosition);

bool _sendMouseEventHelper(const til::point terminalPosition,
const unsigned int pointerUpdateKind,
Expand Down
6 changes: 2 additions & 4 deletions src/cascadia/TerminalControl/TermControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2192,10 +2192,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
return;
}

const til::point cursorPos = _core.CursorPosition();
Windows::Foundation::Point p = { ::base::ClampedNumeric<float>(cursorPos.x),
::base::ClampedNumeric<float>(cursorPos.y) };
eventArgs.CurrentPosition(p);
const auto cursorPos = _core.CursorPosition();
eventArgs.CurrentPosition({ static_cast<float>(cursorPos.X), static_cast<float>(cursorPos.Y) });
}

// Method Description:
Expand Down
6 changes: 4 additions & 2 deletions src/cascadia/TerminalSettingsModel/ActionArgs.idl
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ import "Command.idl";

namespace Microsoft.Terminal.Settings.Model
{
interface IActionArgs {
interface IActionArgs
{
Boolean Equals(IActionArgs other);
String GenerateName();
IActionArgs Copy();
UInt64 Hash();
};

interface IActionEventArgs {
interface IActionEventArgs
{
Boolean Handled;
IActionArgs ActionArgs { get; };
};
Expand Down
Loading

0 comments on commit 1bf8011

Please sign in to comment.