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

3223 commits

Author SHA1 Message Date
reuk
f0928ebd6e
Windowing: Fix link of UserNotifications framework on iOS
Since eb6ebaf5, juce_gui_basics always depends on UserNotifications when
building for iOS.
2024-11-21 22:19:31 +00:00
reuk
b72e43620c
Grid: Fix cell ordering comparison
Previously, the set Comparator behaved the same way, regardless of the
value of columnFirst. This is incorrect; the set should be sorted such
that the final item in the set has the greatest cross-dimension.

There was also an off-by-one error in the result of
getHighestCrossDimension(). The highestCrossDimension data member is
exclusive, but the cell values in the occupiedCells set are inclusive.
We need to add 1 to the maximum cell cross-dimension in order to convert
it to an exclusive value.
2024-11-21 13:42:54 +00:00
reuk
8fa09ae8ab
Grid: Refactor to move columnFirst data member to set Comparator 2024-11-21 13:41:09 +00:00
reuk
d4107836cd
Grid: Convert nonstatic member function to static 2024-11-21 13:41:08 +00:00
Tom Poole
5737c42ccf Use getSiblingFile in more places 2024-11-20 10:10:35 +00:00
Tom Poole
71af005543 Bump version number to 8.0.4 2024-11-18 10:12:15 +00:00
reuk
24ab3cb6a3
Windows: Fix mouse position reporting for maximised windows with non-native titlebars
Previously, windows with non-native titlebars but with native shadows
would misreport mouse-down and mouse-up positions when maximised.
2024-11-05 13:28:10 +00:00
reuk
93640b63ff
Compatibility: Add new macros for straightforward checking of minimum deployment target
This also fixes a bug introduced in f7c7225f5c
where the condition guarding the definition of traitCollectionDidChange
was incorrect. This function is never required if the deployment target
is at least 17.0.
2024-11-05 13:28:10 +00:00
reuk
b108fe26c3
NSViewComponentPeer: Only forward a mouse move event if the view is not occluded by a child view 2024-11-04 11:10:54 +00:00
reuk
fcf62ab105
NSViewComponentPeer: Fix coordinate system conversion in contains()
The argument to hitTest must be in the superview's coordinate system.
The old implementation would sometimes break in the presence of nested
NSViews.
2024-11-04 11:10:54 +00:00
reuk
3005b716fe
ObjCHelpers: Add new macros to help with version checking 2024-10-29 19:46:35 +00:00
reuk
eb6ebaf5af
Windowing: Fix deprecation warnings for iOS 17 2024-10-29 19:46:35 +00:00
reuk
dbe74e9f5d
UIViewComponentPeer: Fix deprecation warnings for iOS 13 2024-10-29 19:46:35 +00:00
reuk
f7c7225f5c
UIViewComponentPeer: Fix deprecation warnings for iOS 17 2024-10-29 19:46:35 +00:00
reuk
128e258845
UIViewComponentPeer: Remove unnecessary method declarations from interface 2024-10-29 19:46:34 +00:00
reuk
a4ba0c1b1c
FileChooser: Fix deprecation warnings for iOS 14 2024-10-29 19:46:34 +00:00
無常
d9ed81b4f0
WindowsDLL: Add missing JUCE_API attributes 2024-10-27 16:16:26 +00:00
attila
425f1858b5 VBlankAttachment: Add new constructor with a callback that receives a timestamp 2024-10-25 15:45:56 +02:00
attila
d9a3efd3cb ComponentPeer::VBlankListener: Add timestamp parameter to the vblank callback 2024-10-25 15:44:34 +02:00
attila
3c38adcc03 ResizableWindow: Remove assertion
The assertion can routinely fire on Linux, where a window may go through
many size changes from (0, 0) to its actual size due to the nature of
how XWindow reports these in subsequent ConfigureNotify events.

These subsequent changes aren't visibly observable by users.
2024-10-24 13:10:14 +02:00
attila
3118ee1e5c Linux: Prevent stale ConfigureNotify events from overwriting the current window position 2024-10-24 13:10:14 +02:00
reuk
90f37e27ea Windows: Fix DLL build
There were a few "ambiguous operator new/delete" errors that were due to
inheriting from a private base class that used the leak detector. These
errors are resolved by adding the leak detector to the derived classes.

