-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[desktop] SwingPanel not work with Snackbar #3474
Comments
Thanks for the report, we will look into it. |
SwingPanel is always on top of compose content. Just use snackbar inside of panel or use column and display it below panel |
@alexzhirkevich so the snackbar can only display below swingpanel but can not float on it? |
@xinkunZ You can have a |
It's actually depend on platform 😕. It's always under Compose on macOS, but Compose uses those component bounds to clip the content. |
## Proposed Changes - Adopt an approach that we're using for iOS - using custom blending to respect clip/shape modifiers and overlapped drawings. - Fix bounds in window calculation - it should work properly inside scaled content now. ## Testing The new behavior is under a feature flag, so you can test it by setting system property: ```kt System.setProperty("compose.interop.blending", "true") ``` Currently it supports Metal (macOS), Direct3D (Windows) (requires JetBrains/skiko#837), and off-screen rendering (might be enable by another feature flag: `compose.swing.render.on.graphics`) ### Clipping ```kt SwingPanel( modifier = Modifier.clip(RoundedCornerShape(6.dp)) ... ) ``` <img width="262" alt="image" src="https://github.com/JetBrains/compose-multiplatform-core/assets/1836384/a03926f5-8977-4530-8894-d84aedfd5939"> ### Overlapping ```kt Box(modifier = Modifier.fillMaxSize()) { SwingPanel(factory = { JPanel().also { panel -> panel.background = java.awt.Color.red panel.add(JButton().also { button -> button.text = "JButton" }) } }) Snackbar( action = { Button(onClick = {}) { Text("OK") } }, modifier = Modifier.padding(8.dp).align(Alignment.BottomCenter), ) { Text("Snackbar") } Popup(alignment = Alignment.Center) { Box( modifier = Modifier.size(200.dp, 100.dp).background(Gray), contentAlignment = Alignment.Center, ) { Text("Popup") } } } ``` <img width="592" alt="Screenshot 2023-11-27 at 13 57 43" src="https://github.com/JetBrains/compose-multiplatform-core/assets/1836384/dda1f2d6-6a1e-456c-8763-46a82d9562a8"> ## Issues Fixed Fixes JetBrains/compose-multiplatform#3823 Fixes JetBrains/compose-multiplatform#3739 Fixes JetBrains/compose-multiplatform#3353 Fixes JetBrains/compose-multiplatform#3474
The text was updated successfully, but these errors were encountered: