Changed net object ordered list implementation
This commit is contained in:
parent
879655fbb8
commit
fda8fcc166
60 changed files with 816 additions and 785 deletions
|
|
@ -4,39 +4,40 @@
|
|||
#include <Helpers/Parallel.hpp>
|
||||
|
||||
void DrawingProgramLayer::draw(SkCanvas* canvas, const DrawData& drawData) const {
|
||||
for(auto& p : components->get_data())
|
||||
p->obj->draw(canvas, drawData);
|
||||
for(auto& p : *components)
|
||||
p.obj->draw(canvas, drawData);
|
||||
}
|
||||
|
||||
void DrawingProgramLayer::set_component_list_callbacks(DrawingProgramLayerListItem& layerListItem, DrawingProgramLayerManager& layerMan) const {
|
||||
components->set_insert_callback([&](const CanvasComponentContainer::ObjInfoSharedPtr& c) {
|
||||
c->obj->set_owner_obj_info(c);
|
||||
components->set_insert_callback([&](const CanvasComponentContainer::ObjInfoIterator& c) {
|
||||
c->obj->objInfo = c;
|
||||
c->obj->parentLayer = &layerListItem;
|
||||
c->obj->commit_update(layerMan.drawP); // Run commit update on insert so that world bounds are calculated
|
||||
layerMan.drawP.drawCache.add_component(c);
|
||||
layerMan.drawP.drawCache.add_component(&(*c));
|
||||
if(c->obj->get_comp().get_type() == CanvasComponentType::IMAGE)
|
||||
layerMan.drawP.updateableComponents.emplace(c);
|
||||
layerMan.drawP.updateableComponents.emplace(&(*c));
|
||||
});
|
||||
components->set_erase_callback([&](const CanvasComponentContainer::ObjInfoSharedPtr& c) {
|
||||
layerMan.drawP.selection.erase_component(c);
|
||||
layerMan.drawP.drawCache.erase_component(c);
|
||||
layerMan.drawP.drawTool->erase_component(c);
|
||||
components->set_erase_callback([&](const CanvasComponentContainer::ObjInfoIterator& c) {
|
||||
layerMan.drawP.selection.erase_component(&(*c));
|
||||
layerMan.drawP.drawCache.erase_component(&(*c));
|
||||
layerMan.drawP.drawTool->erase_component(&(*c));
|
||||
std::erase_if(layerMan.drawP.droppedDownloadingFiles, [&c](auto& downloadingFile) {
|
||||
return downloadingFile.comp == c;
|
||||
return downloadingFile.comp == &(*c);
|
||||
});
|
||||
layerMan.drawP.updateableComponents.erase(c);
|
||||
layerMan.drawP.updateableComponents.erase(&(*c));
|
||||
});
|
||||
components->set_move_callback([&](const CanvasComponentContainer::ObjInfoSharedPtr& c, uint32_t oldPos) {
|
||||
components->set_move_callback([&](const CanvasComponentContainer::ObjInfoIterator& c, uint32_t oldPos) {
|
||||
layerMan.drawP.drawCache.invalidate_cache_at_aabb(c->obj->get_world_bounds());
|
||||
});
|
||||
}
|
||||
|
||||
void DrawingProgramLayer::commit_update_dont_invalidate_cache(DrawingProgramLayerManager& layerMan) const {
|
||||
parallel_loop_container(components->get_data(), [&layerMan](auto& comp) {
|
||||
comp->obj->commit_update_dont_invalidate_cache(layerMan.drawP);
|
||||
parallel_loop_container(*components, [&layerMan](auto& comp) {
|
||||
comp.obj->commit_update_dont_invalidate_cache(layerMan.drawP);
|
||||
});
|
||||
}
|
||||
|
||||
void DrawingProgramLayer::get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfoSharedPtr>& objList) const {
|
||||
objList.insert(objList.begin(), components->get_data().begin(), components->get_data().end());
|
||||
void DrawingProgramLayer::get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const {
|
||||
for(auto& p : *components)
|
||||
objList.emplace_back(&p);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
#include <Helpers/NetworkingObjects/NetObjOrderedList.hpp>
|
||||
#include "../../CanvasComponents/CanvasComponent.hpp"
|
||||
#include <vector>
|
||||
|
||||
class DrawingProgramLayerListItem;
|
||||
class DrawingProgramLayerManager;
|
||||
|
|
@ -10,7 +11,7 @@ class DrawingProgramLayer {
|
|||
void draw(SkCanvas* canvas, const DrawData& drawData) const;
|
||||
void set_component_list_callbacks(DrawingProgramLayerListItem& layerListItem, DrawingProgramLayerManager& layerMan) const;
|
||||
void commit_update_dont_invalidate_cache(DrawingProgramLayerManager& layerMan) const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfoSharedPtr>& objList) const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const;
|
||||
|
||||
CanvasComponentContainer::NetListOwnerPtr components;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,24 +4,24 @@
|
|||
#include <Helpers/Parallel.hpp>
|
||||
|
||||
void DrawingProgramLayerFolder::draw(SkCanvas* canvas, const DrawData& drawData) const {
|
||||
for(auto& p : folderList->get_data() | std::views::reverse)
|
||||
p->obj->draw(canvas, drawData);
|
||||
for(auto& p : (*folderList) | std::views::reverse)
|
||||
p.obj->draw(canvas, drawData);
|
||||
}
|
||||
|
||||
void DrawingProgramLayerFolder::set_component_list_callbacks(DrawingProgramLayerManager& layerMan) const {
|
||||
folderList->set_insert_callback([&](auto& c) {
|
||||
c->obj->set_component_list_callbacks(layerMan);
|
||||
});
|
||||
for(auto& listItem : folderList->get_data())
|
||||
listItem->obj->set_component_list_callbacks(layerMan);
|
||||
for(auto& listItem : *folderList)
|
||||
listItem.obj->set_component_list_callbacks(layerMan);
|
||||
}
|
||||
|
||||
void DrawingProgramLayerFolder::commit_update_dont_invalidate_cache(DrawingProgramLayerManager& layerMan) const {
|
||||
for(auto& listItem : folderList->get_data())
|
||||
listItem->obj->commit_update_dont_invalidate_cache(layerMan);
|
||||
for(auto& listItem : *folderList)
|
||||
listItem.obj->commit_update_dont_invalidate_cache(layerMan);
|
||||
}
|
||||
|
||||
void DrawingProgramLayerFolder::get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfoSharedPtr>& objList) const {
|
||||
for(auto& listItem : folderList->get_data())
|
||||
listItem->obj->get_flattened_component_list(objList);
|
||||
void DrawingProgramLayerFolder::get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const {
|
||||
for(auto& listItem : (*folderList) | std::views::reverse)
|
||||
listItem.obj->get_flattened_component_list(objList);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class DrawingProgramLayerFolder {
|
|||
void draw(SkCanvas* canvas, const DrawData& drawData) const;
|
||||
void set_component_list_callbacks(DrawingProgramLayerManager& layerMan) const;
|
||||
void commit_update_dont_invalidate_cache(DrawingProgramLayerManager& layerMan) const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfoSharedPtr>& objList) const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const;
|
||||
|
||||
NetworkingObjects::NetObjOwnerPtr<NetworkingObjects::NetObjOrderedList<DrawingProgramLayerListItem>> folderList;
|
||||
bool isFolderOpen = false;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ void DrawingProgramLayerListItem::commit_update_dont_invalidate_cache(DrawingPro
|
|||
layerData->commit_update_dont_invalidate_cache(layerMan);
|
||||
}
|
||||
|
||||
void DrawingProgramLayerListItem::get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfoSharedPtr>& objList) const {
|
||||
void DrawingProgramLayerListItem::get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const {
|
||||
if(folderData)
|
||||
folderData->get_flattened_component_list(objList);
|
||||
else
|
||||
|
|
@ -55,8 +55,8 @@ void DrawingProgramLayerListItem::get_flattened_component_list(std::vector<Canva
|
|||
|
||||
void DrawingProgramLayerListItem::get_flattened_layer_list(std::vector<DrawingProgramLayerListItem*>& objList) {
|
||||
if(folderData) {
|
||||
for(auto& c : folderData->folderList->get_data())
|
||||
c->obj->get_flattened_layer_list(objList);
|
||||
for(auto& c : *folderData->folderList)
|
||||
c.obj->get_flattened_layer_list(objList);
|
||||
}
|
||||
else
|
||||
objList.emplace_back(this);
|
||||
|
|
@ -65,8 +65,8 @@ void DrawingProgramLayerListItem::get_flattened_layer_list(std::vector<DrawingPr
|
|||
uint32_t DrawingProgramLayerListItem::get_component_count() const {
|
||||
if(folderData) {
|
||||
uint32_t toRet = 0;
|
||||
for(auto& c : folderData->folderList->get_data())
|
||||
toRet += c->obj->get_component_count();
|
||||
for(auto& c : *folderData->folderList)
|
||||
toRet += c.obj->get_component_count();
|
||||
return toRet;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class DrawingProgramLayerListItem {
|
|||
void draw(SkCanvas* canvas, const DrawData& drawData) const;
|
||||
void set_name(NetworkingObjects::DelayUpdateSerializedClassManager& delayedNetObjMan, const std::string& newName) const;
|
||||
const std::string& get_name() const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfoSharedPtr>& objList) const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const;
|
||||
void get_flattened_layer_list(std::vector<DrawingProgramLayerListItem*>& objList);
|
||||
|
||||
void set_alpha(DrawingProgramLayerManager& layerMan, float newAlpha) const;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "DrawingProgramLayerManager.hpp"
|
||||
#include "../../World.hpp"
|
||||
#include "Helpers/NetworkingObjects/NetObjOrderedList.hpp"
|
||||
|
||||
DrawingProgramLayerManager::DrawingProgramLayerManager(DrawingProgram& drawProg):
|
||||
drawP(drawProg), // initialize drawP first for next objects to be initialized properly
|
||||
|
|
@ -32,13 +33,17 @@ uint32_t DrawingProgramLayerManager::edited_layer_component_count() {
|
|||
return editingLayer.lock()->get_layer().components->size();
|
||||
}
|
||||
|
||||
CanvasComponentContainer::ObjInfoIterator DrawingProgramLayerManager::get_edited_layer_end_iterator() {
|
||||
return editingLayer.lock()->get_layer().components->end();
|
||||
}
|
||||
|
||||
void DrawingProgramLayerManager::draw(SkCanvas* canvas, const DrawData& drawData) {
|
||||
if(layerTreeRoot)
|
||||
layerTreeRoot->draw(canvas, drawData);
|
||||
}
|
||||
|
||||
std::vector<CanvasComponentContainer::ObjInfoSharedPtr> DrawingProgramLayerManager::get_flattened_component_list() const {
|
||||
std::vector<CanvasComponentContainer::ObjInfoSharedPtr> toRet;
|
||||
std::vector<CanvasComponentContainer::ObjInfo*> DrawingProgramLayerManager::get_flattened_component_list() const {
|
||||
std::vector<CanvasComponentContainer::ObjInfo*> toRet;
|
||||
layerTreeRoot->get_flattened_component_list(toRet);
|
||||
return toRet;
|
||||
}
|
||||
|
|
@ -57,17 +62,17 @@ const DrawingProgramLayerListItem& DrawingProgramLayerManager::get_layer_root()
|
|||
return *layerTreeRoot;
|
||||
}
|
||||
|
||||
void DrawingProgramLayerManager::erase_component_set(const std::unordered_set<CanvasComponentContainer::ObjInfoSharedPtr>& compsToErase) {
|
||||
std::unordered_map<DrawingProgramLayerListItem*, std::unordered_set<NetworkingObjects::NetObjID>> idsToEraseInSpecificLayers;
|
||||
void DrawingProgramLayerManager::erase_component_set(const std::unordered_set<CanvasComponentContainer::ObjInfo*>& compsToErase) {
|
||||
std::unordered_map<DrawingProgramLayerListItem*, std::vector<CanvasComponentContainer::ObjInfoIterator>> idsToEraseInSpecificLayers;
|
||||
for(auto& c : compsToErase)
|
||||
idsToEraseInSpecificLayers[c->obj->parentLayer].emplace(c->obj.get_net_id());
|
||||
idsToEraseInSpecificLayers[c->obj->parentLayer].emplace_back(c->obj->objInfo);
|
||||
for(auto& [layerListItem, netObjSetToErase] : idsToEraseInSpecificLayers) {
|
||||
auto& layerComponentList = layerListItem->get_layer().components;
|
||||
layerComponentList->erase_unordered_set(layerComponentList, netObjSetToErase);
|
||||
layerComponentList->erase_list(layerComponentList, netObjSetToErase);
|
||||
}
|
||||
}
|
||||
|
||||
bool DrawingProgramLayerManager::component_passes_layer_selector(const CanvasComponentContainer::ObjInfoSharedPtr& c, LayerSelector layerSelector) {
|
||||
bool DrawingProgramLayerManager::component_passes_layer_selector(CanvasComponentContainer::ObjInfo* c, LayerSelector layerSelector) {
|
||||
switch(layerSelector) {
|
||||
case LayerSelector::ALL_VISIBLE_LAYERS:
|
||||
return c->obj->parentLayer->get_visible();
|
||||
|
|
@ -77,16 +82,16 @@ bool DrawingProgramLayerManager::component_passes_layer_selector(const CanvasCom
|
|||
return false;
|
||||
}
|
||||
|
||||
std::vector<CanvasComponentContainer::ObjInfoSharedPtr> DrawingProgramLayerManager::add_many_components_to_layer_being_edited(const std::vector<std::pair<uint32_t, CanvasComponentContainer*>>& newObjs) {
|
||||
std::vector<CanvasComponentContainer::ObjInfoIterator> DrawingProgramLayerManager::add_many_components_to_layer_being_edited(const std::vector<std::pair<CanvasComponentContainer::ObjInfoIterator, CanvasComponentContainer*>>& newObjs) {
|
||||
auto editLayerPtr = editingLayer.lock();
|
||||
if(!editLayerPtr)
|
||||
return {};
|
||||
return editLayerPtr->get_layer().components->insert_ordered_list_and_send_create(editLayerPtr->get_layer().components, newObjs);
|
||||
}
|
||||
|
||||
CanvasComponentContainer::ObjInfoSharedPtr DrawingProgramLayerManager::add_component_to_layer_being_edited(CanvasComponentContainer* newObj) {
|
||||
CanvasComponentContainer::ObjInfo* DrawingProgramLayerManager::add_component_to_layer_being_edited(CanvasComponentContainer* newObj) {
|
||||
auto editLayerPtr = editingLayer.lock();
|
||||
if(!editLayerPtr)
|
||||
return nullptr;
|
||||
return editLayerPtr->get_layer().components->push_back_and_send_create(editLayerPtr->get_layer().components, newObj);
|
||||
return &(*editLayerPtr->get_layer().components->push_back_and_send_create(editLayerPtr->get_layer().components, newObj));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
#include "DrawingProgramLayerListItem.hpp"
|
||||
#include "DrawingProgramLayerManagerGUI.hpp"
|
||||
#include <unordered_set>
|
||||
|
||||
class DrawingProgramLayerManager {
|
||||
private:
|
||||
|
|
@ -23,16 +24,17 @@ class DrawingProgramLayerManager {
|
|||
void write_components_server(cereal::PortableBinaryOutputArchive& a);
|
||||
void read_components_client(cereal::PortableBinaryInputArchive& a);
|
||||
bool is_a_layer_being_edited();
|
||||
void erase_component_set(const std::unordered_set<CanvasComponentContainer::ObjInfoSharedPtr>& compsToErase);
|
||||
void erase_component_set(const std::unordered_set<CanvasComponentContainer::ObjInfo*>& compsToErase);
|
||||
uint32_t edited_layer_component_count();
|
||||
bool component_passes_layer_selector(const CanvasComponentContainer::ObjInfoSharedPtr& c, LayerSelector layerSelector);
|
||||
CanvasComponentContainer::ObjInfoIterator get_edited_layer_end_iterator();
|
||||
bool component_passes_layer_selector(CanvasComponentContainer::ObjInfo* c, LayerSelector layerSelector);
|
||||
|
||||
bool layer_tree_root_exists();
|
||||
const DrawingProgramLayerListItem& get_layer_root();
|
||||
|
||||
CanvasComponentContainer::ObjInfoSharedPtr add_component_to_layer_being_edited(CanvasComponentContainer* newObj);
|
||||
std::vector<CanvasComponentContainer::ObjInfoSharedPtr> add_many_components_to_layer_being_edited(const std::vector<std::pair<uint32_t, CanvasComponentContainer*>>& newObjs);
|
||||
std::vector<CanvasComponentContainer::ObjInfoSharedPtr> get_flattened_component_list() const;
|
||||
CanvasComponentContainer::ObjInfo* add_component_to_layer_being_edited(CanvasComponentContainer* newObj);
|
||||
std::vector<CanvasComponentContainer::ObjInfoIterator> add_many_components_to_layer_being_edited(const std::vector<std::pair<CanvasComponentContainer::ObjInfoIterator, CanvasComponentContainer*>>& newObjs);
|
||||
std::vector<CanvasComponentContainer::ObjInfo*> get_flattened_component_list() const;
|
||||
std::vector<DrawingProgramLayerListItem*> get_flattened_layer_list();
|
||||
DrawingProgramLayerManagerGUI listGUI;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
#include "DrawingProgramLayerManagerGUI.hpp"
|
||||
#include "DrawingProgramLayerListItem.hpp"
|
||||
#include "DrawingProgramLayerManager.hpp"
|
||||
#include "../DrawingProgram.hpp"
|
||||
#include "../../World.hpp"
|
||||
#include "../../MainProgram.hpp"
|
||||
#include "Helpers/ConvertVec.hpp"
|
||||
#include "Helpers/NetworkingObjects/NetObjOrderedList.hpp"
|
||||
#include "SerializedBlendMode.hpp"
|
||||
|
||||
DrawingProgramLayerManagerGUI::DrawingProgramLayerManagerGUI(DrawingProgramLayerManager& drawLayerMan):
|
||||
|
|
@ -97,28 +99,29 @@ void DrawingProgramLayerManagerGUI::setup_list_gui(const std::string& id, bool&
|
|||
},
|
||||
.moveObjectsToListAtIndex = [&](NetObjID listObj, size_t index, const std::vector<GUIStuff::TreeListing::ParentObjectIDPair>& objsToInsert) {
|
||||
world.netObjMan.send_multi_update_messsage([&]() {
|
||||
std::unordered_map<NetObjID, std::unordered_set<NetObjID>> toEraseMap;
|
||||
std::unordered_map<NetObjID, std::vector<NetObjOrderedListIterator<DrawingProgramLayerListItem>>> toEraseMap;
|
||||
uint32_t newIndex = index;
|
||||
std::vector<NetObjOwnerPtr<DrawingProgramLayerListItem>> toInsertObjPtrs;
|
||||
auto& listPtr = world.netObjMan.get_obj_temporary_ref_from_id<DrawingProgramLayerListItem>(listObj)->get_folder().folderList;
|
||||
|
||||
for(size_t i = 0; i < objsToInsert.size(); i++) {
|
||||
toEraseMap[objsToInsert[i].parent].emplace(objsToInsert[i].object);
|
||||
toEraseMap[objsToInsert[i].parent].emplace_back(listPtr->get(objsToInsert[i].object));
|
||||
if(newIndex != 0 && objsToInsert[i].parent == listObj && listPtr->get(objsToInsert[i].object)->pos <= index)
|
||||
newIndex--;
|
||||
}
|
||||
|
||||
for(auto& [listToEraseFrom, setToErase] : toEraseMap) {
|
||||
auto& listToEraseFromPtr = world.netObjMan.get_obj_temporary_ref_from_id<DrawingProgramLayerListItem>(listToEraseFrom)->get_folder().folderList;
|
||||
listToEraseFromPtr->erase_unordered_set(listToEraseFromPtr, setToErase, &toInsertObjPtrs);
|
||||
listToEraseFromPtr->erase_list(listToEraseFromPtr, setToErase, &toInsertObjPtrs);
|
||||
}
|
||||
|
||||
std::vector<std::pair<uint32_t, NetObjOwnerPtr<DrawingProgramLayerListItem>>> toInsert;
|
||||
std::vector<std::pair<NetObjOrderedListIterator<DrawingProgramLayerListItem>, NetObjOwnerPtr<DrawingProgramLayerListItem>>> toInsert;
|
||||
auto insertIt = listPtr->at(newIndex);
|
||||
for(uint32_t i = 0; i < objsToInsert.size(); i++) {
|
||||
auto it = std::find_if(toInsertObjPtrs.begin(), toInsertObjPtrs.end(), [id = objsToInsert[i].object](NetObjOwnerPtr<DrawingProgramLayerListItem>& objPtr) {
|
||||
return objPtr.get_net_id() == id;
|
||||
});
|
||||
toInsert.emplace_back(newIndex + i, std::move(*it));
|
||||
toInsert.emplace_back(insertIt, std::move(*it));
|
||||
toInsert.back().second.reassign_ids();
|
||||
}
|
||||
listPtr->insert_ordered_list_and_send_create(listPtr, toInsert);
|
||||
|
|
@ -151,7 +154,7 @@ void DrawingProgramLayerManagerGUI::setup_list_gui(const std::string& id, bool&
|
|||
|
||||
if(toDeleteObject.has_value()) {
|
||||
auto& folderList = world.netObjMan.get_obj_temporary_ref_from_id<DrawingProgramLayerListItem>(toDeleteParent.value())->get_folder().folderList;
|
||||
folderList->erase(folderList, toDeleteObject.value());
|
||||
folderList->erase(folderList, folderList->get(toDeleteObject.value()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,29 +197,28 @@ void DrawingProgramLayerManagerGUI::setup_list_gui(const std::string& id, bool&
|
|||
}
|
||||
}
|
||||
|
||||
NetworkingObjects::NetObjOrderedListObjectInfoPtr<DrawingProgramLayerListItem> DrawingProgramLayerManagerGUI::try_to_create_in_proper_position(DrawingProgramLayerListItem* newItem) {
|
||||
std::optional<NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem>> DrawingProgramLayerManagerGUI::try_to_create_in_proper_position(DrawingProgramLayerListItem* newItem) {
|
||||
using namespace NetworkingObjects;
|
||||
auto& world = layerMan.drawP.world;
|
||||
if(selectionData.orderedObjsSelected.empty())
|
||||
return nullptr;
|
||||
return std::nullopt;
|
||||
auto& backObjParentObjectPair = selectionData.orderedObjsSelected.back();
|
||||
NetObjTemporaryPtr<DrawingProgramLayerListItem> parentPtr = world.netObjMan.get_obj_temporary_ref_from_id<DrawingProgramLayerListItem>(backObjParentObjectPair.parent);
|
||||
if(!parentPtr)
|
||||
return nullptr;
|
||||
return std::nullopt;
|
||||
NetObjTemporaryPtr<DrawingProgramLayerListItem> objectPtr = world.netObjMan.get_obj_temporary_ref_from_id<DrawingProgramLayerListItem>(backObjParentObjectPair.object);
|
||||
if(!objectPtr)
|
||||
return nullptr;
|
||||
return std::nullopt;
|
||||
if(objectPtr->is_folder()) {
|
||||
objectPtr->get_folder().isFolderOpen = true;
|
||||
return objectPtr->get_folder().folderList->insert_and_send_create(objectPtr->get_folder().folderList, 0, newItem);
|
||||
return objectPtr->get_folder().folderList->insert_and_send_create(objectPtr->get_folder().folderList, objectPtr->get_folder().folderList->begin(), newItem);
|
||||
}
|
||||
uint32_t insertPos = parentPtr->get_folder().folderList->get(objectPtr.get_net_id())->pos;
|
||||
return parentPtr->get_folder().folderList->insert_and_send_create(parentPtr->get_folder().folderList, insertPos, newItem);
|
||||
return parentPtr->get_folder().folderList->insert_and_send_create(parentPtr->get_folder().folderList, parentPtr->get_folder().folderList->get(objectPtr.get_net_id()), newItem);
|
||||
}
|
||||
|
||||
NetworkingObjects::NetObjOrderedListObjectInfoPtr<DrawingProgramLayerListItem> DrawingProgramLayerManagerGUI::create_in_proper_position(DrawingProgramLayerListItem* newItem) {
|
||||
NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem> DrawingProgramLayerManagerGUI::create_in_proper_position(DrawingProgramLayerListItem* newItem) {
|
||||
auto toRet = try_to_create_in_proper_position(newItem);
|
||||
if(!toRet)
|
||||
return layerMan.layerTreeRoot->get_folder().folderList->insert_and_send_create(layerMan.layerTreeRoot->get_folder().folderList, 0, newItem);
|
||||
return toRet;
|
||||
return layerMan.layerTreeRoot->get_folder().folderList->insert_and_send_create(layerMan.layerTreeRoot->get_folder().folderList, layerMan.layerTreeRoot->get_folder().folderList->begin(), newItem);
|
||||
return toRet.value();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ class DrawingProgramLayerManagerGUI {
|
|||
void refresh_gui_data();
|
||||
void setup_list_gui(const std::string& id, bool& hoveringOverDropdown);
|
||||
private:
|
||||
NetworkingObjects::NetObjOrderedListObjectInfoPtr<DrawingProgramLayerListItem> try_to_create_in_proper_position(DrawingProgramLayerListItem* newItem);
|
||||
NetworkingObjects::NetObjOrderedListObjectInfoPtr<DrawingProgramLayerListItem> create_in_proper_position(DrawingProgramLayerListItem* newItem);
|
||||
std::optional<NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem>> try_to_create_in_proper_position(DrawingProgramLayerListItem* newItem);
|
||||
NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem> create_in_proper_position(DrawingProgramLayerListItem* newItem);
|
||||
|
||||
GUIStuff::TreeListing::SelectionData selectionData;
|
||||
std::unordered_set<NetworkingObjects::NetObjID> oldSelection;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue