Loading...
Searching...
No Matches
juce::ComponentPeer Class Referenceabstract

## Detailed Description

The Component class uses a ComponentPeer internally to create and manage a real operating-system window.

This is an abstract base class - the platform specific code contains implementations of it for the various platforms.

User-code should very rarely need to have any involvement with this class.

See also
  Component::createNewPeer

The documentation for this class was generated from the following file:

- juce_gui_basics/windows/juce_ComponentPeer.h

Inheritance diagram for juce::ComponentPeer:

## Classes

class | OptionalBorderSize
| Represents the window borders around a window component. More...
struct | DragInfo
| Structure to describe drag and drop information. More...
struct | ScaleFactorListener
| Used to receive callbacks when the OS scale factor of this ComponentPeer changes. More...
struct | VBlankListener
| Used to receive callbacks on every vertical blank event of the display that the peer currently belongs to. More...

## Public Types

enum

StyleFlags {
windowAppearsOnTaskbar = (1 << 0) , windowIsTemporary = (1 << 1) , windowIgnoresMouseClicks = (1 << 2) , windowHasTitleBar = (1 << 3) ,
windowIsResizable = (1 << 4) , windowHasMinimiseButton = (1 << 5) , windowHasMaximiseButton = (1 << 6) , windowHasCloseButton = (1 << 7) ,
windowHasDropShadow = (1 << 8) , windowRepaintedExplicitly = (1 << 9) , windowIgnoresKeyPresses = (1 << 10) , windowRequiresSynchronousCoreGraphicsRendering = (1 << 11) ,
windowIsSemiTransparent = (1 << 30)
}

| A combination of these flags is passed to the ComponentPeer constructor. More...
enum class | Style { automatic , light , dark }

## Public Member Functions

| ComponentPeer (Component &component, int styleFlags)
| Creates a peer.
| ~ComponentPeer () override
| Destructor.
Component & | getComponent () noexcept
| Returns the component being represented by this peer.
int | getStyleFlags () const noexcept
| Returns the set of style flags that were set when the window was created.
uint32 | getUniqueID () const noexcept
| Returns a unique ID for this peer.
virtual void * | getNativeHandle () const =0
| Returns the raw handle to whatever kind of window is being used.
virtual void | setVisible (bool shouldBeVisible)=0
| Shows or hides the window.
virtual void | setTitle (const String &title)=0
| Changes the title of the window.
virtual bool | setDocumentEditedStatus (bool edited)
| If this type of window is capable of indicating that the document in it has been edited, then this changes its status.
virtual void | setRepresentedFile (const File &)
| If this type of window is capable of indicating that it represents a file, then this lets you set the file.
virtual void | setBounds (const Rectangle< int > &newBounds, bool isNowFullScreen)=0
| Moves and resizes the window.
void | updateBounds ()
| Updates the peer's bounds to match its component.
virtual Rectangle< int > | getBounds () const =0
| Returns the current position and size of the window.
virtual Point< float > | localToGlobal (Point< float > relativePosition)=0
| Converts a position relative to the top-left of this component to screen coordinates.
virtual Point< float > | globalToLocal (Point< float > screenPosition)=0
| Converts a screen coordinate to a position relative to the top-left of this component.
Point< int > | localToGlobal (Point< int > relativePosition)
| Converts a position relative to the top-left of this component to screen coordinates.
Point< int > | globalToLocal (Point< int > screenPosition)
| Converts a screen coordinate to a position relative to the top-left of this component.
virtual Rectangle< int > | localToGlobal (const Rectangle< int > &relativePosition)
| Converts a rectangle relative to the top-left of this component to screen coordinates.
virtual Rectangle< int > | globalToLocal (const Rectangle< int > &screenPosition)
| Converts a screen area to a position relative to the top-left of this component.
Rectangle< float > | localToGlobal (const Rectangle< float > &relativePosition)
| Converts a rectangle relative to the top-left of this component to screen coordinates.
Rectangle< float > | globalToLocal (const Rectangle< float > &screenPosition)
| Converts a screen area to a position relative to the top-left of this component.
virtual Point< float > | localToMultimonitor (Point< float > x)
| Converts the argument, in local peer coordinates, to a continuous coordinate space suitable for positioning windows consistently in multimonitor setups.
virtual Point< float > | multimonitorToLocal (Point< float > x)
| Converts the argument, in a continuous coordinate space suitable for positioning windows consistently in multimonitor setups, to local peer coordinates.
Rectangle< int > | getAreaCoveredBy (const Component &subComponent) const
| Returns the area in peer coordinates that is covered by the given sub-comp (which may be at any depth).
virtual void | setMinimised (bool shouldBeMinimised)=0
| Minimises the window.
virtual bool | isMinimised () const =0
| True if the window is currently minimised.
virtual bool | isShowing () const =0
| True if the window is being displayed on-screen.
virtual void | setFullScreen (bool shouldBeFullScreen)=0
| Enable/disable fullscreen mode for the window.
virtual bool | isFullScreen () const =0
| True if the window is currently full-screen.
virtual bool | isKioskMode () const
| True if the window is in kiosk-mode.
void | setNonFullScreenBounds (const Rectangle< int > &newBounds) noexcept
| Sets the size to restore to if fullscreen mode is turned off.
const Rectangle< int > & | getNonFullScreenBounds () const noexcept
| Returns the size to restore to if fullscreen mode is turned off.
virtual void | setIcon (const Image &newIcon)=0
| Attempts to change the icon associated with this window.
void | setConstrainer (ComponentBoundsConstrainer *newConstrainer) noexcept
| Sets a constrainer to use if the peer can resize itself.
virtual void | startHostManagedResize (Point< int > mouseDownPosition, ResizableBorderComponent::Zone zone)
| Asks the window-manager to begin resizing this window, on platforms where this is useful (currently just Linux/X11).
ComponentBoundsConstrainer * | getConstrainer () const noexcept
| Returns the current constrainer, if one has been set.
virtual bool | contains (Point< int > localPos, bool trueIfInAChildWindow) const =0
| Checks if a point is in the window.
virtual OptionalBorderSize | getFrameSizeIfPresent () const =0
| Returns the size of the window frame that's around this window.
virtual BorderSize< int > | getFrameSize () const =0
| Returns the size of the window frame that's around this window.
void | handleMovedOrResized ()
| This is called when the window's bounds change.
virtual void | handleScreenSizeChange ()
| This is called if the screen resolution changes.
void | handlePaint (LowLevelGraphicsContext &contextToPaintTo)
| This is called to repaint the component into the given context.
virtual bool | setAlwaysOnTop (bool alwaysOnTop)=0
| Sets this window to either be always-on-top or normal.
virtual void | toFront (bool takeKeyboardFocus)=0
| Brings the window to the top, optionally also giving it keyboard focus.
virtual void | toBehind (ComponentPeer *other)=0
| Moves the window to be just behind another one.
void | handleBroughtToFront ()
| Called when the window is brought to the front, either by the OS or by a call to toFront().
virtual bool | isFocused () const =0
| True if the window has the keyboard focus.
virtual void | grabFocus ()=0
| Tries to give the window keyboard focus.
void | handleFocusGain ()
| Called when the window gains keyboard focus.
void | handleFocusLoss ()
| Called when the window loses keyboard focus.
Component * | getLastFocusedSubcomponent () const noexcept
bool | handleKeyPress (int keyCode, juce_wchar textCharacter)
| Called when a key is pressed.
bool | handleKeyPress (const KeyPress &key)
| Called when a key is pressed.
bool | handleKeyUpOrDown (bool isKeyDown)
| Called whenever a key is pressed or released.
void | handleModifierKeysChange ()
| Called whenever a modifier key is pressed or released.
virtual void | closeInputMethodContext ()
| If there's a currently active input-method context - i.e.
void | refreshTextInputTarget ()
| Alerts the peer that the current text input target has changed somehow.
TextInputTarget * | findCurrentTextInputTarget ()
| Returns the currently focused TextInputTarget, or null if none is found.
virtual void | repaint (const Rectangle< int > &area)=0
| Invalidates a region of the window to be repainted asynchronously.
virtual void | performAnyPendingRepaintsNow ()=0
| This can be called (from the message thread) to cause the immediate redrawing of any areas of this window that need repainting.
virtual void | setAlpha (float newAlpha)=0
| Changes the window's transparency.
void | handleMouseEvent (MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, ModifierKeys newMods, float pressure, float orientation, int64 time, PenDetails pen={}, int touchIndex=0)
void | handleMouseWheel (MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, int64 time, const MouseWheelDetails &, int touchIndex=0)
void | handleMagnifyGesture (MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, int64 time, float scaleFactor, int touchIndex=0)
void | handleUserClosingWindow ()
bool | handleDragMove (const DragInfo &)
bool | handleDragExit (const DragInfo &)
bool | handleDragDrop (const DragInfo &)
virtual StringArray | getAvailableRenderingEngines ()=0
virtual int | getCurrentRenderingEngine () const
virtual void | setCurrentRenderingEngine (int index)
void | addScaleFactorListener (ScaleFactorListener *listenerToAdd)
| Adds a scale factor listener.
void | removeScaleFactorListener (ScaleFactorListener *listenerToRemove)
| Removes a scale factor listener.
void | addVBlankListener (VBlankListener *listenerToAdd)
| Adds a VBlankListener.
void | removeVBlankListener (VBlankListener *listenerToRemove)
| Removes a VBlankListener.
virtual double | getPlatformScaleFactor () const noexcept
| On Windows and Linux this will return the OS scaling factor currently being applied to the native window.
virtual void | setCustomPlatformScaleFactor (std::optional< double >)
| On Windows and Linux, calling this with a non-null optional will override whatever scale factor the platform has specified for this window.
virtual std::optional< double > | getCustomPlatformScaleFactor () const
| Returns the custom scale factor set using setCustomPlatformScaleFactor(), if any.
virtual void | setHasChangedSinceSaved (bool)
| On platforms that support it, this will update the window's titlebar in some way to indicate that the window's document needs saving.
void | setAppStyle (Style s)
| On operating systems that support it, this will update the style of this peer as requested.
Style | getAppStyle () const
| Returns the style requested for this app.
uint64_t | getNumFramesPainted () const
| Returns the number of times that this peer has been painted.
auto | setMultimonitorPositionOverride (Point< int > pendingPosition)
auto | getMultimonitorPositionOverride () const

