From 8d8bd01d806257367b1a006f0da23b926b8f8ae3 Mon Sep 17 00:00:00 2001 From: Stef Tervelde Date: Sun, 9 Feb 2025 13:54:07 +0100 Subject: [PATCH] Welcome Screen: Close Functionality --- app/src/processing/app/ui/Welcome.kt | 5 ++- app/src/processing/app/ui/WelcomeToBeta.kt | 5 ++- app/src/processing/app/ui/theme/Window.kt | 47 ++++++++++++---------- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/app/src/processing/app/ui/Welcome.kt b/app/src/processing/app/ui/Welcome.kt index 98c8c2ed4..492410b88 100644 --- a/app/src/processing/app/ui/Welcome.kt +++ b/app/src/processing/app/ui/Welcome.kt @@ -250,7 +250,10 @@ class Welcome @Throws(IOException::class) constructor(base: Base) { text = locale["welcome.action.startup"], ) } - PDEButton(onClick = { println("Open") }) { + val window = LocalWindow.current + PDEButton(onClick = { + window.dispose() + }) { Text( text = locale["welcome.action.go"], modifier = Modifier diff --git a/app/src/processing/app/ui/WelcomeToBeta.kt b/app/src/processing/app/ui/WelcomeToBeta.kt index ac8302fb8..8f50ef6f8 100644 --- a/app/src/processing/app/ui/WelcomeToBeta.kt +++ b/app/src/processing/app/ui/WelcomeToBeta.kt @@ -54,7 +54,7 @@ class WelcomeToBeta { } @Composable - fun welcomeToBeta(close: () -> Unit = {}) { + fun welcomeToBeta() { Row( modifier = Modifier .padding(20.dp, 10.dp) @@ -87,9 +87,10 @@ class WelcomeToBeta { text = locale["beta.message"] ) Row { + val window = LocalWindow.current Spacer(modifier = Modifier.weight(1f)) PDEButton(onClick = { - close() + window.dispose() }) { Text( text = locale["beta.button"], diff --git a/app/src/processing/app/ui/theme/Window.kt b/app/src/processing/app/ui/theme/Window.kt index 23b71ebad..0cb419332 100644 --- a/app/src/processing/app/ui/theme/Window.kt +++ b/app/src/processing/app/ui/theme/Window.kt @@ -1,18 +1,15 @@ package processing.app.ui.theme -import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme.colors import androidx.compose.material.Surface -import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.compositionLocalOf import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.awt.ComposePanel -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Window @@ -20,12 +17,12 @@ import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.application import androidx.compose.ui.window.rememberWindowState import com.formdev.flatlaf.util.SystemInfo -import processing.app.ui.WelcomeToBeta.Companion.welcomeToBeta import java.awt.event.KeyAdapter import java.awt.event.KeyEvent import javax.swing.JFrame +val LocalWindow = compositionLocalOf { error("No Window Set") } class PDEWindow(titleKey: String = "", fullWindowContent: Boolean = false, content: @Composable () -> Unit): JFrame(){ init{ @@ -39,19 +36,22 @@ class PDEWindow(titleKey: String = "", fullWindowContent: Boolean = false, conte defaultCloseOperation = DISPOSE_ON_CLOSE ComposePanel().apply { setContent { - ProcessingTheme { - val locale = LocalLocale.current - this@PDEWindow.title = locale[titleKey] - LaunchedEffect(locale){ - this@PDEWindow.pack() - this@PDEWindow.setLocationRelativeTo(null) - } + CompositionLocalProvider(LocalWindow provides this@PDEWindow) { + ProcessingTheme { + val locale = LocalLocale.current + this@PDEWindow.title = locale[titleKey] + LaunchedEffect(locale) { + this@PDEWindow.pack() + this@PDEWindow.setLocationRelativeTo(null) + } - Box(modifier = Modifier - .padding(top = if (mac && !fullWindowContent) 22.dp else 0.dp) - ) { - content() + Box( + modifier = Modifier + .padding(top = if (mac && !fullWindowContent) 22.dp else 0.dp) + ) { + content() + } } } } @@ -90,11 +90,14 @@ fun pdeapplication(titleKey: String = "", fullWindowContent: Boolean = false,con window.pack() window.setLocationRelativeTo(null) } - Surface(color = colors.background) { - Box(modifier = Modifier - .padding(top = if (mac && !fullWindowContent) 22.dp else 0.dp) - ) { - content() + CompositionLocalProvider(LocalWindow provides window) { + Surface(color = colors.background) { + Box( + modifier = Modifier + .padding(top = if (mac && !fullWindowContent) 22.dp else 0.dp) + ) { + content() + } } } }