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

Print this page

        

@@ -23,12 +23,14 @@
  * 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,36 +65,44 @@
         // 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);
+        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 java.io.NotSerializableException)) {
+                        e instanceof NotSerializableException)) {
                     e.printStackTrace();
                 }
             }
         }
+
+        notifyChanged();
     }
 
-    private void lostSelectionOwnershipImpl() {
+    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() {