24 Commits

Author SHA1 Message Date
Kawe Mazidjatari
91d00d0ab3 ImGui: also take vertical scrollbar into account
Show horizontal scrollbar when console text gets overlapped by the vertical scrollbar.
2024-06-01 11:16:47 +02:00
Kawe Mazidjatari
b4ad19275f ImGui: fix console scrollbar feedback loop bug
Make use of newly added flag "ImGuiWindowFlags_OverlayHorizontalScrollbar" as per commit 60e4514b7b5c56db89102a3d66ef28a14118b8fd. Also removed flag "ImGuiWindowFlags_AlwaysVerticalScrollbar", only show the vertical scrollbar when its visible. Enabled code that takes the scrollbar into account in function CTextLogger::EnsureCursorVisible().
2024-04-05 18:42:30 +02:00
Kawe Mazidjatari
d11718a956 ImGui: slightly improve cursor scrolling
Add +1 on the right to prevent the cursor from getting under the perimeter, also add note for when feedback loop issue is fixed to accommodate for scrollbar when scrolling.
2024-04-05 18:24:35 +02:00
Kawe Mazidjatari
431621a1cc ImGui: constify local variables 2024-04-05 18:24:35 +02:00
Kawe Mazidjatari
bd797a92db ImGui: fix cursor scrolling bug
* Fix bug where moving cursor all the way to the top + little bit, and then moving below will also scroll the text position below (cursor sticked to top rect).
* Fix bug where cursor skipped a column when moving it past the right perimeter of the console.
2024-04-05 18:24:35 +02:00
Kawe Mazidjatari
3273b7112c ImGui: better name for blinker timer in logger 2024-04-05 18:24:35 +02:00
Kawe Mazidjatari
264c104b09 ImGui: properly implement shift select
The new method wraps around perfectly when the new selection positions overlap each other. This patch also fixes the shift selection drifting when lines are getting deleted.
2024-04-05 18:24:33 +02:00
Kawe Mazidjatari
6f158811e6 ImGui: fix logger not moving end interactive + reduce duplicate code
Only the start interactive was moved if lines were deleted to clamp the vector size. Also fixed the code so the interactives always move if lines get deleted from before their positions, instead of "if" only the mouse is held down.
2024-04-05 18:24:33 +02:00
Kawe Mazidjatari
bddde13b06 ImGui: use Dear ImGui API for the cursor render blinker 2024-04-05 18:19:41 +02:00
Kawe Mazidjatari
405a16d982 ImGui: fix regression in logger after improving cursor selections
If you triple click a line in the logger, the selection mode will be set to SelectionMode::Line, however, when we drag with the mouse, the selection remain on SelectionMode::Line, causing the cursor to be stuck, which breaks the ability to scroll select. Mode must be set to normal during dragging.
2024-04-05 18:19:41 +02:00
Kawe Mazidjatari
71f151397a ImGui: initialize newly added member vars and fix scrolling regression
The types should be floats instead of ints, the compiler actually compiled it as ints after changing to ImCeil. Made vars of correct type and removed extraneous casts.
2024-04-05 18:19:41 +02:00
Kawe Mazidjatari
ef6cd5e444 ImGui: add ability to reset horizontal scroll position
This allows us to reset the horizontal position only when an user submitted a console command in the text box. We don't want to reset the horizontal position if new lines are added since user could still be reading text that is otherwise clipped away.
2024-04-05 18:19:40 +02:00
Kawe Mazidjatari
56b73af57d ImGui: add multiple fixes and improvements
Add some selection improvements from maintained version at https://github.com/santaclose/ImGuiColorTextEdit.

patch contains:
* advance cursor to end of selection
* add shift + mouse select
2024-04-05 18:19:40 +02:00
Kawe Mazidjatari
dac0ab4d99 ImGui: fix right move
Ctrl + arrow should move to word end, not next word. This also fixes a bug where it would index into into the second character when the line end gets reached.
2024-04-05 18:19:40 +02:00
Kawe Mazidjatari
197772e5f7 ImGui: fix logger not showing horizontal scrollbar when text clips 2024-04-05 18:19:40 +02:00
Kawe Mazidjatari
db2b42cb03 ImGui: heavy optimizations to text logger (WIP)
This code originated from an imgui code editor, where it would make sense to have per-character colors. But for the console, we only ever do 1 color per line. Just store the string and one color instance, this also allows us to just take the string instead of manually reconstructing it which is very slow. The code now also only stores 32bits for color (per line) instead of 128 bits (ImVec4) as we only ever need to convert it once.

As a result, a bunch of rendering code could be dropped, and the pass filter is now also very fast as we don't need to reconstruct the string to check for the filter, we just pass a char* in which doesn't cost any perf.
2024-04-05 18:19:40 +02:00
Kawe Mazidjatari
9e6559a244 ImGui: set X scroll in console window as well
Previously only the Y would reset, making you not see the end if you were scrolled too far in the X.
2024-04-05 18:19:39 +02:00
Kawe Mazidjatari
381f09b1d7 CTextLogger: Skip newline characters when advancing cursor
Skip newline characters to avoid having to issue a move left/right command twice before seeing the cursor move.
2023-04-09 23:33:10 +02:00
Kawe Mazidjatari
dbf3b5b91d Improve ImGui logger API
* Better structure packing (reduced padding).
* 'CTextLogger::GetFilter' now returns a reference to 'm_itFilter'.
* Added additional setters and getters.
2023-04-09 22:35:55 +02:00
Kawe Mazidjatari
a39afd4efe CTextLogger: Manage keyboard and mouse inputs
Manage them under 1 member variable.
2023-04-09 19:53:33 +02:00
Kawe Mazidjatari
d46cc0d6b1 Remove unused member variables 2023-04-09 19:37:00 +02:00
Kawe Mazidjatari
fe2bd4c4d8 Make sure only UTF-8 encoded strings are getting logged
This should fix all bugs and vulnerabilities to the ImGui console. This code has been fuzzed for hours without triggering any exceptions or assertions.
2023-04-09 19:36:30 +02:00
Kawe Mazidjatari
810870b611 Fix buffer overflow in ImGui text logger
Fix a potential buffer overflow that could be triggered by logging invalid characters to the Dear ImGui console. The incrementation of the loop control variable performed by 'UTF8CharLength' was never validated.
2023-04-09 16:15:08 +02:00
Kawe Mazidjatari
f9c5986245 Upgrade Dear ImGui to 1.89.4
Upgrade and light restructure of ImGui directory.
2023-03-29 00:19:19 +02:00