JUCE_API was missing from a few useful types, notably the ARA hosting
types.
2024-10-22 13:24:46 +01:00
reuk
8ccea668e4
PopupMenu: Adjust mouse interactions so that menu is only dismissed on mouseUp if the mouse has moved
Previously, MouseSourceState::checkButtonState would trigger a menu item
if the MouseSourceState had observed the mouse button transition from
pressed to released while over an item, after more than 250ms had
elapsed since creating the menu window. In situations where the main
thread was very busy, this timeout could sometimes be reached inside the
same mouse click/release gesture. If the menu was created inside a
mouse-down, then simply tapping the mouse could sometimes trigger an
item from the menu as soon as the menu window appeared.

To help avoid accidentally triggering menu items, the menu window now
prevents any item from being triggered by the mouse until either the
mouse has been released once, or the mouse has moved. Put another way,
if the mouse is initially pressed when the menu is shown, it cannot
trigger a menu item unless the mouse is moved before it is released.
2024-10-20 22:59:40 +01:00
reuk
db4a2c0b9f
PopupMenu: Make dismissOnMouseUp private 2024-10-20 22:59:40 +01:00
reuk
570b86ff0c
PopupMenu: Refactor mouseOver detection
The mouseWasOver member will now be updated on each mouse event, rather
than on a timer.
2024-10-20 22:59:40 +01:00
reuk
44a84e3a4d
MessageBox: Avoid potential divide-by-zero for boxes with no buttons 2024-10-20 22:59:39 +01:00
reuk
b292ba215a
Component: Ensure global mouse listeners are notified on mouse up
Previously, listeners would sometimes fail to receive mouse up events
blocked by modal components
2024-10-20 22:59:39 +01:00
reuk
80ac9a78a0
Singleton: Add new macros to simplify singleton creation
The INLINE macros allow singletons to be declared and defined in one
line, without requiring a separate JUCE_IMPLEMENT_SINGLETON statement.
2024-10-16 10:36:52 +01:00
Tom Poole
14c8d06fb0 Bump version number to 8.0.3 2024-10-15 22:16:12 +01:00
reuk
c7f7a7c1bb
Direct2D: Remove setResizing and getResizing members from renderer
We instead query from the renderer whether the current render size has
changed since the last frame, and repaint the entire window if so.
2024-10-07 11:50:26 +01:00
reuk
fdf74a7477
Windowing: Reinstate old WindowFromPoint behaviour in ComponentPeer::contains
This reverts 515e9b9f89.

In order to avoid recursive calls through WM_NCHITTEST, we remove calls
to Component::contains in DocumentWindow::findControlAtPoint.
2024-10-02 11:35:39 +01:00
reuk
ad5a755b10
Viewport: Avoid stack overflows when displaying transformed content components
For some transforms, the program could get stuck in the following loop:
- The content component emits a resized/moved notification, leading to
  the initial call to Viewport::updateVisibleArea.
- New positions are computed for the viewport scrollbars, and scrollbar
  listeners are notified synchronously that the scrollbars have been
  updated.
- The viewport itself listens to the scrollbars, so it receives a
  notification and updates the position of the content component.
- The scrollbar position (quantised to an integer) resolves to a
  component position (also quantised to an integer) that differs from
  the existing position, so the new position is applied.
- The viewport now attempts to set the scrollbars to the correct
  position in response, and notifies listeners that the scrollbars
  have moved...

Normally, the recursion would exit at the point where the component position
is set to its current position. If we're unlucky, though, converting
from view pos to scrollbar pos, then scrollbar pos back to view pos may
result in a view pos that differs from the original value.

This fix adds a new exit condition from the recursion. On receiving a
scrollbar move notification, we check whether the scrollbar position
computed from the current view position matches the incoming scrollbar
position. If it does, there's no need to compute and apply a new view
position from the incoming scrollbar position.
2024-10-02 11:35:38 +01:00
reuk
102ef24061
Direct2D: Avoid unnecessarily reallocating window buffers during window move 2024-10-02 11:35:37 +01:00
reuk
9cf7889422 ContentSharer: Use SEND instead of SEND_MULTIPLE when sharing individual files 2024-09-30 20:12:51 +01:00
reuk
c02ec2e3d5 DocumentWindow: Ensure button callbacks are called on Windows 2024-09-30 20:12:51 +01:00
reuk
f5f758c032 Partially revert "ComponentPeer: Add isShowing() member, which more closely matches expected behaviour of Component::isShowing"
This partially reverts commit 555b667d22.

