12 #include "imgui_stdlib.h"
18 ImGuiInputTextCallback ChainCallback;
19 void *ChainCallbackUserData;
22 static int InputTextCallback(ImGuiInputTextCallbackData *data)
25 if (data->EventFlag == ImGuiInputTextFlags_CallbackResize)
30 std::string *str = user_data->Str;
31 IM_ASSERT(data->Buf == str->c_str());
32 str->resize(data->BufTextLen);
33 data->Buf = (
char *)str->c_str();
35 else if (user_data->ChainCallback)
38 data->UserData = user_data->ChainCallbackUserData;
39 return user_data->ChainCallback(data);
44 bool ImGui::InputText(
const char *label, std::string *str, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback,
47 IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0);
48 flags |= ImGuiInputTextFlags_CallbackResize;
51 cb_user_data.Str = str;
52 cb_user_data.ChainCallback = callback;
53 cb_user_data.ChainCallbackUserData = user_data;
54 return InputText(label, (
char *)str->c_str(), str->capacity() + 1, flags, InputTextCallback, &cb_user_data);
57 bool ImGui::InputTextMultiline(
const char *label, std::string *str,
const ImVec2 &size, ImGuiInputTextFlags flags,
58 ImGuiInputTextCallback callback,
void *user_data)
60 IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0);
61 flags |= ImGuiInputTextFlags_CallbackResize;
64 cb_user_data.Str = str;
65 cb_user_data.ChainCallback = callback;
66 cb_user_data.ChainCallbackUserData = user_data;
67 return InputTextMultiline(label, (
char *)str->c_str(), str->capacity() + 1, size, flags, InputTextCallback,
71 bool ImGui::InputTextWithHint(
const char *label,
const char *hint, std::string *str, ImGuiInputTextFlags flags,
72 ImGuiInputTextCallback callback,
void *user_data)
74 IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0);
75 flags |= ImGuiInputTextFlags_CallbackResize;
78 cb_user_data.Str = str;
79 cb_user_data.ChainCallback = callback;
80 cb_user_data.ChainCallbackUserData = user_data;
81 return InputTextWithHint(label, hint, (
char *)str->c_str(), str->capacity() + 1, flags, InputTextCallback,