FullScreenWindow.kt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package eu.mjdev.desktop.windows
  2. import androidx.compose.desktop.ui.tooling.preview.Preview
  3. import androidx.compose.runtime.Composable
  4. import androidx.compose.ui.Alignment
  5. import androidx.compose.ui.input.key.KeyEvent
  6. import androidx.compose.ui.window.WindowPlacement
  7. import androidx.compose.ui.window.WindowPosition
  8. import eu.mjdev.desktop.provider.DesktopProvider
  9. import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
  10. import eu.mjdev.desktop.provider.DesktopScope.Companion.withDesktopScope
  11. import eu.mjdev.desktop.windows.ChromeWindowState.Companion.rememberChromeWindowState
  12. @Suppress("FunctionName")
  13. @Preview
  14. @Composable
  15. fun FullScreenWindow(
  16. name: String? = null,
  17. api: DesktopProvider = LocalDesktop.current,
  18. enabled: Boolean = true,
  19. focusable: Boolean = true,
  20. alwaysOnBottom: Boolean = false,
  21. onOpened: ChromeWindowState.() -> Unit = {},
  22. onCloseRequest: () -> Unit = {},
  23. onPreviewKeyEvent: (KeyEvent) -> Boolean = { false },
  24. onKeyEvent: (KeyEvent) -> Boolean = { false },
  25. windowState: ChromeWindowState = rememberChromeWindowState(
  26. placement = WindowPlacement.Maximized,
  27. size = api.containerSize,
  28. position = WindowPosition.Aligned(Alignment.Center)
  29. ),
  30. onCreated: ChromeWindowState.() -> Unit = {},
  31. onFocusChange: ChromeWindowState.(Boolean) -> Unit = {},
  32. content: @Composable () -> Unit = {}
  33. ) = withDesktopScope {
  34. ChromeWindow(
  35. name = name ?: "FullScreenWindow",
  36. visible = true,
  37. enabled = enabled,
  38. resizable = false,
  39. transparent = true,
  40. focusable = focusable,
  41. alwaysOnTop = false,
  42. alwaysOnBottom = alwaysOnBottom,
  43. onPreviewKeyEvent = onPreviewKeyEvent,
  44. onKeyEvent = onKeyEvent,
  45. onCloseRequest = onCloseRequest,
  46. onCreated = onCreated,
  47. onOpened = onOpened,
  48. onFocusChange = onFocusChange,
  49. windowState = windowState,
  50. content = content
  51. )
  52. }