Prior to this commit all Grid calculations were carried out using
floating point numbers. The dimensions of all items would then be
rounded with the same function to calculate the integer dimensions used
for Component layout. This resulted in layout solutions where the width
or height of items with dimensions specified using the absolute Px
quantity could differ from the correctly rounded value of these values.
This commit ensures that the width and height of these items are always
correct and their cumulative error in size is distributed among items
with fractional dimensions.
This commit fixes a bug where a View would be registered as it's own
parent in the accessibility hierarchy leading to stack overflows in the
Android accessibility service. The issue affected up-to-date Android 13
systems and potentially older systems with updated accessibility
services.
Previously when using the FileBrowserComponent in TreeView mode, a
refresh would delete all items and rebuild the UI based on new
directory scan data, losing the openness state in the process. With
this commit only changes are applied to the current TreeView.
When clearing deferredRepaints in drawRect, dirty regions in the 'next'
frame could be incorrectly removed while drawing the 'current' frame.
Now, deferredRepaints is cleared in setNeedsDisplayRectangles, as it
was before 9d50ab6c59.
In cases where no JUCE component had keyboard focus, clicking a menu
item would cause the menu to be dismissed instead of triggering the
item's action.
The main change is that the numFramesToSkipMetalRenderer member has been
removed. The old mechanism had some problems in AU plugins in Logic.
Specifically, when opening a temporary window, repaints would be ignored
until the numFramesToSkipMetalRenderer counter had been decremented to
zero. In practice, this meant that a PopupMenu might not repaint until
the highlighted item had changed five times or more.
With this change applied, repaints that were requested for a particular
window size will use the metal renderer as long as the window hasn't
changed size in the meantime.
In some cases, processing key inputs may cause the currently-focused
text input target to be destroyed. If this happens, we shouldn't attempt
to reset the underlining on the target. We now reset the underlining
before processing key presses.
- Created a new detail namespace
- Moved shared module implementation details into the detail namespace
- Split dependencies so source files only rely on details in the detail namespace
- Removed all code from the juce_gui_basics.cpp file
Fixes a bug on Windows when opening a FileChooser with the following
arguments.
FileChooser ("",
"C:\path\to\file", // filename 'file' doesn't contain '.'
"", // all extensions are allowed
true);
The expected behaviour is that the initially-displayed filename is
"file".
The actual behaviour was that the initially-displayed filename was
"file.file".
The biggest new feature in this commit is the addition of
NativeMessageBox::scopedAsync and AlertWindow::scopedAsync, both of
which return an instance of ScopedMessageBox that will hide the message
box in its destructor.
The code for displaying modal dialogs on Windows has also been updated.
Now, the dialog itself is run from a new thread with its own message
loop. This means that when the dialog is dismissed, the background
thread can be joined safely. In plugins, this means that there's no
danger of the plugin view being destroyed from within the message box
runloop, for example.