[PR #856] [MERGED] Fix #670: Terminal selects a char when bringing window to foreground #24354

Open
opened 2026-01-31 09:02:46 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/microsoft/terminal/pull/856
Author: @mblowey
Created: 5/16/2019
Status: Merged
Merged: 5/20/2019
Merged by: @DHowett-MSFT

Base: masterHead: master


📝 Commits (3)

  • b3f6bd0 Added focus tracking to TermControl to prevent clicks which refocus the terminal window from selecting text.
  • f386d05 Moved open brace to a new line per repo code style.
  • e9ff2ae Moved the TermControl's _MouseClickHandler's focus check into the Mouse specific block of code. This lets any touch and drag events scroll the terminal's contents.

📊 Changes

2 files changed (+17 additions, -3 deletions)

View changed files

📝 src/cascadia/TerminalControl/TermControl.cpp (+16 -3)
📝 src/cascadia/TerminalControl/TermControl.h (+1 -0)

📄 Description

Summary of the Pull Request

This fix prevents text from being selected when the user clicks within the active terminal to re-focus the window. This brings the new terminal's behavior inline with the original powershell and cmd terminals.

Fixes #670

I tested this fix's behavior manually, but did ensure all unit tests are passing.

PR Checklist

  • Closes #xxx
  • CLA signed. If not, go over here and sign the CLA
  • Tests added/passed
  • Requires documentation to be updated
  • I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Detailed Description of the Pull Request / Additional comments

The proposed changes may be a naive way of fixing the issue. I simply added a bool called _focused to the TermControl class which is set and unset during the respective GotFocus and LostFocus events. That bool is then checked whenever a new MouseClick event is encountered. If _focused is false during the MouseClick event, the MouseClick event handler immediately returns instead of handling the event normally.

I did try to fix this issue using the GettingFocus event, but I could not find a way to stop the MouseClick event from the GettingFocus event handler. I am pretty new to UWP events, so I am more than happy to revise this fix if a better method exists.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/microsoft/terminal/pull/856 **Author:** [@mblowey](https://github.com/mblowey) **Created:** 5/16/2019 **Status:** ✅ Merged **Merged:** 5/20/2019 **Merged by:** [@DHowett-MSFT](https://github.com/DHowett-MSFT) **Base:** `master` ← **Head:** `master` --- ### 📝 Commits (3) - [`b3f6bd0`](https://github.com/microsoft/terminal/commit/b3f6bd0db242912a8c4352a55bfe4c6b657591bd) Added focus tracking to TermControl to prevent clicks which refocus the terminal window from selecting text. - [`f386d05`](https://github.com/microsoft/terminal/commit/f386d058d81ab10e3a35a5a2bc0da5ae227d78fb) Moved open brace to a new line per repo code style. - [`e9ff2ae`](https://github.com/microsoft/terminal/commit/e9ff2ae5ac1e50d507b5dfb3d575eec74458ad4a) Moved the TermControl's _MouseClickHandler's focus check into the Mouse specific block of code. This lets any touch and drag events scroll the terminal's contents. ### 📊 Changes **2 files changed** (+17 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `src/cascadia/TerminalControl/TermControl.cpp` (+16 -3) 📝 `src/cascadia/TerminalControl/TermControl.h` (+1 -0) </details> ### 📄 Description <!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request This fix prevents text from being selected when the user clicks within the active terminal to re-focus the window. This brings the new terminal's behavior inline with the original powershell and cmd terminals. Fixes #670 I tested this fix's behavior manually, but did ensure all unit tests are passing. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [x] Closes #xxx * [x] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [x] Tests added/passed * [ ] Requires documentation to be updated * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments The proposed changes may be a naive way of fixing the issue. I simply added a bool called _focused to the TermControl class which is set and unset during the respective GotFocus and LostFocus events. That bool is then checked whenever a new MouseClick event is encountered. If _focused is false during the MouseClick event, the MouseClick event handler immediately returns instead of handling the event normally. I did try to fix this issue using the GettingFocus event, but I could not find a way to stop the MouseClick event from the GettingFocus event handler. I am pretty new to UWP events, so I am more than happy to revise this fix if a better method exists. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-31 09:02:46 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#24354