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

15357 commits

Author SHA1 Message Date
attila
242405323e ComboBox: Fix accessibility navigation when the PopupMenu has a parent component
With the PopupMenu creating its own window the focus would return to the
ComboBox after activating a menu item. Prior to this commit however the
focus was seemingly lost after menu item activation. With this change
the focus returns to the ComboBox in both cases.
2025-07-28 14:28:49 +02:00
attila
f97355b9f6 Direct2D: Fix seams between tiles for large bitmaps 2025-07-25 20:45:17 +02:00
attila
19906c9d2f Direct2DGraphicsContextTests: Ignore the image edges to allow for differences in anti-aliasing 2025-07-25 20:45:17 +02:00
attila
3f898f6fee Direct2D: Fix jitter when drawing bitmaps with non-unity scaling
Reverts ca3abbb96d.

Prior to this fix gradually changing the Component scale would lead to
the jittery movement of drawn bitmaps, as their position would be
snapped to an arbitrary integral representation.
2025-07-25 20:45:17 +02:00
attila
5bc44c301f Make Direct2DGraphicsContextTests acceptance criteria stricter 2025-07-25 20:45:17 +02:00
attila
b674a4c130 Tidying: Change misleading variable name 2025-07-25 20:45:17 +02:00
attila
8f30ba70cc Tidying 2025-07-25 20:42:41 +02:00
attila
79ded8c1f3 PopupMenu: Fix accessibility issue where ticked items couldn't be pressed
The issue became manifest in c51b331318.
In our implementation the toggle action takes precedence over the press
action, making the latter unreachable when the Item is in a checkable
state. Calling isTicked (true) turns the Item into a checkable object.
The onToggle implementation however didn't interact with the isTicked
state, and it didn't fire the press action either. This made the item
non-interactable with screen readers once it got into a ticked state.
2025-07-25 20:42:41 +02:00
Sudara
b1e19da5f5 Docs: Improve CMake API docs
* Add LV2 to FORMATS (thx @FigBug).
* Add more property defaults.
* Update examples to use lowest supported iOS CMAKE_OSX_DEPLOYMENT_TARGET.
* Formatting consistency and general cleanup.
2025-07-25 16:53:57 +02:00
reuk
f3840561b5
Projucer (MSVC): Add setting to control intrinsic functions optimisation flag 2025-07-22 15:47:40 +01:00
reuk
6212a4c81f
Android: Add an assertion to check that app style is only modified on the main thread 2025-07-22 15:24:52 +01:00
reuk
e627d0b66f
Desktop: Add a note about screen rotation to the docs for screen insets 2025-07-22 15:23:15 +01:00
reuk
1e1e5036fb
Android: Fix bug where system bars could incorrectly become opaque after adding/removing desktop components
This bug could be observed in the DemoRunner:
- Enable "button" navigation mode (as opposed to "gesture" mode) on the
  Android device.
- Remove the line enabling kiosk mode, build and install the DemoRunner.
- Run the app and navigate to the Settings pane. Open a menu, or the
  bluetooth MIDI dialog window, then close the popup window.
- Rotate the device.

Previously, the steps above could result in the system painting its own
backgrounds behind the system bars. With this patch in place, we reset
the requested system UI colours and transparency, which seems to
maintain the desired appearance.
2025-07-22 15:18:12 +01:00
reuk
896dd10845
Projucer: Add unit tests to check that icons can be created from raster or vector data 2025-07-22 12:40:36 +01:00
reuk
cfbe853f69
Projucer: Enforce that Icons instances are created from files 2025-07-22 12:15:00 +01:00
reuk
217e7ab444
Projucer: Remove separate getters for big and small icons from Project 2025-07-22 11:46:13 +01:00
Anthony Nicholls
36d07a6ce3 Docs: Replace doxygen preprocessor conditionals with @cond and @endconds 2025-07-21 18:11:43 +02:00
Sudara
26e8d81380 Docs: Clarify that Label get/setFont may be overridden by LookAndFeel
Thanks to @FigBug for the report.
2025-07-21 18:11:43 +02:00
Sudara
30b62cc6be Docs: Hide noisy/excessive doxygen references to jassert/jassertfalse 2025-07-21 18:11:43 +02:00
Sudara
67265f7b98 Docs: Remove dozens of internal JUCE_EACH macros from muddying up doxygen 2025-07-21 18:11:43 +02:00
Oliver James
6df6acad0d FontFeaturesDemo: Force LTR order when shaping examples 2025-07-15 14:01:58 +01:00
Oliver James
fc80bb29ca GlyphArrangement: Extend glyph bounds to encapsulate ligature characters
Previously, bounds for text with ligatures were miscalculated, leading to
incorrect positioning and getStringWidth values.
2025-07-15 14:01:58 +01:00
Anthony Nicholls
ae8ca6120f UnitTestRunner: Include failure messages in failure summary 2025-07-14 16:50:08 +01:00
Anthony Nicholls
f6a9722539 UnitTestRunner: Add argument to run tests by name and allow short form arguments 2025-07-14 16:50:08 +01:00
Anthony Nicholls
59612477bb UnitTest: Add a way to get and run tests by name 2025-07-14 16:50:08 +01:00
Anthony Nicholls
51b46f3cd1 NewLine: Add support for strings appearing on the opposite side of the plus operator 2025-07-14 16:50:08 +01:00
Anthony Nicholls
4ed15dbc9e Time: Prevent errors calculating the UTC offset
Errors might occur on or near epoch or a transition to summer time.
2025-07-11 16:41:01 +01:00
reuk
f5a6c510c0
OpenGLFrameBuffer: Add a row order parameter for reading and writing pixels
This also fixes a bug where saving and restoring the framebuffer state
could unexpectedly apply a vertical flip to the buffer content.
2025-07-10 16:16:12 +01:00
reuk
c77e8a73cc
OpenGLContext (Android): Avoid potentially enqueuing work after context has already stopped 2025-07-10 14:59:18 +01:00
attila
07a7c04d54 Android: Include Component enabled state in AccessibilityNodeInfo.setEnabled
A recent change made disabled components traversable by default when
using a screen reader. This change makes TalkBack report such components
as disabled.
2025-07-10 13:51:12 +02:00
attila
c7390a400f PopupMenu: Make header item components disabled, making them non-interactive using screen readers
This makes screen readers report header items as "dimmed" and offering
no action, similarly to native MacOS menu header items.
2025-07-10 13:51:12 +02:00
attila
8433428036 Accessibility: Make the FocusTraverser navigate onto disabled components
With this change disabled components become discoverable by screen
readers, similarly to how OS native user interface components behave by
default.

