From d1b669e6ae77ec7e02994438c59ca341a7e2536e Mon Sep 17 00:00:00 2001 From: ed Date: Wed, 16 Jun 2021 17:22:35 +0100 Subject: [PATCH] Accessibility: Added InternalAccessibilityEvent::elementMovedOrResized --- .../accessibility/juce_AccessibilityHandler.cpp | 1 + modules/juce_gui_basics/components/juce_Component.cpp | 4 ++++ .../native/accessibility/juce_mac_Accessibility.mm | 11 ++++++----- .../native/accessibility/juce_win32_Accessibility.cpp | 9 +++++---- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp b/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp index a6809ee92f..7548a64b00 100644 --- a/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp +++ b/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp @@ -34,6 +34,7 @@ enum class InternalAccessibilityEvent { elementCreated, elementDestroyed, + elementMovedOrResized, focusChanged, windowOpened, windowClosed diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp index 428aa58895..739435fe14 100644 --- a/modules/juce_gui_basics/components/juce_Component.cpp +++ b/modules/juce_gui_basics/components/juce_Component.cpp @@ -1202,6 +1202,10 @@ void Component::sendMovedResizedMessages (bool wasMoved, bool wasResized) l.componentMovedOrResized (*this, wasMoved, wasResized); }); } + + if (wasMoved || wasResized) + if (auto* handler = getAccessibilityHandler()) + notifyAccessibilityEventInternal (*handler, InternalAccessibilityEvent::elementMovedOrResized); } void Component::setSize (int w, int h) { setBounds (getX(), getY(), w, h); } diff --git a/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm b/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm index 2ab9237f1c..347ab48939 100644 --- a/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm +++ b/modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm @@ -1069,11 +1069,12 @@ void notifyAccessibilityEventInternal (const AccessibilityHandler& handler, Inte { switch (eventType) { - case InternalAccessibilityEvent::elementCreated: return NSAccessibilityCreatedNotification; - case InternalAccessibilityEvent::elementDestroyed: return NSAccessibilityUIElementDestroyedNotification; - case InternalAccessibilityEvent::focusChanged: return NSAccessibilityFocusedUIElementChangedNotification; - case InternalAccessibilityEvent::windowOpened: return NSAccessibilityWindowCreatedNotification; - case InternalAccessibilityEvent::windowClosed: break; + case InternalAccessibilityEvent::elementCreated: return NSAccessibilityCreatedNotification; + case InternalAccessibilityEvent::elementDestroyed: return NSAccessibilityUIElementDestroyedNotification; + case InternalAccessibilityEvent::elementMovedOrResized: return NSAccessibilityLayoutChangedNotification; + case InternalAccessibilityEvent::focusChanged: return NSAccessibilityFocusedUIElementChangedNotification; + case InternalAccessibilityEvent::windowOpened: return NSAccessibilityWindowCreatedNotification; + case InternalAccessibilityEvent::windowClosed: break; } return NSAccessibilityNotificationName{}; diff --git a/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp b/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp index 15a596d93b..1faf73f4f7 100644 --- a/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp +++ b/modules/juce_gui_basics/native/accessibility/juce_win32_Accessibility.cpp @@ -168,11 +168,12 @@ void notifyAccessibilityEventInternal (const AccessibilityHandler& handler, Inte { switch (eventType) { - case InternalAccessibilityEvent::focusChanged: return UIA_AutomationFocusChangedEventId; - case InternalAccessibilityEvent::windowOpened: return UIA_Window_WindowOpenedEventId; - case InternalAccessibilityEvent::windowClosed: return UIA_Window_WindowClosedEventId; + case InternalAccessibilityEvent::focusChanged: return UIA_AutomationFocusChangedEventId; + case InternalAccessibilityEvent::windowOpened: return UIA_Window_WindowOpenedEventId; + case InternalAccessibilityEvent::windowClosed: return UIA_Window_WindowClosedEventId; case InternalAccessibilityEvent::elementCreated: - case InternalAccessibilityEvent::elementDestroyed: break; + case InternalAccessibilityEvent::elementDestroyed: + case InternalAccessibilityEvent::elementMovedOrResized: break; } return {};