Try to fix images with preview in tooling (#1458)

Maybe it will fix #1160
Fix for refactored Paragraph.getHorizontalPosition (#115)
This commit is contained in:
Alexey Tsvetkov
2021-11-26 04:05:36 +03:00
committed by GitHub
parent 76809f3ced
commit 2a3027a5e7
5 changed files with 50 additions and 14 deletions

View File

@@ -7,16 +7,12 @@ package org.jetbrains.compose.desktop.ui.tooling.preview.rpc
import java.io.File
import java.lang.RuntimeException
import java.lang.reflect.Method
import java.net.SocketTimeoutException
import java.net.URLClassLoader
import java.util.concurrent.atomic.AtomicReference
import kotlin.concurrent.thread
import kotlin.system.exitProcess
import kotlin.system.measureTimeMillis
import kotlin.time.DurationUnit
import kotlin.time.ExperimentalTime
import kotlin.time.measureTimedValue
val PREVIEW_HOST_CLASS_NAME: String
get() = PreviewHost::class.java.canonicalName
@@ -111,6 +107,20 @@ internal class PreviewHost(private val log: PreviewLogger, connection: RemoteCon
request: FrameRequest
): ByteArray {
val classloader = classloaderProvider.getClassloader(classpath)
val thread = Thread.currentThread()
val prevContextClassloader = thread.contextClassLoader
thread.contextClassLoader = classloader
return try {
renderFrame(classloader, request)
} finally {
thread.contextClassLoader = prevContextClassloader
}
}
private fun renderFrame(
classloader: ClassLoader,
request: FrameRequest
): ByteArray {
val previewFacade = classloader.loadClass(PREVIEW_FACADE_CLASS_NAME)
val renderArgsClasses = arrayOf(
String::class.java,

View File

@@ -6,9 +6,9 @@ buildscript {
}
dependencies {
// __LATEST_COMPOSE_RELEASE_VERSION__
classpath("org.jetbrains.compose:compose-gradle-plugin:1.0.0-alpha1")
classpath("org.jetbrains.compose:compose-gradle-plugin:0.0.9-preview-images")
// __KOTLIN_COMPOSE_VERSION__
classpath(kotlin("gradle-plugin", version = "1.5.21"))
classpath(kotlin("gradle-plugin", version = "1.5.31"))
}
}

View File

@@ -7,4 +7,8 @@ plugins {
dependencies {
implementation(compose.desktop.currentOs)
}
compose.desktop.application {
mainClass = "PreviewKt"
}

View File

@@ -1,16 +1,38 @@
import androidx.compose.material.Text
import androidx.compose.material.Button
import androidx.compose.runtime.*
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.singleWindowApplication
@Preview
@Composable
fun ExamplePreview() {
var text by remember { mutableStateOf("Hello, World!") }
Button(onClick = {
text = "Hello, Desktop!"
}) {
Text(text)
val buttonColors = ButtonDefaults.buttonColors(
backgroundColor = Color.Blue,
contentColor = Color.White
)
Button(
colors = buttonColors,
modifier = Modifier.padding(5.dp),
onClick = { text = "Hello, Desktop!" }
) {
Row {
Image(
painterResource("compose-logo-white.png"),
"compose-logo",
modifier = Modifier.height(32.dp).width(32.dp),
)
Text(text, modifier = Modifier.padding(top = 8.dp, start = 5.dp))
}
}
}
fun main() = singleWindowApplication {
ExamplePreview()
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB