Browse Source

InputText(): removed a call to strlen() in the active edit path (#200)

ocornut 10 years ago
parent
commit
b524c59c70
1 changed files with 11 additions and 15 deletions
  1. 11 15
      imgui.cpp

+ 11 - 15
imgui.cpp

@@ -6539,22 +6539,18 @@ static ImVec2 InputTextCalcTextSizeW(const ImWchar* text_begin, const ImWchar* t
     const ImWchar* s = text_begin;
     const ImWchar* s = text_begin;
     while (s < text_end)
     while (s < text_end)
     {
     {
-        const unsigned int c = (unsigned int)(*s++);
-
-        if (c < 32)
+        unsigned int c = (unsigned int)(*s++);
+        if (c == '\n')
         {
         {
-            if (c == '\n')
-            {
-                text_size.x = ImMax(text_size.x, line_width);
-                text_size.y += line_height;
-                line_width = 0.0f;
-                if (stop_on_new_line)
-                    break;
-                continue;
-            }
-            if (c == '\r')
-                continue;
+            text_size.x = ImMax(text_size.x, line_width);
+            text_size.y += line_height;
+            line_width = 0.0f;
+            if (stop_on_new_line)
+                break;
+            continue;
         }
         }
+        if (c == '\r')
+            continue;
 
 
         const float char_width = font->GetCharAdvance((unsigned short)c) * scale;
         const float char_width = font->GetCharAdvance((unsigned short)c) * scale;
         line_width += char_width;
         line_width += char_width;
@@ -7165,7 +7161,7 @@ static bool InputTextEx(const char* label, char* buf, size_t buf_size, const ImV
             }
             }
         }
         }
 
 
-        draw_window->DrawList->AddText(g.Font, g.FontSize, render_pos - render_scroll, draw_window->Color(ImGuiCol_Text), buf, NULL, 0.0f, is_multiline ? NULL : &clip_rect);
+        draw_window->DrawList->AddText(g.Font, g.FontSize, render_pos - render_scroll, draw_window->Color(ImGuiCol_Text), buf, buf+edit_state.CurLenA, 0.0f, is_multiline ? NULL : &clip_rect);
 
 
         // Draw blinking cursor
         // Draw blinking cursor
         ImVec2 cursor_screen_pos = render_pos + cursor_offset - ImVec2(edit_state.ScrollX, 0.0f);
         ImVec2 cursor_screen_pos = render_pos + cursor_offset - ImVec2(edit_state.ScrollX, 0.0f);