This commit is contained in:
ocornut 2015-08-05 17:38:17 -06:00
parent 4b4f6d78ee
commit f2b652a39e

View File

@ -392,8 +392,6 @@
- input number: optional range min/max for Input*() functions - input number: optional range min/max for Input*() functions
- input number: holding [-]/[+] buttons could increase the step speed non-linearly (or user-controlled) - input number: holding [-]/[+] buttons could increase the step speed non-linearly (or user-controlled)
- input number: use mouse wheel to step up/down - input number: use mouse wheel to step up/down
- input number: non-decimal input.
- input number: display and input as hexadecimal
- input number: applying arithmetics ops (+,-,*,/) messes up with text edit undo stack. - input number: applying arithmetics ops (+,-,*,/) messes up with text edit undo stack.
- text: proper alignment options - text: proper alignment options
- layout: horizontal layout helper (#97) - layout: horizontal layout helper (#97)
@ -406,7 +404,7 @@
- popup: border options. richer api like BeginChild() perhaps? (#197) - popup: border options. richer api like BeginChild() perhaps? (#197)
- combo: sparse combo boxes (via function call?) - combo: sparse combo boxes (via function call?)
- combo: contents should extends to fit label if combo widget is small - combo: contents should extends to fit label if combo widget is small
- combo/listbox: keyboard control. need inputtext like non-active focus + key handling. considering keybord for custom listbox (pr #203) - combo/listbox: keyboard control. need InputText-like non-active focus + key handling. considering keybord for custom listbox (pr #203)
- listbox: multiple selection - listbox: multiple selection
- listbox: user may want to initial scroll to focus on the one selected value? - listbox: user may want to initial scroll to focus on the one selected value?
- listbox: keyboard navigation. - listbox: keyboard navigation.
@ -5840,7 +5838,7 @@ enum ImGuiDataTypeOp
ImGuiDataTypeOp_Sub ImGuiDataTypeOp_Sub
}; };
static inline void DataTypeFormat(ImGuiDataType data_type, void* data_ptr, const char* display_format, char* buf, int buf_size) static inline void DataTypeFormatString(ImGuiDataType data_type, void* data_ptr, const char* display_format, char* buf, int buf_size)
{ {
if (data_type == ImGuiDataType_Int) if (data_type == ImGuiDataType_Int)
ImFormatString(buf, buf_size, display_format, *(int*)data_ptr); ImFormatString(buf, buf_size, display_format, *(int*)data_ptr);
@ -5848,7 +5846,7 @@ static inline void DataTypeFormat(ImGuiDataType data_type, void* data_ptr, const
ImFormatString(buf, buf_size, display_format, *(float*)data_ptr); ImFormatString(buf, buf_size, display_format, *(float*)data_ptr);
} }
static inline void DataTypeFormat(ImGuiDataType data_type, void* data_ptr, int decimal_precision, char* buf, int buf_size) static inline void DataTypeFormatString(ImGuiDataType data_type, void* data_ptr, int decimal_precision, char* buf, int buf_size)
{ {
if (data_type == ImGuiDataType_Int) if (data_type == ImGuiDataType_Int)
{ {
@ -5954,7 +5952,7 @@ static bool InputScalarAsWidgetReplacement(const ImRect& aabb, const char* label
window->FocusItemUnregister(); window->FocusItemUnregister();
char buf[32]; char buf[32];
DataTypeFormat(data_type, data_ptr, decimal_precision, buf, IM_ARRAYSIZE(buf)); DataTypeFormatString(data_type, data_ptr, decimal_precision, buf, IM_ARRAYSIZE(buf));
bool value_changed = InputTextEx(label, buf, IM_ARRAYSIZE(buf), aabb.GetSize() - g.Style.FramePadding*2.0f, ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_AutoSelectAll); bool value_changed = InputTextEx(label, buf, IM_ARRAYSIZE(buf), aabb.GetSize() - g.Style.FramePadding*2.0f, ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_AutoSelectAll);
if (g.ScalarAsInputTextId == 0) if (g.ScalarAsInputTextId == 0)
{ {
@ -7690,7 +7688,7 @@ static bool InputScalarEx(const char* label, ImGuiDataType data_type, void* data
ImGui::PushItemWidth(ImMax(1.0f, w - (button_sz.x + style.ItemInnerSpacing.x)*2)); ImGui::PushItemWidth(ImMax(1.0f, w - (button_sz.x + style.ItemInnerSpacing.x)*2));
char buf[64]; char buf[64];
DataTypeFormat(data_type, data_ptr, scalar_format, buf, IM_ARRAYSIZE(buf)); DataTypeFormatString(data_type, data_ptr, scalar_format, buf, IM_ARRAYSIZE(buf));
bool value_changed = false; bool value_changed = false;
if (!(extra_flags & ImGuiInputTextFlags_CharsHexadecimal)) if (!(extra_flags & ImGuiInputTextFlags_CharsHexadecimal))
@ -7744,6 +7742,7 @@ bool ImGui::InputFloat(const char* label, float* v, float step, float step_fast,
bool ImGui::InputInt(const char* label, int* v, int step, int step_fast, ImGuiInputTextFlags extra_flags) bool ImGui::InputInt(const char* label, int* v, int step, int step_fast, ImGuiInputTextFlags extra_flags)
{ {
// Hexadecimal input provided as a convenience but the flag name is awkward. Typically you'd use InputText() to parse your own data, if you want to handle prefixes.
const char* scalar_format = (extra_flags & ImGuiInputTextFlags_CharsHexadecimal) ? "%08X" : "%d"; const char* scalar_format = (extra_flags & ImGuiInputTextFlags_CharsHexadecimal) ? "%08X" : "%d";
return InputScalarEx(label, ImGuiDataType_Int, (void*)v, (void*)(step>0.0f ? &step : NULL), (void*)(step_fast>0.0f ? &step_fast : NULL), scalar_format, extra_flags); return InputScalarEx(label, ImGuiDataType_Int, (void*)v, (void*)(step>0.0f ? &step : NULL), (void*)(step_fast>0.0f ? &step_fast : NULL), scalar_format, extra_flags);
} }