From 47c0305d8e2dc3744cef533795129f191c1f4e24 Mon Sep 17 00:00:00 2001 From: Pierre DE SOYRES Date: Thu, 20 Jun 2024 13:43:38 +0200 Subject: [PATCH] feat(cc-logs): add ctrl+A keystroke for selecting all log lines Fixes #1008 --- src/components/cc-logs/cc-logs.js | 4 ++++ src/components/cc-logs/logs-controller.js | 9 +++++++++ src/components/cc-logs/logs-input-controller.js | 5 +++++ 3 files changed, 18 insertions(+) diff --git a/src/components/cc-logs/cc-logs.js b/src/components/cc-logs/cc-logs.js index f82c233df..e3738a6c7 100644 --- a/src/components/cc-logs/cc-logs.js +++ b/src/components/cc-logs/cc-logs.js @@ -596,6 +596,10 @@ export class CcLogs extends LitElement { this._setFollow(false); } + _onSelectAll () { + this._logsCtrl.selectAll(); + } + // endregion // region Copy logic diff --git a/src/components/cc-logs/logs-controller.js b/src/components/cc-logs/logs-controller.js index d0bae5d56..594683e1a 100644 --- a/src/components/cc-logs/logs-controller.js +++ b/src/components/cc-logs/logs-controller.js @@ -173,6 +173,15 @@ export class LogsController { this._host._onSelectionChanged(); } + selectAll () { + if (this._logsFiltered.length > 0) { + this._selection = new Set(this._logsFiltered); + this._selectionLast = this._logsFiltered[this._logsFiltered.length - 1]; + this._host.requestUpdate(); + this._host._onSelectionChanged(); + } + } + /** * @return {number} The length of the selection */ diff --git a/src/components/cc-logs/logs-input-controller.js b/src/components/cc-logs/logs-input-controller.js index 48fcfc9ef..b880b08bb 100644 --- a/src/components/cc-logs/logs-input-controller.js +++ b/src/components/cc-logs/logs-input-controller.js @@ -103,6 +103,11 @@ export class LogsInputController { const logIndex = Number(e.target.closest(`.log`).dataset.index); this._host._onClickLog(logIndex, this._keyModifiers); } + else if (e.key === 'a' && this._keyModifiers.ctrl) { + // we prevent default because we don't want the native keyboard "ctrl + a" to be fired + e.preventDefault(); + this._host._onSelectAll(); + } } onKeyUp (e) {