48 :
item (itemToRepresent),
64 auto itemPosition =
item.getItemPosition (
false);
67 .withWidth (itemPosition.getWidth()));
84 return item.getTooltip();
96 { std::make_unique<ItemCellInterface> (
comp) }),
103 return itemComponent.getRepresentedItem().getAccessibilityName();
119 if (
tree->isMultiSelectEnabled())
120 state = state.withMultiSelectable();
122 state = state.withSelectable();
125 if (
treeItem.mightContainSubItems())
127 state = state.withExpandable();
130 state = state.withExpanded();
132 state = state.withCollapsed();
136 state = state.withSelected();
151 return itemComponent.getRepresentedItem().getRowNumberInTree();
167 return tree->getAccessibilityHandler();
201 auto isSelected =
handler->getCurrentState().isSelected();
206 itemComponent.getRepresentedItem().setSelected (! isSelected,
true);
238 return std::make_unique<ItemAccessibilityHandler> (*
this);
271 return itemComponent->getRepresentedItem().getTooltip();
273 return owner.getTooltip();
287 [
p] (
const std::unique_ptr<ItemComponent>&
c)
289 return c->getBounds().contains (p);
301 [item] (
const std::unique_ptr<ItemComponent>&
c)
303 return &c->getRepresentedItem() == item;
315 [item] (
const std::unique_ptr<ItemComponent>&
c)
317 return &c->getRepresentedItem() == item;
326 owner.hideDragHighlight();
334 std::set<ItemComponent*> componentsToKeep;
340 componentsToKeep.insert (itemComp);
344 auto newComp = std::make_unique<ItemComponent> (*
treeItem);
347 newComp->addMouseListener (
this,
treeItem->customComponentUsesTreeViewMouseHandler());
348 componentsToKeep.insert (newComp.get());
354 auto removePredicate = [&] (
auto& item)
359 return componentsToKeep.find (item.get()) == componentsToKeep.end()
380 item->setViewportIgnoreDragFlag (
true);
386 item->setViewportIgnoreDragFlag (
false);
413 auto& item = itemComponent->getRepresentedItem();
414 auto pos = item.getItemPosition (
false);
418 if (
e.x < pos.getX() &&
owner.openCloseButtonsVisible)
421 if (
e.x >= pos.getX() -
owner.getIndentSize())
422 item.setOpen (! item.isOpen());
427 if (!
owner.isMultiSelectEnabled())
428 item.setSelected (
true,
true);
429 else if (item.isSelected())
434 if (
e.x >= pos.getX())
435 item.itemClicked (
e.withNewPosition (
e.position - pos.getPosition().toFloat()));
451 if (
isEnabled() &&
e.getNumberOfClicks() != 3)
455 auto& item = itemComponent->getRepresentedItem();
456 auto pos = item.getItemPosition (
false);
458 if (
e.x >= pos.getX() || !
owner.openCloseButtonsVisible)
459 item.itemDoubleClicked (
e.withNewPosition (
e.position - pos.getPosition().toFloat()));
468 ||
e.getDistanceFromDragStart() < 5
469 ||
e.mods.isPopupMenu()))
475 auto& item = itemComponent->getRepresentedItem();
476 auto pos = item.getItemPosition (
false);
478 if (
e.getMouseDownX() >= pos.getX())
480 auto dragDescription = item.getDragSourceDescription();
482 if (! (dragDescription.isVoid() || (dragDescription.isString() && dragDescription.toString().isEmpty())))
486 pos.setSize (pos.getWidth(), item.itemHeight);
488 const auto additionalScale = 2.0f;
493 dragImage.multiplyAllAlphas (0.6f);
495 auto imageOffset = pos.getPosition() -
e.getPosition();
496 dragContainer->startDragging (dragDescription, &
owner, { dragImage, additionalScale },
true, &imageOffset, &
e.source);
519 if (
auto* underMouse = ms.getComponentUnderMouse())
520 return (&
comp == underMouse ||
comp.isParentOf (underMouse));
527 if (!
owner.openCloseButtonsVisible)
534 auto& item = itemComponent->getRepresentedItem();
536 if (item.mightContainSubItems())
538 const auto xPos = item.getItemPosition (
false).getX();
540 if (xPos -
owner.getIndentSize() <=
e.x &&
e.x < xPos)
541 return itemComponent;
553 if (newItem !=
nullptr)
554 newItem->setMouseIsOverButton (
true);
562 owner.updateVisibleItems();
570 if (modifiers.
isShiftDown() && ((firstSelected =
owner.getSelectedItem (0)) !=
nullptr))
572 auto* lastSelected =
owner.getSelectedItem (
owner.getNumSelectedItems() - 1);
574 if (lastSelected ==
nullptr)
581 auto rowEnd = lastSelected->getRowNumberInTree();
583 if (rowStart > rowEnd)
584 std::swap (rowStart, rowEnd);
587 auto otherEnd = ourRow < rowEnd ? rowStart : rowEnd;
589 if (ourRow > otherEnd)
590 std::swap (ourRow, otherEnd);
592 for (
int i = ourRow;
i <= otherEnd; ++
i)
593 owner.getItemOnRow (
i)->setSelected (
true,
false);
604 if (item ==
nullptr || item->
ownerView ==
nullptr)
615 if (
owner.rootItem ==
nullptr)
618 const auto visibleTop = -
getY();
621 std::vector<TreeViewItem*> visibleItems;
626 :
owner.rootItem->subItems.getFirst();
628 while (
i !=
nullptr &&
i->y < visibleTop)
634 auto addOffscreenItemBuffer = [&visibleItems] (
TreeViewItem*
i,
int num,
bool forwards)
643 visibleItems.push_back (
i);
647 addOffscreenItemBuffer (item, 2,
false);
649 while (item !=
nullptr && item->y < visibleBottom)
651 visibleItems.push_back (item);
656 visibleItems.push_back (item);
658 addOffscreenItemBuffer (item, 2,
true);
683 const auto hasScrolledSideways = (newVisibleArea.
getX() !=
lastX);
736 if (
auto* root =
owner.rootItem)
738 const auto startY =
owner.rootItemVisible ? 0 : -root->itemHeight;
740 root->updatePositions (startY);
742 root->totalHeight + startY);
762 content->updateComponents();
778 viewport = std::make_unique<TreeViewport> (*
this);
796 if (newRootItem !=
nullptr)
810 if (newRootItem !=
nullptr)
825 const std::unique_ptr<TreeViewItem> deleter (
rootItem);
895 rootItem->deselectAllRecursively (
nullptr);
900 return rootItem !=
nullptr ?
rootItem->countSelectedItemsRecursively (maximumDepthToSearchTo) : 0;
905 return rootItem !=
nullptr ?
rootItem->getSelectedItemWithIndex (index) :
nullptr;
918 if (
rootItem !=
nullptr && index >= 0)
919 return rootItem->getItemOnRow (index);
926 if (
auto* contentComp =
viewport->getContentComp())
927 if (
auto* itemComponent = contentComp->getItemComponentAt (contentComp->getLocalPoint (
this,
Point<int> (0,
y))))
928 return &itemComponent->getRepresentedItem();
938 return rootItem->findItemFromIdentifierString (identifierString);
943 return viewport->getContentComp()->getComponentForItem (item);
954 for (
int i = 0;
i < numSubItems; ++
i)
962 if (
auto rootOpenness =
rootItem->getOpennessState (
false))
964 if (alsoIncludeScrollPosition)
965 rootOpenness->setAttribute (
"scrollPos",
viewport->getViewPositionY());
979 rootItem->restoreOpennessState (newState);
985 if (restoreStoredSelection)
990 if (
auto* item =
rootItem->findItemFromIdentifierString (
e->getStringAttribute (
"id")))
991 item->setSelected (
true,
false);
1019 if (numRowsInTree > 0)
1021 int rowSelected = 0;
1024 rowSelected = firstSelected->getRowNumberInTree();
1026 rowSelected =
jlimit (0, numRowsInTree - 1, rowSelected + delta);
1032 if (! item->canBeSelected())
1036 auto nextRowToTry =
jlimit (0, numRowsInTree - 1, rowSelected + (delta < 0 ? -1 : 1));
1038 if (rowSelected != nextRowToTry)
1040 rowSelected = nextRowToTry;
1047 item->setSelected (
true,
true);
1058 if (item !=
nullptr && item->
ownerView ==
this)
1065 auto viewTop =
viewport->getViewPositionY();
1083 if (firstSelected->mightContainSubItems())
1085 firstSelected->setOpen (! firstSelected->isOpen());
1097 if (firstSelected->isOpen())
1099 firstSelected->setOpen (
false);
1103 auto*
parent = firstSelected->parentItem;
1110 parent->setSelected (
true,
true);
1121 if (firstSelected->isOpen() || ! firstSelected->mightContainSubItems())
1124 firstSelected->setOpen (
true);
1132 auto pos = currentItem->getItemPosition (
false);
1133 auto targetY = pos.getY() + numPages * (
getHeight() - pos.getHeight());
1134 auto currentRow = currentItem->getRowNumberInTree();
1141 if (currentItem ==
nullptr)
1144 auto y = currentItem->getItemPosition (
false).getY();
1146 if ((numPages < 0 &&
y <= targetY) || (numPages > 0 &&
y >= targetY))
1149 auto newRow = currentItem->getRowNumberInTree();
1151 if (newRow == currentRow)
1154 currentRow = newRow;
1187 :
pos (dragSourceDetails.localPosition),
1190 if (
item !=
nullptr)
1192 auto itemPos =
item->getItemPosition (
true);
1195 pos.y = itemPos.getY();
1197 if (
item->getNumSubItems() == 0 || !
item->isOpen())
1200 :
item->isInterestedInDragSource (dragSourceDetails))
1203 if (oldY > itemPos.getY() + itemPos.getHeight() / 4
1204 && oldY < itemPos.getBottom() - itemPos.getHeight() / 4)
1208 pos.y = itemPos.getBottom();
1214 if (oldY > itemPos.getCentreY())
1216 pos.y +=
item->getItemHeight();
1218 while (
item->isLastOfSiblings() &&
item->getParentItem() !=
nullptr
1219 &&
item->getParentItem()->getParentItem() !=
nullptr)
1221 if (
pos.x > itemPos.getX())
1225 itemPos =
item->getItemPosition (
true);
1232 pos.x = itemPos.getX();
1239 insertIndex = root->getNumSubItems();
1240 pos = root->getItemPosition (true).getBottomLeft();
1241 pos.x += view.getIndentSize();
1266 setBounds (insertPos.pos.x - offset, insertPos.pos.y - offset,
1274 p.addEllipse (2.0f, 2.0f,
h - 4.0f,
h - 4.0f);
1275 p.startNewSubPath (
h - 2.0f,
h / 2.0f);
1302 .withHeight (item->getItemHeight()));
1308 g.drawRoundedRectangle (1.0f, 1.0f, (
float)
getWidth() - 2.0f, (
float)
getHeight() - 2.0f, 3.0f, 2.0f);
1346 if (insertPos.
item !=
nullptr)
1371 if (insertPos.
item ==
nullptr)
1374 if (insertPos.
item !=
nullptr)
1376 if (
files.size() > 0)
1446 explicit TableInterface (
TreeView& treeViewToWrap) : treeView (treeViewToWrap) {}
1448 int getNumRows()
const override {
return treeView.getNumRowsInTree(); }
1449 int getNumColumns()
const override {
return 1; }
1453 if (
auto* itemComp = treeView.getItemComponent (treeView.getItemOnRow (
row)))
1454 return itemComp->getAccessibilityHandler();
1465 return std::make_unique<AccessibilityHandler> (*
this,
1474 static int nextUID = 0;
1481 ownerView->viewport->getContentComp()->itemBeingDeleted (
this);
1527 if (newItem !=
nullptr)
1540 subItems.insert (insertPosition, newItem);
1548 subItems.insert (insertPosition, newItem);
1573 child->parentItem =
nullptr;
1574 subItems.remove (index, deleteItem);
1591 auto isNowOpen =
isOpen();
1593 if (isNowOpen != wasOpen)
1610 if (
isOpen() != shouldBeOpen)
1621 if (!
i->isFullyOpen())
1639 if (
this != itemToIgnore)
1643 i->deselectAllRecursively (itemToIgnore);
1647 const bool deselectOtherItemsFirst,
1653 if (deselectOtherItemsFirst)
1666 if (
auto* itemComponent =
ownerView->getItemComponent (
this))
1667 if (
auto* itemHandler = itemComponent->getAccessibilityHandler())
1668 itemHandler->grabFocus();
1687 .drawTreeviewPlusMinusBox (
g, area, backgroundColour,
isOpen(), isMouseOver);
1725 return tooltipString.isNotEmpty()
1767 if (relativeToTreeViewTopLeft &&
ownerView !=
nullptr)
1782 if (
auto* component =
ownerView->getItemComponent (
this))
1783 component->repaint();
1806 i->updatePositions (newY);
1807 newY +=
i->totalHeight;
1819 while (item->parentItem !=
nullptr)
1821 item = item->parentItem;
1823 if (! item->isOpen())
1836 i->setOwnerView (newOwner);
1837 i->ownerViewChanged (newOwner);
1848 if (!
ownerView->openCloseButtonsVisible)
1897 num +=
i->getNumRows();
1907 if (index > 0 &&
isOpen())
1916 auto numRows =
i->getNumRows();
1918 if (numRows > index)
1919 return i->getItemOnRow (index);
1934 total +=
i->countSelectedItemsRecursively (depth - 1);
1953 if (
auto* found =
i->getSelectedItemWithIndex (index))
1956 index -=
i->countSelectedItemsRecursively (-1);
1972 auto ourIndex =
parentItem->subItems.indexOf (
this);
1975 while (--ourIndex >= 0)
1976 n +=
parentItem->subItems [ourIndex]->getNumRows();
1996 return s.replaceCharacter (
'/',
'\\');
2013 if (thisId == identifierString)
2016 if (identifierString.
startsWith (thisId +
"/"))
2018 auto remainingPath = identifierString.
substring (thisId.length());
2020 const auto wasOpen =
isOpen();
2024 if (
auto* item =
i->findItemFromIdentifierString (remainingPath))
2035 if (
e.hasTagName (
"CLOSED"))
2039 else if (
e.hasTagName (
"OPEN"))
2046 for (
auto*
n :
e.getChildIterator())
2048 auto id =
n->getStringAttribute (
"id");
2050 for (
int i = 0;
i < items.
size(); ++
i)
2054 if (ti->getUniqueName() ==
id)
2056 ti->restoreOpennessState (*
n);
2064 for (
auto*
i : items)
2065 i->restoreToDefaultOpenness();
2078 if (
name.isNotEmpty())
2080 std::unique_ptr<XmlElement>
e;
2087 e = std::make_unique<XmlElement> (
"OPEN");
2090 e->prependChildElement (
subItems.getUnchecked (
i)->getOpennessState (
true).release());
2097 e = std::make_unique<XmlElement> (
"CLOSED");
2100 e->setAttribute (
"id",
name);
2133 g.setOrigin (indent, 0);
2148 const auto halfH = (float)
itemHeight * 0.5f;
2149 const auto indentWidth =
ownerView->getIndentSize();
2152 if (depth >= 0 &&
ownerView->openCloseButtonsVisible)
2154 auto x = ((float) depth + 0.5f) * (
float) indentWidth;
2157 if (parentLinesDrawn)
2167 while (
p !=
nullptr && --
d >= 0)
2169 x -= (float) indentWidth;
2171 if ((
p->parentItem ==
nullptr ||
p->parentItem->areLinesDrawn()) && !
p->isLastOfSiblings())
2183 backgroundColour.isTransparent() ?
Colours::white : backgroundColour,
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
Definition juce_AccessibilityActions.h:73
AccessibilityActions & addAction(AccessibilityActionType type, std::function< void()> actionCallback)
Definition juce_AccessibilityActions.h:88
Definition juce_AccessibilityCellInterface.h:37
Definition juce_AccessibilityHandler.h:41
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_AccessibilityTableInterface.h:37
Definition juce_AccessibilityState.h:39
Definition juce_Array.h:56
ElementType getUnchecked(int index) const
Definition juce_Array.h:252
void addArray(const Type *elementsToAdd, int numElementsToAdd)
Definition juce_Array.h:583
int size() const noexcept
Definition juce_Array.h:215
void remove(int indexToRemove)
Definition juce_Array.h:767
void triggerAsyncUpdate()
Definition juce_AsyncUpdater.cpp:62
AsyncUpdater()
Definition juce_AsyncUpdater.cpp:44
Definition juce_Colour.h:38
Definition juce_Component.h:2287
void setInterceptsMouseClicks(bool allowClicksOnThisComponent, bool allowClicksOnChildComponents) noexcept
Definition juce_Component.cpp:1420
Component * getParentComponent() const noexcept
Definition juce_Component.h:804
Image createComponentSnapshot(Rectangle< int > areaToGrab, bool clipImageToComponentBounds=true, float scaleFactor=1.0f)
Definition juce_Component.cpp:2135
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 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 setOpaque(bool shouldBeOpaque)
Definition juce_Component.cpp:829
void repaint()
Definition juce_Component.cpp:1917
Component() noexcept
Definition juce_Component.cpp:517
@ focusContainer
Definition juce_Component.h:1295
Point< int > getMouseXYRelative() const
Definition juce_Component.cpp:3210
int getY() const noexcept
Definition juce_Component.h:268
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
void setWantsKeyboardFocus(bool wantsFocus) noexcept
Definition juce_Component.cpp:2842
Colour findColour(int colourID, bool inheritFromParent=false) const
Definition juce_Component.cpp:2219
static std::unique_ptr< AccessibilityHandler > createIgnoredAccessibilityHandler(Component &)
Definition juce_Component.cpp:3292
int getWidth() const noexcept
Definition juce_Component.h:271
static void JUCE_CALLTYPE beginDragAutoRepeat(int millisecondsBetweenCallbacks)
Definition juce_Component.cpp:2745
bool isEnabled() const noexcept
Definition juce_Component.cpp:3104
LookAndFeel & getLookAndFeel() const noexcept
Definition juce_Component.cpp:2173
Rectangle< int > getLocalBounds() const noexcept
Definition juce_Component.cpp:2283
int getParentHeight() const noexcept
Definition juce_Component.cpp:1120
static Desktop &JUCE_CALLTYPE getInstance()
Definition juce_Desktop.cpp:50
static DragAndDropContainer * findParentDragContainerFor(Component *childComponent)
Definition juce_DragAndDropContainer.cpp:547
Definition juce_DragAndDropTarget.h:54
Point< int > localPosition
Definition juce_DragAndDropTarget.h:70
Definition juce_GraphicsContext.h:660
Definition juce_GraphicsContext.h:45
Definition juce_KeyPress.h:40
static const int homeKey
Definition juce_KeyPress.h:204
static const int upKey
Definition juce_KeyPress.h:198
static const int endKey
Definition juce_KeyPress.h:205
static const int rightKey
Definition juce_KeyPress.h:201
static const int downKey
Definition juce_KeyPress.h:199
static const int returnKey
Definition juce_KeyPress.h:191
static const int leftKey
Definition juce_KeyPress.h:200
static const int pageUpKey
Definition juce_KeyPress.h:202
static const int pageDownKey
Definition juce_KeyPress.h:203
Definition juce_Line.h:47
Definition juce_ModifierKeys.h:41
bool isCommandDown() const noexcept
Definition juce_ModifierKeys.h:68
bool isShiftDown() const noexcept
Definition juce_ModifierKeys.h:99
@ leftButtonModifier
Definition juce_ModifierKeys.h:130
@ popupMenuClickModifier
Definition juce_ModifierKeys.h:151
Definition juce_MouseEvent.h:39
Definition juce_Path.h:65
Definition juce_PathStrokeType.h:42
Definition juce_Point.h:42
ValueType y
Definition juce_Point.h:247
ValueType x
Definition juce_Point.h:246
Definition juce_Rectangle.h:67
Rectangle< float > toFloat() const noexcept
Definition juce_Rectangle.h:873
Point< ValueType > getTopLeft() const noexcept
Definition juce_Rectangle.h:170
ValueType getX() const noexcept
Definition juce_Rectangle.h:127
Definition juce_StringArray.h:35
Definition juce_String.h:53
bool startsWith(StringRef text) const noexcept
Definition juce_String.cpp:1393
String substring(int startIndex, int endIndex) const
Definition juce_String.cpp:1498
static Time JUCE_CALLTYPE getCurrentTime() noexcept
Definition juce_Time.cpp:233
Definition juce_TreeView.cpp:256
std::vector< std::unique_ptr< ItemComponent > > itemComponents
Definition juce_TreeView.cpp:666
void handleAsyncUpdate() override
Definition juce_TreeView.cpp:560
void itemBeingDeleted(const TreeViewItem *item)
Definition juce_TreeView.cpp:312
bool needSelectionOnMouseUp
Definition juce_TreeView.cpp:669
ItemComponent * getComponentForItem(const TreeViewItem *item) const
Definition juce_TreeView.cpp:298
void mouseDragInternal(const MouseEvent &e)
Definition juce_TreeView.cpp:464
static TreeViewItem * getNextVisibleItem(TreeViewItem *item, bool forwards)
Definition juce_TreeView.cpp:602
std::vector< TreeViewItem * > getAllVisibleItems() const
Definition juce_TreeView.cpp:613
void mouseDoubleClick(const MouseEvent &e) override
Definition juce_TreeView.cpp:278
ItemComponent * itemUnderMouse
Definition juce_TreeView.cpp:667
ContentComponent(TreeView &tree)
Definition juce_TreeView.cpp:258
static bool isMouseDraggingInChildComp(const Component &comp)
Definition juce_TreeView.cpp:515
void mouseDown(const MouseEvent &e) override
Definition juce_TreeView.cpp:276
void mouseMoveInternal(const MouseEvent &e)
Definition juce_TreeView.cpp:512
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_TreeView.cpp:395
std::unique_ptr< ScopedDisableViewportScroll > scopedScrollDisabler
Definition juce_TreeView.cpp:668
bool isDragging
Definition juce_TreeView.cpp:669
TreeView & owner
Definition juce_TreeView.cpp:664
void mouseMove(const MouseEvent &e) override
Definition juce_TreeView.cpp:280
void mouseDrag(const MouseEvent &e) override
Definition juce_TreeView.cpp:279
String getTooltip() override
Definition juce_TreeView.cpp:268
void mouseUpInternal(const MouseEvent &e)
Definition juce_TreeView.cpp:440
void updateItemUnderMouse(const MouseEvent &e)
Definition juce_TreeView.cpp:525
void mouseUp(const MouseEvent &e) override
Definition juce_TreeView.cpp:277
void resized() override
Definition juce_TreeView.cpp:263
void selectBasedOnModifiers(TreeViewItem &item, const ModifierKeys modifiers)
Definition juce_TreeView.cpp:566
void mouseExitInternal(const MouseEvent &e)
Definition juce_TreeView.cpp:513
void mouseDownInternal(const MouseEvent &e)
Definition juce_TreeView.cpp:400
void mouseDoubleClickInternal(const MouseEvent &e)
Definition juce_TreeView.cpp:449
ItemComponent * getItemComponentAt(Point< int > p)
Definition juce_TreeView.cpp:284
void mouseExit(const MouseEvent &e) override
Definition juce_TreeView.cpp:281
void updateComponents()
Definition juce_TreeView.cpp:332
Definition juce_TreeView.cpp:1252
int lastIndex
Definition juce_TreeView.cpp:1283
void paint(Graphics &g) override
Definition juce_TreeView.cpp:1270
InsertPointHighlight()
Definition juce_TreeView.cpp:1254
void setTargetPosition(const InsertPoint &insertPos, const int width) noexcept
Definition juce_TreeView.cpp:1261
TreeViewItem * lastItem
Definition juce_TreeView.cpp:1282
ItemCellInterface(ItemComponent &c)
Definition juce_TreeView.cpp:144
int getRowIndex() const override
Definition juce_TreeView.cpp:149
int getColumnIndex() const override
Definition juce_TreeView.cpp:146
const AccessibilityHandler * getTableHandler() const override
Definition juce_TreeView.cpp:164
int getColumnSpan() const override
Definition juce_TreeView.cpp:147
int getDisclosureLevel() const override
Definition juce_TreeView.cpp:159
ItemComponent & itemComponent
Definition juce_TreeView.cpp:173
int getRowSpan() const override
Definition juce_TreeView.cpp:154
Definition juce_TreeView.cpp:90
String getTitle() const override
Definition juce_TreeView.cpp:101
ItemAccessibilityHandler(ItemComponent &comp)
Definition juce_TreeView.cpp:92
static MouseEvent generateMouseEvent(ItemComponent &itemComp, ModifierKeys mods)
Definition juce_TreeView.cpp:220
ItemComponent & itemComponent
Definition juce_TreeView.cpp:218
static AccessibilityActions getAccessibilityActions(ItemComponent &itemComponent)
Definition juce_TreeView.cpp:177
String getHelp() const override
Definition juce_TreeView.cpp:106
AccessibleState getCurrentState() const override
Definition juce_TreeView.cpp:111
Definition juce_TreeView.cpp:45
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_TreeView.cpp:233
TreeViewItem & getRepresentedItem() const noexcept
Definition juce_TreeView.cpp:77
bool mouseIsOverButton
Definition juce_TreeView.cpp:246
void paint(Graphics &g) override
Definition juce_TreeView.cpp:55
bool hasCustomComponent() const noexcept
Definition juce_TreeView.cpp:241
std::unique_ptr< Component > customComponent
Definition juce_TreeView.cpp:244
void resized() override
Definition juce_TreeView.cpp:60
ItemComponent(TreeViewItem &itemToRepresent)
Definition juce_TreeView.cpp:47
TreeViewItem & item
Definition juce_TreeView.cpp:243
String getTooltip() override
Definition juce_TreeView.cpp:82
void setMouseIsOverButton(bool isOver)
Definition juce_TreeView.cpp:71
Definition juce_TreeView.cpp:1291
void paint(Graphics &g) override
Definition juce_TreeView.cpp:1305
void setTargetPosition(TreeViewItem *const item) noexcept
Definition juce_TreeView.cpp:1299
TargetGroupHighlight()
Definition juce_TreeView.cpp:1293
Definition juce_TreeView.cpp:677
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_TreeView.cpp:719
void visibleAreaChanged(const Rectangle< int > &newVisibleArea) override
Definition juce_TreeView.cpp:681
bool needsRecalculating
Definition juce_TreeView.cpp:770
int lastX
Definition juce_TreeView.cpp:769
ContentComponent * getContentComp() const noexcept
Definition juce_TreeView.cpp:701
void recalculatePositions(Async useAsyncUpdate)
Definition juce_TreeView.cpp:708
bool keyPressed(const KeyPress &key) override
Definition juce_TreeView.cpp:692
bool structureChanged
Definition juce_TreeView.cpp:770
Async
Definition juce_TreeView.cpp:706
@ no
Definition juce_TreeView.cpp:706
@ yes
Definition juce_TreeView.cpp:706
void handleAsyncUpdate() override
Definition juce_TreeView.cpp:724
TreeViewport(TreeView &treeView)
Definition juce_TreeView.cpp:679
void updateComponents(bool triggerResize)
Definition juce_TreeView.cpp:755
TreeView & owner
Definition juce_TreeView.cpp:768
TreeViewItem * findItemFromIdentifierString(const String &identifierString) const
Definition juce_TreeView.cpp:933
bool isInterestedInFileDrag(const StringArray &) override
Definition juce_TreeView.cpp:1390
TreeViewItem * getSelectedItem(int index) const noexcept
Definition juce_TreeView.cpp:903
bool rootItemVisible
Definition juce_TreeView.h:954
void showDragHighlight(const InsertPoint &) noexcept
Definition juce_TreeView.cpp:1316
Component * getItemComponent(const TreeViewItem *item) const
Definition juce_TreeView.cpp:941
void filesDropped(const StringArray &, int, int) override
Definition juce_TreeView.cpp:1410
std::unique_ptr< TargetGroupHighlight > dragTargetGroupHighlight
Definition juce_TreeView.h:952
TreeViewItem * getItemOnRow(int index) const
Definition juce_TreeView.cpp:913
void colourChanged() override
Definition juce_TreeView.cpp:842
@ dragAndDropIndicatorColourId
Definition juce_TreeView.h:872
@ oddItemsColourId
Definition juce_TreeView.h:874
@ linesColourId
Definition juce_TreeView.h:871
@ evenItemsColourId
Definition juce_TreeView.h:875
@ selectedItemBackgroundColourId
Definition juce_TreeView.h:873
@ backgroundColourId
Definition juce_TreeView.h:870
TreeViewItem * getRootItem() const noexcept
Definition juce_TreeView.h:691
void moveOutOfSelectedItem()
Definition juce_TreeView.cpp:1093
void moveSelectedRow(int deltaRows)
Definition juce_TreeView.cpp:1015
void setDefaultOpenness(bool isOpenByDefault)
Definition juce_TreeView.cpp:863
TreeViewItem * rootItem
Definition juce_TreeView.h:950
int getNumRowsInTree() const
Definition juce_TreeView.cpp:908
void updateVisibleItems()
Definition juce_TreeView.cpp:1177
TreeView(const String &componentName={})
Definition juce_TreeView.cpp:776
void handleDrag(const StringArray &, const SourceDetails &)
Definition juce_TreeView.cpp:1339
TreeViewItem * getItemAt(int yPosition) const noexcept
Definition juce_TreeView.cpp:924
Viewport * getViewport() const noexcept
Definition juce_TreeView.cpp:886
void fileDragMove(const StringArray &, int, int) override
Definition juce_TreeView.cpp:1400
void clearSelectedItems()
Definition juce_TreeView.cpp:892
bool multiSelectEnabled
Definition juce_TreeView.h:954
void resized() override
Definition juce_TreeView.cpp:1004
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_TreeView.cpp:1441
void paint(Graphics &) override
Definition juce_TreeView.cpp:999
void itemDragEnter(const SourceDetails &) override
Definition juce_TreeView.cpp:1420
void restoreOpennessState(const XmlElement &newState, bool restoreStoredSelection)
Definition juce_TreeView.cpp:975
friend class TreeViewItem
Definition juce_TreeView.h:926
int indentSize
Definition juce_TreeView.h:953
bool isInterestedInDragSource(const SourceDetails &) override
Definition juce_TreeView.cpp:1415
bool openCloseButtonsVisible
Definition juce_TreeView.h:954
std::unique_ptr< XmlElement > getOpennessState(bool alsoIncludeScrollPosition) const
Definition juce_TreeView.cpp:958
void handleDrop(const StringArray &, const SourceDetails &)
Definition juce_TreeView.cpp:1365
void scrollToKeepItemVisible(TreeViewItem *item)
Definition juce_TreeView.cpp:1056
bool keyPressed(const KeyPress &) override
Definition juce_TreeView.cpp:1159
std::unique_ptr< InsertPointHighlight > dragInsertPointHighlight
Definition juce_TreeView.h:951
void fileDragEnter(const StringArray &, int, int) override
Definition juce_TreeView.cpp:1395
int getNumSelectedItems(int maximumDepthToSearchTo=-1) const noexcept
Definition juce_TreeView.cpp:898
void itemDropped(const SourceDetails &) override
Definition juce_TreeView.cpp:1435
void enablementChanged() override
Definition juce_TreeView.cpp:1010
void moveByPages(int)
Definition juce_TreeView.cpp:1128
bool defaultOpenness
Definition juce_TreeView.h:954
void itemDragMove(const SourceDetails &) override
Definition juce_TreeView.cpp:1425
void setIndentSize(int newIndentSize)
Definition juce_TreeView.cpp:848
void fileDragExit(const StringArray &) override
Definition juce_TreeView.cpp:1405
std::unique_ptr< TreeViewport > viewport
Definition juce_TreeView.h:949
int getIndentSize() noexcept
Definition juce_TreeView.cpp:857
void setOpenCloseButtonsVisible(bool shouldBeVisible)
Definition juce_TreeView.cpp:877
void deleteRootItem()
Definition juce_TreeView.cpp:823
bool isRootItemVisible() const noexcept
Definition juce_TreeView.h:711
void hideDragHighlight() noexcept
Definition juce_TreeView.cpp:1333
~TreeView() override
Definition juce_TreeView.cpp:786
void setMultiSelectEnabled(bool canMultiSelect)
Definition juce_TreeView.cpp:872
void itemDragExit(const SourceDetails &) override
Definition juce_TreeView.cpp:1430
bool toggleOpenSelectedItem()
Definition juce_TreeView.cpp:1079
void moveIntoSelectedItem()
Definition juce_TreeView.cpp:1117
void setRootItem(TreeViewItem *newRootItem)
Definition juce_TreeView.cpp:792
void setRootItemVisible(bool shouldBeVisible)
Definition juce_TreeView.cpp:829
OpennessRestorer(TreeViewItem &)
Definition juce_TreeView.cpp:2111
~OpennessRestorer()
Definition juce_TreeView.cpp:2117
std::unique_ptr< XmlElement > oldOpenness
Definition juce_TreeView.h:603
TreeViewItem & treeViewItem
Definition juce_TreeView.h:602
Definition juce_TreeView.h:48
virtual bool canBeSelected() const
Definition juce_TreeView.h:307
TreeView * getOwnerView() const noexcept
Definition juce_TreeView.h:130
TreeViewItem * parentItem
Definition juce_TreeView.h:633
virtual String getUniqueName() const
Definition juce_TreeView.cpp:1484
void removeSubItem(int index, bool deleteItem=true)
Definition juce_TreeView.cpp:1556
TreeViewItem * getSelectedItemWithIndex(int) noexcept
Definition juce_TreeView.cpp:1939
friend class TreeView
Definition juce_TreeView.h:610
bool isSelected() const noexcept
Definition juce_TreeView.cpp:1632
TreeViewItem * getTopLevelItem() noexcept
Definition juce_TreeView.cpp:1885
bool drawLinesSet
Definition juce_TreeView.h:638
void setDrawsInRightMargin(bool canDrawInRightMargin) noexcept
Definition juce_TreeView.cpp:1862
bool isFullyOpen() const noexcept
Definition juce_TreeView.cpp:1615
void clearSubItems()
Definition juce_TreeView.cpp:1503
void restoreToDefaultOpenness()
Definition juce_TreeView.cpp:1627
virtual void itemDropped(const DragAndDropTarget::SourceDetails &dragSourceDetails, int insertIndex)
Definition juce_TreeView.cpp:1753
void setDrawsInLeftMargin(bool canDrawInLeftMargin) noexcept
Definition juce_TreeView.cpp:1857
int getNumSubItems() const noexcept
Definition juce_TreeView.cpp:1493
virtual bool mightContainSubItems()=0
virtual void itemClicked(const MouseEvent &)
Definition juce_TreeView.cpp:1702
void setOpenness(Openness newOpenness)
Definition juce_TreeView.cpp:1587
bool removeSubItemFromList(int, bool)
Definition juce_TreeView.cpp:1569
int getIndexInParent() const noexcept
Definition juce_TreeView.cpp:1879
virtual void paintItem(Graphics &g, int width, int height)
Definition juce_TreeView.cpp:1680
virtual void itemDoubleClicked(const MouseEvent &)
Definition juce_TreeView.cpp:1706
virtual int getItemWidth() const
Definition juce_TreeView.h:294
void restoreOpennessState(const XmlElement &xml)
Definition juce_TreeView.cpp:2033
TreeViewItem * getDeepestOpenParentItem() noexcept
Definition juce_TreeView.cpp:1814
virtual bool isInterestedInDragSource(const DragAndDropTarget::SourceDetails &dragSourceDetails)
Definition juce_TreeView.cpp:1748
virtual void paintOpenCloseButton(Graphics &, const Rectangle< float > &area, Colour backgroundColour, bool isMouseOver)
Definition juce_TreeView.cpp:1684
int countSelectedItemsRecursively(int) const noexcept
Definition juce_TreeView.cpp:1928
void removeAllSubItemsFromList()
Definition juce_TreeView.cpp:1519
virtual void paintHorizontalConnectingLine(Graphics &, const Line< float > &line)
Definition juce_TreeView.cpp:1690
OwnedArray< TreeViewItem > subItems
Definition juce_TreeView.h:634
TreeView * ownerView
Definition juce_TreeView.h:632
int y
Definition juce_TreeView.h:637
TreeViewItem * findItemFromIdentifierString(const String &)
Definition juce_TreeView.cpp:2009
virtual void itemOpennessChanged(bool isNowOpen)
Definition juce_TreeView.cpp:1489
bool isOpen() const noexcept
Definition juce_TreeView.cpp:1600
void setLinesDrawnForSubItems(bool shouldDrawLines) noexcept
Definition juce_TreeView.cpp:1988
void updatePositions(int)
Definition juce_TreeView.cpp:1792
void treeHasChanged() const noexcept
Definition juce_TreeView.cpp:1773
int getRowNumberInTree() const noexcept
Definition juce_TreeView.cpp:1963
void setOpen(bool shouldBeOpen)
Definition juce_TreeView.cpp:1608
TreeViewItem()
Definition juce_TreeView.cpp:1472
void deselectAllRecursively(TreeViewItem *)
Definition juce_TreeView.cpp:1637
void repaintItem() const
Definition juce_TreeView.cpp:1779
Openness getOpenness() const noexcept
Definition juce_TreeView.cpp:1582
bool drawLinesInside
Definition juce_TreeView.h:638
virtual int getItemHeight() const
Definition juce_TreeView.h:302
virtual bool isInterestedInFileDrag(const StringArray &files)
Definition juce_TreeView.cpp:1739
std::unique_ptr< XmlElement > getOpennessState() const
Definition juce_TreeView.cpp:2069
bool drawsInLeftMargin
Definition juce_TreeView.h:639
virtual ~TreeViewItem()
Definition juce_TreeView.cpp:1478
int getIndentX() const noexcept
Definition juce_TreeView.cpp:1841
bool areLinesDrawn() const
Definition juce_TreeView.cpp:1867
virtual void ownerViewChanged(TreeView *newOwner)
Definition juce_TreeView.cpp:1730
virtual void itemSelectionChanged(bool isNowSelected)
Definition juce_TreeView.cpp:1712
virtual void filesDropped(const StringArray &files, int insertIndex)
Definition juce_TreeView.cpp:1744
virtual String getTooltip()
Definition juce_TreeView.cpp:1716
void addSubItem(TreeViewItem *newItem, int insertPosition=-1)
Definition juce_TreeView.cpp:1525
int itemHeight
Definition juce_TreeView.h:637
void setOwnerView(TreeView *) noexcept
Definition juce_TreeView.cpp:1830
bool isLastOfSiblings() const noexcept
Definition juce_TreeView.cpp:1873
TreeViewItem * getSubItem(int index) const noexcept
Definition juce_TreeView.cpp:1498
void draw(Graphics &, int, bool)
Definition juce_TreeView.cpp:2123
virtual String getAccessibilityName()
Definition juce_TreeView.cpp:1721
TreeViewItem * getParentItem() const noexcept
Definition juce_TreeView.h:133
int totalWidth
Definition juce_TreeView.h:637
Openness
Definition juce_TreeView.h:159
@ opennessClosed
Definition juce_TreeView.h:161
@ opennessOpen
Definition juce_TreeView.h:162
@ opennessDefault
Definition juce_TreeView.h:160
String getItemIdentifierString() const
Definition juce_TreeView.cpp:1999
virtual var getDragSourceDescription()
Definition juce_TreeView.cpp:1734
int getNumRows() const noexcept
Definition juce_TreeView.cpp:1891
TreeViewItem * getItemOnRow(int) noexcept
Definition juce_TreeView.cpp:1902
bool drawsInRightMargin
Definition juce_TreeView.h:639
Rectangle< int > getItemPosition(bool relativeToTreeViewTopLeft) const noexcept
Definition juce_TreeView.cpp:1757
virtual void paintVerticalConnectingLine(Graphics &, const Line< float > &line)
Definition juce_TreeView.cpp:1696
int uid
Definition juce_TreeView.h:637
int totalHeight
Definition juce_TreeView.h:637
bool areAllParentsOpen() const noexcept
Definition juce_TreeView.cpp:1786
bool selected
Definition juce_TreeView.h:638
int itemWidth
Definition juce_TreeView.h:637
void setSelected(bool shouldBeSelected, bool deselectOtherItemsFirst, NotificationType shouldNotify=sendNotification)
Definition juce_TreeView.cpp:1646
Openness openness
Definition juce_TreeView.h:636
Definition juce_Viewport.h:47
Component * getViewedComponent() const noexcept
Definition juce_Viewport.h:83
bool keyPressed(const KeyPress &) override
Definition juce_Viewport.cpp:621
int getMaximumVisibleWidth() const
Definition juce_Viewport.cpp:246
Viewport(const String &componentName=String())
Definition juce_Viewport.cpp:160
Definition juce_XmlElement.h:83
Iterator< GetNextElementWithTagName > getChildWithTagNameIterator(StringRef name) const
Definition juce_XmlElement.h:730
bool hasAttribute(StringRef attributeName) const noexcept
Definition juce_XmlElement.cpp:549
int getIntAttribute(StringRef attributeName, int defaultReturnValue=0) const
Definition juce_XmlElement.cpp:571
Definition juce_Variant.h:42
* e
Definition inflate.c:1404
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
unsigned s
Definition inflate.c:1555
unsigned x[BMAX+1]
Definition inflate.c:1586
static const char * name
Definition pugl.h:1582
static int width
Definition pugl.h:1593
static uintptr_t parent
Definition pugl.h:1644
static int JUCE_CDECL comp(const void *a, const void *b)
Definition lsp.c:298
static char ** files
Definition misc.c:28
const Colour white
Definition juce_Colours.h:180
Definition carla_juce.cpp:31
@ no
Definition juce_AlertWindow.cpp:567
@ yes
Definition juce_AlertWindow.cpp:567
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94
Type jlimit(Type lowerLimit, Type upperLimit, Type valueToConstrain) noexcept
Definition juce_MathsFunctions.h:262
static int getItemDepth(const TreeViewItem *item)
Definition juce_TreeView.cpp:29
@ rowSelectionChanged
Definition juce_AccessibilityEvent.h:78
@ structureChanged
Definition juce_AccessibilityEvent.h:57
NotificationType
Definition juce_NotificationType.h:32
@ dontSendNotification
Definition juce_NotificationType.h:33
static String escapeSlashesInTreeViewItemName(const String &s)
Definition juce_TreeView.cpp:1994
@ showMenu
Definition juce_AccessibilityActions.h:61
@ focus
Definition juce_AccessibilityActions.h:54
@ toggle
Definition juce_AccessibilityActions.h:47
@ press
Definition juce_AccessibilityActions.h:40
static void addAllSelectedItemIds(TreeViewItem *item, XmlElement &parent)
Definition juce_TreeView.cpp:947
AccessibilityRole
Definition juce_AccessibilityRole.h:37
@ treeItem
Definition juce_AccessibilityRole.h:59
@ tree
Definition juce_AccessibilityRole.h:58
@ row
Definition juce_AccessibilityRole.h:53
Definition juce_AccessibilityHandler.h:49
SafePointer< ItemComponent > item
Definition juce_TreeView.cpp:389
~ScopedDisableViewportScroll()
Definition juce_TreeView.cpp:383
ScopedDisableViewportScroll(ItemComponent &c)
Definition juce_TreeView.cpp:377
Definition juce_TreeView.cpp:1184
InsertPoint(TreeView &view, const StringArray &files, const DragAndDropTarget::SourceDetails &dragSourceDetails)
Definition juce_TreeView.cpp:1185
int insertIndex
Definition juce_TreeView.cpp:1247
Point< int > pos
Definition juce_TreeView.cpp:1245
TreeViewItem * item
Definition juce_TreeView.cpp:1246
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
ZCONST char * key
Definition crypt.c:587
int r
Definition crypt.c:458
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
void handler(int signal)
Definition fileio.c:1632
int result
Definition process.c:1455
ss
Definition zipinfo.c:2292
#define const
Definition zconf.h:137