Skip to content

Focusable Pressables should take focus when they are clicked on#15327

Merged
acoates-ms merged 5 commits intomicrosoft:mainfrom
acoates-ms:focusOnPress
Nov 10, 2025
Merged

Focusable Pressables should take focus when they are clicked on#15327
acoates-ms merged 5 commits intomicrosoft:mainfrom
acoates-ms:focusOnPress

Conversation

@acoates-ms
Copy link
Contributor

@acoates-ms acoates-ms commented Nov 6, 2025

Description

Focusable Pressables should take focus when they are clicked on.

I added a new property to Pressable focusOnPress, which can be set to false to prevent this behavior.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Why

Resolves #14497 #14496

Microsoft Reviewers: Open in CodeFlow

@acoates-ms acoates-ms requested a review from a team as a code owner November 6, 2025 21:34
}
onPress?.(args);
},
[focusOnPress, onPress, focusable],
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you need to add viewRef here? I can't remember

// [Windows
/**
* When the pressable is pressed it will take focus
* Default value: true
Copy link
Contributor

Choose a reason for hiding this comment

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

if the default is true should this prop become disableFocusOnPress?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I prefer to avoid negative props. - But I see an argument for avoiding default true props too.

Copy link
Contributor

Choose a reason for hiding this comment

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

would also prefer not having bool in the name, I don't like that we have enableFocusRing instead something like focusRingVisible. I also think it wouldn't be true by default except on windows..

Comment on lines +321 to +328
const onPressWithFocus = React.useCallback(
(args: GestureResponderEvent) => {
if (focusable !== false && focusOnPress !== false) {
viewRef?.current?.focus();
}
onPress?.(args);
},
[focusOnPress, onPress, focusable],
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it would be better to this in Pressability, where we already override onPress once.

Copy link
Contributor

Choose a reason for hiding this comment

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

ah.. but we don't have the ref there..

@acoates-ms acoates-ms merged commit 01364aa into microsoft:main Nov 10, 2025
57 checks passed
acoates-ms added a commit to acoates-ms/react-native-windows that referenced this pull request Jan 9, 2026
…crosoft#15327)

* Pressables should take focus on press

* Change files

* fix
acoates-ms added a commit that referenced this pull request Jan 27, 2026
…ibility of custom native components (#15533)

* Focusable `Pressable`s should take focus when they are clicked on (#15327)

* Pressables should take focus on press

* Change files

* fix

* Add TSF support to TextInput (#15363)

* Add TSF support to TextInput

* Change files

* Tooltip positioned incorrectly on non 100% scale factor (#15382)

* Tooltip positioned incorrectly on non 100% scale factor

* Change files

* Fix stackoverflow in StructInfo (#15454)

* Fix stackoverflow in StructInfo

Fix for the stack-buffer-overflow when using the FieldInfo like this:
 inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(AppStateSpec_AppState*) noexcept {
  winrt::Microsoft::ReactNative::FieldMap fieldMap {
      {L"app_state", &AppStateSpec_AppState::app_state},
  	// ^^^^^^^^^ when constructing the std::pair, temporary stack variables are created.
  };
  return fieldMap;
 }

but here in react-native-windows\vnext\Microsoft.ReactNative.Cxx\StructInfo.h the FieldInfo is trying to dereference and store data from a pointer (&fieldPtr) that points to a temporary object on the stack:
m_fieldPtrStore{*reinterpret_cast<uintptr_t *>(&fieldPtr)}

AddressSanitizer detects the stack-buffer-overflow (accessing memory past the temporary's lifetime) and terminates the process.
Instead, we avoid double indirection by using a memcopy.

* Change files

---------

Co-authored-by: Vladimir Morozov <vmorozov@microsoft.com>

* [Fabric] Fix UIA_LiveSettingPropertyId to use VT_I4 datatype instead of VT_BSTR (#15438)

* [Fabric] Fix UIA_LiveSettingPropertyId to use VT_I4 datatype instead of VT_BSTR

Fixes #15050

Use GetLiveSetting() conversion function to properly convert accessibilityLiveRegion string values to long (VT_I4) datatype as required by UIA_LiveSettingPropertyId.

* call function with namespace

---------

Co-authored-by: vineethkuttan <66076509+vineethkuttan@users.noreply.github.com>

* Defer UIA accessibility provider initialization until requested (#14756)

* Initial plan for issue

* Defer UIA provider initialization to GetPatternProvider

Co-authored-by: chrisglein <26607885+chrisglein@users.noreply.github.com>

* Add change file for UIA provider initialization optimization

Co-authored-by: dannyvv <11037542+dannyvv@users.noreply.github.com>

* Format code with clang-format to fix spacing

Co-authored-by: acoates-ms <30809111+acoates-ms@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: chrisglein <26607885+chrisglein@users.noreply.github.com>
Co-authored-by: dannyvv <11037542+dannyvv@users.noreply.github.com>
Co-authored-by: acoates-ms <30809111+acoates-ms@users.noreply.github.com>
Co-authored-by: Vineeth <66076509+vineethkuttan@users.noreply.github.com>

* Accessibility and UIA Support for XAML Fabric implementation (#15466)

* accessibility and UIA support

* adding lint and formatting fix

* adding accessibility and UIA support for XAML fabric

* Change files

---------

Co-authored-by: Protik Biswas <protikbiswas100@microsoft.com>

* Fabric : Implements selectable prop for <Text> (#15473)

* visual studio 2026 strict check fix

* Implement text selection with drag highlight for selectable prop

* implemented copy to clipboard

* CTRL + A to select all text

* Double-click on a word in selectable text selects the word

* right click on selected text provides context menu

* fixes unselect after CTRL + A selection

* implements I-beam cursor for selectable text

* default selection color cleanup

* yarn lint:fix and format

* Change files

* nit

* nit

* review comments ( double click , theme ( use of system api) , Capture pointer )

* removed weak_ref of ComponentView rather take ReactTaggedView

* yarn format

* review comments

* nit

* review comments : nit

* invalid/null tag returns -1 for ReactTaggedView

* support CJK selcetion using icu.h

* update Desktop.DLL  with icu.lib

* CJK word boundary using dictionary

* review comments

* yarn lint:fix and format

* Add IcuUtils.cpp to project files for CJK support

* remove ICUUtils from  Microsoft.ReactNative.vcxproj already added to shared

* Fix DPI scaling for debugging overlay highlights (#15479)

* Fix DPI scaling for debugging overlay highlights

* Change files

* pointScaleFactor from m_layoutMetrics as its member of base class ComponentView

* Add ability to customize native accessibility of custom native components (#15532)

* Add ability to customize native accessibility of custom native components

* format

* Change files

* fix

* fix

* Update test

* Change files

* pacakgelock

* snapshots

* fix

* fix

* Update snapshot

---------

Co-authored-by: Ivan Golubev <zxcgi@pm.me>
Co-authored-by: Vladimir Morozov <vmorozov@microsoft.com>
Co-authored-by: Ritoban Dutta <124308320+ritoban23@users.noreply.github.com>
Co-authored-by: vineethkuttan <66076509+vineethkuttan@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: chrisglein <26607885+chrisglein@users.noreply.github.com>
Co-authored-by: dannyvv <11037542+dannyvv@users.noreply.github.com>
Co-authored-by: Protik Biswas <219775028+protikbiswas100@users.noreply.github.com>
Co-authored-by: Protik Biswas <protikbiswas100@microsoft.com>
Co-authored-by: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keyboard focus remains in same location after mouse click elsewhere in app

3 participants