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

8172 commits

Author SHA1 Message Date
reuk
61cdcff2e9
VST3 Host: Ensure requested size is applied, even when plugin does not support scaling
This fixes some issues with Izotope Ozone 9:
- Resizing would stutter, and could leave the view in an inconsistent
  state.
- Closing and reopening the view after resizing would display black bars
  around the editor view.

The root of the problem was that the call to Component::setSize() inside
the resizeView call checked whether the plugin supported resizing. If
not, it would force the embedded view back to the current size. This
behaviour is incorrect - if the plugin requests a resize via resizeView,
the new size should be applied whether or not the plugin "supports
resizing".
2021-09-30 14:19:27 +01:00
reuk
ebf86b5f35
VST3 Host: Correctly size unscalable editors when DPI changes 2021-09-30 14:19:27 +01:00
reuk
9bec8e633a
VST3 Host: Ensure that plugins open with their top left corner in the right position
This fixes a bug on Windows where plugins that do not implement the
IPlugViewContentScaleSupport interface opened in the AudioPluginHost
with their editors in the very top left corner of the window, rather
than below the window's titlebar.

Examples of plugins with no scaling support, suitable for reproducing
the issue:
- U-He Hive 2.1.1 Rev 12092 x64
- FabFilter Pro-C 1.23 x64
2021-09-30 14:19:26 +01:00
reuk
72f3a15616
HWNDComponentPeer: Avoid auto-scaling child hwnds
The scaling machinery in the component peer was causing problems for
hosted plugin views. Scaling the plugin view size requires close
collaboration between the plugin and the host, and it's important for
the host to have exact control over the size of the plugin's view. The
removed code in the HWNDComponentPeer was modifying the sizes of
embedded plugin windows, which would often leave them at an incorrect
size.

The faulty behaviour was especially noticable with plugins that do not
support DPI-aware behaviour. I tested with the following plugins (VST2 +
VST3), which should all now display correctly in the AudioPluginHost,
and assume the correct size when opened on hi-res displays, or dragged
between displays with different scale factors:
- Plogue AlterEgo
- U-He Hive 2
- FabFilter Pro-C
- Native Instruments Supercharger
- Surge
2021-09-30 14:19:26 +01:00
reuk
7cd04f7d74
Windowing: Refactor DPI-related function loading 2021-09-30 14:19:26 +01:00
ed
a87dd82ca2 Prevent optimisation of floating-point status register value in FloatVectorOperations::setFpStatusRegister() 2021-09-30 14:08:23 +01:00
ed
8d72e7fccc Linux: Update displays when DPI settings change 2021-09-29 17:41:04 +01:00
ed
70d36f06db Linux: Implement dark mode detection 2021-09-29 17:40:58 +01:00
ed
3d282c1078 Desktop: Deprecate isOSXDarkModeActive() and add isDarkModeActive() for other platforms 2021-09-29 17:40:58 +01:00
ed
ea35602f18 X11: Use XSettings to respond to window scale factor changes 2021-09-29 17:40:57 +01:00
ed
f69de31094 X11: Add XSettings class for parsing and storing display settings according to the XSETTINGS specification 2021-09-29 17:40:57 +01:00
ed
5e44bc39e0 X11: Pass Display instance to GetXProperty constructor 2021-09-29 17:40:57 +01:00
ed
b9542ccc4c Update code to use C++14 [[deprecated]] attribute
This commit removes the various compiler-specific JUCE_DEPRECATED macros and replaces them with C++14's deprecated attribute. It also removes the JUCE_CATCH_DEPRECATED_CODE_MISUSE flag as we can rely on the override specifier catching usage of these old virtual methods, and tidies up the DOXYGEN preprocessor checks as they were inconsistent across the codebase.
2021-09-29 16:14:00 +01:00
ed
a435026b24 macOS: Use available keyword instead of preprocessor version checks where possible 2021-09-29 16:13:48 +01:00
ed
291f88abb2 macOS/iOS: Suppress and fix unguarded availability warnings 2021-09-29 16:13:27 +01:00
ed
1658d3f9ab Obj-C++: Remove JUCE_OBJC_HAS_AVAILABLE_FEATURE define 2021-09-29 16:13:09 +01:00
ed
d39d0f4885 Docs: Fix some Doxygen warnings 2021-09-29 16:11:30 +01:00
Tom Poole
2c8ec9dae1 Fix a documentation typo 2021-09-29 15:39:37 +01:00
ed
aacca9b23c VST3 Host: Fix some issues with FabFilter plug-ins in DPI-aware Windows hosts 2021-09-29 11:46:41 +01:00
ed
8d75a7a400 Fix auxiliary desktop windows scaling and centring when Desktop::globalScaleFactor != 1.0 2021-09-29 11:46:24 +01:00
ed
46a4dc95a1 Accessibility: Fix potential infinite recursive component keyboard focus loop 2021-09-29 11:46:10 +01:00
ed
c933ad5a16 Accessibility: Fix issue with ListBox selection duplication 2021-09-29 11:46:10 +01:00
ed
5801cf7d09 Accessibility: Fix issue with ListBox custom components not being accessible 2021-09-29 11:46:10 +01:00
ed
2c02ba9723 macOS: Fix compile error when using C++20 language standard 2021-09-29 11:45:43 +01:00
ed
ef6218f6b7 Take MessageManagerLock in FocusTraverser and KeyboardFocusTraverser unit tests 2021-09-29 11:45:06 +01:00
reuk
fad3490946
DelayLine: Add function to retrieve the maximum possible delay time 2021-09-28 14:04:11 +01:00
reuk
4c95897ad3
XWindowSystem: Only dismiss transient modal windows when other windows are moved or resized 2021-09-28 14:04:11 +01:00
reuk
a130cc5d17
NSViewComponentPeer: Only dismiss transient modal windows when other windows are moved or resized 2021-09-28 14:04:11 +01:00
reuk
c9daf4288d
XWindowSystem: Only restack sibling windows
Previously, BadMatch errors were seen when there were several modal
windows, each with a native titlebar. Moving a window would attempt to
restack the windows, which was not possible because the JUCE windows
were not siblings. We actually need to restack the top level windows,
i.e. the windows containing the server-side decorations.
2021-09-28 14:04:11 +01:00
reuk
fd24769019
PluginUtilities: Fix security (4996) warnings on Windows 2021-09-28 14:04:11 +01:00
reuk
58be21d6dc
AudioProcessLoadMeasurer: Allow specifying number of samples per-block 2021-09-28 14:04:11 +01:00
reuk
1a4296e98b
EdgeTable: Avoid shifts of negative numbers 2021-09-28 14:04:10 +01:00
reuk
3a1be39cb6
VSTMidiEventList: Avoid UB Sanitizer warnings about out-of-bounds VLA access 2021-09-28 11:31:50 +01:00
reuk
afa6465098
UB Sanitizer: Avoid warnings in third party code, with clang 2021-09-28 11:31:50 +01:00
reuk
485699020a
UMP: Fix warning about missing braces 2021-09-28 11:31:50 +01:00
reuk
4e694c96b3
ScopedDPIAwarenessDisabler: Move to juce_gui_basics 2021-09-28 11:31:50 +01:00
reuk
8b45ff83e2
Windowing: Ignore suggested window sizes for windows that should not be DPI aware 2021-09-28 11:31:50 +01:00
reuk
ea6d095ab5
XWindowSystem: Implement createSnapshotOfNativeWindow 2021-09-28 11:31:49 +01:00
reuk
31500551e1
Move declaration of createSnapshotOfNativeWindow to module header 2021-09-28 11:31:49 +01:00
reuk
c3c171acaf
Grid: Fix behaviour with negative row/column indices
Negative indices should count backwards from the last explicit
row/column number. If the resulting line number would appear before
the first explicit row/column, implicit grid lines should be added
before the first explicit row/column.
2021-09-28 11:31:49 +01:00
reuk
9360c3f4ff
Windows: Fix issue where minimising a window could overwrite the last "normal" window bounds
Previously, the following series of steps would leave the window at
full-size on Windows:

