ocornut 10 years ago
parent
commit
9e8da4dba0
1 changed files with 8 additions and 7 deletions
  1. 8 7
      imgui.cpp

+ 8 - 7
imgui.cpp

@@ -378,6 +378,7 @@
  - plot: "smooth" automatic scale over time, user give an input 0.0(full user scale) 1.0(full derived from value)
  - plot: "smooth" automatic scale over time, user give an input 0.0(full user scale) 1.0(full derived from value)
  - plot: add a helper e.g. Plot(char* label, float value, float time_span=2.0f) that stores values and Plot them for you - probably another function name. and/or automatically allow to plot ANY displayed value (more reliance on stable ID)
  - plot: add a helper e.g. Plot(char* label, float value, float time_span=2.0f) that stores values and Plot them for you - probably another function name. and/or automatically allow to plot ANY displayed value (more reliance on stable ID)
  - file selection widget -> build the tool in our codebase to improve model-dialog idioms
  - file selection widget -> build the tool in our codebase to improve model-dialog idioms
+ - inputfloat: applying arithmetics ops (+,-,*,/) messes up with text edit undo stack.
  - slider: allow using the [-]/[+] buttons used by InputFloat()/InputInt()
  - slider: allow using the [-]/[+] buttons used by InputFloat()/InputInt()
  - slider: initial absolute click is imprecise. change to relative movement slider (same as scrollbar).
  - slider: initial absolute click is imprecise. change to relative movement slider (same as scrollbar).
  - slider: add dragging-based widgets to edit values with mouse (on 2 axises), saving screen real-estate.
  - slider: add dragging-based widgets to edit values with mouse (on 2 axises), saving screen real-estate.
@@ -5557,7 +5558,7 @@ ImGuiID ImGui::GetID(const void* ptr_id)
 
 
 // User can input math operators (e.g. +100) to edit a numerical values.
 // User can input math operators (e.g. +100) to edit a numerical values.
 // NB: only call right after InputText because we are using its InitialValue storage
 // NB: only call right after InputText because we are using its InitialValue storage
-static void ApplyNumericalTextInput(const char* buf, float *v)
+static void InputTextApplyArithmeticOp(const char* buf, float *v)
 {
 {
     while (ImCharIsSpace(*buf))
     while (ImCharIsSpace(*buf))
         buf++;
         buf++;
@@ -5588,17 +5589,17 @@ static void ApplyNumericalTextInput(const char* buf, float *v)
         return;
         return;
 
 
     if (op == '+')
     if (op == '+')
-        *v = ref_v + op_v;
+        *v = ref_v + op_v;  // add (uses "+-" to substract)
     else if (op == '*')
     else if (op == '*')
-        *v = ref_v * op_v;
+        *v = ref_v * op_v;  // multiply
     else if (op == '/')
     else if (op == '/')
     {
     {
-        if (op_v == 0.0f)
+        if (op_v == 0.0f)   // divide
             return;
             return;
         *v = ref_v / op_v;
         *v = ref_v / op_v;
     }
     }
     else
     else
-        *v = op_v;
+        *v = op_v;          // Constant
 }
 }
 
 
 // Create text input in place of a slider (when CTRL+Clicking on slider)
 // Create text input in place of a slider (when CTRL+Clicking on slider)
@@ -5631,7 +5632,7 @@ static bool SliderFloatAsInputText(const char* label, float* v, ImGuiID id, int
     }
     }
     if (value_changed)
     if (value_changed)
     {
     {
-        ApplyNumericalTextInput(text_buf, v);
+        InputTextApplyArithmeticOp(text_buf, v);
     }
     }
     return value_changed;
     return value_changed;
 }
 }
@@ -7310,7 +7311,7 @@ bool ImGui::InputFloat(const char* label, float *v, float step, float step_fast,
     const ImGuiInputTextFlags flags = extra_flags | (ImGuiInputTextFlags_CharsDecimal|ImGuiInputTextFlags_AutoSelectAll);
     const ImGuiInputTextFlags flags = extra_flags | (ImGuiInputTextFlags_CharsDecimal|ImGuiInputTextFlags_AutoSelectAll);
     if (ImGui::InputText("", buf, IM_ARRAYSIZE(buf), flags))
     if (ImGui::InputText("", buf, IM_ARRAYSIZE(buf), flags))
     {
     {
-        ApplyNumericalTextInput(buf, v);
+        InputTextApplyArithmeticOp(buf, v);
         value_changed = true;
         value_changed = true;
     }
     }