fix: don't use duplicate ID for separators
This commit is contained in:
parent
3c8c2b0be7
commit
ba118df66f
@ -16,8 +16,10 @@ import java.lang.reflect.Modifier
|
|||||||
import javax.imageio.ImageIO
|
import javax.imageio.ImageIO
|
||||||
import javax.swing.*
|
import javax.swing.*
|
||||||
|
|
||||||
class SwingMenu(private val menuItem: JMenuItem?, private val holder: SwingMenuHolder) : Menu.Abstract() {
|
class SwingMenu(private val menuItem: JMenuItem?, override val id: Int, private val holder: SwingMenuHolder) : Menu.Abstract() {
|
||||||
override val id = holder.getId(menuItem)
|
constructor(menuItem: JMenuItem, holder: SwingMenuHolder) : this(menuItem, holder.getId(menuItem), holder)
|
||||||
|
constructor(id: Int, holder: SwingMenuHolder) : this(null, id, holder)
|
||||||
|
|
||||||
override val isSeparator: Boolean get() = menuItem == null
|
override val isSeparator: Boolean get() = menuItem == null
|
||||||
override val label: String get() = menuItem?.text ?: ""
|
override val label: String get() = menuItem?.text ?: ""
|
||||||
override val isEnabled: Boolean get() = menuItem?.isEnabled ?: false
|
override val isEnabled: Boolean get() = menuItem?.isEnabled ?: false
|
||||||
@ -115,13 +117,17 @@ class SwingMenu(private val menuItem: JMenuItem?, private val holder: SwingMenuH
|
|||||||
_children = when (menuItem) {
|
_children = when (menuItem) {
|
||||||
is ActionMenu -> {
|
is ActionMenu -> {
|
||||||
val ch = mutableListOf<Menu>()
|
val ch = mutableListOf<Menu>()
|
||||||
|
var separators = 0
|
||||||
for (each in menuItem.popupMenu.components) {
|
for (each in menuItem.popupMenu.components) {
|
||||||
if (each == null) continue
|
if (each == null) continue
|
||||||
if (each is JSeparator) {
|
if (each is JSeparator) {
|
||||||
ch.add(SwingMenu(null, holder))
|
ch.add(SwingMenu(separators, holder))
|
||||||
|
separators++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (each !is JMenuItem) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (each !is JMenuItem) continue
|
|
||||||
val cmi = SwingMenu(each, holder)
|
val cmi = SwingMenu(each, holder)
|
||||||
if (deepness > 1) {
|
if (deepness > 1) {
|
||||||
if (each is ActionMenu) {
|
if (each is ActionMenu) {
|
||||||
|
Loading…
Reference in New Issue
Block a user