- Open a JUCE Window
- Maximise it
- Minimise it
- Click the maximise button

The expected behaviour is that the window should return to its initial
size and position, but instead the window still fills the screen.

This issue wasn't present on Ubuntu/Unity because minimising does not
invoke ComponentPeer::handleMovedOrResized on that platform. It was not
present on macOS because the system is responsible for restoring the
previous window size on that platform.
2021-09-28 11:31:49 +01:00
reuk
6c59a31456
Win32 Windowing: Fix uninitialised data members warning 2021-09-28 11:31:49 +01:00
reuk
20bcee5047
MidiMessageSequence: Add tests for createControllerUpdatesForTime 2021-09-28 11:31:49 +01:00
reuk
d0615041f0
Plugin clients: Avoid notifying listeners when parameters have not changed 2021-09-28 11:31:49 +01:00
reuk
836b6edbce
Mac MainMenu: Allow main menu items to be disabled 2021-09-28 11:31:48 +01:00
reuk
ac3d1b7539
MidiKeyboardComponent: Fix potential data race on shouldCheckState data member 2021-09-28 11:31:48 +01:00
reuk
ea250b3655
VST3 Client: Change VST3 native menu so that its position is specified in logical pixels 2021-09-28 11:31:48 +01:00
reuk
0f3e3d365a
iOS: Use safeAreaInsets API on supported platforms, even when deployment target is low
This fixes an issue where building with an old deployment target would
cause apps to display in "unsafe" screen areas.
2021-09-28 11:31:48 +01:00
reuk
3141c32a64
PopupMenu: Avoid const_cast in implementation 2021-09-28 11:31:48 +01:00
reuk
ab966fb499
PopupMenu: Add withMousePosition helper function to Options 2021-09-28 11:31:48 +01:00