mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-30 18:29:04 +08:00
Internals: Added Name to ImGuiDataTypeInfo + minor misc comments in BeginGroup().
This commit is contained in:
parent
45499b8f2f
commit
093afd4f7f
11
imgui.cpp
11
imgui.cpp
@ -7271,10 +7271,11 @@ float ImGui::GetWindowContentRegionWidth()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lock horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.)
|
// Lock horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.)
|
||||||
|
// Groups are currently a mishmash of functionalities which should perhaps be clarified and separated.
|
||||||
void ImGui::BeginGroup()
|
void ImGui::BeginGroup()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = g.CurrentWindow;
|
||||||
|
|
||||||
window->DC.GroupStack.resize(window->DC.GroupStack.Size + 1);
|
window->DC.GroupStack.resize(window->DC.GroupStack.Size + 1);
|
||||||
ImGuiGroupData& group_data = window->DC.GroupStack.back();
|
ImGuiGroupData& group_data = window->DC.GroupStack.back();
|
||||||
@ -7299,8 +7300,8 @@ void ImGui::BeginGroup()
|
|||||||
void ImGui::EndGroup()
|
void ImGui::EndGroup()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = g.CurrentWindow;
|
||||||
IM_ASSERT(!window->DC.GroupStack.empty()); // Mismatched BeginGroup()/EndGroup() calls
|
IM_ASSERT(window->DC.GroupStack.Size > 0); // Mismatched BeginGroup()/EndGroup() calls
|
||||||
|
|
||||||
ImGuiGroupData& group_data = window->DC.GroupStack.back();
|
ImGuiGroupData& group_data = window->DC.GroupStack.back();
|
||||||
|
|
||||||
@ -7328,9 +7329,9 @@ void ImGui::EndGroup()
|
|||||||
// If the current ActiveId was declared within the boundary of our group, we copy it to LastItemId so IsItemActive(), IsItemDeactivated() etc. will be functional on the entire group.
|
// If the current ActiveId was declared within the boundary of our group, we copy it to LastItemId so IsItemActive(), IsItemDeactivated() etc. will be functional on the entire group.
|
||||||
// It would be be neater if we replaced window.DC.LastItemId by e.g. 'bool LastItemIsActive', but would put a little more burden on individual widgets.
|
// It would be be neater if we replaced window.DC.LastItemId by e.g. 'bool LastItemIsActive', but would put a little more burden on individual widgets.
|
||||||
// Also if you grep for LastItemId you'll notice it is only used in that context.
|
// Also if you grep for LastItemId you'll notice it is only used in that context.
|
||||||
// (The tests not symmetrical because ActiveIdIsAlive is an ID itself, in order to be able to handle ActiveId being overwritten during the frame.)
|
// (The two tests not the same because ActiveIdIsAlive is an ID itself, in order to be able to handle ActiveId being overwritten during the frame.)
|
||||||
const bool group_contains_curr_active_id = (group_data.BackupActiveIdIsAlive != g.ActiveId) && (g.ActiveIdIsAlive == g.ActiveId) && g.ActiveId;
|
const bool group_contains_curr_active_id = (group_data.BackupActiveIdIsAlive != g.ActiveId) && (g.ActiveIdIsAlive == g.ActiveId) && g.ActiveId;
|
||||||
const bool group_contains_prev_active_id = !group_data.BackupActiveIdPreviousFrameIsAlive && g.ActiveIdPreviousFrameIsAlive;
|
const bool group_contains_prev_active_id = (group_data.BackupActiveIdPreviousFrameIsAlive == false) && (g.ActiveIdPreviousFrameIsAlive == true);
|
||||||
if (group_contains_curr_active_id)
|
if (group_contains_curr_active_id)
|
||||||
window->DC.LastItemId = g.ActiveId;
|
window->DC.LastItemId = g.ActiveId;
|
||||||
else if (group_contains_prev_active_id)
|
else if (group_contains_prev_active_id)
|
||||||
|
@ -786,7 +786,8 @@ struct ImGuiDataTypeTempStorage
|
|||||||
// Type information associated to one ImGuiDataType. Retrieve with DataTypeGetInfo().
|
// Type information associated to one ImGuiDataType. Retrieve with DataTypeGetInfo().
|
||||||
struct ImGuiDataTypeInfo
|
struct ImGuiDataTypeInfo
|
||||||
{
|
{
|
||||||
size_t Size; // Size in byte
|
size_t Size; // Size in bytes
|
||||||
|
const char* Name; // Short descriptive name for the type, for debugging
|
||||||
const char* PrintFmt; // Default printf format for the type
|
const char* PrintFmt; // Default printf format for the type
|
||||||
const char* ScanFmt; // Default scanf format for the type
|
const char* ScanFmt; // Default scanf format for the type
|
||||||
};
|
};
|
||||||
|
@ -1687,21 +1687,21 @@ bool ImGui::Combo(const char* label, int* current_item, const char* items_separa
|
|||||||
|
|
||||||
static const ImGuiDataTypeInfo GDataTypeInfo[] =
|
static const ImGuiDataTypeInfo GDataTypeInfo[] =
|
||||||
{
|
{
|
||||||
{ sizeof(char), "%d", "%d" }, // ImGuiDataType_S8
|
{ sizeof(char), "S8", "%d", "%d" }, // ImGuiDataType_S8
|
||||||
{ sizeof(unsigned char), "%u", "%u" },
|
{ sizeof(unsigned char), "U8", "%u", "%u" },
|
||||||
{ sizeof(short), "%d", "%d" }, // ImGuiDataType_S16
|
{ sizeof(short), "S16", "%d", "%d" }, // ImGuiDataType_S16
|
||||||
{ sizeof(unsigned short), "%u", "%u" },
|
{ sizeof(unsigned short), "U16", "%u", "%u" },
|
||||||
{ sizeof(int), "%d", "%d" }, // ImGuiDataType_S32
|
{ sizeof(int), "S32", "%d", "%d" }, // ImGuiDataType_S32
|
||||||
{ sizeof(unsigned int), "%u", "%u" },
|
{ sizeof(unsigned int), "U32", "%u", "%u" },
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
{ sizeof(ImS64), "%I64d","%I64d" }, // ImGuiDataType_S64
|
{ sizeof(ImS64), "S64", "%I64d","%I64d" }, // ImGuiDataType_S64
|
||||||
{ sizeof(ImU64), "%I64u","%I64u" },
|
{ sizeof(ImU64), "U64", "%I64u","%I64u" },
|
||||||
#else
|
#else
|
||||||
{ sizeof(ImS64), "%lld", "%lld" }, // ImGuiDataType_S64
|
{ sizeof(ImS64), "S64", "%lld", "%lld" }, // ImGuiDataType_S64
|
||||||
{ sizeof(ImU64), "%llu", "%llu" },
|
{ sizeof(ImU64), "U64", "%llu", "%llu" },
|
||||||
#endif
|
#endif
|
||||||
{ sizeof(float), "%f", "%f" }, // ImGuiDataType_Float (float are promoted to double in va_arg)
|
{ sizeof(float), "float", "%f", "%f" }, // ImGuiDataType_Float (float are promoted to double in va_arg)
|
||||||
{ sizeof(double), "%f", "%lf" }, // ImGuiDataType_Double
|
{ sizeof(double), "double","%f", "%lf" }, // ImGuiDataType_Double
|
||||||
};
|
};
|
||||||
IM_STATIC_ASSERT(IM_ARRAYSIZE(GDataTypeInfo) == ImGuiDataType_COUNT);
|
IM_STATIC_ASSERT(IM_ARRAYSIZE(GDataTypeInfo) == ImGuiDataType_COUNT);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user