## Static Public Member Functions

static int | getNumPeers () noexcept
| Returns the number of currently-active peers.
static ComponentPeer * | getPeer (int index) noexcept
| Returns one of the currently-active peers.
static ComponentPeer * | getPeerFor (const Component *) noexcept
| Returns the peer that's attached to the given component, or nullptr if there isn't one.
static bool | isValidPeer (const ComponentPeer *peer) noexcept
| Checks if this peer object is valid.
static ModifierKeys | getCurrentModifiersRealtime () noexcept
| On desktop platforms this method will check all the mouse and key states and return a ModifierKeys object representing them.

## Protected Member Functions

void | callVBlankListeners (double timestampSec)

## Static Protected Member Functions

static void | forceDisplayUpdate ()

## Protected Attributes

Component & | component
const int | styleFlags
Rectangle< int > | lastNonFullscreenBounds
ComponentBoundsConstrainer * | constrainer = nullptr
ListenerList< ScaleFactorListener > | scaleFactorListeners
ListenerList< VBlankListener > | vBlankListeners
Style | style = Style::automatic

## Static Protected Attributes

static std::function< ModifierKeys()> | getNativeRealtimeModifiers

## Member Enums

## StyleFlags

enum juce::ComponentPeer::StyleFlags

A combination of these flags is passed to the ComponentPeer constructor.

Enumerator
windowAppearsOnTaskbar | Indicates that the window should have a corresponding entry on the taskbar (ignored on MacOSX).
windowIsTemporary | Indicates that the window is a temporary popup, like a menu, tooltip, etc.
windowIgnoresMouseClicks | Indicates that the window should let mouse clicks pass through it (may not be possible on some platforms).
windowHasTitleBar | Indicates that the window should have a normal OS-specific title bar and frame. if not specified, the window will be borderless.
windowIsResizable | Indicates that the window should have a resizable border.
windowHasMinimiseButton | Indicates that if the window has a title bar, it should have a minimise button on it.
windowHasMaximiseButton | Indicates that if the window has a title bar, it should have a maximise button on it.
windowHasCloseButton | Indicates that if the window has a title bar, it should have a close button on it.
windowHasDropShadow | Indicates that the window should have a drop-shadow (this may not be possible on all platforms).
windowRepaintedExplicitly | Not intended for public use - this tells a window not to do its own repainting, but only to repaint when the performAnyPendingRepaintsNow() method is called.
windowIgnoresKeyPresses | Tells the window not to catch any keypresses. This can be used for things like plugin windows, to stop them interfering with the host's shortcut keys.
windowRequiresSynchronousCoreGraphicsRendering | Indicates that the window should not be rendered with asynchronous Core Graphics drawing operations. Use this if there are issues with regions not being redrawn at the expected time (macOS and iOS only).
windowIsSemiTransparent | Not intended for public use - makes a window transparent.

## Style

enum class juce::ComponentPeer::Style

strong

Enumerator
automatic | A style that matches the system-wide style.
light | A light style, which will probably use dark text on a light background.
dark | A dark style, which will probably use light text on a dark background.

## Constructors and Destructors

## ComponentPeer()

juce::ComponentPeer::ComponentPeer | ( | Component & | component,
|  | int | styleFlags )

Creates a peer.

The component is the one that we intend to represent, and the style flags are a combination of the values in the StyleFlags enum

References component, and styleFlags.

Referenced by getPeer(), getPeerFor(), isValidPeer(), setMultimonitorPositionOverride(), and toBehind().

## ~ComponentPeer()

