JUCE  v6.1.6 (6.0.8-1114)
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::PopupMenu::Options Class Reference

Class used to create a set of options to pass to the show() method. More...

#include <juce_PopupMenu.h>

Collaboration diagram for juce::PopupMenu::Options:

Public Types

enum  PopupDirection {
  PopupDirection::upwards,
  PopupDirection::downwards
}
 

Public Member Functions

 Options ()
 By default, the target screen area will be the current mouse position. More...
 
 Options (const Options &)=default
 
int getInitiallySelectedItemId () const noexcept
 Gets the ID of the item that must be selected when the menu is initially shown. More...
 
int getItemThatMustBeVisible () const noexcept
 Gets the ID of the item that must be visible when the menu is initially shown. More...
 
int getMaximumNumColumns () const noexcept
 Gets the maximum number of columns. More...
 
int getMinimumNumColumns () const noexcept
 Gets the minimum number of columns. More...
 
int getMinimumWidth () const noexcept
 Gets the minimum width. More...
 
ComponentgetParentComponent () const noexcept
 Gets the parent component. More...
 
PopupDirection getPreferredPopupDirection () const noexcept
 Gets the preferred popup menu direction. More...
 
int getStandardItemHeight () const noexcept
 Gets the default height of items in the menu. More...
 
ComponentgetTargetComponent () const noexcept
 Gets the target component. More...
 
Rectangle< intgetTargetScreenArea () const noexcept
 Gets the target screen area. More...
 
bool hasWatchedComponentBeenDeleted () const noexcept
 Returns true if the menu was watching a component, and that component has been deleted, and false otherwise. More...
 
Optionsoperator= (const Options &)=default
 
JUCE_NODISCARD Options withDeletionCheck (Component &componentToWatchForDeletion) const
 If the passed component has been deleted when the popup menu exits, the selected item's action will not be called. More...
 
JUCE_NODISCARD Options withInitiallySelectedItem (int idOfItemToBeSelected) const
 Sets an item to select in the menu. More...
 
JUCE_NODISCARD Options withItemThatMustBeVisible (int idOfItemToBeVisible) const
 Sets an item which must be visible when the menu is initially drawn. More...
 
JUCE_NODISCARD Options withMaximumNumColumns (int maxNumColumns) const
 Sets the maximum number of columns in the popup window. More...
 
JUCE_NODISCARD Options withMinimumNumColumns (int minNumColumns) const
 Sets the minimum number of columns in the popup window. More...
 
JUCE_NODISCARD Options withMinimumWidth (int minWidth) const
 Sets the minimum width of the popup window. More...
 
JUCE_NODISCARD Options withMousePosition () const
 Sets the target screen area to match the current mouse position. More...
 
JUCE_NODISCARD Options withParentComponent (Component *parentComponent) const
 Sets a component that the popup menu will be drawn into. More...
 
JUCE_NODISCARD Options withPreferredPopupDirection (PopupDirection direction) const
 Sets the direction of the popup menu relative to the target screen area. More...
 
JUCE_NODISCARD Options withStandardItemHeight (int standardHeight) const
 Sets the default height of each item in the popup menu. More...
 
JUCE_NODISCARD Options withTargetComponent (Component &targetComponent) const
 
JUCE_NODISCARD Options withTargetComponent (Component *targetComponent) const
 Sets the target component to use when displaying the menu. More...
 
JUCE_NODISCARD Options withTargetScreenArea (Rectangle< int > targetArea) const
 Sets the region of the screen next to which the menu should be displayed. More...
 

Private Attributes

WeakReference< ComponentcomponentToWatchForDeletion
 
int initiallySelectedItemId = 0
 
bool isWatchingForDeletion = false
 
int maxColumns = 0
 
int minColumns = 1
 
int minWidth = 0
 
WeakReference< ComponentparentComponent
 
PopupDirection preferredPopupDirection = PopupDirection::downwards
 
int standardHeight = 0
 
Rectangle< inttargetArea
 
WeakReference< ComponenttargetComponent
 
int visibleItemID = 0
 

Detailed Description

Class used to create a set of options to pass to the show() method.

You can chain together a series of calls to this class's methods to create a set of whatever options you want to specify. E.g.

PopupMenu menu;
...
menu.showMenu (PopupMenu::Options().withMinimumWidth (100)
.withTargetComponent (myComp));

Member Enumeration Documentation

◆ PopupDirection

Enumerator
upwards 
downwards 

Constructor & Destructor Documentation

◆ Options() [1/2]

juce::PopupMenu::Options::Options ( )

By default, the target screen area will be the current mouse position.

◆ Options() [2/2]

juce::PopupMenu::Options::Options ( const Options )
default

Member Function Documentation

◆ getInitiallySelectedItemId()

int juce::PopupMenu::Options::getInitiallySelectedItemId ( ) const
inlinenoexcept

Gets the ID of the item that must be selected when the menu is initially shown.

See also
withItemThatMustBeVisible

◆ getItemThatMustBeVisible()

int juce::PopupMenu::Options::getItemThatMustBeVisible ( ) const
inlinenoexcept

Gets the ID of the item that must be visible when the menu is initially shown.

See also
withItemThatMustBeVisible

◆ getMaximumNumColumns()

int juce::PopupMenu::Options::getMaximumNumColumns ( ) const
inlinenoexcept

Gets the maximum number of columns.

See also
withMaximumNumColumns

◆ getMinimumNumColumns()

int juce::PopupMenu::Options::getMinimumNumColumns ( ) const
inlinenoexcept

Gets the minimum number of columns.

See also
withMinimumNumColumns

◆ getMinimumWidth()

int juce::PopupMenu::Options::getMinimumWidth ( ) const
inlinenoexcept

Gets the minimum width.

See also
withMinimumWidth

◆ getParentComponent()

Component* juce::PopupMenu::Options::getParentComponent ( ) const
inlinenoexcept

Gets the parent component.

This may be nullptr if the Component has been deleted.

See also
withParentComponent

◆ getPreferredPopupDirection()

PopupDirection juce::PopupMenu::Options::getPreferredPopupDirection ( ) const
inlinenoexcept

Gets the preferred popup menu direction.

See also
withPreferredPopupDirection

◆ getStandardItemHeight()

int juce::PopupMenu::Options::getStandardItemHeight ( ) const
inlinenoexcept

Gets the default height of items in the menu.

See also
withStandardItemHeight

◆ getTargetComponent()

Component* juce::PopupMenu::Options::getTargetComponent ( ) const
inlinenoexcept

Gets the target component.

This may be nullptr if the Component has been deleted.

See also
withTargetComponent

◆ getTargetScreenArea()

Rectangle<int> juce::PopupMenu::Options::getTargetScreenArea ( ) const
inlinenoexcept

Gets the target screen area.

See also
withTargetScreenArea

◆ hasWatchedComponentBeenDeleted()

bool juce::PopupMenu::Options::hasWatchedComponentBeenDeleted ( ) const
inlinenoexcept

Returns true if the menu was watching a component, and that component has been deleted, and false otherwise.

See also
withDeletionCheck

◆ operator=()

Options& juce::PopupMenu::Options::operator= ( const Options )
default

◆ withDeletionCheck()

JUCE_NODISCARD Options juce::PopupMenu::Options::withDeletionCheck ( Component componentToWatchForDeletion) const

If the passed component has been deleted when the popup menu exits, the selected item's action will not be called.

This is useful for avoiding dangling references inside the action callback, in the case that the callback needs to access a component that may be deleted.

◆ withInitiallySelectedItem()

JUCE_NODISCARD Options juce::PopupMenu::Options::withInitiallySelectedItem ( int  idOfItemToBeSelected) const

Sets an item to select in the menu.

This is useful for controls such as combo boxes, where opening the combo box with the keyboard should ideally highlight the currently-selected item, allowing the next/previous item to be selected by pressing up/down on the keyboard, rather than needing to move the highlighted row down from the top of the menu each time it is opened.

◆ withItemThatMustBeVisible()

JUCE_NODISCARD Options juce::PopupMenu::Options::withItemThatMustBeVisible ( int  idOfItemToBeVisible) const

Sets an item which must be visible when the menu is initially drawn.

This is useful to ensure that a particular item is shown when the menu contains too many items to display on a single screen.

◆ withMaximumNumColumns()

JUCE_NODISCARD Options juce::PopupMenu::Options::withMaximumNumColumns ( int  maxNumColumns) const

Sets the maximum number of columns in the popup window.

◆ withMinimumNumColumns()

JUCE_NODISCARD Options juce::PopupMenu::Options::withMinimumNumColumns ( int  minNumColumns) const

Sets the minimum number of columns in the popup window.

◆ withMinimumWidth()

JUCE_NODISCARD Options juce::PopupMenu::Options::withMinimumWidth ( int  minWidth) const

Sets the minimum width of the popup window.

