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]