1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-15 00:24:19 +00:00
Commit graph

8594 commits

Author SHA1 Message Date
reuk
c9950e3801
Accessibility: Avoid allowing TextEditor and Viewport internal components to be accessibility-focused
The TextHolderComponent and Viewport::componentHolder don't have any
accessible semantics, so they shouldn't be included in the accessible
component hierarchy.
2022-06-13 11:36:52 +01:00
reuk
1d1eda5dd2
VST3 Host: Fix UB in VST3Parameter implementation 2022-06-13 11:36:51 +01:00
reuk
d4d9740037
Android: Fix problems with accessible text navigation
Previously, when navigating in a text editor by words, the cursor would
get 'stuck' after moving a single word. This issue should now be
resolved.

Additionally, the cursor position was not updated properly when
adjusting a selection, and would instead be moved to the end of the
selected range. With this patch applied, the cursor should now be set to
the correct position when modifying selections. When extending a
selection backwards, the cursor will display at the beginning of the
selected range, rather than the end.

Finally, most Android apps announce the 'skipped' characters or words
whenever the cursor is moved, but this feature was broken in JUCE. This
patch enables this feature.
2022-06-13 11:36:51 +01:00
reuk
83dca0f1e5
Android: Allow TalkBack borders to be displayed on OpenGL views 2022-06-13 11:36:51 +01:00
reuk
9c9d930760
Android: Fix a couple of accessibility-related crashes
These crashes could be seen in the DemoRunner when selecting items in
nested PopupMenu windows.
2022-06-13 11:36:51 +01:00
reuk
54d7f5efb0
VST3 Client: Handle null channels provided by host 2022-06-13 11:36:51 +01:00
attila
751d85f8c7 Component: Use the rounded integer mouse position when evaluating hitTest
This commit reverts a small part of
4ca923a34b.
2022-06-10 19:16:37 +02:00
attila
74af7b11ec DragAndDropContainer: Fix the escape key dismissing the drag operation 2022-06-10 19:16:37 +02:00
attila
c1a38b0cfc MacOS: Override and implement JuceNSViewClass::updateTrackingAreas()
This change fixes a bug where a fullscreen window would not receive
mouseMoved events until the cursor left and then reentered the
window's area.
2022-06-10 19:16:37 +02:00
attila
94dcad52d0 Slider: Add keyboard control even without accessibility 2022-06-10 18:19:49 +02:00
reuk
a91694108c Windows: Fix virtual keyboard hide/show on Windows 11
This change fixes an issue where the touch keyboard failed to show when
selecting a TextEditor.

On the current versions of Windows 10 and 11, the undocumented
ITipInvocation workaround no longer seems to be required, so it has been
removed.

The isTabletModeActivatedForWindow function is no longer needed, and has
been removed. This function also appears to return inconsistent results:
the window may be in 'desktop mode', but devices with touchscreens
should still display the keyboard when selecting a TextEditor by touch.
2022-06-08 19:51:11 +01:00
reuk
2fc7d12ae7 TextEditor: Add option to dismiss the virtual keyboard on touches outside
Previously, individual components had to ask the peer to hide and show
the keyboard, by calling textInputRequired() and
dismissPendingTextInput() respectively. When an onscreen keyboard (OSK)
was required, most Peer implementation would directly hide/show the OSK
inside these function. However, the iOS ComponentPeer implementation
instead listened to the application's global keyboard focus, and only
opened the OSK when the focused component was also a TextInputTarget
with active input.

The iOS scheme seems like a better design, as it enforces that the OSK
hiding and showing is synced with the keyboard focus of the application.
In the other implementations, it was possible for a Component to call
textInputRequired even when it didn't have the keyboard focus, putting
the application into an inconsistent state. The iOS scheme also makes
the TextInputTarget interface more useful, as it enforces that the OSK
will only display for components that implement TextInputTarget, and
return true from isTextInputActive().

This patch changes all Peer implementations to match the iOS
implementation, improving consistency. Each time the global keyboard
focus changes, refreshTextInputTarget is called automatically, and the
OSK is shown if the focused component is a TextInputTarget that returns
true from isTextInputActive, and hidden otherwise. Components can also
call refreshTextInputTarget manually. This should be done whenever the
component updates the return value of isTextInputActive(). Effectively,
the Peer is now responsible for keeping track of the focused
TextInputTarget, rather than allowing individual components to hide and
show the OSK at will.

Additionally, this patch adds an option to the TextEditor to
automatically dismiss the OSK when the mouse is clicked outside of the
editor. This should improve user experience on mobile platforms, where
touches on sibling components may cause a TextEditor to gain keyboard
focus and unnecessarily display the OSK.
2022-06-08 19:51:11 +01:00
reuk
ac396daa70
Android: Improve complexity of ActivityLifecycleCallbacks::invoke 2022-06-06 21:21:42 +01:00
reuk
d182ed38cd
Android: Add missing ActivityLifecycleCallbacks method 2022-06-06 21:21:41 +01:00
reuk
fab6a072bc
InAppPurchases: Add support for Android BillingClient 5.0.0 2022-06-06 21:21:41 +01:00
Tom Poole
6589b6d64b VS2022: Work around a compiler bug 2022-05-23 21:12:20 +01:00
reuk
b17806fbfc
AndroidDocument: Support file access to shared storage locations on Android 30+ 2022-05-23 12:19:38 +01:00
reuk
479318e397
ConnectedChildProcess: Always cancel pending async updates before background thread stops 2022-05-20 12:44:08 +01:00
reuk
a929370e79
FlacAudioFormat: Correctly balance preprocessor pragmas 2022-05-20 12:44:08 +01:00
reuk
7d5602f7c3
File: Add hasReadAccess() 2022-05-20 12:44:08 +01:00
attila
8f99c084fe Linux: Adjust natively reported border size by the current scale factor 2022-05-18 18:41:14 +02:00
attila
ced221df4a DropShadower: Fix bug when setOwner() is called with a component without a parent
Until now when a Component without a parent was passed to setOwner() the
ParentVisibilityChangedListener would not install any hooks to any
components, hence it would not be notified, when the owner was added
to a parent.
2022-05-18 18:41:14 +02:00
attila
751c4177a4 Linux: Fix sporadic positioning error after window creation 2022-05-18 18:41:06 +02:00
reuk
e27194272d TableListBox: Avoid calling virtual functions in constructor 2022-05-13 14:38:12 +01:00
reuk
310b4e6234
Fonts: Avoid segfaulting on Linux when there are no installed fonts 2022-05-06 15:28:38 +01:00
reuk
854ed68c72
AUv3: Fix race on factoryPresets
Some AUv3 presets crash when querying the set of presets in Loopy Pro.
The issue seems to be because `addPresets` may end up being called
concurrently with the host's queries.
2022-04-28 12:12:59 +01:00
reuk
86f08302b6
Linux Fonts: Replace font style if it does not exist for the requested font 2022-04-28 12:12:50 +01:00
reuk
0114c87f53
TableListBox: Fix spurious ListBox assertions 2022-04-28 12:12:39 +01:00
attila
31d4f9059d Android: Fix dismissing screen keyboard when interacting with TextEditor 2022-04-27 18:08:17 +02:00
Tom Poole
5938796f43 Viewport: Fix a scrolling bug when internal components have a transform applied 2022-04-27 12:49:14 +01:00
Tom Poole
169a6f2d08 Value: Update refersToSameSourceAs documentation 2022-04-27 12:49:06 +01:00
Tom Poole
fbff65dea2 Linux: Fix an issue where the requested font style could be incorrectly overwritten 2022-04-27 09:20:16 +01:00
Tom Poole
b0a8bc0ce2 VST3: Fix a compiler warning in the VST3 SDK 2022-04-26 15:38:33 +01:00
Tom Poole
a946ad64ba DirectoryContentsList: Fix a bug in isStillLoading 2022-04-21 12:05:41 +01:00
Tom Poole
b4223154b6 Fix a compilation error in Xcode 9.4 2022-04-21 11:30:24 +01:00
Tom Poole
2f389c9d42 iOS: Fix a compiler warning 2022-04-20 09:44:53 +01:00
Tom Poole
16eae47fde FloatVectorOperations: Add method docstrings 2022-04-19 17:13:34 +01:00
Tom Poole
1fa18a1b43 FloatVectorOperations: Add methods to Doxygen 2022-04-19 11:54:55 +01:00
Tom Poole
eda5c696e5 macOS/iOS: Fix unguarded availability warnings 2022-04-19 11:54:55 +01:00
Tom Poole
ef8ad92138
GCC: Fix some compiler warnings in GCC 11 2022-04-13 11:05:53 +01:00
reuk
c31f3477a8 Linux: Avoid picking a bold/oblique version of Bitstream Vera Sans by default 2022-04-06 18:10:18 +01:00
reuk
ce8aff22c3 StandardHeader: Include <utility> for GCC 12 compatibility 2022-04-06 15:43:09 +01:00
reuk
f77b286b8c
VST3 Client: Work around broken editor resizing in Blue Cat's PatchWork 2022-04-01 16:41:48 +01:00
reuk
cad155bf1c
VST3 Client: Make window sizing slightly more robust in Live
The following was observed for a VST3 plugin hosted in Live 11.1 with
auto-scaling disabled:

- It never calls setContentScaleFactor on the plugin's UI, so the
  wrapper has to check the current display on a timer and update the
  current scale factor when necessary.

- It calls canResize on the plugin view after opening it, but doesn't
  seem to respect the result of this call. According to the VST3
  documentation, a host is supposed to only call checkSizeConstraint
  during a live resize operation (which should only happen if the plugin
  reports it can resize), but Live calls this function every time the
  user drags the editor. It also passes the result of this function to
  onSize, whether or not checkSizeConstraints reported success.

- When dragging an editor between displays, Live will continue to call
  checkSizeConstraint and onSize with the editor’s old size in physical
  pixels. In some cases, JUCE's "scale factor check" timer callback
  fires, resizes the view to the correct size, and then Live
  asynchronously calls onSize again with the editor's old size in
  physical pixels, resulting in the editor being set to the wrong
  logical size.

This patch ensures that checkSizeConstraint always returns the current
size of a nonResizable editor. This means that the logical size of the
editor should not change when the result of checkSizeContraint is used
to resize the window.
2022-04-01 16:41:48 +01:00
reuk
624a898e00
VST3 Host: Avoid disabling midi buses while plugin is active 2022-04-01 16:41:47 +01:00
reuk
ae646dde16
StandaloneFilterWindow: Account for native frame size in constrainer 2022-04-01 16:41:47 +01:00
reuk
5491e7aae2
ALSA: Fix thread sanitizer warnings 2022-04-01 16:41:47 +01:00
reuk
93ba4d98cf
Fix clang warnings 2022-04-01 16:41:47 +01:00
reuk
c7a17934e3
Formatting 2022-04-01 16:41:47 +01:00
Tom Poole
1f29416fd0 AudioDeviceManager: Improve device sample rate handling 2022-04-01 14:31:46 +01:00