diff --git a/images/eye-arrow-right.svg b/images/eye-arrow-right.svg
new file mode 100644
index 00000000..b042ea5e
--- /dev/null
+++ b/images/eye-arrow-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/layout/pages/zoning/zoning.xml b/layout/pages/zoning/zoning.xml
index b5ff9532..1ae23f87 100644
--- a/layout/pages/zoning/zoning.xml
+++ b/layout/pages/zoning/zoning.xml
@@ -132,6 +132,9 @@
+
diff --git a/scripts/pages/zoning/zoning.ts b/scripts/pages/zoning/zoning.ts
index ef69efa1..cc863aa3 100644
--- a/scripts/pages/zoning/zoning.ts
+++ b/scripts/pages/zoning/zoning.ts
@@ -255,9 +255,9 @@ class ZoneMenuHandler {
const collapseButton = newTracklistPanel.FindChildTraverse('CollapseButton');
const childContainer = newTracklistPanel.FindChildTraverse('ChildContainer');
+ const expandIcon = newTracklistPanel.FindChildTraverse('TracklistExpandIcon');
+ const collapseIcon = newTracklistPanel.FindChildTraverse('TracklistCollapseIcon');
if (collapseButton && childContainer) {
- const expandIcon = newTracklistPanel.FindChildTraverse('TracklistExpandIcon');
- const collapseIcon = newTracklistPanel.FindChildTraverse('TracklistCollapseIcon');
collapseButton.SetPanelEvent('onactivate', () =>
this.toggleCollapse(childContainer, expandIcon, collapseIcon)
);
@@ -269,6 +269,15 @@ class ZoneMenuHandler {
selectButton.SetPanelEvent('onactivate', () =>
this.updateSelection(selectionObj.track, selectionObj.segment, selectionObj.zone)
);
+ if (selectionObj.zone) {
+ selectButton.SetPanelEvent('ondblclick', () =>
+ this.panels.zoningMenu.moveToRegion(selectionObj.zone.regions[0])
+ );
+ } else {
+ selectButton.SetPanelEvent('ondblclick', () =>
+ this.toggleCollapse(childContainer, expandIcon, collapseIcon)
+ );
+ }
if (setActive) {
selectButton.SetSelected(true);
@@ -445,6 +454,14 @@ class ZoneMenuHandler {
this.updateZones();
}
+ teleportToRegion() {
+ if (!this.selectedZone || !this.selectedZone.zone) return;
+
+ const index = this.panels.regionSelect.GetSelected().GetAttributeInt('value', -1);
+ const region = this.selectedZone.zone.regions[index];
+ this.panels.zoningMenu.moveToRegion(region);
+ }
+
pickCorners() {
if (!this.selectedZone || !this.selectedZone.zone) return;
diff --git a/scripts/types-mom/panels.d.ts b/scripts/types-mom/panels.d.ts
index dfb6206a..4aa47c1a 100644
--- a/scripts/types-mom/panels.d.ts
+++ b/scripts/types-mom/panels.d.ts
@@ -135,4 +135,6 @@ interface ZoneMenu extends AbstractPanel<'ZoneMenu'> {
getEntityList(): import('pages/zoning/zoning').EntityList;
setCornersFromRegion(region: import('common/web').Region): void;
+
+ moveToRegion(region: import('common/web').Region): void;
}