Skip to content

Commit 238651f

Browse files
committed
Sliders: shallow rework of TempInputScalar().
Toward #9164, #76
1 parent 14e0c70 commit 238651f

1 file changed

Lines changed: 19 additions & 20 deletions

File tree

imgui_widgets.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3710,29 +3710,28 @@ bool ImGui::TempInputScalar(const ImRect& bb, ImGuiID id, const char* label, ImG
37103710

37113711
ImGuiInputTextFlags flags = ImGuiInputTextFlags_AutoSelectAll | (ImGuiInputTextFlags)ImGuiInputTextFlags_LocalizeDecimalPoint;
37123712
g.LastItemData.ItemFlags |= ImGuiItemFlags_NoMarkEdited; // Because TempInputText() uses ImGuiInputTextFlags_MergedItem it doesn't submit a new item, so we poke LastItemData.
3713-
bool value_changed = false;
3714-
if (TempInputText(bb, id, label, data_buf, IM_COUNTOF(data_buf), flags))
3715-
{
3716-
// Backup old value
3717-
size_t data_type_size = type_info->Size;
3718-
ImGuiDataTypeStorage data_backup;
3719-
memcpy(&data_backup, p_data, data_type_size);
3713+
if (!TempInputText(bb, id, label, data_buf, IM_COUNTOF(data_buf), flags))
3714+
return false;
37203715

3721-
// Apply new value (or operations) then clamp
3722-
DataTypeApplyFromText(data_buf, data_type, p_data, format, NULL);
3723-
if (p_clamp_min || p_clamp_max)
3724-
{
3725-
if (p_clamp_min && p_clamp_max && DataTypeCompare(data_type, p_clamp_min, p_clamp_max) > 0)
3726-
ImSwap(p_clamp_min, p_clamp_max);
3727-
DataTypeClamp(data_type, p_data, p_clamp_min, p_clamp_max);
3728-
}
3716+
// Backup old value
3717+
size_t data_type_size = type_info->Size;
3718+
ImGuiDataTypeStorage data_backup;
3719+
memcpy(&data_backup, p_data, data_type_size);
37293720

3730-
// Only mark as edited if new value is different
3731-
g.LastItemData.ItemFlags &= ~ImGuiItemFlags_NoMarkEdited;
3732-
value_changed = memcmp(&data_backup, p_data, data_type_size) != 0;
3733-
if (value_changed)
3734-
MarkItemEdited(id);
3721+
// Apply new value (or operations) then clamp
3722+
DataTypeApplyFromText(data_buf, data_type, p_data, format, NULL);
3723+
if (p_clamp_min || p_clamp_max)
3724+
{
3725+
if (p_clamp_min && p_clamp_max && DataTypeCompare(data_type, p_clamp_min, p_clamp_max) > 0)
3726+
ImSwap(p_clamp_min, p_clamp_max);
3727+
DataTypeClamp(data_type, p_data, p_clamp_min, p_clamp_max);
37353728
}
3729+
3730+
// Only mark as edited if new value is different
3731+
g.LastItemData.ItemFlags &= ~ImGuiItemFlags_NoMarkEdited;
3732+
bool value_changed = memcmp(&data_backup, p_data, data_type_size) != 0;
3733+
if (value_changed)
3734+
MarkItemEdited(id);
37363735
return value_changed;
37373736
}
37383737

0 commit comments

Comments
 (0)