diff --git a/src/main/kotlin/app/termora/NativeMacLibrary.kt b/src/main/kotlin/app/termora/NativeMacLibrary.kt index b8fcbc2..7a1e7fd 100644 --- a/src/main/kotlin/app/termora/NativeMacLibrary.kt +++ b/src/main/kotlin/app/termora/NativeMacLibrary.kt @@ -9,6 +9,12 @@ import java.awt.Window object NativeMacLibrary { private val log = LoggerFactory.getLogger(NativeMacLibrary::class.java) + enum class NSWindowButton { + NSWindowCloseButton, + NSWindowMiniaturizeButton, + NSWindowZoomButton, + } + fun getNSWindow(window: Window): Long? { try { val peerField = Component::class.java.getDeclaredField("peer") ?: return null @@ -31,13 +37,17 @@ object NativeMacLibrary { } } - fun setControlsVisible(window: Window, visible: Boolean) { + fun setControlsVisible( + window: Window, + visible: Boolean, + buttons: Array = NSWindowButton.entries.toTypedArray() + ) { val nsWindow = ID(getNSWindow(window) ?: return) try { Foundation.executeOnMainThread(true, true) { - for (i in 0..2) { - val button = Foundation.invoke(nsWindow, "standardWindowButton:", i) - Foundation.invoke(button, "setHidden:", !visible) + for (button in buttons) { + val button = Foundation.invoke(nsWindow, "standardWindowButton:", button.ordinal) + Foundation.invoke(button, "setHidden:", visible.not()) } } } catch (e: Exception) { diff --git a/src/main/kotlin/app/termora/plugin/internal/plugin/PluginRepositoryDialog.kt b/src/main/kotlin/app/termora/plugin/internal/plugin/PluginRepositoryDialog.kt index 7dfcd27..31e83e2 100644 --- a/src/main/kotlin/app/termora/plugin/internal/plugin/PluginRepositoryDialog.kt +++ b/src/main/kotlin/app/termora/plugin/internal/plugin/PluginRepositoryDialog.kt @@ -2,6 +2,7 @@ package app.termora.plugin.internal.plugin import app.termora.* import com.formdev.flatlaf.extras.components.FlatToolBar +import com.formdev.flatlaf.util.SystemInfo import java.awt.BorderLayout import java.awt.Dimension import java.awt.Window @@ -22,7 +23,6 @@ internal class PluginRepositoryDialog(owner: Window) : DialogWrapper(owner) { size = Dimension(UIManager.getInt("Dialog.width") - 200, UIManager.getInt("Dialog.height") - 150) isModal = true isResizable = false - controlsVisible = false title = "Custom Plugin Repository" list.fixedCellHeight = UIManager.getInt("Tree.rowHeight") for (url in PluginRepositoryManager.getInstance().getRepositories()) { @@ -98,6 +98,21 @@ internal class PluginRepositoryDialog(owner: Window) : DialogWrapper(owner) { return panel } + override fun addNotify() { + super.addNotify() + + if (SystemInfo.isMacOS) { + NativeMacLibrary.setControlsVisible( + this, + false, + arrayOf( + NativeMacLibrary.NSWindowButton.NSWindowZoomButton, + NativeMacLibrary.NSWindowButton.NSWindowMiniaturizeButton + ) + ) + } + } + override fun createSouthPanel(): JComponent? { return null }