tkormann 01/10/08 08:01:25
Modified: sources/org/apache/batik/gvt/renderer BasicTextPainter.java
sources/org/apache/batik/gvt/text ConcreteTextSelector.java
Log:
* bug fix in text selection.
* work around for the deadlock generated by the copyToClipboard method on linux
I still have to send a bug report to SUN :)
Revision Changes Path
1.11 +6 -2
xml-batik/sources/org/apache/batik/gvt/renderer/BasicTextPainter.java
Index: BasicTextPainter.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/BasicTextPainter.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- BasicTextPainter.java 2001/09/27 20:09:11 1.10
+++ BasicTextPainter.java 2001/10/08 15:01:25 1.11
@@ -44,7 +44,7 @@
*
* @author <a href="[EMAIL PROTECTED]>Bill Haneman</a>
* @author <a href="[EMAIL PROTECTED]>Vincent Hardy</a>
- * @version $Id: BasicTextPainter.java,v 1.10 2001/09/27 20:09:11 deweese Exp $
+ * @version $Id: BasicTextPainter.java,v 1.11 2001/10/08 15:01:25 tkormann Exp $
*/
public abstract class BasicTextPainter implements TextPainter {
@@ -78,7 +78,11 @@
* selectAt(); [selectTo(),...], selectTo(); getSelection().
*/
public Mark selectTo(double x, double y, Mark beginMark) {
- return hitTest(x, y, beginMark.getTextNode());
+ if (beginMark == null) {
+ return null;
+ } else {
+ return hitTest(x, y, beginMark.getTextNode());
+ }
}
/**
1.10 +37 -29
xml-batik/sources/org/apache/batik/gvt/text/ConcreteTextSelector.java
Index: ConcreteTextSelector.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/gvt/text/ConcreteTextSelector.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ConcreteTextSelector.java 2001/10/04 17:03:43 1.9
+++ ConcreteTextSelector.java 2001/10/08 15:01:25 1.10
@@ -39,7 +39,7 @@
* A simple implementation of GraphicsNodeMouseListener for text selection.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Bill Haneman</a>
- * @version $Id: ConcreteTextSelector.java,v 1.9 2001/10/04 17:03:43 tkormann Exp $
+ * @version $Id: ConcreteTextSelector.java,v 1.10 2001/10/08 15:01:25 tkormann Exp $
*/
public class ConcreteTextSelector implements Selector {
@@ -311,34 +311,42 @@
}
}
- private void copyToClipboard(Object o) {
- // first see if we can access the clipboard
- SecurityManager securityManager = System.getSecurityManager();
- boolean canAccessClipboard = true;
- if (securityManager != null) {
- try {
- securityManager.checkSystemClipboardAccess();
- } catch (SecurityException e) {
- canAccessClipboard = false;
- }
- }
- if (canAccessClipboard) {
- String label = "";
- if (o instanceof CharacterIterator) {
- CharacterIterator iter = (CharacterIterator) o;
- char[] cbuff = new char[iter.getEndIndex()-iter.getBeginIndex()];
- if (cbuff.length > 0) {
- cbuff[0] = iter.first();
- }
- for (int i=1; i<cbuff.length;++i) {
- cbuff[i] = iter.next();
- }
- label = new String(cbuff);
- }
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
- StringSelection selection = new StringSelection(label);
- clipboard.setContents(selection, selection);
- }
+ private void copyToClipboard(final Object o) {
+ //
+ // HACK: getSystemClipboard sometimes deadlocks on linux when called
+ // from the AWT Thread. The Thread creation prevents that.
+ //
+ new Thread() {
+ public void run() {
+ // first see if we can access the clipboard
+ SecurityManager securityManager = System.getSecurityManager();
+ boolean canAccessClipboard = true;
+ if (securityManager != null) {
+ try {
+ securityManager.checkSystemClipboardAccess();
+ } catch (SecurityException e) {
+ canAccessClipboard = false;
+ }
+ }
+ if (canAccessClipboard) {
+ String label = "";
+ if (o instanceof CharacterIterator) {
+ CharacterIterator iter = (CharacterIterator) o;
+ char[] cbuff = new
char[iter.getEndIndex()-iter.getBeginIndex()];
+ if (cbuff.length > 0) {
+ cbuff[0] = iter.first();
+ }
+ for (int i=1; i<cbuff.length;++i) {
+ cbuff[i] = iter.next();
+ }
+ label = new String(cbuff);
+ }
+ Clipboard clipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
+ StringSelection selection = new StringSelection(label);
+ clipboard.setContents(selection, selection);
+ }
+ }
+ }.start();
}
private void report(GraphicsNodeEvent evt, String message) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]