Unverified Commit 534d24a8 authored by Andrew Rudenko's avatar Andrew Rudenko Committed by GitHub

Allow passing Accessible constructor to SkiaLayer. (#251)

parent 575edff1
package org.jetbrains.skiko
import java.awt.Canvas
import java.awt.Component
import java.awt.Graphics
import java.awt.event.InputMethodEvent
import javax.accessibility.Accessible
import javax.accessibility.AccessibleContext
internal open class HardwareLayer : Canvas() {
internal open class HardwareLayer(
externalAccessibleFactory: ((Component) -> Accessible)? = null
) : Canvas() {
companion object {
init {
Library.load()
......@@ -66,4 +71,10 @@ internal open class HardwareLayer : Canvas() {
private external fun getContentHandle(platformInfo: Long): Long
private external fun getWindowHandle(platformInfo: Long): Long
private val _externalAccessible = externalAccessibleFactory?.invoke(this)
override fun getAccessibleContext(): AccessibleContext {
val res = _externalAccessible?.accessibleContext
return res ?: super.getAccessibleContext()
}
}
\ No newline at end of file
......@@ -14,14 +14,17 @@ import org.jetbrains.skia.Rect
import org.jetbrains.skiko.context.ContextHandler
import org.jetbrains.skiko.redrawer.Redrawer
import java.awt.Color
import java.awt.Component
import java.awt.Graphics
import java.awt.event.*
import java.awt.im.InputMethodRequests
import java.util.concurrent.CancellationException
import javax.accessibility.Accessible
import javax.swing.JPanel
import javax.swing.SwingUtilities.isEventDispatchThread
actual open class SkiaLayer internal constructor(
externalAccessibleFactory: ((Component) -> Accessible)? = null,
private val properties: SkiaLayerProperties = makeDefaultSkiaLayerProperties(),
private val renderFactory: RenderFactory
) : JPanel() {
......@@ -41,8 +44,9 @@ actual open class SkiaLayer internal constructor(
internal val backedLayer: HardwareLayer
constructor(
properties: SkiaLayerProperties = makeDefaultSkiaLayerProperties()
) : this(properties, RenderFactory.Default)
properties: SkiaLayerProperties = makeDefaultSkiaLayerProperties(),
externalAccessibleFactory: ((Component) -> Accessible)? = null
) : this(externalAccessibleFactory, properties, RenderFactory.Default)
val canvas: java.awt.Canvas
get() = backedLayer
......@@ -51,7 +55,7 @@ actual open class SkiaLayer internal constructor(
isOpaque = false
background = Color(0, 0, 0, 0)
layout = null
backedLayer = object : HardwareLayer() {
backedLayer = object : HardwareLayer(externalAccessibleFactory) {
override fun paint(g: Graphics) {
// 1. JPanel.paint is not always called (in rare cases).
// For example if we call 'jframe.isResizable = false` on Ubuntu
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment