changeset 1909:474f7ab2d1c2 default tip

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 15 Apr 2025 22:12:54 -0600
parents 1d60e0ac3b97
children
files src/luan/modules/swing/TextAreaLuan.java src/luan/modules/swing/TextFieldLuan.java src/luan/modules/swing/Text_area.luan src/luan/modules/swing/Text_component.luan
diffstat 4 files changed, 20 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/modules/swing/TextAreaLuan.java	Tue Apr 15 21:51:41 2025 -0600
+++ b/src/luan/modules/swing/TextAreaLuan.java	Tue Apr 15 22:12:54 2025 -0600
@@ -11,7 +11,6 @@
 import javax.swing.UIManager;
 import javax.swing.Timer;
 import javax.swing.text.DefaultCaret;
-import javax.swing.text.AbstractDocument;
 import javax.swing.text.BadLocationException;
 import goodjava.logging.Logger;
 import goodjava.logging.LoggerFactory;
@@ -110,24 +109,4 @@
 			undo.endTransaction();
 		}
 	}
-
-	@Override public void setText(String t) {
-		UndoManagerLuan undo = getUndoManagerLuan();
-		undo.beginTransaction();
-		try {
-			super.setText(t);
-		} finally {
-			undo.endTransaction();
-		}
-	}
-
-	public void replace(int offset, int length, String text) throws BadLocationException {
-		UndoManagerLuan undo = getUndoManagerLuan();
-		undo.beginTransaction();
-		try {
-			((AbstractDocument)getDocument()).replace(offset,length,text,null);
-		} finally {
-			undo.endTransaction();
-		}
-	}
 }
--- a/src/luan/modules/swing/TextFieldLuan.java	Tue Apr 15 21:51:41 2025 -0600
+++ b/src/luan/modules/swing/TextFieldLuan.java	Tue Apr 15 22:12:54 2025 -0600
@@ -46,4 +46,18 @@
 				g.drawString( symbol, r.x, r.y + ascent );
 		}
 	}
+
+	private UndoManagerLuan getUndoManagerLuan() {
+		return (UndoManagerLuan)getDocument().getProperty("undo");
+	}
+
+	@Override public void paste() {
+		UndoManagerLuan undo = getUndoManagerLuan();
+		undo.beginTransaction();
+		try {
+			super.paste();
+		} finally {
+			undo.endTransaction();
+		}
+	}
 }
--- a/src/luan/modules/swing/Text_area.luan	Tue Apr 15 21:51:41 2025 -0600
+++ b/src/luan/modules/swing/Text_area.luan	Tue Apr 15 22:12:54 2025 -0600
@@ -99,7 +99,9 @@
 		return jtext_area.insert(text,pos-1)
 	end
 	function text_area.replace(start_pos,length,text)
-		return jtext_area.replace(start_pos-1,length,text)
+		text_area._document.run_in_transaction(function()
+			return jtext_area.getDocument().replace(start_pos-1,length,text)
+		end)
 	end
 	set_metatable(text_area,mt)
 	return text_area
--- a/src/luan/modules/swing/Text_component.luan	Tue Apr 15 21:51:41 2025 -0600
+++ b/src/luan/modules/swing/Text_component.luan	Tue Apr 15 22:12:54 2025 -0600
@@ -40,7 +40,9 @@
 	if rtn ~= fail then return end
 	local jcomponent = component.java
 	if key == "text" then
-		jcomponent.setText(value)
+		component._document.run_in_transaction(function()
+			jcomponent.setText(value)
+		end)
 		return
 	end
 	if key == "document" then