LMMS
Loading...
Searching...
No Matches
juce_Desktop.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//==============================================================================
39{
40public:
42 virtual ~FocusChangeListener() = default;
43
45 virtual void globalFocusChanged (Component* focusedComponent) = 0;
46};
47
48//==============================================================================
60{
61public:
63 virtual ~DarkModeSettingListener() = default;
64
66 virtual void darkModeSettingChanged() = 0;
67};
68
69//==============================================================================
76 private Timer,
77 private AsyncUpdater
78{
79public:
80 //==============================================================================
83
84 //==============================================================================
94
100 static void setMousePosition (Point<int> newPosition);
101
110
115 int getMouseButtonClickCounter() const noexcept;
116
121 int getMouseWheelMoveCounter() const noexcept;
122
123 //==============================================================================
138 static void setScreenSaverEnabled (bool isEnabled);
139
148 static bool isScreenSaverEnabled();
149
150 //==============================================================================
156 void addGlobalMouseListener (MouseListener* listener);
157
163
164 //==============================================================================
171
177
178 //==============================================================================
186
192
200 bool isDarkModeActive() const;
201
202 //==============================================================================
217 void setKioskModeComponent (Component* componentToUse,
218 bool allowMenusAndBars = true);
219
226
227 //==============================================================================
233 int getNumComponents() const noexcept;
234
242 Component* getComponent (int index) const noexcept;
243
251 Component* findComponentAt (Point<int> screenPosition) const;
252
263
264 //==============================================================================
269 LookAndFeel& getDefaultLookAndFeel() noexcept;
270
278 void setDefaultLookAndFeel (LookAndFeel* newDefaultLookAndFeel);
279
280 //==============================================================================
287 const Array<MouseInputSource>& getMouseSources() const noexcept;
288
296 int getNumMouseSources() const noexcept;
297
304 MouseInputSource* getMouseSource (int index) const noexcept;
305
309 MouseInputSource getMainMouseSource() const noexcept;
310
316 int getNumDraggingMouseSources() const noexcept;
317
322 MouseInputSource* getDraggingMouseSource (int index) const noexcept;
323
339 void beginDragAutoRepeat (int millisecondsBetweenCallbacks);
340
341 //==============================================================================
352
354 DisplayOrientation getCurrentOrientation() const;
355
363 void setOrientationsEnabled (int allowedOrientations);
364
368 int getOrientationsEnabled() const noexcept;
369
373 bool isOrientationEnabled (DisplayOrientation orientation) const noexcept;
374
375 //==============================================================================
381
382 //==============================================================================
386 void setGlobalScaleFactor (float newScaleFactor) noexcept;
387
392
393 //==============================================================================
395 static bool canUseSemiTransparentWindows() noexcept;
396
397 #if JUCE_MAC && ! defined (DOXYGEN)
398 [[deprecated ("This macOS-specific method has been deprecated in favour of the cross-platform "
399 " isDarkModeActive() method.")]]
400 static bool isOSXDarkModeActive() { return Desktop::getInstance().isDarkModeActive(); }
401 #endif
402
403 //==============================================================================
405 bool isHeadless() const noexcept;
406
407private:
408 //==============================================================================
410
411 friend class Component;
412 friend class ComponentPeer;
414 friend class DeletedAtShutdown;
416 friend class Displays;
417
418 std::unique_ptr<MouseInputSource::SourceList> mouseSources;
419
423
426
427 std::unique_ptr<Displays> displays;
428
430 void sendMouseMove();
431
435
438
440
444
447
449
451
452 void timerCallback() override;
453 void resetTimer();
455
459
460 void setKioskComponent (Component*, bool shouldBeEnabled, bool allowMenusAndBars);
461
463 void updateFocusOutline();
465
466 static Point<float> getMousePositionFloat();
467
468 static double getDefaultMasterScale();
469
470 Desktop();
471 ~Desktop() override;
472
473 //==============================================================================
476
478 void darkModeChanged();
479
480 //==============================================================================
482};
483
484} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define override
Definition DistrhoDefines.h:73
Definition juce_Array.h:56
AsyncUpdater()
Definition juce_AsyncUpdater.cpp:44
Definition juce_ComponentAnimator.h:54
Definition juce_Component.h:36
Definition juce_Desktop.h:60
virtual ~DarkModeSettingListener()=default
virtual void darkModeSettingChanged()=0
Definition juce_linux_Windowing.cpp:609
void sendMouseMove()
Definition juce_Desktop.cpp:265
int allowedOrientations
Definition juce_Desktop.h:445
DisplayOrientation
Definition juce_Desktop.h:344
@ upright
Definition juce_Desktop.h:345
@ rotatedAntiClockwise
Definition juce_Desktop.h:348
@ upsideDown
Definition juce_Desktop.h:346
@ rotatedClockwise
Definition juce_Desktop.h:347
@ allOrientations
Definition juce_Desktop.h:350
void addDarkModeSettingListener(DarkModeSettingListener *listener)
Definition juce_Desktop.cpp:223
Rectangle< int > kioskComponentOriginalBounds
Definition juce_Desktop.h:442
void setKioskComponent(Component *, bool shouldBeEnabled, bool allowMenusAndBars)
Definition juce_linux_Windowing.cpp:586
std::unique_ptr< MouseInputSource::SourceList > mouseSources
Definition juce_Desktop.h:418
std::unique_ptr< NativeDarkModeChangeDetectorImpl > nativeDarkModeChangeDetectorImpl
Definition juce_Desktop.h:475
float getGlobalScaleFactor() const noexcept
Definition juce_Desktop.h:391
void removeFocusChangeListener(FocusChangeListener *listener)
Definition juce_Desktop.cpp:189
int getMouseWheelMoveCounter() const noexcept
Definition juce_Desktop.cpp:174
void setKioskModeComponent(Component *componentToUse, bool allowMenusAndBars=true)
Definition juce_Desktop.cpp:293
void componentBroughtToFront(Component *)
Definition juce_Desktop.cpp:129
const Displays & getDisplays() const noexcept
Definition juce_Desktop.h:380
void incrementMouseClickCounter() noexcept
Definition juce_Desktop.cpp:176
static Desktop * instance
Definition juce_Desktop.h:409
Point< float > lastFakeMouseMove
Definition juce_Desktop.h:429
void incrementMouseWheelCounter() noexcept
Definition juce_Desktop.cpp:177
int mouseClickCounter
Definition juce_Desktop.h:432
friend class DeletedAtShutdown
Definition juce_Desktop.h:414
ListenerList< MouseListener > & getMouseListeners()
Definition juce_Desktop.cpp:239
Component * getKioskModeComponent() const noexcept
Definition juce_Desktop.h:225
void handleAsyncUpdate() override
Definition juce_Desktop.cpp:210
static Point< float > getMousePositionFloat()
Definition juce_Desktop.cpp:158
void addGlobalMouseListener(MouseListener *listener)
Definition juce_Desktop.cpp:245
static Point< int > getMousePosition()
Definition juce_Desktop.cpp:153
ComponentAnimator & getAnimator() noexcept
Definition juce_Desktop.h:262
void resetTimer()
Definition juce_Desktop.cpp:229
WeakReference< LookAndFeel > currentLookAndFeel
Definition juce_Desktop.h:437
std::unique_ptr< FocusOutline > focusOutline
Definition juce_Desktop.h:439
ListenerList< FocusChangeListener > focusListeners
Definition juce_Desktop.h:421
void addFocusChangeListener(FocusChangeListener *listener)
Definition juce_Desktop.cpp:188
void removeDesktopComponent(Component *)
Definition juce_Desktop.cpp:124
friend class Component
Definition juce_Desktop.h:411
Array< Component * > desktopComponents
Definition juce_Desktop.h:424
int getMouseButtonClickCounter() const noexcept
Definition juce_Desktop.cpp:173
ListenerList< MouseListener > mouseListeners
Definition juce_Desktop.h:420
friend class TopLevelWindowManager
Definition juce_Desktop.h:415
static Desktop &JUCE_CALLTYPE getInstance()
Definition juce_Desktop.cpp:50
static double getDefaultMasterScale()
Definition juce_linux_Windowing.cpp:673
static void setScreenSaverEnabled(bool isEnabled)
Definition juce_linux_Windowing.cpp:659
void darkModeChanged()
Definition juce_Desktop.cpp:226
void addDesktopComponent(Component *)
Definition juce_Desktop.cpp:117
std::unique_ptr< LookAndFeel > defaultLookAndFeel
Definition juce_Desktop.h:436
void removeDarkModeSettingListener(DarkModeSettingListener *listener)
Definition juce_Desktop.cpp:224
void allowedOrientationsChanged()
Definition juce_linux_Windowing.cpp:676
void updateFocusOutline()
Definition juce_Desktop.cpp:192
void removeGlobalMouseListener(MouseListener *listener)
Definition juce_Desktop.cpp:252
static void setMousePosition(Point< int > newPosition)
Definition juce_Desktop.cpp:163
void triggerFocusCallback()
Definition juce_Desktop.cpp:190
Desktop()
Definition juce_Desktop.cpp:29
static Point< int > getLastMouseDownPosition()
Definition juce_Desktop.cpp:168
Array< ComponentPeer * > peers
Definition juce_Desktop.h:425
ListenerList< DarkModeSettingListener > darkModeSettingListeners
Definition juce_Desktop.h:422
bool kioskModeReentrant
Definition juce_Desktop.h:443
int mouseWheelCounter
Definition juce_Desktop.h:432
std::unique_ptr< Displays > displays
Definition juce_Desktop.h:427
bool isDarkModeActive() const
Definition juce_linux_Windowing.cpp:652
float masterScaleFactor
Definition juce_Desktop.h:448
void timerCallback() override
Definition juce_Desktop.cpp:259
static std::unique_ptr< NativeDarkModeChangeDetectorImpl > createNativeDarkModeChangeDetectorImpl()
Definition juce_linux_Windowing.cpp:647
friend class MouseInputSourceInternal
Definition juce_Desktop.h:413
ComponentAnimator animator
Definition juce_Desktop.h:450
friend class ComponentPeer
Definition juce_Desktop.h:412
friend class Displays
Definition juce_Desktop.h:416
Component * kioskModeComponent
Definition juce_Desktop.h:441
static bool isScreenSaverEnabled()
Definition juce_linux_Windowing.cpp:668
Definition juce_Desktop.h:39
virtual void globalFocusChanged(Component *focusedComponent)=0
virtual ~FocusChangeListener()=default
Definition juce_FocusOutline.h:45
Definition juce_ListenerList.h:70
Definition juce_LookAndFeel.h:108
Definition juce_MouseInputSource.h:52
Definition juce_MouseListener.h:39
Definition juce_Point.h:42
Definition juce_Rectangle.h:67
Timer() noexcept
Definition juce_Timer.cpp:316
Definition juce_WeakReference.h:78
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_CALLTYPE
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Definition juce_Uuid.h:141
#define false
Definition ordinals.h:83
#define const
Definition zconf.h:137