1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-22 01:34:21 +00:00
Commit graph

2760 commits

Author SHA1 Message Date
Tom Poole
eda5c696e5 macOS/iOS: Fix unguarded availability warnings 2022-04-19 11:54:55 +01:00
Oli
15bdae16b2 DirectoryContentsList: Fix a data race
Fix improper use of non-atomic pointer validity to report state of background search thread state
2022-03-28 20:47:30 +01:00
attila
55b00fc846 Component: Fix mouseEnter and mouseExit positions when blocked by modal 2022-03-23 18:40:47 +00:00
reuk
ebac835673
Fix some deprecation warnings 2022-03-22 17:27:54 +00:00
Tom Poole
87a4ab4a78 Disable the effect of setPaintingIsUnclipped on components with children 2022-03-17 22:06:04 +00:00
Tom Poole
165d8b0ecd macOS: Make the behaviour of ComponentPeer::grabFocus match the other platforms
This partially reverts f43784dc: "macOS:  Propagate focus loss message when resigning key window status and only grab focus if window can become the key window"
2022-03-17 21:52:33 +00:00
reuk
55a8e10262
Mac Accessibility: Provide slightly more descriptive value states for checkable items 2022-03-07 11:03:55 +00:00
reuk
c51b331318
PopupMenu Accessibility: Report menu-item ticked state on Windows 2022-03-07 11:03:55 +00:00
reuk
7b1fba4bae
Windows Accessibility: Fixed backspace character reporting under NVDA
The change introduced in 92f350e617 led to
a regression in the MoveEndpointByUnit function. In this case, a
backward movement by a single character *should* move the endpoint as
long as it remains within the text range.

The issue addressed by the faulty commit is better fixed by
special-casing the 'character' unit case in the ExpandToEnclosingUnit
function.
2022-03-07 11:03:54 +00:00
Tom Poole
9ccfea9001 Component: Make getApproximateScaleFactorForComponent take a const argument 2022-03-04 10:25:51 +00:00
Tom Poole
111bbc0979 Bump version number to 6.1.6 2022-02-28 12:53:10 +00:00
attila
54ea55325f Windows Accessibility: Only call UiaDisconnectAllProviders in
standalone apps

This change fixes a crash in Reaper when closing a plugin window
with ALT + F4.
2022-02-24 14:07:04 +01:00
reuk
4cf18f0e2c
X11: Avoid leaking result of XGetAtomName 2022-02-23 10:56:12 +00:00
reuk
eb6e579f0a
ComponentPeer: Correctly scale drag and drop coordinates to account for global scale 2022-02-23 10:56:12 +00:00
reuk
9bd52d59af
NSViewComponentPeer: Avoid making temporary windows (dropdowns, callouts) full-screen when in full-screen mode
eabcfbad26 incorrectly set the collection
behaviour NSWindowCollectionBehaviorFullScreenPrimary on all top-level
components, which would cause popup menus and callouts to appear in
their own space when launched from an app running in full-screen mode.
2022-02-23 10:56:11 +00:00
reuk
c9997bd613
Windows: Correctly dispose of hook
This fixes an issue where REAPER was unable to completely unload VST3
plugins.
2022-02-23 10:56:11 +00:00
reuk
1d1d743b9f
Build: Add -Wdeprecated to recommended flags and fix new warnings 2022-02-23 10:56:10 +00:00
reuk
e1a7fe671a
Component: Make wheel/magnify behaviour more intuitive for disabled components
The previous implementation would pass the mouse wheel event up to the
component's parent, as long as the parent was enabled. This meant that a
wheel event on the innermost component of a hierarchy such as
"[[disabled] enabled]" would send the event to the parent, but a wheel
event on the innermost component of a hierarchy such as
"[[[disabled] disabled] enabled]" would 'eat' the event and prevent it
from propagating.

After this change, unhandled mouse wheel events will always be passed to
the nearest enabled parent. This behaviour is more consistent and
intuitive.
2022-02-23 10:56:10 +00:00
reuk
9e31eb1c6a
LookAndFeel: Update default name for tab/toolbar missing-item button
This button is used to access hidden toolbar items, as well as hidden
tabs. The old "tabs" name was misleading when the button was located in
a toolbar.
2022-02-23 10:56:10 +00:00
reuk
eb58b471c7
Toolbar: Add accessible name for custom popup menu item 2022-02-23 10:56:10 +00:00
reuk
6d404236e2
Toolbar: Fix missing-items button when LookAndFeel changes after construction of toolbar
Previously, setting a new look and feel would create a new missing-items
button, but would not add it to the toolbar or set the onClick callback.
2022-02-23 10:56:09 +00:00
reuk
0223e44ae7
Image: Keep track of contiguous buffer size to avoid heap buffer overflows
In CoreGraphicsPixelData::createImage, image data was copied from a
BitmapData created from the Image passed into the function.

The BitmapData instance didn't keep track of the size of the buffer it
pointed to, so the buffer size was computed by multiplying the
BitmapData height by its line stride. However, if the BitmapData pointed
to a subsection of an image, the `data` pointer might be offset from
the allocated region, and `data + lineStride * height` would point past
the end of the allocated region. Trying to read/copy this range would
cause a heap buffer overflow at the end of the range.

This change adjusts BitmapData so that it keeps track of the size of the
allocated region. Taking a subsection of an image should subtract the
data pointer offset from the size of the allocated region.
2022-02-23 10:56:09 +00:00
reuk
d9f8ea74e9
NativeMessageBox: Use associatedComponent on macOS 2022-02-18 16:43:26 +00:00
reuk
0a34e7fa71
Mac MessageBox: Fix result code conversion 2022-02-18 16:43:26 +00:00
reuk
eb8a419ac7
TooltipWindow: Avoid potential use-after-free of lastComponentUnderMouse
Showing the tip will in turn call getDesktopScaleFactor(), accessing the
lastComponentUnderMouse. In some cases, it was possible for
lastComponentUnderMouse to point to a deleted component, resulting in
UB.

