|
|
|
@ -1982,26 +1982,19 @@ struct ExampleAppLog |
|
|
|
|
Filter.Draw("Filter", -100.0f); |
|
|
|
|
ImGui::Separator(); |
|
|
|
|
ImGui::BeginChild("scrolling"); |
|
|
|
|
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0,0)); |
|
|
|
|
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0,1)); |
|
|
|
|
if (copy) ImGui::LogToClipboard(); |
|
|
|
|
|
|
|
|
|
// We provide coarse vertical clipping of the filtered result to make it a little faster.
|
|
|
|
|
if (Filter.IsActive()) |
|
|
|
|
{ |
|
|
|
|
int display_start = 0, display_end = 0, displayed_count = 0; |
|
|
|
|
ImGui::CalcListClipping(INT_MAX, ImGui::GetTextLineHeight(), &display_start, &display_end); |
|
|
|
|
const char* buf_begin = Buf.begin(); |
|
|
|
|
const char* line = buf_begin; |
|
|
|
|
for (int line_no = 0; line != NULL; line_no++) |
|
|
|
|
{ |
|
|
|
|
const char* line_end = (line_no < LineOffsets.Size) ? buf_begin + LineOffsets[line_no] : NULL; |
|
|
|
|
if (Filter.PassFilter(line, line_end)) |
|
|
|
|
{ |
|
|
|
|
if (displayed_count >= display_start && displayed_count < display_end) |
|
|
|
|
ImGui::TextUnformatted(line, line_end); |
|
|
|
|
displayed_count++; |
|
|
|
|
} |
|
|
|
|
line = line_end ? (line_end + 1) : NULL; |
|
|
|
|
ImGui::TextUnformatted(line, line_end); |
|
|
|
|
line = line_end && line_end[1] ? line_end + 1 : NULL; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|