|
@@ -10,7 +10,8 @@ typedef MenuItem = {
|
|
?icon: String,
|
|
?icon: String,
|
|
?keys: String,
|
|
?keys: String,
|
|
?checked: Bool,
|
|
?checked: Bool,
|
|
- ?tooltip: String
|
|
|
|
|
|
+ ?tooltip: String,
|
|
|
|
+ ?radio: () -> Bool, // Radio button instead of checked.
|
|
}
|
|
}
|
|
|
|
|
|
// for retrocompat with the old menu system
|
|
// for retrocompat with the old menu system
|
|
@@ -85,6 +86,7 @@ class ContextMenu {
|
|
var autoCleanupTimer: haxe.Timer;
|
|
var autoCleanupTimer: haxe.Timer;
|
|
|
|
|
|
var popupTimer: haxe.Timer;
|
|
var popupTimer: haxe.Timer;
|
|
|
|
+ var radioRefresh: Array<() -> Void> = [];
|
|
final openDelayMs = 250;
|
|
final openDelayMs = 250;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -464,6 +466,13 @@ class ContextMenu {
|
|
|
|
|
|
refreshCheck();
|
|
refreshCheck();
|
|
|
|
|
|
|
|
+ if (icon != null && menuItem.radio != null) {
|
|
|
|
+ var status = menuItem.radio();
|
|
|
|
+ icon.classList.add("fa");
|
|
|
|
+ icon.classList.toggle("fa-dot-circle-o", status);
|
|
|
|
+ icon.classList.toggle("fa-circle-o", !status);
|
|
|
|
+ }
|
|
|
|
+
|
|
var span = js.Browser.document.createSpanElement();
|
|
var span = js.Browser.document.createSpanElement();
|
|
span.innerHTML = menuItem.label;
|
|
span.innerHTML = menuItem.label;
|
|
span.classList.add("label");
|
|
span.classList.add("label");
|
|
@@ -526,6 +535,8 @@ class ContextMenu {
|
|
}
|
|
}
|
|
if (!menuItem.stayOpen) {
|
|
if (!menuItem.stayOpen) {
|
|
closeAll();
|
|
closeAll();
|
|
|
|
+ } else {
|
|
|
|
+ refreshMenu();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|