From 73d7cbf3d3afa8063a8a19ac84456ab607dc1338 Mon Sep 17 00:00:00 2001 From: mark-summerfield Date: Sat, 1 Jul 2023 10:31:30 +0100 Subject: [PATCH] Added TextEditor Undo and Redo support. --- text.cxx | 8 ++++++++ text.go | 15 +++++++++++++++ text.h | 4 +++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/text.cxx b/text.cxx index 949316e..cac10e1 100644 --- a/text.cxx +++ b/text.cxx @@ -167,10 +167,18 @@ void go_fltk_TextEditor_paste(Fl_Text_Editor *e) { Fl_Text_Editor::kf_paste(0, e); } +void go_fltk_TextEditor_redo(Fl_Text_Editor *e) { + Fl_Text_Editor::kf_redo(0, e); +} + void go_fltk_TextEditor_select_all(Fl_Text_Editor *e) { Fl_Text_Editor::kf_select_all(0, e); } +void go_fltk_TextEditor_undo(Fl_Text_Editor *e) { + Fl_Text_Editor::kf_undo(0, e); +} + // --- Text Buffer --- void modify_callback_handler(int pos, int nInserted, int nDeleted, int nRestyled, const char *deletedText, void *cbArg) { diff --git a/text.go b/text.go index 6e7d179..a9f1b10 100644 --- a/text.go +++ b/text.go @@ -432,22 +432,37 @@ func (t *TextEditor) Insert() { C.go_fltk_TextEditor_insert((*C.Fl_Text_Editor)(t.ptr())) } +// Cut cuts the selected text from the editor's buffer into the clipboard. func (t *TextEditor) Cut() { C.go_fltk_TextEditor_cut((*C.Fl_Text_Editor)(t.ptr())) } +// Delete deletes the selected text from the editor's buffer. func (t *TextEditor) Delete() { C.go_fltk_TextEditor_delete((*C.Fl_Text_Editor)(t.ptr())) } +// Paste pastes the clipboard's text into the editor's buffer at the +// insertion point. func (t *TextEditor) Paste() { C.go_fltk_TextEditor_paste((*C.Fl_Text_Editor)(t.ptr())) } +// Redo redoes the last undone edit. +func (t *TextEditor) Redo() { + C.go_fltk_TextEditor_redo((*C.Fl_Text_Editor)(t.ptr())) +} + +// SelectAll selects all the editor's text. func (t *TextEditor) SelectAll() { C.go_fltk_TextEditor_select_all((*C.Fl_Text_Editor)(t.ptr())) } +// Undo undoes the last edit. +func (t *TextEditor) Undo() { + C.go_fltk_TextEditor_undo((*C.Fl_Text_Editor)(t.ptr())) +} + // NewTextEditor returns a TextEditor. // // Example: diff --git a/text.h b/text.h index 73b472f..a533977 100644 --- a/text.h +++ b/text.h @@ -18,7 +18,9 @@ extern "C" { extern void go_fltk_TextEditor_cut(Fl_Text_Editor *e); extern void go_fltk_TextEditor_delete(Fl_Text_Editor *e); extern void go_fltk_TextEditor_paste(Fl_Text_Editor *e); + extern void go_fltk_TextEditor_redo(Fl_Text_Editor *e); extern void go_fltk_TextEditor_select_all(Fl_Text_Editor *e); + extern void go_fltk_TextEditor_undo(Fl_Text_Editor *e); extern GText_Display *go_fltk_new_TextDisplay(int x, int y, int w, int h, const char *text); extern void go_fltk_TextDisplay_set_buffer(Fl_Text_Display *d, Fl_Text_Buffer *buf); @@ -30,7 +32,7 @@ extern "C" { extern int go_fltk_TextDisplay_move_up(Fl_Text_Display *d); extern int go_fltk_TextDisplay_move_down(Fl_Text_Display *d); extern void go_fltk_TextDisplay_show_insert_position(Fl_Text_Display *d); - extern void go_fltk_TextDisplay_hide_cursor(Fl_Text_Display *d); + extern void go_fltk_TextDisplay_hide_cursor(Fl_Text_Display *d); extern unsigned int go_fltk_TextDisplay_text_color(Fl_Text_Display *d); extern void go_fltk_TextDisplay_set_text_color(Fl_Text_Display* d, unsigned int color); extern int go_fltk_TextDisplay_text_font(Fl_Text_Display *d);