diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-02-21 07:37:24 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-02-21 07:37:24 +0100 |
commit | 12c36a35cf43d3453a5745e4464de531674e8e65 (patch) | |
tree | 0dda63cff27f4c112db00d61e2425dbbda5a02d1 | |
parent | fbe8ee8faf54dd9989138ff92e5177a984e229fd (diff) |
more imgui wrappers
-rw-r--r-- | editor/imgui-raii.cpp | 11 | ||||
-rw-r--r-- | editor/imgui-raii.hpp | 3 |
2 files changed, 13 insertions, 1 deletions
diff --git a/editor/imgui-raii.cpp b/editor/imgui-raii.cpp index 05e9edab..458de973 100644 --- a/editor/imgui-raii.cpp +++ b/editor/imgui-raii.cpp @@ -28,6 +28,11 @@ void text(StringView str, ImGuiTextFlags flags) { ImGui::TextEx(str.data(), str. raii_wrapper::raii_wrapper(raii_wrapper::F fn) : dtor{fn} {} raii_wrapper::~raii_wrapper() { if (dtor) dtor(); } raii_wrapper::raii_wrapper(raii_wrapper&& other) noexcept : dtor{other.dtor} { other.dtor = nullptr; } +raii_wrapper& raii_wrapper::operator=(raii_wrapper&& other) noexcept +{ + dtor = std::exchange(other.dtor, nullptr); + return *this; +} raii_wrapper::operator bool() const noexcept { return dtor != nullptr; } raii_wrapper push_style_color(ImGuiCol_ var, const Color4& value) @@ -62,6 +67,12 @@ raii_wrapper tree_node(Containers::StringView name, ImGuiTreeNodeFlags flags) return {}; } +raii_wrapper begin_disabled(bool is_disabled) +{ + ImGui::BeginDisabled(is_disabled); + return {&ImGui::EndDisabled}; +} + raii_wrapper begin_list_box(Containers::StringView name, ImVec2 size) { if (ImGui::BeginListBox(name.data(), size)) diff --git a/editor/imgui-raii.hpp b/editor/imgui-raii.hpp index ba283195..1893ab90 100644 --- a/editor/imgui-raii.hpp +++ b/editor/imgui-raii.hpp @@ -15,7 +15,7 @@ struct raii_wrapper final ~raii_wrapper(); raii_wrapper(const raii_wrapper&) = delete; raii_wrapper& operator=(const raii_wrapper&) = delete; - raii_wrapper& operator=(raii_wrapper&&) = delete; + raii_wrapper& operator=(raii_wrapper&&) noexcept; raii_wrapper(raii_wrapper&& other) noexcept; operator bool() const noexcept; @@ -29,6 +29,7 @@ private: [[nodiscard]] raii_wrapper begin_list_box(StringView name, ImVec2 size = {}); [[nodiscard]] raii_wrapper begin_table(const char* id, int ncols, ImGuiTableFlags flags = 0, const ImVec2& outer_size = {}, float inner_width = 0); [[nodiscard]] raii_wrapper tree_node(StringView name, ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_None); +[[nodiscard]] raii_wrapper begin_disabled(bool is_disabled = true); [[nodiscard]] raii_wrapper push_style_var(ImGuiStyleVar_ var, Vector2 value); [[nodiscard]] raii_wrapper push_style_var(ImGuiStyleVar_ var, float value); |