There are two changes in this PR:
- Using a SafePointer rather than a raw pointer ensures that calls to
  getDesktopScaleFactor() will always be safe, regardless of when they
  happen.
- Moving the assignment of lastComponentUnderMouse to before the call to
  displayTipInternal() ensures that the returned scale factor is that of
  the component that the mouse is currently hovering.
2022-02-18 16:43:26 +00:00
reuk
92f350e617
Windows Accessibility: Fix single-character range/boundary calculation
Narrator on Windows seems to call ExpandToEnclosingUnit to find the
character immediately following the current cursor position. When
expanding a degenerate range with position `input` (used to represent
the cursor position) to a single-character range, the returned range
should start at `input` and end at `input+1`. Previously,
findTextBoundary() would always return the position before
currentPosition when searching backwards by character, so the result of
ExpandToEnclosingUnit would be off-by-one when expanding to the closest
character.
2022-02-18 16:43:26 +00:00
reuk
bd0ca90952
Linux: Release X lock when unregistering file descriptor in order to avoid deadlocks 2022-02-18 16:43:25 +00:00
reuk
e4a7978621
Windowing: Output error text when window creation fails 2022-02-18 16:43:25 +00:00
reuk
84db4b186f
ComponentBoundsConstrainer: Refactor 2022-02-18 16:43:25 +00:00
Attila Szarvas
101a886821 MouseInputSource: Eliminate superfluous drag events caused by pressure change
The bug was triggered on Monterey where a pressure of 1 is reported
while a mouse button is being held down. This caused an extra drag
event being triggered between mouse down and up events, even if no
movement occurred.
2022-02-15 10:53:32 +00:00
attila
a1a8e1339f PopupMenu: Fix click-through from submenu
Previously it was possible to inadvertently activate a menu item by
clicking on a submenu item that was drawn on top of the parent menu.

The root cause was that hide() initiates an asynchronous mechanism
through exitModalState() that eventually destroys the MenuWindow, but
the MouseSourceState timer callbacks and event handlers sometimes still
had a chance to do a state update. Since the submenus have just been
destroyed the update could mistakenly conclude to activate one of the
items of the now lone parent.
2022-02-08 17:38:32 +01:00
reuk
cdba8eb8e9 NSViewComponentPeer: Fix NSTrackingArea leak 2022-02-07 14:24:11 +00:00
reuk
eabcfbad26 NSViewComponentPeer: Add support for true-full-screen with non-native titlebars 2022-02-07 14:24:11 +00:00
reuk
19536fc7a7 NSViewComponentPeer: Allow restoring previous size when zooming a non-native window 2022-02-07 14:24:11 +00:00
reuk
53600d2d9e iOS Accessibility: Allow navigating tables by rows 2022-02-07 14:24:11 +00:00
reuk
793f1bf2ee FileChooser: Avoid crash when destroying an open non-native filechooser 2022-02-07 14:24:11 +00:00
reuk
4cf74dfff6 Viewport: Improve drag-to-scroll on devices that can accept simultaneous mouse and touch input
Some Windows 11 devices have both touch screens and mouse inputs, and
these can be used simultaneously.

The Viewport (and ListBox) now check the input source of each mouse
down. If the source is not a mouse, the viewport will always enter
drag-to-scroll mode, regardless of the result of isScrollOnDragEnabled.
2022-02-07 14:24:11 +00:00
reuk
88853f7eda AlertWindow: Show AlertWindows as modal sheets on macOS when associated component is present 2022-02-07 14:24:11 +00:00
attila
4cf036bb8b ComponentPeer: Add documentation for OptionalBorderSize 2022-02-07 12:39:51 +01:00
attila
6575d24a81 ComponentPeer: Deprecate getFrameSize() 2022-02-03 21:46:36 +01:00
attila
a7811661c5 Linux: Fix restoreWindowFromStateString() when the peer already exists 2022-02-02 19:53:31 +01:00
reuk
ea92834845
Accessibility: Explicitly implement protocols
This change is intended to resolve an issue where iOS apps failed
automated review due to use of non-public selectors. Explicitly adopting
the relevant protocols allowed an app to pass automated review during
testing.
2022-02-01 11:07:34 +00:00
reuk
9b96442022
NSViewComponentPeer: Only send modal input attempts when modal window is not key 2022-01-28 16:09:59 +00:00
reuk
b2f318a775
TreeView: Allow built-in mouse handling to be enabled/disabled for custom components 2022-01-28 16:09:59 +00:00
reuk
ef7c3c6947
TreeView: Support TooltipClient interface 2022-01-28 16:09:59 +00:00
reuk
53f8650ba3
DocumentWindow: Update documentation 2022-01-27 18:43:21 +00:00
reuk
b80927fc91
Nodiscard: Add to builder-pattern functions 2022-01-27 18:43:21 +00:00
reuk
e210b295ce
Windows: Fix issue where windows could be given incorrect size for their current scale
This issue affected windows with JUCE titlebars. When dragging the
window back and forth between two displays with different DPI settings,
the window could sometimes end up with the wrong size.

It looks like setting new window bounds inside the WM_WINDOWPOSCHANGED
message was occasionally causing the system to lose track of the correct
scale for the window.

As a byproduct of this change, JUCE should no longer receive reentrant
calls to handleDPIChanging.
2022-01-27 18:43:21 +00:00
Tom Poole
3c03693d07 Bump version number to 6.1.5 2022-01-26 13:00:05 +00:00
Tom Poole
c072b1bc8e Fix some typos 2022-01-25 11:48:46 +00:00