mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-24 05:19:02 +08:00
InputText: moved all ImGuiInputTextState functions to not be inline.
This commit is contained in:
parent
21d03edcb0
commit
ca5701d458
2
imgui.h
2
imgui.h
@ -29,7 +29,7 @@
|
|||||||
// Library Version
|
// Library Version
|
||||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
|
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
|
||||||
#define IMGUI_VERSION "1.91.2 WIP"
|
#define IMGUI_VERSION "1.91.2 WIP"
|
||||||
#define IMGUI_VERSION_NUM 19111
|
#define IMGUI_VERSION_NUM 19112
|
||||||
#define IMGUI_HAS_TABLE
|
#define IMGUI_HAS_TABLE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1127,7 +1127,6 @@ struct IMGUI_API ImGuiInputTextState
|
|||||||
bool TextAIsValid; // temporary UTF8 buffer is not initially valid before we make the widget active (until then we pull the data from user argument)
|
bool TextAIsValid; // temporary UTF8 buffer is not initially valid before we make the widget active (until then we pull the data from user argument)
|
||||||
int BufCapacityA; // end-user buffer capacity
|
int BufCapacityA; // end-user buffer capacity
|
||||||
ImVec2 Scroll; // horizontal offset (managed manually) + vertical scrolling (pulled from child window's own Scroll.y)
|
ImVec2 Scroll; // horizontal offset (managed manually) + vertical scrolling (pulled from child window's own Scroll.y)
|
||||||
|
|
||||||
float CursorAnim; // timer for cursor blink, reset on every user action so the cursor reappears immediately
|
float CursorAnim; // timer for cursor blink, reset on every user action so the cursor reappears immediately
|
||||||
bool CursorFollow; // set when we want scrolling to follow the current cursor position (not always!)
|
bool CursorFollow; // set when we want scrolling to follow the current cursor position (not always!)
|
||||||
bool SelectedAllMouseLock; // after a double-click to select all, we ignore further mouse drags to update selection
|
bool SelectedAllMouseLock; // after a double-click to select all, we ignore further mouse drags to update selection
|
||||||
@ -1144,24 +1143,23 @@ struct IMGUI_API ImGuiInputTextState
|
|||||||
void OnKeyPressed(int key); // Cannot be inline because we call in code in stb_textedit.h implementation
|
void OnKeyPressed(int key); // Cannot be inline because we call in code in stb_textedit.h implementation
|
||||||
|
|
||||||
// Cursor & Selection
|
// Cursor & Selection
|
||||||
void CursorAnimReset() { CursorAnim = -0.30f; } // After a user-input the cursor stays on for a while without blinking
|
void CursorAnimReset();
|
||||||
void CursorClamp() { Stb->cursor = ImMin(Stb->cursor, CurLenW); Stb->select_start = ImMin(Stb->select_start, CurLenW); Stb->select_end = ImMin(Stb->select_end, CurLenW); }
|
void CursorClamp();
|
||||||
bool HasSelection() const { return Stb->select_start != Stb->select_end; }
|
bool HasSelection() const;
|
||||||
void ClearSelection() { Stb->select_start = Stb->select_end = Stb->cursor; }
|
void ClearSelection();
|
||||||
int GetCursorPos() const { return Stb->cursor; }
|
int GetCursorPos() const;
|
||||||
int GetSelectionStart() const { return Stb->select_start; }
|
int GetSelectionStart() const;
|
||||||
int GetSelectionEnd() const { return Stb->select_end; }
|
int GetSelectionEnd() const;
|
||||||
void SelectAll() { Stb->select_start = 0; Stb->cursor = Stb->select_end = CurLenW; Stb->has_preferred_x = 0; }
|
void SelectAll();
|
||||||
|
|
||||||
// Reload user buf (WIP #2890)
|
// Reload user buf (WIP #2890)
|
||||||
// If you modify underlying user-passed const char* while active you need to call this (InputText V2 may lift this)
|
// If you modify underlying user-passed const char* while active you need to call this (InputText V2 may lift this)
|
||||||
// strcpy(my_buf, "hello");
|
// strcpy(my_buf, "hello");
|
||||||
// if (ImGuiInputTextState* state = ImGui::GetInputTextState(id)) // id may be ImGui::GetItemID() is last item
|
// if (ImGuiInputTextState* state = ImGui::GetInputTextState(id)) // id may be ImGui::GetItemID() is last item
|
||||||
// state->ReloadUserBufAndSelectAll();
|
// state->ReloadUserBufAndSelectAll();
|
||||||
void ReloadUserBufAndSelectAll() { ReloadUserBuf = true; ReloadSelectionStart = 0; ReloadSelectionEnd = INT_MAX; }
|
void ReloadUserBufAndSelectAll();
|
||||||
void ReloadUserBufAndKeepSelection() { ReloadUserBuf = true; ReloadSelectionStart = Stb->select_start; ReloadSelectionEnd = Stb->select_end; }
|
void ReloadUserBufAndKeepSelection();
|
||||||
void ReloadUserBufAndMoveToEnd() { ReloadUserBuf = true; ReloadSelectionStart = ReloadSelectionEnd = INT_MAX; }
|
void ReloadUserBufAndMoveToEnd();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ImGuiWindowRefreshFlags_
|
enum ImGuiWindowRefreshFlags_
|
||||||
|
@ -4048,6 +4048,19 @@ void ImGuiInputTextState::OnKeyPressed(int key)
|
|||||||
CursorAnimReset();
|
CursorAnimReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Those functions are not inlined in imgui_internal.h, allowing us to hide ImStbTexteditState from that header.
|
||||||
|
void ImGuiInputTextState::CursorAnimReset() { CursorAnim = -0.30f; } // After a user-input the cursor stays on for a while without blinking
|
||||||
|
void ImGuiInputTextState::CursorClamp() { Stb->cursor = ImMin(Stb->cursor, CurLenW); Stb->select_start = ImMin(Stb->select_start, CurLenW); Stb->select_end = ImMin(Stb->select_end, CurLenW); }
|
||||||
|
bool ImGuiInputTextState::HasSelection() const { return Stb->select_start != Stb->select_end; }
|
||||||
|
void ImGuiInputTextState::ClearSelection() { Stb->select_start = Stb->select_end = Stb->cursor; }
|
||||||
|
int ImGuiInputTextState::GetCursorPos() const { return Stb->cursor; }
|
||||||
|
int ImGuiInputTextState::GetSelectionStart() const { return Stb->select_start; }
|
||||||
|
int ImGuiInputTextState::GetSelectionEnd() const { return Stb->select_end; }
|
||||||
|
void ImGuiInputTextState::SelectAll() { Stb->select_start = 0; Stb->cursor = Stb->select_end = CurLenW; Stb->has_preferred_x = 0; }
|
||||||
|
void ImGuiInputTextState::ReloadUserBufAndSelectAll() { ReloadUserBuf = true; ReloadSelectionStart = 0; ReloadSelectionEnd = INT_MAX; }
|
||||||
|
void ImGuiInputTextState::ReloadUserBufAndKeepSelection() { ReloadUserBuf = true; ReloadSelectionStart = Stb->select_start; ReloadSelectionEnd = Stb->select_end; }
|
||||||
|
void ImGuiInputTextState::ReloadUserBufAndMoveToEnd() { ReloadUserBuf = true; ReloadSelectionStart = ReloadSelectionEnd = INT_MAX; }
|
||||||
|
|
||||||
ImGuiInputTextCallbackData::ImGuiInputTextCallbackData()
|
ImGuiInputTextCallbackData::ImGuiInputTextCallbackData()
|
||||||
{
|
{
|
||||||
memset(this, 0, sizeof(*this));
|
memset(this, 0, sizeof(*this));
|
||||||
|
Loading…
Reference in New Issue
Block a user