diff --git a/python/python-sdk-configurator/frontend/src/components/ModuleList.kt b/python/python-sdk-configurator/frontend/src/components/ModuleList.kt index f778f33e6938..f1065f535796 100644 --- a/python/python-sdk-configurator/frontend/src/components/ModuleList.kt +++ b/python/python-sdk-configurator/frontend/src/components/ModuleList.kt @@ -6,7 +6,6 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.intellij.icons.AllIcons @@ -31,8 +30,6 @@ import org.jetbrains.jewel.ui.icon.IntelliJIconKey */ @Composable internal fun ModuleList( - screenWidthPx: Int, - screenHeightPx: Int, viewModel: ModulesViewModel, ) { LaunchedEffect(viewModel) { @@ -42,13 +39,9 @@ internal fun ModuleList( val projectStructureLabel = remember { message("python.sdk.configurator.frontend.choose.modules.project.structure") } val environmentLabel = remember { message("python.sdk.configurator.frontend.choose.modules.environment") } - val (width, height) = with(LocalDensity.current) { - // width: 50% of screen, height: 65% of the screen (according to Lena) - Pair(screenWidthPx.toDp() * 0.5f, screenHeightPx.toDp() * 0.65f) - } val border = Modifier.border(Stroke.Alignment.Outside, 1.dp, JewelTheme.globalColors.borders.normal) val space = 5.dp - VerticallyScrollableContainer(Modifier.padding(space).then(border).size(width = width, height = height)) { + VerticallyScrollableContainer(Modifier.padding(space).then(border).fillMaxSize()) { val checkboxArrangement = Arrangement.spacedBy(space) Column(Modifier.fillMaxSize(), verticalArrangement = checkboxArrangement) { Text(text = topLabel, Modifier.padding(space)) diff --git a/python/python-sdk-configurator/frontend/src/swingBridge.kt b/python/python-sdk-configurator/frontend/src/swingBridge.kt index f8eb3c3bc0a1..4f1e4ca93622 100644 --- a/python/python-sdk-configurator/frontend/src/swingBridge.kt +++ b/python/python-sdk-configurator/frontend/src/swingBridge.kt @@ -3,6 +3,7 @@ package com.intellij.python.sdkConfigurator.frontend import com.intellij.openapi.application.EDT import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper +import com.intellij.openapi.wm.WindowManager import com.intellij.python.sdkConfigurator.common.impl.ModuleName import com.intellij.python.sdkConfigurator.common.impl.ModulesDTO import com.intellij.python.sdkConfigurator.frontend.PySdkConfiguratorFrontendBundle.message @@ -12,7 +13,7 @@ import kotlinx.coroutines.withContext import org.jetbrains.jewel.bridge.compose import org.jetbrains.jewel.foundation.ExperimentalJewelApi import org.jetbrains.jewel.foundation.enableNewSwingCompositing -import java.awt.GraphicsEnvironment +import java.awt.Dimension import javax.swing.JComponent internal suspend fun askUser(project: Project, modules: ModulesDTO, onResult: (Set) -> Unit) { @@ -27,11 +28,10 @@ internal suspend fun askUser(project: Project, modules: ModulesDTO, onResult: (S } } -private class MyDialog(project: Project, private val viewModel: ModulesViewModel) : DialogWrapper(project) { +private class MyDialog(private val project: Project, private val viewModel: ModulesViewModel) : DialogWrapper(project) { init { title = message("python.sdk.configurator.frontend.choose.modules.title") - isResizable = false setOKButtonText(message("python.sdk.configurator.frontend.choose.modules.configure")) init() } @@ -47,13 +47,12 @@ private class MyDialog(project: Project, private val viewModel: ModulesViewModel viewModel.okButtonEnabledListener = { enabled -> isOKActionEnabled = enabled // To enable/disable "OK" button } - val screenSize = GraphicsEnvironment.getLocalGraphicsEnvironment().defaultScreenDevice.displayMode - return compose(focusOnClickInside = true) { - ModuleList( - screenWidthPx = screenSize.width, - screenHeightPx = screenSize.height, - viewModel = viewModel - ) + val screen = WindowManager.getInstance().getFrame(project)!! // Have no idea why could it be null + return compose(focusOnClickInside = true, config = { + // 65% according to Lena + preferredSize = Dimension(screen.width / 2, (screen.height * 0.65f).toInt()) + }) { + ModuleList(viewModel) } } } \ No newline at end of file