juce::ComponentPeer::~ComponentPeer | ( |  | ) |

override

Destructor.

## Member Functions

## getComponent()

Component & juce::ComponentPeer::getComponent | ( |  | ) |

inline noexcept

Returns the component being represented by this peer.

References component.

## getStyleFlags()

int juce::ComponentPeer::getStyleFlags | ( |  | ) | const

inline noexcept

Returns the set of style flags that were set when the window was created.

See also
  Component::addToDesktop

References styleFlags.

## getUniqueID()

uint32 juce::ComponentPeer::getUniqueID | ( |  | ) | const

inline noexcept

Returns a unique ID for this peer.

Each peer that is created is given a different ID.

## getNativeHandle()

virtual void * juce::ComponentPeer::getNativeHandle | ( |  | ) | const

pure virtual

Returns the raw handle to whatever kind of window is being used.

On windows, this is probably a HWND, on the mac, it's likely to be a WindowRef, but remember there's no guarantees what you'll get back.

## setVisible()

virtual void juce::ComponentPeer::setVisible | ( | bool | shouldBeVisible | ) |

pure virtual

Shows or hides the window.

## setTitle()

virtual void juce::ComponentPeer::setTitle | ( | const String & | title | ) |

pure virtual

Changes the title of the window.

## setDocumentEditedStatus()

virtual bool juce::ComponentPeer::setDocumentEditedStatus | ( | bool | edited | ) |

virtual

If this type of window is capable of indicating that the document in it has been edited, then this changes its status.

For example in OSX, this changes the appearance of the close button.

Returns
  true if the window has a mechanism for showing this, or false if not.

## setRepresentedFile()

virtual void juce::ComponentPeer::setRepresentedFile | ( | const File & |  | ) |

virtual

If this type of window is capable of indicating that it represents a file, then this lets you set the file.

E.g. in OSX it'll show an icon for the file in the title bar.

## setBounds()

virtual void juce::ComponentPeer::setBounds | ( | const Rectangle< int > & | newBounds,
|  | bool | isNowFullScreen )

pure virtual

Moves and resizes the window.

If the native window is contained in another window, then the coordinates are relative to the parent window's origin, not the screen origin. In this case, the position is specified in the same coordinate space as the size.

As an example, imagine that setBounds() is called on a contained ComponentPeer with newBounds set to { 10, 20, 30, 40 }, where the peer's native scale factor is 1.5. The new bounds will be converted to physical pixels, { 15, 30, 45, 60 }, meaning that the peer will be positioned at { 15, 30 } physical pixels in the parent.

This should result in a callback to handleMovedOrResized().

## updateBounds()

void juce::ComponentPeer::updateBounds | ( |  | ) |

Updates the peer's bounds to match its component.

## getBounds()

virtual Rectangle< int > juce::ComponentPeer::getBounds | ( |  | ) | const

pure virtual

Returns the current position and size of the window.

If the native window is contained in another window, then the coordinates are relative to the parent window's origin, not the screen origin.

## localToGlobal() [1/4]

virtual Point< float > juce::ComponentPeer::localToGlobal | ( | Point< float > | relativePosition | ) |

pure virtual

Converts a position relative to the top-left of this component to screen coordinates.

Referenced by localToMultimonitor().

## globalToLocal() [1/4]

virtual Point< float > juce::ComponentPeer::globalToLocal | ( | Point< float > | screenPosition | ) |

pure virtual

Converts a screen coordinate to a position relative to the top-left of this component.

Referenced by multimonitorToLocal().

## localToGlobal() [2/4]

Point< int > juce::ComponentPeer::localToGlobal | ( | Point< int > | relativePosition | ) |

Converts a position relative to the top-left of this component to screen coordinates.

## globalToLocal() [2/4]

Point< int > juce::ComponentPeer::globalToLocal | ( | Point< int > | screenPosition | ) |

Converts a screen coordinate to a position relative to the top-left of this component.

## localToGlobal() [3/4]

virtual Rectangle< int > juce::ComponentPeer::localToGlobal | ( | const Rectangle< int > & | relativePosition | ) |

virtual

Converts a rectangle relative to the top-left of this component to screen coordinates.

## globalToLocal() [3/4]

virtual Rectangle< int > juce::ComponentPeer::globalToLocal | ( | const Rectangle< int > & | screenPosition | ) |

virtual

Converts a screen area to a position relative to the top-left of this component.

## localToGlobal() [4/4]

Rectangle< float > juce::ComponentPeer::localToGlobal | ( | const Rectangle< float > & | relativePosition | ) |

Converts a rectangle relative to the top-left of this component to screen coordinates.

## globalToLocal() [4/4]

