# HG changeset patch # User David Barts # Date 1580447036 28800 # Node ID 9890445e4cc4bc39b11e311b8e685997022b4bac # Parent fcf82e3b7e316a2a03668110da0b226abd510466 Didn't like eating its own dog food. Fixed. diff -r fcf82e3b7e31 -r 9890445e4cc4 src/name/blackcap/clipman/Pasteboard.kt --- a/src/name/blackcap/clipman/Pasteboard.kt Thu Jan 30 20:24:02 2020 -0800 +++ b/src/name/blackcap/clipman/Pasteboard.kt Thu Jan 30 21:03:56 2020 -0800 @@ -18,6 +18,10 @@ import java.util.logging.Logger import kotlin.collections.HashMap +/* Kotlin bug: compaion class fails to see these unless they are out here. */ +private val CHARSET = Charset.forName(CHARSET_NAME) +private val HTML_FLAVOR = DataFlavor("text/html; document=all; class=\"[B\"; charset=" + CHARSET_NAME) + /** * Represents an item of data in the clipboard and how to read and * write it. @@ -60,8 +64,6 @@ private class PasteboardData(val item: PasteboardItem): Transferable, ClipboardOwner { - private val CHARSET = Charset.forName(CHARSET_NAME) - private val HTML_FLAVOR = DataFlavor("text/html; document=all; class=\"[B\"; charset=" + CHARSET_NAME) private val _data: HashMap private val flavors: Array @@ -117,17 +119,22 @@ * @return a PasteboardItem? object, null if nothing could be read */ fun read() : PasteboardItem? { + /* println("-- BEGIN FLAVORS --") + CLIPBOARD.availableDataFlavors.forEach { + println(it.mimeType) + } + println("-- END FLAVORS --") */ check() val plain = getClipboardData(DataFlavor.stringFlavor) as String? if (plain == null) { return null } - val html = getClipboardData(DataFlavor.allHtmlFlavor) as String? + val html = getClipboardData(HTML_FLAVOR) as ByteArray? if (html == null) { val rtf = getClipboardData(RTF_FLAVOR) as ByteArray? return if (rtf == null) { Plain(plain) } else { RTF(plain, rtf) } } else { - return HTML(plain, html) + return HTML(plain, html.toString(CHARSET)) } }