LMMS
Loading...
Searching...
No Matches
juce_win32_UIAWindowProvider.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
31 public ComBaseClassHelper<ComTypes::IWindowProvider>
32{
33public:
35
36 //==============================================================================
38 {
39 if (! isElementValid())
40 return (HRESULT) UIA_E_ELEMENTNOTAVAILABLE;
41
42 if (auto* peer = getPeer())
43 {
44 switch (state)
45 {
47 peer->setFullScreen (true);
48 break;
49
51 peer->setMinimised (true);
52 break;
53
55 peer->setFullScreen (false);
56 peer->setMinimised (false);
57 break;
58
59 default:
60 break;
61 }
62
63 return S_OK;
64 }
65
66 return (HRESULT) UIA_E_NOTSUPPORTED;
67 }
68
70 {
71 if (! isElementValid())
72 return (HRESULT) UIA_E_ELEMENTNOTAVAILABLE;
73
74 if (auto* peer = getPeer())
75 {
76 peer->handleUserClosingWindow();
77 return S_OK;
78 }
79
80 return (HRESULT) UIA_E_NOTSUPPORTED;
81 }
82
83 JUCE_COMRESULT WaitForInputIdle (int, BOOL* pRetVal) override
84 {
85 return withCheckedComArgs (pRetVal, *this, []
86 {
87 return (HRESULT) UIA_E_NOTSUPPORTED;
88 });
89 }
90
92 {
93 return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
94 {
95 if (auto* peer = getPeer())
96 {
97 *pRetVal = (peer->getStyleFlags() & ComponentPeer::windowHasMaximiseButton) != 0;
98 return S_OK;
99 }
100
101 return (HRESULT) UIA_E_NOTSUPPORTED;
102 });
103 }
104
106 {
107 return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
108 {
109 if (auto* peer = getPeer())
110 {
111 *pRetVal = (peer->getStyleFlags() & ComponentPeer::windowHasMinimiseButton) != 0;
112 return S_OK;
113 }
114
115 return (HRESULT) UIA_E_NOTSUPPORTED;
116 });
117 }
118
119 JUCE_COMRESULT get_IsModal (BOOL* pRetVal) override
120 {
121 return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
122 {
123 if (auto* peer = getPeer())
124 {
125 *pRetVal = peer->getComponent().isCurrentlyModal();
126 return S_OK;
127 }
128
129 return (HRESULT) UIA_E_NOTSUPPORTED;
130 });
131 }
132
134 {
135 return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
136 {
137 if (auto* peer = getPeer())
138 {
139 if (peer->isFullScreen())
141 else if (peer->isMinimised())
143 else
145
146 return S_OK;
147 }
148
149 return (HRESULT) UIA_E_NOTSUPPORTED;
150 });
151 }
152
154 {
155 return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
156 {
157 if (auto* peer = getPeer())
158 {
159 *pRetVal = peer->getComponent().isCurrentlyBlockedByAnotherModalComponent()
162
163 return S_OK;
164 }
165
166 return (HRESULT) UIA_E_NOTSUPPORTED;
167 });
168 }
169
171 {
172 return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
173 {
174 if (auto* peer = getPeer())
175 {
176 *pRetVal = peer->isFocused();
177 return S_OK;
178 }
179
180 return (HRESULT) UIA_E_NOTSUPPORTED;
181 });
182 }
183
184private:
186 {
187 return getHandler().getComponent().getPeer();
188 }
189
190 //==============================================================================
192};
193
194} // namespace juce
ComBaseClassHelper(unsigned int initialRefCount=1)
Definition juce_win32_ComSmartPtr.h:203
Definition juce_ComponentPeer.h:44
@ windowHasMaximiseButton
Definition juce_ComponentPeer.h:62
@ windowHasMinimiseButton
Definition juce_ComponentPeer.h:60
const AccessibilityHandler & getHandler() const
Definition juce_win32_UIAProviderBase.h:46
UIAProviderBase(AccessibilityNativeHandle *nativeHandleIn)
Definition juce_win32_UIAProviderBase.h:33
bool isElementValid() const
Definition juce_win32_UIAProviderBase.h:38
Definition juce_win32_UIAWindowProvider.h:32
JUCE_COMRESULT get_IsModal(BOOL *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:119
ComponentPeer * getPeer() const
Definition juce_win32_UIAWindowProvider.h:185
JUCE_COMRESULT WaitForInputIdle(int, BOOL *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:83
JUCE_COMRESULT get_IsTopmost(BOOL *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:170
JUCE_COMRESULT get_WindowVisualState(ComTypes::WindowVisualState *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:133
JUCE_COMRESULT get_CanMinimize(BOOL *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:105
JUCE_COMRESULT SetVisualState(ComTypes::WindowVisualState state) override
Definition juce_win32_UIAWindowProvider.h:37
UIAProviderBase(AccessibilityNativeHandle *nativeHandleIn)
Definition juce_win32_UIAProviderBase.h:33
JUCE_COMRESULT get_WindowInteractionState(ComTypes::WindowInteractionState *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:153
JUCE_COMRESULT Close() override
Definition juce_win32_UIAWindowProvider.h:69
JUCE_COMRESULT get_CanMaximize(BOOL *pRetVal) override
Definition juce_win32_UIAWindowProvider.h:91
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_COMRESULT
Definition juce_win32_ComSmartPtr.h:54
WindowInteractionState
Definition juce_win32_ComInterfaces.h:115
@ WindowInteractionState_BlockedByModalWindow
Definition juce_win32_ComInterfaces.h:119
@ WindowInteractionState_Running
Definition juce_win32_ComInterfaces.h:116
WindowVisualState
Definition juce_win32_ComInterfaces.h:108
@ WindowVisualState_Minimized
Definition juce_win32_ComInterfaces.h:111
@ WindowVisualState_Normal
Definition juce_win32_ComInterfaces.h:109
@ WindowVisualState_Maximized
Definition juce_win32_ComInterfaces.h:110
Definition carla_juce.cpp:31
JUCE_COMRESULT withCheckedComArgs(Value *pRetVal, Object &handle, Callback &&callback)
Definition juce_win32_UIAHelpers.h:106
#define S_OK
Definition swell-types.h:53
signed int HRESULT
Definition swell-types.h:181
signed char BOOL
Definition swell-types.h:160