Fixed cache issue on edit undo, and added an edit button for layers
This commit is contained in:
parent
6e13c5742e
commit
dbec3641d8
5 changed files with 14 additions and 8 deletions
|
|
@ -305,8 +305,8 @@ namespace NetworkingObjects {
|
|||
protected:
|
||||
virtual std::list<NetObjOrderedListObjectInfo<T>>& data_list() override { return data; }
|
||||
virtual const std::list<NetObjOrderedListObjectInfo<T>>& data_list() const override { return data; }
|
||||
virtual std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() { return idToDataMap; }
|
||||
virtual const std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() const { return idToDataMap; }
|
||||
virtual std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() override { return idToDataMap; }
|
||||
virtual const std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() const override { return idToDataMap; }
|
||||
virtual std::vector<NetObjOrderedListIterator<T>> insert_ordered_list(const NetObjTemporaryPtr<NetObjOrderedList<T>>& l, const std::shared_ptr<NetServer::ClientData>& clientInserting, std::vector<std::pair<NetObjOrderedListIterator<T>, NetObjOwnerPtr<T>>>& newObjs) override {
|
||||
if(newObjs.empty())
|
||||
return {};
|
||||
|
|
@ -343,7 +343,7 @@ namespace NetworkingObjects {
|
|||
NETOBJ_ORDERED_LIST_VERBOSE_DEBUG(data, idToDataMap);
|
||||
return toRet;
|
||||
}
|
||||
virtual void erase_it_list(const NetObjTemporaryPtr<NetObjOrderedList<T>>& l, const std::vector<NetObjOrderedListIterator<T>>& itList, std::vector<NetObjOwnerPtr<T>>* erasedObjects) {
|
||||
virtual void erase_it_list(const NetObjTemporaryPtr<NetObjOrderedList<T>>& l, const std::vector<NetObjOrderedListIterator<T>>& itList, std::vector<NetObjOwnerPtr<T>>* erasedObjects) override {
|
||||
if(itList.empty())
|
||||
return;
|
||||
|
||||
|
|
@ -459,8 +459,8 @@ namespace NetworkingObjects {
|
|||
protected:
|
||||
virtual std::list<NetObjOrderedListObjectInfo<T>>& data_list() override { return clientData; }
|
||||
virtual const std::list<NetObjOrderedListObjectInfo<T>>& data_list() const override { return clientData; }
|
||||
virtual std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() { return clientIdToDataMap; }
|
||||
virtual const std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() const { return clientIdToDataMap; }
|
||||
virtual std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() override { return clientIdToDataMap; }
|
||||
virtual const std::unordered_map<NetworkingObjects::NetObjID, NetObjOrderedListIterator<T>>& data_map() const override { return clientIdToDataMap; }
|
||||
virtual std::vector<NetObjOrderedListIterator<T>> insert_ordered_list(const NetObjTemporaryPtr<NetObjOrderedList<T>>& l, const std::shared_ptr<NetServer::ClientData>& clientInserting, std::vector<std::pair<NetObjOrderedListIterator<T>, NetObjOwnerPtr<T>>>& newObjs) override {
|
||||
if(newObjs.empty())
|
||||
return {};
|
||||
|
|
@ -483,7 +483,7 @@ namespace NetworkingObjects {
|
|||
NETOBJ_ORDERED_LIST_VERBOSE_DEBUG(clientData, clientIdToDataMap);
|
||||
return toRet;
|
||||
}
|
||||
virtual void erase_it_list(const NetObjTemporaryPtr<NetObjOrderedList<T>>& l, const std::vector<NetObjOrderedListIterator<T>>& itList, std::vector<NetObjOwnerPtr<T>>* erasedObjects) {
|
||||
virtual void erase_it_list(const NetObjTemporaryPtr<NetObjOrderedList<T>>& l, const std::vector<NetObjOrderedListIterator<T>>& itList, std::vector<NetObjOwnerPtr<T>>* erasedObjects) override {
|
||||
if(itList.empty())
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,10 @@ void DrawingProgramLayerManagerGUI::setup_list_gui(const std::string& id, bool&
|
|||
}) {
|
||||
gui.text_label(tempPtr->get_name());
|
||||
}
|
||||
if(gui.svg_icon_button_transparent("edit button", "data/icons/pencil.svg", false, GUIStuff::TreeListing::ENTRY_HEIGHT)) {
|
||||
layerMan.editingLayer = tempPtr;
|
||||
isButtonClicked = true;
|
||||
}
|
||||
if(gui.svg_icon_button_transparent("visible button", tempPtr->get_visible() ? "data/icons/eyeopen.svg" : "data/icons/eyeclose.svg", false, GUIStuff::TreeListing::ENTRY_HEIGHT)) {
|
||||
tempPtr->set_visible(layerMan, !tempPtr->get_visible());
|
||||
isButtonClicked = true;
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ void EditTool::switch_tool(DrawingProgramToolType newTool) {
|
|||
return false;
|
||||
auto objPtr = undoMan.world.netObjMan.get_obj_temporary_ref_from_id<CanvasComponentContainer>(toEditID.value());
|
||||
objPtr->get_comp().set_data_from(*oldData);
|
||||
objPtr->commit_update(undoMan.world.drawProg);
|
||||
objPtr->send_comp_update(undoMan.world.drawProg, true);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -83,6 +84,7 @@ void EditTool::switch_tool(DrawingProgramToolType newTool) {
|
|||
return false;
|
||||
auto objPtr = undoMan.world.netObjMan.get_obj_temporary_ref_from_id<CanvasComponentContainer>(toEditID.value());
|
||||
objPtr->get_comp().set_data_from(*newData);
|
||||
objPtr->commit_update(undoMan.world.drawProg);
|
||||
objPtr->send_comp_update(undoMan.world.drawProg, true);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class UndoManager {
|
|||
private:
|
||||
void push_undo(const UndoRedoPair& undoRedoPair);
|
||||
void push_redo(const UndoRedoPair& undoRedoPair);
|
||||
size_t queueLimit = 500;
|
||||
size_t queueLimit = 250;
|
||||
std::deque<UndoRedoPair> undoQueue;
|
||||
std::deque<UndoRedoPair> redoQueue;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class WorldUndoManager {
|
|||
private:
|
||||
void push_undo(std::unique_ptr<WorldUndoAction> undoAction);
|
||||
void push_redo(std::unique_ptr<WorldUndoAction> undoAction);
|
||||
constexpr static size_t UNDO_QUEUE_LIMIT = 500;
|
||||
constexpr static size_t UNDO_QUEUE_LIMIT = 250;
|
||||
|
||||
std::unordered_map<UndoObjectID, NetworkingObjects::NetObjID> undoIDToNetID;
|
||||
std::unordered_map<NetworkingObjects::NetObjID, UndoObjectID> netIDToUndoID;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue