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

15386 commits

Author SHA1 Message Date
reuk
6bc274286f
Windows: Fix mouse state tracking when mouse leaves window
467f20a7a1 introduced a change to start processing WM_NCMOUSELEAVE
messages as mouse-exit events. This behaviour is not quite correct,
because NCMOUSELEAVE may be triggered when moving the cursor from the
nonclient area to the client area, in which case the mouse is still over
the window.

We now check whether the mouse is really over the window inside
doMouseExit(), and continue to track it if necessary.
2025-06-19 14:45:30 +01:00
reuk
b8e0146a3c
Network: Make Linux networking code robust against user headers that already end with CRLF 2025-06-19 14:45:30 +01:00
reuk
58fabf3a8f
XmlElement: Add new API to allow iterating over attributes 2025-06-19 14:45:30 +01:00
reuk
a3f813d8a5
ToolbarItem: Tidy up constructor 2025-06-19 14:42:49 +01:00
reuk
5d7208bb54
ModifierKeys: Avoid direct access to currentModifiers when reading but not writing 2025-06-19 14:42:49 +01:00
reuk
0a71227126
DemoRunner: Protect against null peer when updating renderer 2025-06-19 14:42:49 +01:00
Oli
8fd73d33a8 Graphics: Modify imported libjpeg sources for unity build compatibility 2025-06-19 13:18:43 +01:00
Oli
34c8704a25 Graphics: Import JPEG library code 2025-06-19 13:18:42 +01:00
Oliver James
7f00a8bcb4 Projucer (MSVC): Make Zi default debug info flag
This restores the original debug-flag for MSVC projects generated by the Projucer.
2025-06-19 12:03:26 +01:00
Oliver James
4a79bc5cfd CMake (MSVC): Make Zi default debug info flag
This restores the original debug-flag for CMake builds on Windows.
2025-06-19 12:03:26 +01:00
Oli
20b6a2c290 DemoRunner: Add FontFeatures Demo 2025-06-17 12:38:20 +01:00
Oliver James
d651f6740c Fonts: Add OpenType feature support 2025-06-17 12:38:20 +01:00
Tom Poole
a5797efeb0 CI: Handle more errors when connecting to the GitHub API 2025-06-17 09:59:44 +01:00
attila
f371fecb34 Fix compilation when JUCE_USE_LAME_AUDIO_FORMAT=1
This fixes a regression in 1ce35453db.
2025-06-17 10:13:52 +02:00
Tom Poole
e926ecb9e9 CI: Fix skipped docs job 2025-06-17 09:02:33 +01:00
reuk
fa701a1bd9
SimpleShapedText: Use string with replaced whitspace during fallback font substitution
This is intended to address an assertion that sometimes fired during
shaping text on Android, for example when using the font "Noto Sans
Symbols" and shaping ASCII text including a line break in a multiline
text editor.

The cause of the issue seems to be that the shaper would search for
substitute fonts using the original string content, but would then
replace some characters in the string during shaping. Shaping could then
fail if the font did not contain glyphs for the replaced characters.

We now create a UTF32 string with replaced characters at the beginning
of the shaping process, and use that new string for all queries other
than unicode analysis.
2025-06-16 16:59:55 +01:00
reuk
e5049ad6e9
SimpleShapedText: Avoid UTF8-lookup allocations 2025-06-16 16:59:55 +01:00
reuk
a3d64c7784
Typeface: Enable advanced colour glyph rendering on Android
Android 15+ removed the 'legacy' png-based emoji font. Modern Android
versions may include only a COLR-v1-based font, which JUCE cannot
render itself.