Rectangle< float > juce::ComponentPeer::globalToLocal | ( | const Rectangle< float > & | screenPosition | ) |

Converts a screen area to a position relative to the top-left of this component.

## localToMultimonitor()

virtual Point< float > juce::ComponentPeer::localToMultimonitor | ( | Point< float > | x | ) |

inline virtual

Converts the argument, in local peer coordinates, to a continuous coordinate space suitable for positioning windows consistently in multimonitor setups.

See also
  multimonitorToLocal()

References localToGlobal(), and x.

## multimonitorToLocal()

virtual Point< float > juce::ComponentPeer::multimonitorToLocal | ( | Point< float > | x | ) |

inline virtual

Converts the argument, in a continuous coordinate space suitable for positioning windows consistently in multimonitor setups, to local peer coordinates.

See also
  localToMultimonitor()

References globalToLocal(), and x.

## getAreaCoveredBy()

Rectangle< int > juce::ComponentPeer::getAreaCoveredBy | ( | const Component & | subComponent | ) | const

Returns the area in peer coordinates that is covered by the given sub-comp (which may be at any depth).

## setMinimised()

virtual void juce::ComponentPeer::setMinimised | ( | bool | shouldBeMinimised | ) |

pure virtual

Minimises the window.

## isMinimised()

virtual bool juce::ComponentPeer::isMinimised | ( |  | ) | const

pure virtual

True if the window is currently minimised.

## isShowing()

virtual bool juce::ComponentPeer::isShowing | ( |  | ) | const

pure virtual

True if the window is being displayed on-screen.

## setFullScreen()

virtual void juce::ComponentPeer::setFullScreen | ( | bool | shouldBeFullScreen | ) |

pure virtual

Enable/disable fullscreen mode for the window.

## isFullScreen()

virtual bool juce::ComponentPeer::isFullScreen | ( |  | ) | const

pure virtual

True if the window is currently full-screen.

## isKioskMode()

virtual bool juce::ComponentPeer::isKioskMode | ( |  | ) | const

virtual

True if the window is in kiosk-mode.

## setNonFullScreenBounds()

void juce::ComponentPeer::setNonFullScreenBounds | ( | const Rectangle< int > & | newBounds | ) |

noexcept

Sets the size to restore to if fullscreen mode is turned off.

## getNonFullScreenBounds()

const Rectangle< int > & juce::ComponentPeer::getNonFullScreenBounds | ( |  | ) | const

noexcept

Returns the size to restore to if fullscreen mode is turned off.

## setIcon()

virtual void juce::ComponentPeer::setIcon | ( | const Image & | newIcon | ) |

pure virtual

Attempts to change the icon associated with this window.

References setIcon().

Referenced by setIcon().

## setConstrainer()

void juce::ComponentPeer::setConstrainer | ( | ComponentBoundsConstrainer * | newConstrainer | ) |

noexcept

Sets a constrainer to use if the peer can resize itself.

The constrainer won't be deleted by this object, so the caller must manage its lifetime.

References setConstrainer().

Referenced by setConstrainer().

## startHostManagedResize()

virtual void juce::ComponentPeer::startHostManagedResize | ( | Point< int > | mouseDownPosition,
|  | ResizableBorderComponent::Zone | zone )

inline virtual

Asks the window-manager to begin resizing this window, on platforms where this is useful (currently just Linux/X11).

Parameters

  mouseDownPosition | The position of the mouse event that started the resize in unscaled peer coordinates
  zone | The edges of the window that may be moved during the resize

References startHostManagedResize().

Referenced by startHostManagedResize().

## getConstrainer()

ComponentBoundsConstrainer * juce::ComponentPeer::getConstrainer | ( |  | ) | const

inline noexcept

Returns the current constrainer, if one has been set.

References constrainer.

## contains()

virtual bool juce::ComponentPeer::contains | ( | Point< int > | localPos,
|  | bool | trueIfInAChildWindow ) const

pure virtual

Checks if a point is in the window.

The position is relative to the top-left of this window, in unscaled peer coordinates. If trueIfInAChildWindow is false, then this returns false if the point is actually inside a child of this window.

## getFrameSizeIfPresent()

virtual OptionalBorderSize juce::ComponentPeer::getFrameSizeIfPresent | ( |  | ) | const

pure virtual

Returns the size of the window frame that's around this window.

Depending on the platform the border size may be invalid for a short transient after creating a new window. Hence the returned value must be checked using operator bool() and the contained value can be accessed using operator*() only if it is present.

Whether or not the window has a normal window frame depends on the flags that were set when the window was created by Component::addToDesktop()

## getFrameSize()

virtual BorderSize< int > juce::ComponentPeer::getFrameSize | ( |  | ) | const

pure virtual

