MCPcopy Create free account
hub / github.com/Overload-Technologies/Overload / InsertChars

Method InsertChars

Dependencies/ImGui/src/imgui_widgets.cpp:4241–4276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4239}
4240
4241void ImGuiInputTextCallbackData::InsertChars(int pos, const char* new_text, const char* new_text_end)
4242{
4243 // Accept null ranges
4244 if (new_text == new_text_end)
4245 return;
4246
4247 // Grow internal buffer if needed
4248 const bool is_resizable = (Flags & ImGuiInputTextFlags_CallbackResize) != 0;
4249 const int new_text_len = new_text_end ? (int)(new_text_end - new_text) : (int)ImStrlen(new_text);
4250 if (new_text_len + BufTextLen >= BufSize)
4251 {
4252 if (!is_resizable)
4253 return;
4254
4255 ImGuiContext& g = *Ctx;
4256 ImGuiInputTextState* edit_state = &g.InputTextState;
4257 IM_ASSERT(edit_state->ID != 0 && g.ActiveId == edit_state->ID);
4258 IM_ASSERT(Buf == edit_state->TextA.Data);
4259 int new_buf_size = BufTextLen + ImClamp(new_text_len * 4, 32, ImMax(256, new_text_len)) + 1;
4260 edit_state->TextA.resize(new_buf_size + 1);
4261 edit_state->TextSrc = edit_state->TextA.Data;
4262 Buf = edit_state->TextA.Data;
4263 BufSize = edit_state->BufCapacity = new_buf_size;
4264 }
4265
4266 if (BufTextLen != pos)
4267 memmove(Buf + pos + new_text_len, Buf + pos, (size_t)(BufTextLen - pos));
4268 memcpy(Buf + pos, new_text, (size_t)new_text_len * sizeof(char));
4269 Buf[BufTextLen + new_text_len] = '\0';
4270
4271 if (CursorPos >= pos)
4272 CursorPos += new_text_len;
4273 SelectionStart = SelectionEnd = CursorPos;
4274 BufDirty = true;
4275 BufTextLen += new_text_len;
4276}
4277
4278void ImGui::PushPasswordFont()
4279{

Callers 2

MyCallbackMethod · 0.80
TextEditCallbackFunction · 0.80

Calls 3

ImClampFunction · 0.85
ImMaxFunction · 0.85
resizeMethod · 0.45

Tested by

no test coverage detected