summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-02-21 07:37:24 +0100
committerStanislaw Halik <sthalik@misaki.pl>2023-02-21 07:37:24 +0100
commit12c36a35cf43d3453a5745e4464de531674e8e65 (patch)
tree0dda63cff27f4c112db00d61e2425dbbda5a02d1
parentfbe8ee8faf54dd9989138ff92e5177a984e229fd (diff)
more imgui wrappers
-rw-r--r--editor/imgui-raii.cpp11
-rw-r--r--editor/imgui-raii.hpp3
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);