src/macosx/classes/sun/lwawt/macosx/CClipboard.java

Print this page

        

*** 23,34 **** --- 23,36 ---- * questions. */ package sun.lwawt.macosx; + import java.awt.*; import java.awt.datatransfer.*; import java.io.IOException; + import java.io.NotSerializableException; import java.util.*; import sun.awt.datatransfer.*;
*** 63,98 **** // it to the Clipboard. DataTransferer dataTransferer = DataTransferer.getInstance(); long[] formatArray = dataTransferer.getFormatsForTransferableAsArray(contents, flavorMap); declareTypes(formatArray, this); ! Map<Long, DataFlavor> formatMap = DataTransferer.getInstance().getFormatsForTransferable(contents, flavorMap); ! ! for (Iterator<Long> iter = formatMap.keySet().iterator(); iter.hasNext(); ) { ! Long lFormat = iter.next(); ! long format = lFormat.longValue(); ! DataFlavor flavor = formatMap.get(lFormat); try { byte[] bytes = DataTransferer.getInstance().translateTransferable(contents, flavor, format); setData(bytes, format); } catch (IOException e) { // Fix 4696186: don't print exception if data with // javaJVMLocalObjectMimeType failed to serialize. // May remove this if-check when 5078787 is fixed. if (!(flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType) && ! e instanceof java.io.NotSerializableException)) { e.printStackTrace(); } } } } ! private void lostSelectionOwnershipImpl() { lostOwnershipImpl(); } protected native long[] getClipboardFormats(); protected native byte[] getClipboardData(long format) throws IOException; // 1.5 peer method protected void unregisterClipboardViewerChecked() { --- 65,108 ---- // it to the Clipboard. DataTransferer dataTransferer = DataTransferer.getInstance(); long[] formatArray = dataTransferer.getFormatsForTransferableAsArray(contents, flavorMap); declareTypes(formatArray, this); ! Map<Long, DataFlavor> formatMap = dataTransferer.getFormatsForTransferable(contents, flavorMap); ! for (Map.Entry<Long, DataFlavor> entry : formatMap.entrySet()) { ! long format = entry.getKey(); ! DataFlavor flavor = entry.getValue(); try { byte[] bytes = DataTransferer.getInstance().translateTransferable(contents, flavor, format); setData(bytes, format); } catch (IOException e) { // Fix 4696186: don't print exception if data with // javaJVMLocalObjectMimeType failed to serialize. // May remove this if-check when 5078787 is fixed. if (!(flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType) && ! e instanceof NotSerializableException)) { e.printStackTrace(); } } } + + notifyChanged(); } ! private void notifyLostOwnership() { lostOwnershipImpl(); } + private static void notifyChanged() { + CClipboard clipboard = (CClipboard) Toolkit.getDefaultToolkit().getSystemClipboard(); + if (!clipboard.areFlavorListenersRegistered()) { + return; + } + clipboard.checkChange(clipboard.getClipboardFormats()); + } + protected native long[] getClipboardFormats(); protected native byte[] getClipboardData(long format) throws IOException; // 1.5 peer method protected void unregisterClipboardViewerChecked() {