Client now automatically selects a layer when connected
This commit is contained in:
parent
ebe4d8e60a
commit
108da82fd4
5 changed files with 96 additions and 75 deletions
|
|
@ -33,3 +33,19 @@ void DrawingProgramLayerFolder::get_flattened_component_list(std::vector<CanvasC
|
|||
for(auto& listItem : (*folderList) | std::views::reverse)
|
||||
listItem.obj->get_flattened_component_list(objList);
|
||||
}
|
||||
|
||||
NetworkingObjects::NetObjWeakPtr<DrawingProgramLayerListItem> DrawingProgramLayerFolder::get_initial_editing_layer() const {
|
||||
// BFS, select a layer that's closest to root as possible
|
||||
for(auto& c : *folderList) {
|
||||
if(!c.obj->is_folder())
|
||||
return c.obj;
|
||||
}
|
||||
for(auto& c : *folderList) {
|
||||
if(c.obj->is_folder()) {
|
||||
NetworkingObjects::NetObjWeakPtr<DrawingProgramLayerListItem> toRet = c.obj->get_folder().get_initial_editing_layer();
|
||||
if(!toRet.expired())
|
||||
return toRet;
|
||||
}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ class DrawingProgramLayerFolder {
|
|||
void commit_update_dont_invalidate_cache(DrawingProgramLayerManager& layerMan) const;
|
||||
void get_flattened_component_list(std::vector<CanvasComponentContainer::ObjInfo*>& objList) const;
|
||||
void set_to_erase();
|
||||
NetworkingObjects::NetObjWeakPtr<DrawingProgramLayerListItem> get_initial_editing_layer() const;
|
||||
|
||||
NetworkingObjects::NetObjOwnerPtr<NetworkingObjects::NetObjOrderedList<DrawingProgramLayerListItem>> folderList;
|
||||
bool isFolderOpen = false;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ void DrawingProgramLayerManager::read_components_client(cereal::PortableBinaryIn
|
|||
layerTreeRoot = drawP.world.netObjMan.read_create_message<DrawingProgramLayerListItem>(a, nullptr);
|
||||
layerTreeRoot->commit_update_dont_invalidate_cache(*this);
|
||||
layerTreeRoot->set_component_list_callbacks(*this);
|
||||
editingLayer = layerTreeRoot->get_folder().get_initial_editing_layer();
|
||||
}
|
||||
|
||||
bool DrawingProgramLayerManager::is_a_layer_being_edited() {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class DrawingProgramLayerManager {
|
|||
friend class DrawingProgramLayerFolder;
|
||||
NetworkingObjects::NetObjOwnerPtr<DrawingProgramLayerListItem> layerTreeRoot;
|
||||
NetworkingObjects::NetObjWeakPtr<DrawingProgramLayerListItem> editingLayer;
|
||||
void set_initial_editing_layer();
|
||||
public:
|
||||
enum class LayerSelector {
|
||||
ALL_VISIBLE_LAYERS,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue