From 88430eec2951290633875b0f036a33bbc6ee60a2 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sun, 1 Jan 2023 17:30:55 +0100 Subject: [PATCH] Improve editor drawing loop --- libs/cgeditor | 2 +- src/game_tab/right_panel/editor/EditorCanvas.cpp | 15 +++++++++++---- src/game_tab/right_panel/editor/EditorCanvas.hpp | 1 - 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/libs/cgeditor b/libs/cgeditor index 3271972..31c332d 160000 --- a/libs/cgeditor +++ b/libs/cgeditor @@ -1 +1 @@ -Subproject commit 3271972f9eef3069bf80de8be4c057102fff1138 +Subproject commit 31c332da9ab426daa73b68772d0ef9c1b0744a50 diff --git a/src/game_tab/right_panel/editor/EditorCanvas.cpp b/src/game_tab/right_panel/editor/EditorCanvas.cpp index 8a1c745..3856102 100644 --- a/src/game_tab/right_panel/editor/EditorCanvas.cpp +++ b/src/game_tab/right_panel/editor/EditorCanvas.cpp @@ -1,7 +1,7 @@ #include "EditorCanvas.hpp" EditorCanvas::EditorCanvas(wxFrame *parent, std::shared_ptr game) - : wxPanel(parent), game(game), NeedRedraw(false) { + : wxPanel(parent), game(game) { hide_icon = LoadPNG("hide", wxSize(CGEditor::status.MoveIconWidth, CGEditor::status.MoveIconWidth)); t.ResizePieces(CGEditor::status.MoveIconWidth); @@ -210,10 +210,17 @@ void EditorCanvas::MouseEvent(wxMouseEvent &event) { Refresh(); } - // Should another draw of CGEditor be made? - if (NeedRedraw) { + // Handle editor events + Update(); + bool need_redraw=false; + for(auto event: status.Events){ + HandleEvent(event); + need_redraw=true; + } + if(need_redraw){ + status.Events.clear(); Refresh(); - NeedRedraw = false; + Update(); } } diff --git a/src/game_tab/right_panel/editor/EditorCanvas.hpp b/src/game_tab/right_panel/editor/EditorCanvas.hpp index 7ee56d3..740a6a1 100644 --- a/src/game_tab/right_panel/editor/EditorCanvas.hpp +++ b/src/game_tab/right_panel/editor/EditorCanvas.hpp @@ -11,7 +11,6 @@ wxDECLARE_EVENT(GAME_CHANGE, wxCommandEvent); class EditorCanvas : public wxPanel, public cgeditor::CGEditor { wxPaintDC *dc; - bool NeedRedraw; wxPoint Middle(cgeditor::Element e); wxBitmap hide_icon; Theme t;