48 && ! item.isSectionHeader
49 && (item.customComponent ==
nullptr || item.customComponent->isTriggeredAutomatically());
55 && item.subMenu !=
nullptr
56 && item.subMenu->items.size() > 0;
84 idealHeight += idealHeight / 2;
85 idealWidth += idealWidth / 4;
104 if (
item.isSectionHeader)
113 parent.addAndMakeVisible (
this);
133 void getIdealSize (
int& idealWidth,
int& idealHeight,
const int standardItemHeight)
136 customComp->getIdealSize (idealWidth, idealHeight);
141 idealWidth, idealHeight,
165 shouldBeHighlighted = shouldBeHighlighted &&
item.isEnabled;
172 customComp->setHighlighted (shouldBeHighlighted);
211 .withAccessibleOffscreen();
215 state =
itemComponent.parentWindow.isSubMenuVisible() ? state.withExpandable().withExpanded()
216 : state.withExpandable().withCollapsed();
220 state = state.withCheckable().withChecked();
222 return state.isFocused() ? state.withSelected() : state;
229 auto onFocus = [&
item]
231 item.parentWindow.disableTimerUntilMouseMoves();
232 item.parentWindow.ensureItemComponentIsVisible (
item, -1);
233 item.parentWindow.setCurrentlyHighlightedChild (&
item);
238 if (
handler.getCurrentState().isSelected())
239 item.parentWindow.setCurrentlyHighlightedChild (
nullptr);
251 item.parentWindow.setCurrentlyHighlightedChild (&
item);
252 item.parentWindow.triggerCurrentlyHighlightedItem();
258 auto showSubMenu = [&
item]
260 item.parentWindow.showSubMenuFor (&
item);
262 if (
auto* subMenu =
item.parentWindow.activeSubMenu.get())
263 subMenu->setCurrentlyHighlightedChild (subMenu->items.getFirst());
279 : std::make_unique<ItemAccessibilityHandler> (*
this);
291 if (
item.commandManager !=
nullptr
293 &&
item.shortcutKeyDescription.isEmpty())
297 for (
auto& keypress :
item.commandManager->getKeyMappings()
298 ->getKeyPressesAssignedToCommand (
item.itemID))
300 auto key = keypress.getTextDescriptionWithIcons();
305 if (
key.length() == 1 &&
key[0] < 128)
306 shortcutKey <<
"shortcut: '" <<
key <<
'\'';
311 item.shortcutKeyDescription = shortcutKey.
trim();
317 return item.shortcutKeyDescription.isNotEmpty() ?
item.text +
" " +
item.shortcutKeyDescription
328 Options opts,
bool alignToRectangle,
bool shouldDismissOnMouseUp,
351 if (
auto*
pc =
options.getParentComponent())
353 pc->addChildComponent (
this);
357 const auto shouldDisableAccessibility = [
this]
360 :
options.getTargetComponent();
362 return compToCheck !=
nullptr && ! compToCheck->isAccessible();
365 if (shouldDisableAccessibility)
370 | lf.getMenuWindowFlags());
375 if (
options.getParentComponent() ==
nullptr && parentWindow ==
nullptr && lf.shouldPopupMenuScaleWithTargetComponent (
options))
376 if (
auto* targetComponent =
options.getTargetComponent())
382 const auto initialSelectedId =
options.getInitiallySelectedItemId();
384 for (
int i = 0;
i < menu.
items.size(); ++
i)
386 auto& item = menu.
items.getReference (
i);
388 if (
i + 1 < menu.
items.size() || ! item.isSeparator)
392 if (initialSelectedId != 0 && item.itemID == initialSelectedId)
402 if (
auto visibleID =
options.getItemThatMustBeVisible())
404 for (
auto* item :
items)
406 if (item->item.itemID == visibleID)
408 const auto targetPosition = [&]
410 if (
auto*
pc =
options.getParentComponent())
411 return pc->getLocalPoint (
nullptr, targetArea.getTopLeft());
413 return targetArea.getTopLeft();
416 auto y = targetPosition.getY() -
windowPos.getY();
427 lf.preparePopupMenuWindow (*
this);
452 const auto separatorWidth = theme.getPopupMenuColumnSeparatorWidthWithOptions (
options);
453 const auto border = theme.getPopupMenuBorderSizeWithOptions (
options);
459 const Rectangle<int> separator (currentX + width,
462 getHeight() - border * 2);
463 theme.drawPopupMenuColumnSeparatorWithOptions (g, separator, options);
464 currentX += width + separatorWidth;
472 if (
options.getParentComponent())
480 lf.drawPopupMenuUpDownArrowWithOptions (
g,
490 lf.drawPopupMenuUpDownArrowWithOptions (
g,
521 if (deletionChecker !=
nullptr)
531 && item->
action !=
nullptr)
542 if (! cc->menuItemTriggered())
552 parent->dismissMenu (item);
564 hide (
nullptr,
true);
576 auto* accessibleFocus = [
this]
579 if (
auto* childHandler =
currentChild->getAccessibilityHandler())
585 if (accessibleFocus !=
nullptr)
586 accessibleFocus->grabFocus();
605 ItemComponent* currentChildOfParent = parentWindow->currentChild;
607 hide (
nullptr,
true);
609 if (parentWindow !=
nullptr)
610 parentWindow->setCurrentlyHighlightedChild (currentChildOfParent);
657 if (deletionChecker ==
nullptr)
732 return activeMenuWindows;
741 if (ms->source == source) mouseState = ms;
745 if (mouseState ==
nullptr)
780 while (mw->parent !=
nullptr)
783 while (mw !=
nullptr)
788 mw = mw->activeSubMenu.get();
817 if (relativeTo !=
nullptr)
818 targetPoint = relativeTo->localPointToGlobal (targetPoint);
821 auto parentArea = display->safeAreaInsets.subtractedFrom (display->totalArea);
823 if (
auto*
pc =
options.getParentComponent())
825 return pc->getLocalArea (
nullptr,
826 pc->getScreenBounds()
828 .getIntersection (parentArea));
838 if (
auto*
pc =
options.getParentComponent())
839 target =
pc->getLocalArea (
nullptr, target).getIntersection (parentArea);
841 auto maxMenuHeight = parentArea.getHeight() - 24;
843 int x,
y, widthToUse, heightToUse;
844 layoutMenuItems (parentArea.getWidth() - 24, maxMenuHeight, widthToUse, heightToUse);
846 if (alignToRectangle)
850 auto spaceUnder = parentArea.getBottom() - target.
getBottom();
851 auto spaceOver = target.
getY() - parentArea.getY();
852 auto bufferHeight = 30;
855 y = (heightToUse < spaceOver - bufferHeight || spaceOver >= spaceUnder) ? target.
getY() - heightToUse
858 y = (heightToUse < spaceUnder - bufferHeight || spaceUnder >= spaceOver) ? target.
getBottom()
859 : target.
getY() - heightToUse;
863 bool tendTowardsRight = target.
getCentreX() < parentArea.getCentreX();
867 if (
parent->parent !=
nullptr)
869 const bool parentGoingRight = (
parent->getX() +
parent->getWidth() / 2
870 >
parent->parent->getX() +
parent->parent->getWidth() / 2);
872 if (parentGoingRight && target.
getRight() + widthToUse < parentArea.getRight() - 4)
873 tendTowardsRight =
true;
874 else if ((! parentGoingRight) && target.
getX() > widthToUse + 4)
875 tendTowardsRight =
false;
877 else if (target.
getRight() + widthToUse < parentArea.getRight() - 32)
879 tendTowardsRight =
true;
883 auto biggestSpace =
jmax (parentArea.getRight() - target.
getRight(),
884 target.
getX() - parentArea.getX()) - 32;
886 if (biggestSpace < widthToUse)
891 layoutMenuItems (biggestSpace - 4, maxMenuHeight, widthToUse, heightToUse);
893 tendTowardsRight = (parentArea.getRight() - target.
getRight()) >= (target.
getX() - parentArea.getX());
896 x = tendTowardsRight ?
jmin (parentArea.getRight() - widthToUse - 4, target.
getRight())
897 :
jmax (parentArea.getX() + 4, target.
getX() - widthToUse);
900 x += tendTowardsRight ? 1 : -1;
907 x =
jmax (parentArea.getX() + 1,
jmin (parentArea.getRight() - (widthToUse + 6),
x));
908 y =
jmax (parentArea.getY() + 1,
jmin (parentArea.getBottom() - (heightToUse + 6),
y));
910 windowPos.setBounds (
x,
y, widthToUse, heightToUse);
920 if (
auto* last =
items.getLast())
921 last->item.shouldBreakAfter =
false;
923 const auto isBreak = [] (
const ItemComponent* item) {
return item->item.shouldBreakAfter; };
924 const auto numBreaks =
static_cast<int> (std::count_if (
items.begin(),
items.end(), isBreak));
943 auto maximumNumColumns =
options.getMaximumNumColumns() > 0 ?
options.getMaximumNumColumns() : 7;
949 if (totalW > maxMenuW)
956 if (totalW > maxMenuW / 2
966 for (
auto i = 0;;
i += itemsPerColumn)
968 const auto breakIndex =
i + itemsPerColumn - 1;
970 if (breakIndex >=
items.size())
973 items[breakIndex]->item.shouldBreakAfter =
true;
976 if (!
items.isEmpty())
977 (*std::prev (
items.end()))->item.shouldBreakAfter =
false;
983 const auto minWidth =
jmin (maxMenuW,
options.getMinimumWidth());
985 if (totalW < minWidth)
1003 const auto isBreak = [] (
const ItemComponent* item) {
return item->item.shouldBreakAfter; };
1004 const auto nextBreak = std::find_if (it,
end, isBreak);
1005 const auto columnEnd = nextBreak ==
end ?
end : std::next (nextBreak);
1007 const auto getMaxWidth = [] (
int acc,
const ItemComponent* item) {
return jmax (acc, item->getWidth()); };
1008 const auto colW = std::accumulate (it, columnEnd,
options.getStandardItemHeight(), getMaxWidth);
1012 const auto sumHeight = [] (
int acc,
const ItemComponent* item) {
return acc + item->getHeight(); };
1013 const auto colH = std::accumulate (it, columnEnd, 0, sumHeight);
1032 int colW =
options.getStandardItemHeight(), colH = 0;
1034 auto numChildren =
jmin (
items.size() - childNum,
1037 for (
int i = numChildren; --
i >= 0;)
1039 colW =
jmax (colW,
items.getUnchecked (childNum +
i)->getWidth());
1040 colH +=
items.getUnchecked (childNum +
i)->getHeight();
1049 childNum += numChildren;
1059 auto currentY = itemComp.
getY();
1070 auto deltaY = wantedY - currentY;
1075 auto newY =
jlimit (parentArea.getY(),
1076 parentArea.getBottom() -
windowPos.getHeight(),
1101 if (spaceAtBottom > 0)
1102 r.setSize (
r.getWidth(),
r.getHeight() - spaceAtBottom);
1152 for (
const auto& item :
items)
1156 item->setBounds (
x,
y, columnWidth, item->getHeight());
1157 y += item->getHeight();
1159 if (item->item.shouldBreakAfter)
1162 x += columnWidth + separatorWidth;
1194 if (childComp !=
nullptr
1199 .withMinimumWidth (0)
1200 .withTargetComponent (
nullptr),
1244 for (
int i =
items.size(); --
i >= 0;)
1259 preIncrement =
true;
1268 parent->disableTimerUntilMouseMoves();
1278 return std::make_unique<AccessibilityHandler> (*
this,
1327 if (!
window.windowIsStillValid())
1339 if ((
source.isTouch() ||
source.isPen()) && ! isValidMousePosition())
1343 if (
window.windowIsStillValid())
1349 return window.reallyContains (
window.getLocalPoint (
nullptr,
source.getScreenPosition()).roundToInt(),
true);
1363 auto localMousePos =
window.getLocalPoint (
nullptr, globalMousePos);
1366 if (timeNow >
window.timeEnteredCurrentChildComp + 100
1367 &&
window.reallyContains (localMousePos,
true)
1368 &&
window.currentChild !=
nullptr
1369 && ! (
window.disableMouseMoves ||
window.isSubMenuVisible()))
1377 const bool isOverAny =
window.isOverAnyMenu();
1379 if (
window.hideOnExit &&
window.hasBeenOver && ! isOverAny)
1380 window.hide (
nullptr,
true);
1386 const bool wasDown,
const bool overScrollArea,
const bool isOverAny)
1392 if (!
window.doesAnyJuceCompHaveFocus())
1394 if (timeNow >
window.lastFocusedTime + 10)
1397 window.dismissMenu (
nullptr);
1401 else if (wasDown && timeNow >
window.windowCreationTime + 250
1402 && ! (
isDown || overScrollArea))
1404 if (
window.reallyContains (localMousePos,
true))
1405 window.triggerCurrentlyHighlightedItem();
1406 else if ((
window.hasBeenOver || !
window.dismissOnMouseUp) && ! isOverAny)
1407 window.dismissMenu (
nullptr);
1413 window.lastFocusedTime = timeNow;
1421 const auto isMouseOver =
window.reallyContains (localMousePos,
true);
1424 window.hasBeenOver =
true;
1430 if (
window.disableMouseMoves && isMouseOver)
1431 window.disableMouseMoves =
false;
1434 if (
window.disableMouseMoves || (
window.activeSubMenu !=
nullptr &&
window.activeSubMenu->isOverChildren()))
1437 const bool isMovingTowardsMenu = isMouseOver && globalMousePos !=
lastMousePos
1442 if (! isMovingTowardsMenu)
1444 auto*
c =
window.getComponentAt (localMousePos);
1451 if (itemUnderMouse ==
nullptr &&
c !=
nullptr)
1454 if (itemUnderMouse !=
window.currentChild
1455 && (isMouseOver || (
window.activeSubMenu ==
nullptr) || !
window.activeSubMenu->isVisible()))
1457 if (isMouseOver && (
c !=
nullptr) && (
window.activeSubMenu !=
nullptr))
1458 window.activeSubMenu->hide (
nullptr,
true);
1462 if (!
window.hasBeenOver)
1465 itemUnderMouse =
nullptr;
1468 window.setCurrentlyHighlightedChild (itemUnderMouse);
1476 if (
window.activeSubMenu ==
nullptr)
1483 auto itemScreenBounds =
window.activeSubMenu->getScreenBounds();
1484 auto subX = (float) itemScreenBounds.getX();
1488 if (itemScreenBounds.getX() >
window.getX())
1495 subX += (float) itemScreenBounds.getWidth();
1498 Path areaTowardsSubMenu;
1499 areaTowardsSubMenu.
addTriangle ((
float) oldGlobalPos.x, (
float) oldGlobalPos.y,
1500 subX, (
float) itemScreenBounds.getY(),
1501 subX, (
float) itemScreenBounds.getBottom());
1513 return scroll (timeNow, -1);
1516 return scroll (timeNow, 1);
1530 for (
int i = 0;
i <
window.items.size() && amount == 0; ++
i)
1533 window.alterChildYPos (amount * direction);
1541 bool isValidMousePosition()
1544 auto localPos = (
window.activeSubMenu ==
nullptr) ?
window.getLocalPoint (
nullptr, screenPos)
1545 :
window.activeSubMenu->getLocalPoint (
nullptr, screenPos);
1547 if (localPos.x < 0 && localPos.y < 0)
1605 :
items (std::move (other.items)),
1612 items = std::move (other.items);
1655 image = other.
image !=
nullptr ? other.
image->createCopy() : std::unique_ptr<Drawable>();
1683 action = std::move (newAction);
1707 image = std::move (newImage);
1714 return std::move (*
this);
1720 return std::move (*
this);
1725 action = std::move (newAction);
1726 return std::move (*
this);
1732 return std::move (*
this);
1738 return std::move (*
this);
1744 return std::move (*
this);
1749 image = std::move (newImage);
1750 return std::move (*
this);
1759 || newItem.
subMenu !=
nullptr);
1761 items.add (std::move (newItem));
1766 addItem (std::move (itemText),
true,
false, std::move (action));
1771 Item i (std::move (itemText));
1772 i.action = std::move (action);
1773 i.isEnabled = isActive;
1774 i.isTicked = isTicked;
1780 Item i (std::move (itemText));
1781 i.itemID = itemResultID;
1782 i.isEnabled = isActive;
1783 i.isTicked = isTicked;
1793 return std::unique_ptr<Drawable> (
d);
1805 bool isTicked, std::unique_ptr<Drawable> iconToUse)
1807 Item i (std::move (itemText));
1808 i.itemID = itemResultID;
1809 i.isEnabled = isActive;
1810 i.isTicked = isTicked;
1811 i.image = std::move (iconToUse);
1818 std::unique_ptr<Drawable> iconToUse)
1820 jassert (commandManager !=
nullptr && commandID != 0);
1822 if (
auto* registeredInfo = commandManager->
getCommandForID (commandID))
1828 i.text = displayName.
isNotEmpty() ? std::move (displayName) :
info.shortName;
1829 i.itemID = (
int) commandID;
1830 i.commandManager = commandManager;
1833 i.image = std::move (iconToUse);
1839 bool isActive,
bool isTicked, std::unique_ptr<Drawable> iconToUse)
1841 Item i (std::move (itemText));
1842 i.itemID = itemResultID;
1843 i.colour = itemTextColour;
1844 i.isEnabled = isActive;
1845 i.isTicked = isTicked;
1846 i.image = std::move (iconToUse);
1851 bool isActive,
bool isTicked,
const Image& iconToUse)
1853 Item i (std::move (itemText));
1854 i.itemID = itemResultID;
1855 i.colour = itemTextColour;
1856 i.isEnabled = isActive;
1857 i.isTicked = isTicked;
1863 std::unique_ptr<CustomComponent> cc,
1864 std::unique_ptr<const PopupMenu> subMenu,
1869 i.itemID = itemResultID;
1870 i.customComponent = cc.release();
1886 int idealWidth,
int idealHeight,
1887 bool triggerMenuItemAutomaticallyWhenClicked,
1888 std::unique_ptr<const PopupMenu> subMenu,
1891 auto comp = std::make_unique<HelperClasses::NormalComponentWrapper> (customComponent, idealWidth, idealHeight,
1892 triggerMenuItemAutomaticallyWhenClicked);
1898 addSubMenu (std::move (subMenuName), std::move (subMenu), isActive,
nullptr,
false, 0);
1902 const Image& iconToUse,
bool isTicked,
int itemResultID)
1904 addSubMenu (std::move (subMenuName), std::move (subMenu), isActive,
1909 std::unique_ptr<Drawable> iconToUse,
bool isTicked,
int itemResultID)
1911 Item i (std::move (subMenuName));
1912 i.itemID = itemResultID;
1913 i.isEnabled = isActive && (itemResultID != 0 || subMenu.
getNumItems() > 0);
1914 i.subMenu.reset (
new PopupMenu (std::move (subMenu)));
1915 i.isTicked = isTicked;
1916 i.image = std::move (iconToUse);
1922 if (
items.size() > 0 && !
items.getLast().isSeparator)
1925 i.isSeparator =
true;
1934 i.isSectionHeader =
true;
1940 if (!
items.isEmpty())
1941 std::prev (
items.end())->shouldBreakAfter =
true;
1950template <
typename Member,
typename Item>
1953 options.*member = std::forward<Item> (item);
1961 if (
comp !=
nullptr)
1962 o.targetArea =
comp->getScreenBounds();
2033 const auto scope = [&]() -> std::unique_ptr<ScopedThreadDPIAwarenessSetter>
2036 if (
auto* handle = target->getWindowHandle())
2037 return std::make_unique<ScopedThreadDPIAwarenessSetter> (handle);
2047 managerOfChosenCommand);
2074 const auto focusedIsNotMinimised = [focusComponent]
2076 if (
auto* peer = focusComponent->getPeer())
2077 return ! peer->isMinimised();
2082 if (focusedIsNotMinimised)
2084 if (
auto* topLevel = focusComponent->getTopLevelComponent())
2085 topLevel->toFront (
true);
2087 if (focusComponent->isShowing() && ! focusComponent->hasKeyboardFocus (
true))
2088 focusComponent->grabKeyboardFocus();
2103 std::unique_ptr<ModalComponentManager::Callback> userCallbackDeleter (userCallback);
2112 window->setVisible (
true);
2113 window->enterModalState (
false, userCallbackDeleter.release());
2114 ModalComponentManager::getInstance()->attachCallback (
window,
callback.release());
2119 #if JUCE_MODAL_LOOPS_PERMITTED
2120 if (userCallback ==
nullptr && canBeModal)
2121 return window->runModalLoop();
2124 jassert (! (userCallback ==
nullptr && canBeModal));
2132#if JUCE_MODAL_LOOPS_PERMITTED
2133int PopupMenu::showMenu (
const Options& options)
2135 return showWithOptionalCallback (options,
nullptr,
true);
2146 #if ! JUCE_MODAL_LOOPS_PERMITTED
2147 jassert (userCallback !=
nullptr);
2159#if JUCE_MODAL_LOOPS_PERMITTED
2160int PopupMenu::show (
int itemIDThatMustBeVisible,
int minimumWidth,
2161 int maximumNumColumns,
int standardItemHeight,
2164 return showWithOptionalCallback (Options().withItemThatMustBeVisible (itemIDThatMustBeVisible)
2165 .withMinimumWidth (minimumWidth)
2166 .withMaximumNumColumns (maximumNumColumns)
2167 .withStandardItemHeight (standardItemHeight),
2172 int itemIDThatMustBeVisible,
int minimumWidth,
2173 int maximumNumColumns,
int standardItemHeight,
2174 ModalComponentManager::Callback*
callback)
2176 return showWithOptionalCallback (Options().withTargetScreenArea (screenAreaToAttachTo)
2177 .withItemThatMustBeVisible (itemIDThatMustBeVisible)
2178 .withMinimumWidth (minimumWidth)
2179 .withMaximumNumColumns (maximumNumColumns)
2180 .withStandardItemHeight (standardItemHeight),
2184int PopupMenu::showAt (Component* componentToAttachTo,
2185 int itemIDThatMustBeVisible,
int minimumWidth,
2186 int maximumNumColumns,
int standardItemHeight,
2187 ModalComponentManager::Callback*
callback)
2194 if (componentToAttachTo !=
nullptr)
2204 auto numWindows = windows.size();
2206 for (
int i = numWindows; --
i >= 0;)
2208 if (
auto* pmw = windows[
i])
2210 pmw->setLookAndFeel (
nullptr);
2211 pmw->dismissMenu (
nullptr);
2215 return numWindows > 0;
2223 for (
auto& mi :
items)
2224 if (! mi.isSeparator)
2232 for (
auto& mi :
items)
2233 if ((mi.itemID == commandID && mi.commandManager !=
nullptr)
2234 || (mi.subMenu !=
nullptr && mi.subMenu->containsCommandItem (commandID)))
2242 for (
auto& mi :
items)
2244 if (mi.subMenu !=
nullptr)
2246 if (mi.subMenu->containsAnyActiveItems())
2249 else if (mi.isEnabled)
2289 pmw->dismissMenu (&mic->item);
2320 if (
index.size() == 0 ||
menus.getLast()->items.size() == 0)
2335 while (
index.size() > 0 &&
index.getLast() >= (
int)
menus.getLast()->items.size())
2340 if (
index.size() > 0)
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
static Audio_Scope * scope
Definition player.cpp:26
uint16_t pc
Definition Spc_Cpu.h:144
T limit(T val, T min, T max)
Definition Util.h:78
Definition juce_AccessibilityActions.h:73
AccessibilityActions & addAction(AccessibilityActionType type, std::function< void()> actionCallback)
Definition juce_AccessibilityActions.h:88
virtual AccessibleState getCurrentState() const
Definition juce_AccessibilityHandler.cpp:75
AccessibilityActions actions
Definition juce_AccessibilityHandler.h:311
AccessibilityHandler(Component &componentToWrap, AccessibilityRole accessibilityRole, AccessibilityActions actions={}, Interfaces interfaces={})
Definition juce_AccessibilityHandler.cpp:55
Definition juce_AccessibilityState.h:39
Definition juce_ApplicationCommandManager.h:88
ApplicationCommandTarget * getTargetForCommand(CommandID commandID, ApplicationCommandInfo &upToDateInfo)
Definition juce_ApplicationCommandManager.cpp:217
const ApplicationCommandInfo * getCommandForID(CommandID commandID) const noexcept
Definition juce_ApplicationCommandManager.cpp:131
Definition juce_Array.h:56
Definition juce_BorderSize.h:42
Definition juce_Colour.h:38
Definition juce_Component.h:2287
Definition juce_Component.h:36
void setLookAndFeel(LookAndFeel *newLookAndFeel)
Definition juce_Component.cpp:2182
static Component *JUCE_CALLTYPE getCurrentlyModalComponent(int index=0) noexcept
Definition juce_Component.cpp:1842
void setAccessible(bool shouldBeAccessible)
Definition juce_Component.cpp:3273
bool isVisible() const noexcept
Definition juce_Component.h:122
int getBottom() const noexcept
Definition juce_Component.h:295
bool isOpaque() const noexcept
Definition juce_Component.cpp:843
void setFocusContainerType(FocusContainerType containerType) noexcept
Definition juce_Component.cpp:2862
int getHeight() const noexcept
Definition juce_Component.h:274
static Component *JUCE_CALLTYPE getCurrentlyFocusedComponent() noexcept
Definition juce_Component.cpp:3092
bool isShowing() const
Definition juce_Component.cpp:634
static float JUCE_CALLTYPE getApproximateScaleFactorForComponent(const Component *targetComponent)
Definition juce_Component.cpp:1383
void addAndMakeVisible(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1554
void setAlwaysOnTop(bool shouldStayOnTop)
Definition juce_Component.cpp:1074
void addMouseListener(MouseListener *newListener, bool wantsEventsForAllNestedChildComponents)
Definition juce_Component.cpp:2376
AccessibilityHandler * getAccessibilityHandler()
Definition juce_Component.cpp:3302
void setOpaque(bool shouldBeOpaque)
Definition juce_Component.cpp:829
void postCommandMessage(int commandId)
Definition juce_Component.cpp:2361
void repaint()
Definition juce_Component.cpp:1917
Component() noexcept
Definition juce_Component.cpp:517
@ focusContainer
Definition juce_Component.h:1295
Rectangle< int > getScreenBounds() const
Definition juce_Component.cpp:1134
void exitModalState(int returnValue)
Definition juce_Component.cpp:1795
int getY() const noexcept
Definition juce_Component.h:268
virtual void setName(const String &newName)
Definition juce_Component.cpp:551
void removeChildComponent(Component *childToRemove)
Definition juce_Component.cpp:1569
Component * getChildComponent(int index) const noexcept
Definition juce_Component.cpp:1648
virtual void addToDesktop(int windowStyleFlags, void *nativeWindowToAttachTo=nullptr)
Definition juce_Component.cpp:658
void setBounds(int x, int y, int width, int height)
Definition juce_Component.cpp:1147
void setSize(int newWidth, int newHeight)
Definition juce_Component.cpp:1262
TargetClass * findParentComponentOfClass() const
Definition juce_Component.h:813
void setWantsKeyboardFocus(bool wantsFocus) noexcept
Definition juce_Component.cpp:2842
void setMouseClickGrabsKeyboardFocus(bool shouldGrabFocus)
Definition juce_Component.cpp:2847
static std::unique_ptr< AccessibilityHandler > createIgnoredAccessibilityHandler(Component &)
Definition juce_Component.cpp:3292
int getWidth() const noexcept
Definition juce_Component.h:271
LookAndFeel & getLookAndFeel() const noexcept
Definition juce_Component.cpp:2173
Rectangle< int > getLocalBounds() const noexcept
Definition juce_Component.cpp:2283
void setTopLeftPosition(int x, int y)
Definition juce_Component.cpp:1264
virtual void setVisible(bool shouldBeVisible)
Definition juce_Component.cpp:575
String getName() const noexcept
Definition juce_Component.h:76
virtual void handleCommandMessage(int commandId)
Definition juce_Component.cpp:2370
static ModifierKeys getCurrentModifiersRealtime() noexcept
Definition juce_ComponentPeer.cpp:596
static int getNumPeers() noexcept
Definition juce_ComponentPeer.cpp:51
@ windowIsTemporary
Definition juce_ComponentPeer.h:52
@ windowIgnoresKeyPresses
Definition juce_ComponentPeer.h:71
static ComponentPeer * getPeer(int index) noexcept
Definition juce_ComponentPeer.cpp:56
static Point< int > getMousePosition()
Definition juce_Desktop.cpp:153
static Desktop &JUCE_CALLTYPE getInstance()
Definition juce_Desktop.cpp:50
static bool canUseSemiTransparentWindows() noexcept
Definition juce_linux_Windowing.cpp:603
Definition juce_Drawable.h:38
Definition juce_DrawableImage.h:38
Definition juce_GraphicsContext.h:45
Definition juce_Image.h:58
bool isValid() const noexcept
Definition juce_Image.h:147
Definition juce_KeyPress.h:40
static const int upKey
Definition juce_KeyPress.h:198
static const int rightKey
Definition juce_KeyPress.h:201
static const int downKey
Definition juce_KeyPress.h:199
static const int spaceKey
Definition juce_KeyPress.h:189
static const int escapeKey
Definition juce_KeyPress.h:190
static const int returnKey
Definition juce_KeyPress.h:191
static const int leftKey
Definition juce_KeyPress.h:200
Definition juce_LookAndFeel.h:108
static bool callAsync(std::function< void()> functionToCall)
Definition juce_MessageManager.cpp:192
static ModalComponentManager::Callback * create(CallbackFn &&fn)
Definition juce_ModalComponentManager.h:174
Definition juce_ModalComponentManager.h:56
static ModifierKeys currentModifiers
Definition juce_ModifierKeys.h:189
Definition juce_MouseEvent.h:39
Definition juce_OwnedArray.h:51
Definition juce_Path.h:65
bool contains(float x, float y, float tolerance=defaultToleranceForTesting) const
Definition juce_Path.cpp:937
void addTriangle(float x1, float y1, float x2, float y2, float x3, float y3)
Definition juce_Path.cpp:417
Definition juce_Point.h:42
constexpr Point< float > toFloat() const noexcept
Definition juce_Point.h:234
ValueType y
Definition juce_Point.h:247
ValueType x
Definition juce_Point.h:246
static AccessibilityActions getAccessibilityActions(ItemAccessibilityHandler &handler, ItemComponent &item)
Definition juce_PopupMenu.cpp:226
ItemComponent & itemComponent
Definition juce_PopupMenu.cpp:273
String getTitle() const override
Definition juce_PopupMenu.cpp:203
ItemAccessibilityHandler(ItemComponent &itemComponentToWrap)
Definition juce_PopupMenu.cpp:194
AccessibleState getCurrentState() const override
Definition juce_PopupMenu.cpp:208
Definition juce_Rectangle.h:67
ValueType getRight() const noexcept
Definition juce_Rectangle.h:139
Point< ValueType > getCentre() const noexcept
Definition juce_Rectangle.h:151
ValueType getCentreX() const noexcept
Definition juce_Rectangle.h:145
ValueType getCentreY() const noexcept
Definition juce_Rectangle.h:148
ValueType getBottom() const noexcept
Definition juce_Rectangle.h:142
ValueType getX() const noexcept
Definition juce_Rectangle.h:127
ValueType getWidth() const noexcept
Definition juce_Rectangle.h:133
bool isEmpty() const noexcept
Definition juce_Rectangle.h:121
JUCE_NODISCARD Rectangle withPosition(ValueType newX, ValueType newY) const noexcept
Definition juce_Rectangle.h:232
ValueType getY() const noexcept
Definition juce_Rectangle.h:130
Definition juce_ReferenceCountedObject.h:247
Definition juce_String.h:53
String trim() const
Definition juce_String.cpp:1656
bool isEmpty() const noexcept
Definition juce_String.h:310
bool isNotEmpty() const noexcept
Definition juce_String.h:316
Definition juce_Time.h:37
static uint32 getApproximateMillisecondCounter() noexcept
Definition juce_Time.cpp:261
static uint32 getMillisecondCounter() noexcept
Definition juce_Time.cpp:241
void stopTimer() noexcept
Definition juce_Timer.cpp:357
Timer() noexcept
Definition juce_Timer.cpp:316
void startTimerHz(int timerFrequencyHz) noexcept
Definition juce_Timer.cpp:349
Definition juce_WeakReference.h:78
* e
Definition inflate.c:1404
UINT_D64 w
Definition inflate.c:942
unsigned * m
Definition inflate.c:1559
struct huft * t
Definition inflate.c:943
int y
Definition inflate.c:1588
unsigned d
Definition inflate.c:940
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
static ZCONST unsigned border[]
Definition inflate.c:749
unsigned s
Definition inflate.c:1555
unsigned x[BMAX+1]
Definition inflate.c:1586
static const char * title
Definition pugl.h:1747
static const char * name
Definition pugl.h:1582
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
static uintptr_t parent
Definition pugl.h:1644
virtual ASIOError start()=0
struct backing_store_struct * info
Definition jmemsys.h:183
static int JUCE_CDECL comp(const void *a, const void *b)
Definition lsp.c:298
const Colour white
Definition juce_Colours.h:180
Definition carla_juce.cpp:31
Type * createCopyIfNotNull(const Type *objectToCopy)
Definition juce_Memory.h:60
constexpr Type jmin(Type a, Type b)
Definition juce_MathsFunctions.h:106
unsigned int uint32
Definition juce_MathsFunctions.h:45
int CommandID
Definition juce_ApplicationCommandID.h:37
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94
RangedDirectoryIterator end(const RangedDirectoryIterator &)
Definition juce_RangedDirectoryIterator.h:184
Type jlimit(Type lowerLimit, Type upperLimit, Type valueToConstrain) noexcept
Definition juce_MathsFunctions.h:262
@ rowSelectionChanged
Definition juce_AccessibilityEvent.h:78
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
@ showMenu
Definition juce_AccessibilityActions.h:61
@ focus
Definition juce_AccessibilityActions.h:54
@ toggle
Definition juce_AccessibilityActions.h:47
@ press
Definition juce_AccessibilityActions.h:40
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
static URL::InputStreamOptions with(URL::InputStreamOptions options, Member &&member, Item &&item)
Definition juce_URL.cpp:561
static std::unique_ptr< Drawable > createDrawableFromImage(const Image &im)
Definition juce_PopupMenu.cpp:1787
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
AccessibilityRole
Definition juce_AccessibilityRole.h:37
@ window
Definition juce_AccessibilityRole.h:63
@ column
Definition juce_AccessibilityRole.h:52
@ menuItem
Definition juce_AccessibilityRole.h:47
@ popupMenu
Definition juce_AccessibilityRole.h:49
@ ignored
Definition juce_AccessibilityRole.h:67
static bool isForegroundOrEmbeddedProcess(Component *viewComponent)
Definition juce_gui_basics.cpp:120
Definition juce_Uuid.h:141
#define true
Definition ordinals.h:82
#define false
Definition ordinals.h:83
Definition juce_ApplicationCommandInfo.h:45
@ isTicked
Definition juce_ApplicationCommandInfo.h:156
@ isDisabled
Definition juce_ApplicationCommandInfo.h:146
Definition juce_ApplicationCommandTarget.h:61
@ fromMenu
Definition juce_ApplicationCommandTarget.h:80
Definition juce_MouseEvent.h:392
float deltaY
Definition juce_MouseEvent.h:410
virtual void drawPopupMenuUpDownArrow(Graphics &, int width, int height, bool isScrollUpArrow)
Definition juce_PopupMenu.cpp:2366
virtual int getPopupMenuBorderSize()
Definition juce_PopupMenu.cpp:2370
virtual void drawPopupMenuSectionHeader(Graphics &, const Rectangle< int > &, const String &)
Definition juce_PopupMenu.cpp:2363
virtual void getIdealPopupMenuItemSize(const String &text, bool isSeparator, int standardMenuItemHeight, int &idealWidth, int &idealHeight)
Definition juce_PopupMenu.cpp:2368
virtual void drawPopupMenuBackground(Graphics &, int width, int height)
Definition juce_PopupMenu.cpp:2353
virtual void drawPopupMenuItem(Graphics &, const Rectangle< int > &area, bool isSeparator, bool isActive, bool isHighlighted, bool isTicked, bool hasSubMenu, const String &text, const String &shortcutKeyText, const Drawable *icon, const Colour *textColour)
Definition juce_PopupMenu.cpp:2355
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
void Rectangle(HDC ctx, int l, int t, int r, int b)
Definition swell-gdi-generic.cpp:279
return c
Definition crypt.c:175
ZCONST char * key
Definition crypt.c:587
int r
Definition crypt.c:458
if(GLOBAL(newzip))
Definition crypt.c:475
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
void handler(int signal)
Definition fileio.c:1632
int result
Definition process.c:1455
typedef int(UZ_EXP MsgFn)()
#define const
Definition zconf.h:137