◆ withMousePosition()

JUCE_NODISCARD Options juce::PopupMenu::Options::withMousePosition ( ) const

Sets the target screen area to match the current mouse position.

Make sure to call this after withTargetComponent().

See also
withTargetScreenArea

◆ withParentComponent()

JUCE_NODISCARD Options juce::PopupMenu::Options::withParentComponent ( Component parentComponent) const

Sets a component that the popup menu will be drawn into.

Some plugin formats, such as AUv3, dislike it when the plugin editor spawns additional windows. Some AUv3 hosts display pink backgrounds underneath transparent popup windows, which is confusing and can appear as though the plugin is malfunctioning. Setting a parent component will avoid this unwanted behaviour, but with the downside that the menu size will be constrained by the size of the parent component.

◆ withPreferredPopupDirection()

JUCE_NODISCARD Options juce::PopupMenu::Options::withPreferredPopupDirection ( PopupDirection  direction) const

Sets the direction of the popup menu relative to the target screen area.

◆ withStandardItemHeight()

JUCE_NODISCARD Options juce::PopupMenu::Options::withStandardItemHeight ( int  standardHeight) const

Sets the default height of each item in the popup menu.

◆ withTargetComponent() [1/2]

JUCE_NODISCARD Options juce::PopupMenu::Options::withTargetComponent ( Component targetComponent) const

◆ withTargetComponent() [2/2]

JUCE_NODISCARD Options juce::PopupMenu::Options::withTargetComponent ( Component targetComponent) const

Sets the target component to use when displaying the menu.

This is normally the button or other control that triggered the menu.

The target component is primarily used to control the scale of the menu, so it's important to supply a target component if you'll be using your program on hi-DPI displays.

This function will also set the target screen area, so that the menu displays next to the target component. If you need to display the menu at a specific location, you should call withTargetScreenArea() after withTargetComponent.

See also
withTargetComponent, withTargetScreenArea

◆ withTargetScreenArea()

JUCE_NODISCARD Options juce::PopupMenu::Options::withTargetScreenArea ( Rectangle< int targetArea) const

Sets the region of the screen next to which the menu should be displayed.

To display the menu next to the mouse cursor use withMousePosition(), which is equivalent to passing the following to this function:

Rectangle<int>{}.withPosition (Desktop::getMousePosition())

withTargetComponent() will also set the target screen area. If you need a target component and a target screen area, make sure to call withTargetScreenArea() after withTargetComponent().

See also
withMousePosition

Member Data Documentation

◆ componentToWatchForDeletion

WeakReference<Component> juce::PopupMenu::Options::componentToWatchForDeletion
private

◆ initiallySelectedItemId

int juce::PopupMenu::Options::initiallySelectedItemId = 0
private

◆ isWatchingForDeletion

bool juce::PopupMenu::Options::isWatchingForDeletion = false
private

◆ maxColumns

int juce::PopupMenu::Options::maxColumns = 0
private

◆ minColumns

int juce::PopupMenu::Options::minColumns = 1
private

◆ minWidth

int juce::PopupMenu::Options::minWidth = 0
private

◆ parentComponent

WeakReference<Component> juce::PopupMenu::Options::parentComponent
private

◆ preferredPopupDirection

PopupDirection juce::PopupMenu::Options::preferredPopupDirection = PopupDirection::downwards
private

◆ standardHeight

int juce::PopupMenu::Options::standardHeight = 0
private

◆ targetArea

Rectangle<int> juce::PopupMenu::Options::targetArea
private

◆ targetComponent

WeakReference<Component> juce::PopupMenu::Options::targetComponent
private

◆ visibleItemID

int juce::PopupMenu::Options::visibleItemID = 0
private

The documentation for this class was generated from the following file:
juce::PopupMenu::Options::withMinimumWidth
JUCE_NODISCARD Options withMinimumWidth(int minWidth) const
Sets the minimum width of the popup window.
juce::Desktop::getMousePosition
static Point< int > getMousePosition()
Returns the mouse position.
juce::PopupMenu::PopupMenu
PopupMenu()=default
Creates an empty popup menu.
juce::PopupMenu::Options::withTargetComponent
JUCE_NODISCARD Options withTargetComponent(Component *targetComponent) const
Sets the target component to use when displaying the menu.
juce::PopupMenu::Options::withMaximumNumColumns
JUCE_NODISCARD Options withMaximumNumColumns(int maxNumColumns) const
Sets the maximum number of columns in the popup window.