The KeyboardFocusTraverser will still skip disabled components so this
does not affect keyboard navigation without screen readers.
2025-07-10 13:51:12 +02:00
reuk
02e826dddb
Android: Always set navigation bar colour 2025-07-09 11:30:28 +01:00
reuk
5298225ee7
Android: Set fullscreen peers as content views, instead of floating windows
This is intended to fix an issue when running Android 33 or 34 in desktop/windowing mode.
2025-07-09 11:30:28 +01:00
reuk
5eaa1a9c55
Android: Avoid reflection to simplify ComponentPeerView 2025-07-09 11:30:28 +01:00
reuk
c134ca5d76
OpenGL (Android): Use a simpler approach to register SurfaceHolder callbacks 2025-07-09 11:30:28 +01:00
reuk
be489028dc
Windows: Ensure modifier keys are left in a consistent state after a nonclient button press 2025-07-09 11:28:03 +01:00
reuk
803ab31d21
Windows: Fix bug where stale mouse button state could get sent to windows after a window move
handlePositionChanged() is called when the window changes z-order, which
may cause a new mouse event to be synthesised if the mouse is over the
window after the z-order is updated. In this situation, we may not have
received a mouse up/down/move event to update the current modifier
flags, so we need to update them ourselves.
2025-07-09 11:28:03 +01:00
reuk
17e13c22fc
Android: Fix scaling of bounds and input coordinates for components using a custom desktop scale factor 2025-07-09 11:28:03 +01:00
reuk
90b89e92b2
OpenGL: Respect result of getDesktopScaleFactor() for component hosting OpenGLContext 2025-07-09 11:28:03 +01:00
reuk
ac65cc5434
OpenGLFrameBuffer: Add early-exit in ~TransientState 2025-07-09 11:27:48 +01:00
reuk
1900dd4e4a
OpenGLFrameBuffer: Use ScopeGuard to unbind framebuffer 2025-07-09 11:27:34 +01:00
reuk
c2d52a5499
OpenGLFrameBuffer: Automatically save/restore content when the context is paused/resumed
This addresses an issue where OpenGL-backed image content could get lost
when putting and Android app into an inactive state. This happens
because the GL context gets destroyed, freeing all associated resources.

The workaround introduced here will listen for OpenGL state-change
events, and attempt to save and restore framebuffer content into main
memory, so that the content can be restored once the app is reactivated.
2025-07-09 11:24:43 +01:00
reuk
fc2caf0a4d
OpenGLFrameBuffer: Refactor to move stored OpenGLContext out of TransientState 2025-07-09 11:24:43 +01:00
reuk
29af89c72a
OpenGLFrameBuffer: Refactor pimpl to represent mutually exclusive states with std::variant 2025-07-09 11:24:43 +01:00
reuk
80c4268a5d
OpenGLFrameBuffer: Refactor SavedState in implementation to allow copying and moving 2025-07-09 11:24:43 +01:00
reuk
3991089409
OpenGLFrameBuffer: Refactor pimpl to completely hide SavedState 2025-07-09 11:24:43 +01:00
reuk
0da5827f72
OpenGLFrameBuffer: Remove unused members in implementation 2025-07-09 11:24:43 +01:00
reuk
416da229f2
OpenGLFrameBuffer: Remove outdated info from docs 2025-07-09 11:24:43 +01:00
reuk
ed8d89125a
DemoRunner: Make parentSizeChanged() robust to calls made before the content component is set 2025-07-09 11:24:43 +01:00