Returns the size of the window frame that's around this window.

Whether or not the window has a normal window frame depends on the flags that were set when the window was created by Component::addToDesktop()

## handleMovedOrResized()

void juce::ComponentPeer::handleMovedOrResized | ( |  | ) |

This is called when the window's bounds change.

A peer implementation must call this when the window is moved and resized, so that this method can pass the message on to the component.

## handleScreenSizeChange()

virtual void juce::ComponentPeer::handleScreenSizeChange | ( |  | ) |

virtual

This is called if the screen resolution changes.

A peer implementation must call this if the monitor arrangement changes or the available screen size changes.

## handlePaint()

void juce::ComponentPeer::handlePaint | ( | LowLevelGraphicsContext & | contextToPaintTo | ) |

This is called to repaint the component into the given context.

Increments the result of getNumFramesPainted().

## setAlwaysOnTop()

virtual bool juce::ComponentPeer::setAlwaysOnTop | ( | bool | alwaysOnTop | ) |

pure virtual

Sets this window to either be always-on-top or normal.

Some kinds of window might not be able to do this, so should return false.

## toFront()

virtual void juce::ComponentPeer::toFront | ( | bool | takeKeyboardFocus | ) |

pure virtual

Brings the window to the top, optionally also giving it keyboard focus.

## toBehind()

virtual void juce::ComponentPeer::toBehind | ( | ComponentPeer * | other | ) |

pure virtual

Moves the window to be just behind another one.

References ComponentPeer().

## handleBroughtToFront()

void juce::ComponentPeer::handleBroughtToFront | ( |  | ) |

Called when the window is brought to the front, either by the OS or by a call to toFront().

## isFocused()

virtual bool juce::ComponentPeer::isFocused | ( |  | ) | const

pure virtual

True if the window has the keyboard focus.

## grabFocus()

virtual void juce::ComponentPeer::grabFocus | ( |  | ) |

pure virtual

Tries to give the window keyboard focus.

## handleFocusGain()

void juce::ComponentPeer::handleFocusGain | ( |  | ) |

Called when the window gains keyboard focus.

## handleFocusLoss()

void juce::ComponentPeer::handleFocusLoss | ( |  | ) |

Called when the window loses keyboard focus.

## getLastFocusedSubcomponent()

Component * juce::ComponentPeer::getLastFocusedSubcomponent | ( |  | ) | const

noexcept

## handleKeyPress() [1/2]

bool juce::ComponentPeer::handleKeyPress | ( | int | keyCode,
|  | juce_wchar | textCharacter )

Called when a key is pressed.

For keycode info, see the KeyPress class. Returns true if the keystroke was used.

References handleKeyPress().

Referenced by handleKeyPress(), and handleKeyPress().

## handleKeyPress() [2/2]

bool juce::ComponentPeer::handleKeyPress | ( | const KeyPress & | key | ) |

Called when a key is pressed.

Returns true if the keystroke was used.

References handleKeyPress().

## handleKeyUpOrDown()

bool juce::ComponentPeer::handleKeyUpOrDown | ( | bool | isKeyDown | ) |

Called whenever a key is pressed or released.

Returns true if the keystroke was used.

References handleKeyUpOrDown().

Referenced by handleKeyUpOrDown().

## handleModifierKeysChange()

void juce::ComponentPeer::handleModifierKeysChange | ( |  | ) |

Called whenever a modifier key is pressed or released.

References handleModifierKeysChange().

Referenced by handleModifierKeysChange().

## closeInputMethodContext()

virtual void juce::ComponentPeer::closeInputMethodContext | ( |  | ) |

virtual

If there's a currently active input-method context - i.e.

characters are being composed using multiple keystrokes - this should commit the current state of the context to the text and clear the context. This should not hide the virtual keyboard.

References closeInputMethodContext().

Referenced by closeInputMethodContext().

## refreshTextInputTarget()

void juce::ComponentPeer::refreshTextInputTarget | ( |  | ) |

Alerts the peer that the current text input target has changed somehow.

The peer may hide or show the virtual keyboard as a result of this call.

References refreshTextInputTarget().

Referenced by refreshTextInputTarget().

## findCurrentTextInputTarget()

TextInputTarget * juce::ComponentPeer::findCurrentTextInputTarget | ( |  | ) |

Returns the currently focused TextInputTarget, or null if none is found.

References findCurrentTextInputTarget().

Referenced by findCurrentTextInputTarget().

## repaint()

virtual void juce::ComponentPeer::repaint | ( | const Rectangle< int > & | area | ) |

pure virtual

Invalidates a region of the window to be repainted asynchronously.

References repaint().

Referenced by repaint().

## performAnyPendingRepaintsNow()

