// Swift's LayerGroups extension: folders and the multi-selection. public: QSet descendantIDs(QUuid id) const; void addGroup(); void toggleGroupExpansion(QUuid id); // The primary layer becomes active when the document holds it. void selectLayers(const QSet &ids, std::optional primary); void extendSelection(QUuid id); void groupSelectedLayers(); // The active layer is a folder: something to unwrap. bool canUngroupLayers() const; void ungroupLayers(); std::vector layerRows() const; bool canPlaceLayer(QUuid id, std::optional parent) const; bool placeLayer(QUuid id, std::optional parent, std::optional above = std::nullopt, bool atBottom = false); void moveActiveLayerOutOfGroup();