As a workaround, on Android, we use a Canvas object to render each emoji
glyph into a bitmap, and then render that bitmap in the same way as a
legacy png-based glyph. This won't look as crisp as rendering COLRv1
glyphs directly, especially at larger sizes, but this is a sufficient
stop-gap for the time being.
2025-06-16 16:59:55 +01:00
reuk
70a2dd7e15
UIViewComponentPeer: Adopt the UIScene lifecycle on iOS 13+ 2025-06-16 16:59:55 +01:00
reuk
2c5b1fbb6f
NativeMessageBox: On iOS, prefer the peer of the associatedComponent to the focused peer to determine the parent controller 2025-06-16 16:59:55 +01:00
Tom Poole
6bee9d515c CI: Don't unconditionally skip the deploy job if the build job was skipped 2025-06-16 14:34:34 +01:00
Tom Poole
ca10a2c56b CI: Skip main build if check has already passed 2025-06-16 11:51:11 +01:00
attila
1ce35453db Deprecate the old AudioFormat::createWriterFor functions 2025-06-12 20:02:33 +02:00
attila
eb7de7f15b AudioRecordingDemo: Use the new AudioFormat::createWriterFor overload 2025-06-12 20:02:33 +02:00
attila
9feee44070 AUv3SynthPluginDemo: Use the new AudioFormat::createWriterFor overload 2025-06-12 20:02:33 +02:00
attila
386daafe23 WavAudioFormat: Add support for writing 32 bit integral (PCM) format 2025-06-12 20:02:33 +02:00
Anthony Nicholls
34675235e5 VST3: Prevent some warnings 2025-06-12 15:52:01 +01:00
Anthony Nicholls
26edac975d VST3: Fix a bug converting a compatibility ID to a string 2025-06-12 15:52:01 +01:00
Anthony Nicholls
7c7e51176e VST3: Include the name and version in the moduleinfo 2025-06-12 15:52:01 +01:00
Anthony Nicholls
af256aab02 VST3: Prevent a compiler warning 2025-06-11 15:50:44 +01:00
reuk
37bb7a6c30
iOS: Fix deprecation warning 2025-06-10 20:16:02 +01:00
reuk
6f1d116279
macOS: Add initial macOS 26 suport 2025-06-10 20:15:58 +01:00
Anthony Nicholls
46703f3e65 PluginListComponent: Replace inappropriate naming with more suitable alternatives 2025-06-10 16:14:06 +01:00
Anthony Nicholls
f3d7c74ea1 VST3: Allow manifest helper to run independently 2025-06-10 16:13:33 +01:00
Anthony Nicholls
80116d60da VST3: Platform header should be included from user supplied SDK 2025-06-10 16:13:33 +01:00
Anthony Nicholls
c1c8eccb99 Core: Prevent a preprocessor definition leak in zlib 2025-06-10 16:13:33 +01:00
Anthony Nicholls
0181f52c48 OpenGL: Document blend parameter for copyTexture method 2025-06-10 16:13:33 +01:00
Anthony Nicholls
b6d6ec573d GlyphArrangement: Add documentation tag 2025-06-10 16:13:33 +01:00
attila
8ea8cdac6d TextEditor: Allow soft breaks inside words in multi-line mode
This restores the JUCE 7 behaviour.
2025-06-10 12:49:23 +02:00
reuk
492738c9c5
Docs: Fix typo in AudioFormatManager 2025-06-09 11:22:19 +01:00
reuk
5c34248d00
PluginListComponent: Wait for current scan to complete before calling owner.scanFinished()
I observed a deadlock when scanning AU plugins in-process in the
AudioPluginHost, and then clicking the "cancel" button in the scan
progress alert window.

The cause of the deadlock seems to be that JUCE uses async messages to
create and destroy AU plugins on the main thread. When running a plugin
scanner on a background thread, it was possible to end up in a situation
where the background thread was waiting on the message thread to process
a create/destroy message; and, at the same time, the main thread was
blocked waiting for all scan jobs to complete. This seemed to happen
because scanFinished() was called directly from the Scanner's
timerCallback as soon as the progress window was cancelled, even if
there was still a scan in progress at that point.

To avoid the deadlock, we now wait until the current scan has completely
finished before allowing the timerCallback to call scanFinished(). If no
scan is in progress, then the main thread can safely destroy the scanner
ThreadPool without needing to wait at that point.
2025-06-06 23:12:16 +01:00
reuk
dc890c69c2
PluginListComponent: Use lambda form of ModalCallbackFunction 2025-06-06 23:12:16 +01:00
reuk
5d50d6bcdc
CMake: Allow setting NSLocalNetworkUsageDescription on Apple platforms 2025-06-06 23:12:16 +01:00
reuk
a2863e636f
Projucer: Allow setting NSLocalNetworkUsageDescription for Xcode exporter 2025-06-06 23:12:16 +01:00
reuk
6cd9566868
GenericAudioProcessorEditor: Avoid creating choice parameter components for discrete parameters with large numbers of steps 2025-06-06 23:12:16 +01:00
reuk
b349531966
AU Host: Avoid caching parameter value strings when getNumSteps() returns a large value 2025-06-03 16:12:00 +01:00
reuk
15f05443d0
Graphics: Add missing JUCE_API annotation to ScopedSaveState 2025-06-03 16:12:00 +01:00
reuk
4bb44c7b36
NetworkGraphicsDemo: Fix build issue due to missing implementation of abstract function 2025-06-03 16:12:00 +01:00
reuk
5208b3ffc0
GlyphArrangement: Use portable string trimming 2025-06-03 16:12:00 +01:00
reuk
08f449d2b0
AudioVisualiserComponent: Fix potential data races
In the old implementation, because pushSample() could be called on the
audio thread, and updated the levels array and the nextSample value
non-atomically, other threads (e.g. the UI thread) were not guaranteed
to see these updates in a consistent order.
2025-06-03 16:12:00 +01:00