Skip to content

Commit 39f72d8

Browse files
committed
Add alternative API for cursor and selection position using lightweight out struct
Instead of using out parameters, returns simple structs. This is necessary for python bindings in ImGui Bundle.
1 parent 78dfcb5 commit 39f72d8

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

TextEditor.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,15 @@ class TextEditor {
148148
inline void GetMainCursor(int& line, int& column) const { return getCursor(line, column, cursors.getMainIndex()); }
149149
inline void GetCurrentCursor(int& line, int& column) const { return getCursor(line, column, cursors.getCurrentIndex()); }
150150

151+
// Alternative API for cursor and selection position using lightweight out struct (line and column are zero-based)
152+
struct CursorPosition { int line = 0; int column = 0; };
153+
struct CursorSelection { CursorPosition start; CursorPosition end; };
154+
inline CursorPosition GetMainCursorPosition() const { CursorPosition p; getCursor(p.line, p.column, cursors.getMainIndex()); return p; }
155+
inline CursorPosition GetCurrentCursorPosition() const { CursorPosition p; getCursor(p.line, p.column, cursors.getCurrentIndex()); return p; }
156+
inline CursorPosition GetCursorPosition(size_t cursor) const { CursorPosition p; getCursor(p.line, p.column, cursor); return p; }
157+
inline CursorSelection GetCursorSelection(size_t cursor) const { CursorSelection s; getCursor(s.start.line, s.start.column, s.end.line, s.end.column, cursor); return s; }
158+
inline CursorSelection GetMainCursorSelection() const { return GetCursorSelection(cursors.getMainIndex()); }
159+
151160
// get the word at a screen position (e.g. from ImGui::GetMousePos()) - uses the origin saved during the last Render() call
152161
std::string GetWordAtScreenPos(const ImVec2& screenPos) const;
153162

0 commit comments

Comments
 (0)