virtual void juce::ComponentPeer::performAnyPendingRepaintsNow | ( |  | ) |

pure virtual

This can be called (from the message thread) to cause the immediate redrawing of any areas of this window that need repainting.

You shouldn't ever really need to use this, it's mainly for special purposes like supporting audio plugins where the host's event loop is out of our control.

References performAnyPendingRepaintsNow().

Referenced by performAnyPendingRepaintsNow().

## setAlpha()

virtual void juce::ComponentPeer::setAlpha | ( | float | newAlpha | ) |

pure virtual

Changes the window's transparency.

References setAlpha().

Referenced by setAlpha().

## handleMouseEvent()

void juce::ComponentPeer::handleMouseEvent | ( | MouseInputSource::InputSourceType | type,
|  | Point< float > | positionWithinPeer,
|  | ModifierKeys | newMods,
|  | float | pressure,
|  | float | orientation,
|  | int64 | time,
|  | PenDetails | pen = {},
|  | int | touchIndex = 0 )

References handleMouseEvent().

Referenced by handleMouseEvent().

## handleMouseWheel()

void juce::ComponentPeer::handleMouseWheel | ( | MouseInputSource::InputSourceType | type,
|  | Point< float > | positionWithinPeer,
|  | int64 | time,
|  | const MouseWheelDetails & | ,
|  | int | touchIndex = 0 )

## handleMagnifyGesture()

void juce::ComponentPeer::handleMagnifyGesture | ( | MouseInputSource::InputSourceType | type,
|  | Point< float > | positionWithinPeer,
|  | int64 | time,
|  | float | scaleFactor,
|  | int | touchIndex = 0 )

## handleUserClosingWindow()

void juce::ComponentPeer::handleUserClosingWindow | ( |  | ) |

## handleDragMove()

bool juce::ComponentPeer::handleDragMove | ( | const DragInfo & |  | ) |

## handleDragExit()

bool juce::ComponentPeer::handleDragExit | ( | const DragInfo & |  | ) |

## handleDragDrop()

bool juce::ComponentPeer::handleDragDrop | ( | const DragInfo & |  | ) |

## getNumPeers()

int juce::ComponentPeer::getNumPeers | ( |  | ) |

static noexcept

Returns the number of currently-active peers.

See also
  getPeer

## getPeer()

ComponentPeer * juce::ComponentPeer::getPeer | ( | int | index | ) |

static noexcept

Returns one of the currently-active peers.

See also
  getNumPeers

References ComponentPeer(), and getPeer().

Referenced by getPeer(), and setMultimonitorPositionOverride().

## getPeerFor()

ComponentPeer * juce::ComponentPeer::getPeerFor | ( | const Component * |  | ) |

static noexcept

Returns the peer that's attached to the given component, or nullptr if there isn't one.

References ComponentPeer(), and getPeerFor().

Referenced by getPeerFor().

## isValidPeer()

bool juce::ComponentPeer::isValidPeer | ( | const ComponentPeer * | peer | ) |

static noexcept

Checks if this peer object is valid.

See also
  getNumPeers

References ComponentPeer(), and isValidPeer().

Referenced by isValidPeer().

## getAvailableRenderingEngines()

virtual StringArray juce::ComponentPeer::getAvailableRenderingEngines | ( |  | ) |

pure virtual

References getAvailableRenderingEngines().

Referenced by getAvailableRenderingEngines().

## getCurrentRenderingEngine()

virtual int juce::ComponentPeer::getCurrentRenderingEngine | ( |  | ) | const

virtual

References getCurrentRenderingEngine().

Referenced by getCurrentRenderingEngine().

## setCurrentRenderingEngine()

virtual void juce::ComponentPeer::setCurrentRenderingEngine | ( | int | index | ) |

virtual

References setCurrentRenderingEngine().

Referenced by setCurrentRenderingEngine().

## getCurrentModifiersRealtime()

ModifierKeys juce::ComponentPeer::getCurrentModifiersRealtime | ( |  | ) |

static noexcept

On desktop platforms this method will check all the mouse and key states and return a ModifierKeys object representing them.

This isn't recommended and is only needed in special circumstances for up-to-date modifier information at times when the app's event loop isn't running normally.

Another reason to avoid this method is that it's not stateless and calling it may update the ModifierKeys::currentModifiers object, which could cause subtle changes in the behaviour of some components.

References getCurrentModifiersRealtime().

Referenced by getCurrentModifiersRealtime().

## addScaleFactorListener()

void juce::ComponentPeer::addScaleFactorListener | ( | ScaleFactorListener * | listenerToAdd | ) |

inline

Adds a scale factor listener.

References scaleFactorListeners.

## removeScaleFactorListener()

