diff --git a/CHANGELOG.md b/CHANGELOG.md index d8566e3038..e6a41212ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,45 @@ +# 1.1.0 (Feb 2022) +## Desktop + +### Features +- [Implement experimental accessebility support for Windows](https://github.com/JetBrains/compose-jb/tree/master/tutorials/Accessibility) +- [Implement accessebility focus tracking by Tab](https://github.com/JetBrains/compose-jb/issues/1772) +- All bugfixes/features between Jetpack Compose 1.1.0-beta02 and 1.1.0 (see the release notes for each module [here](https://developer.android.com/jetpack/androidx/releases/compose)) +- Android target depends on Jetpack Compose 1.1.0. + +### Fixes +- Fixes for TextField ([1](https://github.com/JetBrains/compose-jb/issues/1834), [2](https://github.com/JetBrains/compose-jb/issues/1615), [3](https://github.com/JetBrains/compose-jb/issues/1781), [4](https://github.com/JetBrains/compose-jb/issues/1670)) +- [Fix exception when we initialize a window with visible = false, undecorated = true](https://github.com/JetBrains/compose-jb/issues/1652) +- [Fix crash in ImageComposeScene](https://github.com/JetBrains/compose-jb/issues/1392) +- [Fixes for situations, when hover state doesn't disappear during scrolling](https://github.com/JetBrains/compose-jb/issues/1324#issuecomment-981148420) +- Fixes for Slider/Scrollbar dragging ([1](https://github.com/JetBrains/compose-jb/issues/643), [2](https://github.com/JetBrains/compose-jb/issues/691)) +- [Fixed a case where [event.modifiersEx] does not provide info about the pressed mouse button (AWT)](https://github.com/JetBrains/androidx/pull/181) +- Fix [TextField crashes after selecting the text and then deactivating the text field](https://github.com/JetBrains/compose-jb/issues/1474) +- [Fix consuming events by mouse clickable](https://github.com/JetBrains/androidx/pull/178) +- [Hide top-level dialog from the taskbar](https://github.com/JetBrains/androidx/pull/177) + +### API changes +- [The first frame of the window draws offscreen now](https://github.com/JetBrains/compose-jb/issues/1794). If your application has too long start, measure your first frame, and move the heavy logic to background or to the next frames. You can measure the first frame with this snippet: +``` +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.ui.window.singleWindowApplication + +private var time by mutableStateOf(System.nanoTime()) +private var frame by mutableStateOf(0) + +fun main() = singleWindowApplication { + if (frame == 0) { + frame++ + } else if (frame == 1) { + val duration = ((System.nanoTime() - time) / 1E6).toLong() + println("First frame millis: $duration") + } +} +``` +- [`PointerEvent.awtEvent`, `KeyEvent.awtEvent` are deprecated](https://github.com/JetBrains/androidx/pull/198), use `PointerEvent.awtEventOrNull`, `KeyEvent.awtEventOrNull` instead. The event can be null, if it isn't sent by AWT (for example, Compose can send synthetic Move events on relayout) + # 1.0.1 (Dec 2021) This is basically 1.0.0 that works with Kotlin 1.6.10 diff --git a/tutorials/Mouse_Events/README.md b/tutorials/Mouse_Events/README.md index 604be9687a..8640433eca 100644 --- a/tutorials/Mouse_Events/README.md +++ b/tutorials/Mouse_Events/README.md @@ -293,7 +293,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier -import androidx.compose.ui.awt.awtEvent +import androidx.compose.ui.awt.awtEventOrNull import androidx.compose.ui.input.pointer.PointerEventType import androidx.compose.ui.input.pointer.onPointerEvent import androidx.compose.ui.window.singleWindowApplication @@ -306,7 +306,7 @@ fun main() = singleWindowApplication { Modifier .fillMaxSize() .onPointerEvent(PointerEventType.Press) { - text = it.awtEvent.locationOnScreen?.toString().orEmpty() + text = it.awtEventOrNull?.locationOnScreen?.toString().orEmpty() }, contentAlignment = Alignment.Center ) { @@ -381,7 +381,7 @@ import androidx.compose.ui.unit.sp import androidx.compose.ui.window.singleWindowApplication import androidx.compose.ui.input.pointer.PointerEventType import androidx.compose.ui.input.pointer.onPointerEvent -import androidx.compose.ui.awt.awtEvent +import androidx.compose.ui.awt.awtEventOrNull import androidx.compose.ui.input.pointer.isPrimaryPressed import java.awt.event.MouseEvent @@ -397,9 +397,9 @@ fun main() = singleWindowApplication { .fillMaxWidth(0.7f) .fillMaxHeight(0.2f) .onPointerEvent(PointerEventType.Press) { - when(it.awtEvent.button) { + when(it.awtEventOrNull?.button) { MouseEvent.BUTTON1 -> - when (it.awtEvent.clickCount) { + when (it.awtEventOrNull?.clickCount) { 1 -> { text = "Single click"} 2 -> { text = "Double click"} }