summaryrefslogtreecommitdiff
path: root/src/Fl_Text_Editor.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2002-11-05 19:53:50 +0000
committerMatthias Melcher <fltk@matthiasm.com>2002-11-05 19:53:50 +0000
commit3473297741ac6224b9c461aba98b73b3217b808f (patch)
tree27eb7285c2d1b4b6fe321d68813a4e1b060887f1 /src/Fl_Text_Editor.cxx
parent66dabdb8f53231eff304cbb944cd900ddbce00af (diff)
Added 'Undo' to Fl_Text_Editor by reusing some of the Fl_Input_ code. I tried many cases and it seems to work fine.
Matthias git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2825 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Text_Editor.cxx')
-rw-r--r--src/Fl_Text_Editor.cxx19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/Fl_Text_Editor.cxx b/src/Fl_Text_Editor.cxx
index 4d44e8529..eda8a0adb 100644
--- a/src/Fl_Text_Editor.cxx
+++ b/src/Fl_Text_Editor.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Text_Editor.cxx,v 1.9.2.11 2002/11/05 06:45:40 matthiaswm Exp $"
+// "$Id: Fl_Text_Editor.cxx,v 1.9.2.12 2002/11/05 19:53:50 matthiaswm Exp $"
//
// Copyright 2001-2002 by Bill Spitzak and others.
// Original code Copyright Mark Edel. Permission to distribute under
@@ -93,8 +93,8 @@ static struct {
{ FL_Page_Up, FL_CTRL|FL_SHIFT, Fl_Text_Editor::kf_c_s_move },
{ FL_Page_Down, FL_CTRL|FL_SHIFT, Fl_Text_Editor::kf_c_s_move },
//{ FL_Clear, 0, Fl_Text_Editor::delete_to_eol },
-//{ 'z', FL_CTRL, Fl_Text_Editor::undo },
-//{ '/', FL_CTRL, Fl_Text_Editor::undo },
+ { 'z', FL_CTRL, Fl_Text_Editor::kf_undo },
+ { '/', FL_CTRL, Fl_Text_Editor::kf_undo },
{ 'x', FL_CTRL, Fl_Text_Editor::kf_cut },
{ FL_Delete, FL_SHIFT, Fl_Text_Editor::kf_cut },
{ 'c', FL_CTRL, Fl_Text_Editor::kf_copy },
@@ -105,6 +105,7 @@ static struct {
#ifdef __APPLE__
// Define CMD+key accelerators...
+ { 'z', FL_COMMAND, Fl_Text_Editor::kf_undo },
{ 'x', FL_COMMAND, Fl_Text_Editor::kf_cut },
{ 'c', FL_COMMAND, Fl_Text_Editor::kf_copy },
{ 'v', FL_COMMAND, Fl_Text_Editor::kf_paste },
@@ -386,6 +387,16 @@ int Fl_Text_Editor::kf_select_all(int, Fl_Text_Editor* e) {
return 1;
}
+int Fl_Text_Editor::kf_undo(int , Fl_Text_Editor* e) {
+ e->buffer()->unselect();
+ int crsr;
+ int ret = e->buffer()->undo(&crsr);
+ e->insert_position(crsr);
+ e->show_insert_position();
+ if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed();
+ return ret;
+}
+
int Fl_Text_Editor::handle_key() {
// Call fltk's rules to try to turn this into a printing character.
@@ -466,5 +477,5 @@ int Fl_Text_Editor::handle(int event) {
}
//
-// End of "$Id: Fl_Text_Editor.cxx,v 1.9.2.11 2002/11/05 06:45:40 matthiaswm Exp $".
+// End of "$Id: Fl_Text_Editor.cxx,v 1.9.2.12 2002/11/05 19:53:50 matthiaswm Exp $".
//