LMMS
Loading...
Searching...
No Matches
juce_ComponentPeer.cpp
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
30
31//==============================================================================
33 : component (comp),
35 uniqueID (lastUniquePeerID += 2) // increment by 2 so that this can never hit 0
36{
37 auto& desktop = Desktop::getInstance();
38 desktop.peers.add (this);
39 desktop.addFocusChangeListener (this);
40}
41
43{
44 auto& desktop = Desktop::getInstance();
45 desktop.removeFocusChangeListener (this);
46 desktop.peers.removeFirstMatchingValue (this);
47 desktop.triggerFocusCallback();
48}
49
50//==============================================================================
52{
53 return Desktop::getInstance().peers.size();
54}
55
56ComponentPeer* ComponentPeer::getPeer (const int index) noexcept
57{
58 return Desktop::getInstance().peers [index];
59}
60
62{
63 for (auto* peer : Desktop::getInstance().peers)
64 if (&(peer->getComponent()) == component)
65 return peer;
66
67 return nullptr;
68}
69
70bool ComponentPeer::isValidPeer (const ComponentPeer* const peer) noexcept
71{
72 return Desktop::getInstance().peers.contains (const_cast<ComponentPeer*> (peer));
73}
74
79
81{
82 return Desktop::getInstance().getKioskModeComponent() == &component;
83}
84
85//==============================================================================
87 float newPressure, float newOrientation, int64 time, PenDetails pen, int touchIndex)
88{
89 if (auto* mouse = Desktop::getInstance().mouseSources->getOrCreateMouseInputSource (type, touchIndex))
90 MouseInputSource (*mouse).handleEvent (*this, pos, time, newMods, newPressure, newOrientation, pen);
91}
92
94{
95 if (auto* mouse = Desktop::getInstance().mouseSources->getOrCreateMouseInputSource (type, touchIndex))
96 MouseInputSource (*mouse).handleWheel (*this, pos, time, wheel);
97}
98
100{
101 if (auto* mouse = Desktop::getInstance().mouseSources->getOrCreateMouseInputSource (type, touchIndex))
102 MouseInputSource (*mouse).handleMagnifyGesture (*this, pos, time, scaleFactor);
103}
104
105//==============================================================================
107{
108 Graphics g (contextToPaintTo);
109
110 if (component.isTransformed())
111 g.addTransform (component.getTransform());
112
113 auto peerBounds = getBounds();
114 auto componentBounds = component.getLocalBounds();
115
116 if (component.isTransformed())
117 componentBounds = componentBounds.transformedBy (component.getTransform());
118
119 if (peerBounds.getWidth() != componentBounds.getWidth() || peerBounds.getHeight() != componentBounds.getHeight())
120 // Tweak the scaling so that the component's integer size exactly aligns with the peer's scaled size
121 g.addTransform (AffineTransform::scale ((float) peerBounds.getWidth() / (float) componentBounds.getWidth(),
122 (float) peerBounds.getHeight() / (float) componentBounds.getHeight()));
123
124 #if JUCE_ENABLE_REPAINT_DEBUGGING
125 #ifdef JUCE_IS_REPAINT_DEBUGGING_ACTIVE
126 if (JUCE_IS_REPAINT_DEBUGGING_ACTIVE)
127 #endif
128 {
129 g.saveState();
130 }
131 #endif
132
134 {
135 component.paintEntireComponent (g, true);
136 }
138
139 #if JUCE_ENABLE_REPAINT_DEBUGGING
140 #ifdef JUCE_IS_REPAINT_DEBUGGING_ACTIVE
141 if (JUCE_IS_REPAINT_DEBUGGING_ACTIVE)
142 #endif
143 {
144 // enabling this code will fill all areas that get repainted with a colour overlay, to show
145 // clearly when things are being repainted.
146 g.restoreState();
147
148 static Random rng;
149
150 g.fillAll (Colour ((uint8) rng.nextInt (255),
151 (uint8) rng.nextInt (255),
152 (uint8) rng.nextInt (255),
153 (uint8) 0x50));
154 }
155 #endif
156
161 jassert (roundToInt (10.1f) == 10);
162}
163
165{
167
168 if (c == nullptr)
169 c = &component;
170
171 if (c->isCurrentlyBlockedByAnotherModalComponent())
172 if (auto* currentModalComp = Component::getCurrentlyModalComponent())
173 c = currentModalComp;
174
175 return c;
176}
177
178bool ComponentPeer::handleKeyPress (const int keyCode, const juce_wchar textCharacter)
179{
180 return handleKeyPress (KeyPress (keyCode,
181 ModifierKeys::currentModifiers.withoutMouseButtons(),
182 textCharacter));
183}
184
185
187{
188 bool keyWasUsed = false;
189
190 for (auto* target = getTargetForKeyPress(); target != nullptr; target = target->getParentComponent())
191 {
192 const WeakReference<Component> deletionChecker (target);
193
194 if (auto* keyListeners = target->keyListeners.get())
195 {
196 for (int i = keyListeners->size(); --i >= 0;)
197 {
198 keyWasUsed = keyListeners->getUnchecked (i)->keyPressed (keyInfo, target);
199
200 if (keyWasUsed || deletionChecker == nullptr)
201 return keyWasUsed;
202
203 i = jmin (i, keyListeners->size());
204 }
205 }
206
207 keyWasUsed = target->keyPressed (keyInfo);
208
209 if (keyWasUsed || deletionChecker == nullptr)
210 break;
211 }
212
213 if (! keyWasUsed && keyInfo.isKeyCode (KeyPress::tabKey))
214 {
215 if (auto* currentlyFocused = Component::getCurrentlyFocusedComponent())
217 currentlyFocused->moveKeyboardFocusToSibling (! keyInfo.getModifiers().isShiftDown());
218 return true;
220 }
221
222 return keyWasUsed;
223}
224
225bool ComponentPeer::handleKeyUpOrDown (const bool isKeyDown)
226{
227 bool keyWasUsed = false;
228
229 for (auto* target = getTargetForKeyPress(); target != nullptr; target = target->getParentComponent())
230 {
231 const WeakReference<Component> deletionChecker (target);
232
233 keyWasUsed = target->keyStateChanged (isKeyDown);
234
235 if (keyWasUsed || deletionChecker == nullptr)
236 break;
237
238 if (auto* keyListeners = target->keyListeners.get())
239 {
240 for (int i = keyListeners->size(); --i >= 0;)
241 {
242 keyWasUsed = keyListeners->getUnchecked (i)->keyStateChanged (isKeyDown, target);
243
244 if (keyWasUsed || deletionChecker == nullptr)
245 return keyWasUsed;
246
247 i = jmin (i, keyListeners->size());
248 }
249 }
250 }
251
252 return keyWasUsed;
253}
254
256{
257 auto* target = Desktop::getInstance().getMainMouseSource().getComponentUnderMouse();
258
259 if (target == nullptr)
261
262 if (target == nullptr)
263 target = &component;
264
265 target->internalModifierKeysChanged();
266}
267
269{
270 const auto* lastTarget = std::exchange (textInputTarget, findCurrentTextInputTarget());
271
272 if (lastTarget == textInputTarget)
273 return;
274
275 if (textInputTarget == nullptr)
278 textInputRequired (globalToLocal (c->getScreenPosition()), *textInputTarget);
279}
280
282{
284
285 if (c == &component || component.isParentOf (c))
286 if (auto* ti = dynamic_cast<TextInputTarget*> (c))
287 if (ti->isTextInputActive())
288 return ti;
289
290 return nullptr;
291}
292
294
299
300//==============================================================================
302{
303 component.internalBroughtToFront();
304}
305
307{
308 constrainer = newConstrainer;
309}
310
312{
313 const bool nowMinimised = isMinimised();
314
315 if (component.flags.hasHeavyweightPeerFlag && ! nowMinimised)
316 {
317 const WeakReference<Component> deletionChecker (&component);
318
320 auto oldBounds = component.getBounds();
321
322 const bool wasMoved = (oldBounds.getPosition() != newBounds.getPosition());
323 const bool wasResized = (oldBounds.getWidth() != newBounds.getWidth() || oldBounds.getHeight() != newBounds.getHeight());
324
325 if (wasMoved || wasResized)
326 {
327 component.boundsRelativeToParent = newBounds;
328
329 if (wasResized)
330 component.repaint();
331
332 component.sendMovedResizedMessages (wasMoved, wasResized);
333
334 if (deletionChecker == nullptr)
335 return;
336 }
337 }
338
339 if (isWindowMinimised != nowMinimised)
340 {
341 isWindowMinimised = nowMinimised;
342 component.minimisationStateChanged (nowMinimised);
343 component.sendVisibilityChangeMessage();
344 }
345
346 const auto windowInSpecialState = isFullScreen() || isKioskMode() || nowMinimised;
347
348 if (! windowInSpecialState)
350}
351
353{
354 if (component.isParentOf (lastFocusedComponent)
355 && lastFocusedComponent->isShowing()
356 && lastFocusedComponent->getWantsKeyboardFocus())
357 {
359 Desktop::getInstance().triggerFocusCallback();
360 lastFocusedComponent->internalKeyboardFocusGain (Component::focusChangedDirectly);
361 }
362 else
363 {
364 if (! component.isCurrentlyBlockedByAnotherModalComponent())
365 component.grabKeyboardFocus();
366 else
367 ModalComponentManager::getInstance()->bringModalComponentsToFront();
368 }
369}
370
372{
373 if (component.hasKeyboardFocus (true))
374 {
376
377 if (lastFocusedComponent != nullptr)
378 {
380 Desktop::getInstance().triggerFocusCallback();
382 }
383 }
384}
385
392
394{
395 component.parentSizeChanged();
397}
398
400{
401 lastNonFullscreenBounds = newBounds;
402}
403
408
411
413{
414 return relativePosition.withPosition (localToGlobal (relativePosition.getPosition()));
415}
416
418{
419 return screenPosition.withPosition (globalToLocal (screenPosition.getPosition()));
420}
421
423{
424 return relativePosition.withPosition (localToGlobal (relativePosition.getPosition()));
425}
426
428{
429 return screenPosition.withPosition (globalToLocal (screenPosition.getPosition()));
430}
431
433{
435 (component, component.getLocalArea (&subComponent, subComponent.getLocalBounds()));
436}
437
438//==============================================================================
439namespace DragHelpers
440{
442 {
443 return ! info.files.isEmpty();
444 }
445
447 {
448 return isFileDrag (info) ? dynamic_cast<FileDragAndDropTarget*> (target) != nullptr
449 : dynamic_cast<TextDragAndDropTarget*> (target) != nullptr;
450 }
451
453 {
454 return isFileDrag (info) ? dynamic_cast<FileDragAndDropTarget*> (target)->isInterestedInFileDrag (info.files)
455 : dynamic_cast<TextDragAndDropTarget*> (target)->isInterestedInTextDrag (info.text);
456 }
457
459 {
460 for (; c != nullptr; c = c->getParentComponent())
461 if (isSuitableTarget (info, c) && (c == lastOne || isInterested (info, c)))
462 return c;
463
464 return nullptr;
465 }
466}
467
469{
470 auto* compUnderMouse = component.getComponentAt (info.position);
471 auto* lastTarget = dragAndDropTargetComponent.get();
472 Component* newTarget = nullptr;
473
474 if (compUnderMouse != lastDragAndDropCompUnderMouse)
475 {
476 lastDragAndDropCompUnderMouse = compUnderMouse;
477 newTarget = DragHelpers::findDragAndDropTarget (compUnderMouse, info, lastTarget);
478
479 if (newTarget != lastTarget)
480 {
481 if (lastTarget != nullptr)
482 {
484 dynamic_cast<FileDragAndDropTarget*> (lastTarget)->fileDragExit (info.files);
485 else
486 dynamic_cast<TextDragAndDropTarget*> (lastTarget)->textDragExit (info.text);
487 }
488
490
491 if (DragHelpers::isSuitableTarget (info, newTarget))
492 {
493 dragAndDropTargetComponent = newTarget;
494 auto pos = newTarget->getLocalPoint (&component, info.position);
495
497 dynamic_cast<FileDragAndDropTarget*> (newTarget)->fileDragEnter (info.files, pos.x, pos.y);
498 else
499 dynamic_cast<TextDragAndDropTarget*> (newTarget)->textDragEnter (info.text, pos.x, pos.y);
500 }
501 }
502 }
503 else
504 {
505 newTarget = lastTarget;
506 }
507
508 if (! DragHelpers::isSuitableTarget (info, newTarget))
509 return false;
510
511 auto pos = newTarget->getLocalPoint (&component, info.position);
512
514 dynamic_cast<FileDragAndDropTarget*> (newTarget)->fileDragMove (info.files, pos.x, pos.y);
515 else
516 dynamic_cast<TextDragAndDropTarget*> (newTarget)->textDragMove (info.text, pos.x, pos.y);
517
518 return true;
519}
520
522{
523 DragInfo info2 (info);
524 info2.position.setXY (-1, -1);
525 const bool used = handleDragMove (info2);
526
529 return used;
530}
531
533{
535
537 {
540
541 if (DragHelpers::isSuitableTarget (info, targetComp))
542 {
543 if (targetComp->isCurrentlyBlockedByAnotherModalComponent())
544 {
545 targetComp->internalModalInputAttempt();
546
547 if (targetComp->isCurrentlyBlockedByAnotherModalComponent())
548 return true;
549 }
550
551 ComponentPeer::DragInfo infoCopy (info);
552 infoCopy.position = targetComp->getLocalPoint (&component, info.position);
553
554 // We'll use an async message to deliver the drop, because if the target decides
555 // to run a modal loop, it can gum-up the operating system..
557 {
558 if (auto* c = targetComp.get())
559 {
561 dynamic_cast<FileDragAndDropTarget*> (c)->filesDropped (infoCopy.files, infoCopy.position.x, infoCopy.position.y);
562 else
563 dynamic_cast<TextDragAndDropTarget*> (c)->textDropped (infoCopy.text, infoCopy.position.x, infoCopy.position.y);
564 }
565 });
566
567 return true;
568 }
569 }
570
571 return false;
572}
573
574//==============================================================================
576{
577 component.userTriedToCloseWindow();
578}
579
581{
582 return false;
583}
584
588
589//==============================================================================
591void ComponentPeer::setCurrentRenderingEngine (int index) { jassert (index == 0); ignoreUnused (index); }
592
593//==============================================================================
595
603
604//==============================================================================
606{
607 Desktop::getInstance().displays->refresh();
608}
609
614
615} // namespace juce
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
#define noexcept
Definition DistrhoDefines.h:72
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static AffineTransform scale(float factorX, float factorY) noexcept
Definition juce_AffineTransform.cpp:141
Definition juce_Colour.h:38
Definition juce_ComponentBoundsConstrainer.h:44
Definition juce_Component.h:36
static Component *JUCE_CALLTYPE getCurrentlyModalComponent(int index=0) noexcept
Definition juce_Component.cpp:1842
Point< int > getLocalPoint(const Component *sourceComponent, Point< int > pointRelativeToSourceComponent) const
Definition juce_Component.cpp:1136
static Component *JUCE_CALLTYPE getCurrentlyFocusedComponent() noexcept
Definition juce_Component.cpp:3092
@ focusChangedDirectly
Definition juce_Component.h:1893
@ focusChangedByMouseClick
Definition juce_Component.h:1891
static Component * currentlyFocusedComponent
Definition juce_Component.h:2531
Rectangle< int > getLocalBounds() const noexcept
Definition juce_Component.cpp:2283
TextInputTarget * textInputTarget
Definition juce_ComponentPeer.h:556
virtual bool setDocumentEditedStatus(bool edited)
Definition juce_ComponentPeer.cpp:580
static ModifierKeys getCurrentModifiersRealtime() noexcept
Definition juce_ComponentPeer.cpp:596
void handleMouseEvent(MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, ModifierKeys newMods, float pressure, float orientation, int64 time, PenDetails pen={}, int touchIndex=0)
Definition juce_ComponentPeer.cpp:86
const int styleFlags
Definition juce_ComponentPeer.h:522
virtual int getCurrentRenderingEngine() const
Definition juce_ComponentPeer.cpp:590
Component & component
Definition juce_ComponentPeer.h:521
void handleModifierKeysChange()
Definition juce_ComponentPeer.cpp:255
~ComponentPeer() override
Definition juce_ComponentPeer.cpp:42
bool handleDragMove(const DragInfo &)
Definition juce_ComponentPeer.cpp:468
virtual void handleScreenSizeChange()
Definition juce_ComponentPeer.cpp:393
Rectangle< int > lastNonFullscreenBounds
Definition juce_ComponentPeer.h:523
virtual bool isKioskMode() const
Definition juce_ComponentPeer.cpp:80
void handleFocusGain()
Definition juce_ComponentPeer.cpp:352
bool handleKeyPress(int keyCode, juce_wchar textCharacter)
Definition juce_ComponentPeer.cpp:178
virtual void closeInputMethodContext()
Definition juce_ComponentPeer.cpp:293
bool handleDragDrop(const DragInfo &)
Definition juce_ComponentPeer.cpp:532
const uint32 uniqueID
Definition juce_ComponentPeer.h:557
virtual Rectangle< int > getBounds() const =0
bool handleDragExit(const DragInfo &)
Definition juce_ComponentPeer.cpp:521
virtual void setCurrentRenderingEngine(int index)
Definition juce_ComponentPeer.cpp:591
ComponentPeer(Component &component, int styleFlags)
Definition juce_ComponentPeer.cpp:32
void handleMovedOrResized()
Definition juce_ComponentPeer.cpp:311
WeakReference< Component > lastFocusedComponent
Definition juce_ComponentPeer.h:554
static int getNumPeers() noexcept
Definition juce_ComponentPeer.cpp:51
void handleUserClosingWindow()
Definition juce_ComponentPeer.cpp:575
virtual void setBounds(const Rectangle< int > &newBounds, bool isNowFullScreen)=0
void handlePaint(LowLevelGraphicsContext &contextToPaintTo)
Definition juce_ComponentPeer.cpp:106
void globalFocusChanged(Component *) override
Definition juce_ComponentPeer.cpp:610
void setNonFullScreenBounds(const Rectangle< int > &newBounds) noexcept
Definition juce_ComponentPeer.cpp:399
TextInputTarget * findCurrentTextInputTarget()
Definition juce_ComponentPeer.cpp:281
virtual void dismissPendingTextInput()
Definition juce_ComponentPeer.cpp:295
bool handleKeyUpOrDown(bool isKeyDown)
Definition juce_ComponentPeer.cpp:225
const Rectangle< int > & getNonFullScreenBounds() const noexcept
Definition juce_ComponentPeer.cpp:404
virtual Point< float > localToGlobal(Point< float > relativePosition)=0
virtual void textInputRequired(Point< int >, TextInputTarget &)=0
Component * getTargetForKeyPress()
Definition juce_ComponentPeer.cpp:164
static ComponentPeer * getPeerFor(const Component *) noexcept
Definition juce_ComponentPeer.cpp:61
void handleBroughtToFront()
Definition juce_ComponentPeer.cpp:301
static void forceDisplayUpdate()
Definition juce_ComponentPeer.cpp:605
void handleFocusLoss()
Definition juce_ComponentPeer.cpp:371
static bool isValidPeer(const ComponentPeer *peer) noexcept
Definition juce_ComponentPeer.cpp:70
void setConstrainer(ComponentBoundsConstrainer *newConstrainer) noexcept
Definition juce_ComponentPeer.cpp:306
ComponentBoundsConstrainer * constrainer
Definition juce_ComponentPeer.h:524
virtual void setRepresentedFile(const File &)
Definition juce_ComponentPeer.cpp:585
void updateBounds()
Definition juce_ComponentPeer.cpp:75
bool isWindowMinimised
Definition juce_ComponentPeer.h:558
void handleMouseWheel(MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, int64 time, const MouseWheelDetails &, int touchIndex=0)
Definition juce_ComponentPeer.cpp:93
Rectangle< int > getAreaCoveredBy(const Component &subComponent) const
Definition juce_ComponentPeer.cpp:432
virtual bool isFullScreen() const =0
static ComponentPeer * getPeer(int index) noexcept
Definition juce_ComponentPeer.cpp:56
Component * lastDragAndDropCompUnderMouse
Definition juce_ComponentPeer.h:555
void refreshTextInputTarget()
Definition juce_ComponentPeer.cpp:268
static std::function< ModifierKeys()> getNativeRealtimeModifiers
Definition juce_ComponentPeer.h:525
void handleMagnifyGesture(MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, int64 time, float scaleFactor, int touchIndex=0)
Definition juce_ComponentPeer.cpp:99
WeakReference< Component > dragAndDropTargetComponent
Definition juce_ComponentPeer.h:554
Component * getLastFocusedSubcomponent() const noexcept
Definition juce_ComponentPeer.cpp:386
virtual Point< float > globalToLocal(Point< float > screenPosition)=0
virtual bool isMinimised() const =0
static Desktop &JUCE_CALLTYPE getInstance()
Definition juce_Desktop.cpp:50
Definition juce_FileDragAndDropTarget.h:37
Definition juce_File.h:45
Definition juce_GraphicsContext.h:45
Definition juce_KeyPress.h:40
static const int tabKey
Definition juce_KeyPress.h:192
bool isKeyCode(int keyCodeToCompare) const noexcept
Definition juce_KeyPress.h:132
ModifierKeys getModifiers() const noexcept
Definition juce_KeyPress.h:115
Definition juce_LowLevelGraphicsContext.h:46
static bool callAsync(std::function< void()> functionToCall)
Definition juce_MessageManager.cpp:192
Definition juce_ModifierKeys.h:41
static ModifierKeys currentModifiers
Definition juce_ModifierKeys.h:189
bool isShiftDown() const noexcept
Definition juce_ModifierKeys.h:99
Definition juce_MouseInputSource.h:52
void handleMagnifyGesture(ComponentPeer &, Point< float >, int64 time, float scaleFactor)
Definition juce_MouseInputSource.cpp:617
void handleEvent(ComponentPeer &, Point< float >, int64 time, ModifierKeys, float, float, const PenDetails &)
Definition juce_MouseInputSource.cpp:606
InputSourceType
Definition juce_MouseInputSource.h:56
void handleWheel(ComponentPeer &, Point< float >, int64 time, const MouseWheelDetails &)
Definition juce_MouseInputSource.cpp:612
Definition juce_Point.h:42
void setXY(ValueType newX, ValueType newY) noexcept
Definition juce_Point.h:85
ValueType y
Definition juce_Point.h:247
ValueType x
Definition juce_Point.h:246
Definition juce_Random.h:35
int nextInt() noexcept
Definition juce_Random.cpp:74
Definition juce_Rectangle.h:67
Point< ValueType > getPosition() const noexcept
Definition juce_Rectangle.h:161
JUCE_NODISCARD Rectangle withPosition(ValueType newX, ValueType newY) const noexcept
Definition juce_Rectangle.h:232
Definition juce_TextDragAndDropTarget.h:38
Definition juce_TextInputTarget.h:41
Definition juce_WeakReference.h:78
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
struct backing_store_struct * info
Definition jmemsys.h:183
#define JUCE_TRY
Definition juce_ApplicationBase.h:329
#define JUCE_CATCH_EXCEPTION
Definition juce_ApplicationBase.h:330
#define jassert(expression)
static int JUCE_CDECL comp(const void *a, const void *b)
Definition lsp.c:298
Definition juce_ComponentPeer.cpp:440
static bool isFileDrag(const ComponentPeer::DragInfo &info)
Definition juce_ComponentPeer.cpp:441
static Component * findDragAndDropTarget(Component *c, const ComponentPeer::DragInfo &info, Component *lastOne)
Definition juce_ComponentPeer.cpp:458
static bool isInterested(const ComponentPeer::DragInfo &info, Component *target)
Definition juce_ComponentPeer.cpp:452
static bool isSuitableTarget(const ComponentPeer::DragInfo &info, Component *target)
Definition juce_ComponentPeer.cpp:446
Definition carla_juce.cpp:31
static uint32 lastUniquePeerID
Definition juce_ComponentPeer.cpp:29
unsigned int uint32
Definition juce_MathsFunctions.h:45
long long int64
Definition juce_MathsFunctions.h:54
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
unsigned char uint8
Definition juce_MathsFunctions.h:37
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void arg jack_client_t jack_port_t port void func jack_client_t const char const char unsigned long flags
Definition juce_linux_JackAudio.cpp:69
static PointOrRect rawPeerPositionToLocal(const Component &comp, PointOrRect pos) noexcept
Definition juce_Component.cpp:336
Definition juce_ComponentPeer.h:404
Point< int > position
Definition juce_ComponentPeer.h:407
StringArray files
Definition juce_ComponentPeer.h:405
String text
Definition juce_ComponentPeer.h:406
Definition juce_MouseEvent.h:392
Definition juce_MouseEvent.h:434
static PointOrRect scaledScreenPosToUnscaled(float scale, PointOrRect pos) noexcept
Definition juce_Component.cpp:207
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
#define const
Definition zconf.h:137