Using ComponentPeer::isShowing instead of ComponentPeer::isMinimised
inside Component::isShowing can cause problems when displaying OpenGL
components.

Specifically, OpenGL components use a ComponentMovementWatcher to
determine when they should be attached/detached from the parent window.
The ComponentMovementWatcher updates whenever a component visibility
change event is emitted, which happens in two cases:
- Component::setVisible is called on the OpenGL component or an ancestor
- ComponentPeer::handleMovedOrResized is called in response to a
  minimisation state change

When handling either of these events, the ComponentMovementWatcher will
call Component::isShowing to determine whether or not the component is
really showing.

The problem is that the result of ComponentPeer::isShowing may change
independently of changes to the Component visiblity state or
ComponentPeer minimisation state, so the ComponentPeerWatcher might not
notify its listeners when a component is really shown/hidden.

One potential workaround would be for the ComponentPeer to send
notifications when the showing state of the window changes, so that the
ComponentMovementWatcher can forward those notifications. The main
problem with this approach is that on Windows, the window doesn't seem
to receive a message on hide/show, and it's not clear whether there
exists some other approach to detect a hide/show event.

If there were some event we could listen for on Windows, then we could
call Component::sendVisibilityChangeMessage in response to this event
and things would *likely* work at that point, but this may still have
unintended side-effect. As a result, I think the best approach to
restore the old behaviour is to revert the change to
Component::isShowing. The implementations of ComponentPeer::isShowing
have been left in place so that users can do still query the real
visibility state of native windows if necessary.
2024-09-30 19:50:37 +01:00
Tom Poole
7d3affbcb3 Merge master JUCE 8.0.2 branch 2024-09-26 12:43:39 +01:00
Anthony Nicholls
6c2d149ef3 Versioning: Add the JUCE version number to any internally created threads 2024-09-26 08:10:56 +00:00
Tom Poole
c1d2846e47 Bump version number to 8.0.2 2024-09-26 08:31:50 +01:00
reuk
29213e07a1
Font: Deprecate getStringWidth and getGlyphPositions 2024-09-18 19:13:09 +01:00
reuk
555b667d22
ComponentPeer: Add isShowing() member, which more closely matches expected behaviour of Component::isShowing 2024-09-18 15:44:05 +01:00
reuk
589d9940ed
Direct2D: Add support for bitmaps spanning multiple texture pages 2024-09-18 15:44:04 +01:00
reuk
8754d87900 Windows: Fix build warnings when JUCE_DISABLE_ASSERTIONS is set 2024-09-13 13:57:10 +01:00
reuk
e598337655 NativeMessageBox: Fix string pointer use-after-free
toWideCharPointer() returns a pointer to a buffer managed by the String.
The wchar_t pointers are not read until the invocation of
TaskDialogIndirect, so the String instances must remain alive until this
point.
2024-09-05 12:21:02 +01:00
reuk
faf6d9976a
Windows: Fix WM_NCCALCSIZE behaviour for frameless windows on multiple display systems
Previously, maximising a frameless window on a secondary display could
result in the window's coordinates being computed incorrectly, leading
to graphical glitches.
2024-09-05 12:16:39 +01:00
reuk
11821d88a4
Windows: Avoid attempting to dismiss modals during minimise/restore 2024-09-05 12:11:30 +01:00
reuk
0ed2ae64fa
Windows: Fix issue where windows with titlebars reported the wrong transparency kind 2024-08-23 16:12:29 +01:00
reuk
340f531c71
Direct2D: Reinstate support for transparent windows 2024-08-22 20:19:49 +01:00
reuk
6f2293d91b
Windows: Fix conversion of WindowsBitmapImages to SoftwareBitmapImages 2024-08-22 18:18:17 +01:00
reuk
b7db89cb8e
Windows: Fix capture of software-rendered windows with per-pixel alpha 2024-08-22 18:18:17 +01:00