瀏覽代碼

panel icons fix

Milan Jurkulak 1 年之前
父節點
當前提交
2b26f3a994

+ 10 - 4
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/DesktopPanel.kt

@@ -53,7 +53,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 @Composable
 fun DesktopPanel(
     iconSize: DpSize = DpSize(56.dp, 56.dp),
-    iconPadding: PaddingValues = PaddingValues(4.dp),
+    iconPadding: PaddingValues = PaddingValues(2.dp),
     iconOuterPadding: PaddingValues = PaddingValues(2.dp),
     showMenuIcon: Boolean = true,
     panelState: VisibilityState = rememberVisibilityState(),
@@ -69,7 +69,10 @@ fun DesktopPanel(
 ) = withDesktopContext {
     val panelHeight: (visible: Boolean) -> Dp = { visible ->
         if (visible) {
-            iconSize.height + iconOuterPadding.height + theme.panelContentPadding.times(2)
+            iconSize.height +
+                    iconPadding.height.times(2) +
+                    iconOuterPadding.height.times(2) +
+                    theme.panelContentPadding.times(2)
         } else panelDividerWidth
     }
     val size by rememberComputed(
@@ -80,7 +83,10 @@ fun DesktopPanel(
     ) {
         DpSize(
             containerSize.width,
-            panelHeight(if (panelState.enabled) panelState.isVisible else true)
+            panelHeight(
+                if (panelState.enabled) panelState.isVisible
+                else true
+            )
         )
     }
     val panelShape by rememberComputed(size) {
@@ -92,7 +98,7 @@ fun DesktopPanel(
     ) {
         SlidingPanel(
             modifier = Modifier.fillMaxWidth()
-                .height(size.height), // todo centered
+                .height(size.height),
             orientation = Vertical,
             state = panelState,
             enterAnimation = enterAnimation,

+ 3 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelIcon.kt

@@ -33,6 +33,7 @@ import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.interfaces.IApp
 import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.PaddingValues.size
 
 @Composable
 fun DesktopPanelIcon(
@@ -65,7 +66,7 @@ fun DesktopPanelIcon(
     }
     Box(
         modifier = Modifier
-            .size(iconSize)
+            .size(iconSize + iconPadding.size + iconOuterPadding.size)
             .clipRect()
             .onMouseEnter {
                 iconState.value = true
@@ -90,7 +91,7 @@ fun DesktopPanelIcon(
                     2.dp,
                     textColor.alpha(0.5f)
                 ),
-            contentPadding = PaddingValues(0.dp),
+            contentPadding = PaddingValues(2.dp),
             colors = ButtonDefaults.color(background),
             elevation = ButtonDefaults.noElevation(),
             onClick = {}

+ 11 - 4
composeApp/src/desktopMain/kotlin/org/mjdev/desktop/components/desktoppanel/DesktopPanelWindow.kt

@@ -49,17 +49,24 @@ fun DesktopPanelWindow(
 ) = withDesktopContext {
     val panelHeight: (visible: Boolean) -> Dp = { visible ->
         if (visible) {
-            iconSize.height + iconOuterPadding.height + theme.panelContentPadding.times(2)
+            iconSize.height +
+                    iconPadding.height.times(2) +
+                    iconOuterPadding.height.times(2) +
+                    theme.panelContentPadding.times(2)
         } else panelDividerWidth
     }
     val size by rememberComputed(
+        panelState.isVisible,
+        panelState.enabled,
         containerSize.width,
-        containerSize.height,
-        panelState.isVisible
+        containerSize.height
     ) {
         DpSize(
             containerSize.width,
-            panelHeight(panelState.isVisible)
+            panelHeight(
+                if (panelState.enabled) panelState.isVisible
+                else true
+            )
         )
     }
     val position by rememberComputed(size) {