void juce::ComponentPeer::removeScaleFactorListener | ( | ScaleFactorListener * | listenerToRemove | ) |

inline

Removes a scale factor listener.

References scaleFactorListeners.

## addVBlankListener()

void juce::ComponentPeer::addVBlankListener | ( | VBlankListener * | listenerToAdd | ) |

inline

Adds a VBlankListener.

References vBlankListeners.

## removeVBlankListener()

void juce::ComponentPeer::removeVBlankListener | ( | VBlankListener * | listenerToRemove | ) |

inline

Removes a VBlankListener.

References vBlankListeners.

## getPlatformScaleFactor()

virtual double juce::ComponentPeer::getPlatformScaleFactor | ( |  | ) | const

inline virtual noexcept

On Windows and Linux this will return the OS scaling factor currently being applied to the native window.

This is used to convert between physical and logical pixels at the OS API level and you shouldn't need to use it in your own code unless you are dealing directly with the native window.

## setCustomPlatformScaleFactor()

virtual void juce::ComponentPeer::setCustomPlatformScaleFactor | ( | std::optional< double > |  | ) |

inline virtual

On Windows and Linux, calling this with a non-null optional will override whatever scale factor the platform has specified for this window.

The new scale factor will persist even in the case that the platform attempts to set a new scale! Pass a null optional to revert back to the platform-provided scale.

This is intended for use by plugin wrappers, where hosts may attempt to set a scale factor different from the platform scale. You should never need to call this directly.

## getCustomPlatformScaleFactor()

virtual std::optional< double > juce::ComponentPeer::getCustomPlatformScaleFactor | ( |  | ) | const

inline virtual

Returns the custom scale factor set using setCustomPlatformScaleFactor(), if any.

If a custom scale factor has been set, getPlatformScaleFactor() will always return that value, effectively overriding any scale factor requested by the system. Otherwise, if the custom platform scale factor is nullopt, then the system will update the scale factor automatically.

## setHasChangedSinceSaved()

virtual void juce::ComponentPeer::setHasChangedSinceSaved | ( | bool |  | ) |

inline virtual

On platforms that support it, this will update the window's titlebar in some way to indicate that the window's document needs saving.

## setAppStyle()

void juce::ComponentPeer::setAppStyle | ( | Style | s | ) |

inline

On operating systems that support it, this will update the style of this peer as requested.

Note that this will not update the theme system-wide. This will only update UI elements so that they display appropriately for this peer!

References style.

## getAppStyle()

Style juce::ComponentPeer::getAppStyle | ( |  | ) | const

inline

Returns the style requested for this app.

References style.

## getNumFramesPainted()

uint64_t juce::ComponentPeer::getNumFramesPainted | ( |  | ) | const

inline

Returns the number of times that this peer has been painted.

This is mainly useful when debugging component painting. For example, you might use this to match logging calls to specific frames.

## setMultimonitorPositionOverride()

auto juce::ComponentPeer::setMultimonitorPositionOverride | ( | Point< int > | pendingPosition | ) |

inline

References component, ComponentPeer(), getPeer(), and x.

## getMultimonitorPositionOverride()

auto juce::ComponentPeer::getMultimonitorPositionOverride | ( |  | ) | const

inline

## forceDisplayUpdate()

void juce::ComponentPeer::forceDisplayUpdate | ( |  | ) |

static protected

## callVBlankListeners()

void juce::ComponentPeer::callVBlankListeners | ( | double | timestampSec | ) |

protected

## Member Data Documentation

## component

Component& juce::ComponentPeer::component

protected

Referenced by ComponentPeer(), getComponent(), and setMultimonitorPositionOverride().

## styleFlags

const int juce::ComponentPeer::styleFlags

protected

Referenced by ComponentPeer(), and getStyleFlags().

## lastNonFullscreenBounds

Rectangle<int> juce::ComponentPeer::lastNonFullscreenBounds

protected

## constrainer

ComponentBoundsConstrainer* juce::ComponentPeer::constrainer = nullptr

protected

Referenced by getConstrainer().

## getNativeRealtimeModifiers

std::function<ModifierKeys()> juce::ComponentPeer::getNativeRealtimeModifiers

static protected

## scaleFactorListeners

ListenerList<ScaleFactorListener> juce::ComponentPeer::scaleFactorListeners

protected

Referenced by addScaleFactorListener(), and removeScaleFactorListener().

## vBlankListeners

ListenerList<VBlankListener> juce::ComponentPeer::vBlankListeners

protected

Referenced by addVBlankListener(), and removeVBlankListener().

## style

Style juce::ComponentPeer::style = Style::automatic

protected

Referenced by getAppStyle(), and setAppStyle().

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited