diff --git a/apps/client/src/widgets/type_widgets/geo_map.ts b/apps/client/src/widgets/type_widgets/geo_map.ts index 7cd02825b..dd4714470 100644 --- a/apps/client/src/widgets/type_widgets/geo_map.ts +++ b/apps/client/src/widgets/type_widgets/geo_map.ts @@ -25,7 +25,6 @@ export default class GeoMapTypeWidget extends TypeWidget { private geoMapWidget: GeoMapWidget; private L!: Leaflet; - private ignoreNextZoomEvent?: boolean; static getType() { return "geoMap"; @@ -55,15 +54,7 @@ export default class GeoMapTypeWidget extends TypeWidget { // map.invalidateSize(); // }, 100); - // if (hasTouchBar) { - // map.on("zoom", () => { - // if (!this.ignoreNextZoomEvent) { - // this.triggerCommand("refreshTouchBar"); - // } - // this.ignoreNextZoomEvent = false; - // }); - // } } async doRefresh(note: FNote) { @@ -91,30 +82,4 @@ export default class GeoMapTypeWidget extends TypeWidget { // this.moveMarker(noteId, null); } - buildTouchBarCommand({ TouchBar }: CommandListenerData<"buildTouchBar">) { - const map = this.geoMapWidget.map; - const that = this; - if (!map) { - return; - } - - return [ - new TouchBar.TouchBarSlider({ - label: "Zoom", - value: map.getZoom(), - minValue: map.getMinZoom(), - maxValue: map.getMaxZoom(), - change(newValue) { - that.ignoreNextZoomEvent = true; - map.setZoom(newValue); - }, - }), - new TouchBar.TouchBarButton({ - label: "New geo note", - click: () => this.triggerCommand("geoMapCreateChildNote", { ntxId: this.ntxId }), - enabled: (this._state === State.Normal) - }) - ]; - } - } diff --git a/apps/client/src/widgets/view_widgets/geo_view/index.ts b/apps/client/src/widgets/view_widgets/geo_view/index.ts index 9af2c39c8..89a1f6111 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/index.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/index.ts @@ -4,10 +4,9 @@ import type { GPX, LatLng, LeafletMouseEvent, Map, Marker } from "leaflet"; import SpacedUpdate from "../../../services/spaced_update.js"; import { t } from "../../../services/i18n.js"; import processNoteWithMarker, { processNoteWithGpxTrack } from "./markers.js"; -import froca from "../../../services/froca.js"; import { hasTouchBar } from "../../../services/utils.js"; import toast from "../../../services/toast.js"; -import { EventData } from "../../../components/app_context.js"; +import { CommandListenerData, EventData } from "../../../components/app_context.js"; import dialog from "../../../services/dialog.js"; import server from "../../../services/server.js"; import attributes from "../../../services/attributes.js"; @@ -117,6 +116,7 @@ export default class GeoView extends ViewMode { private map?: Map; private spacedUpdate: SpacedUpdate; private _state: State; + private ignoreNextZoomEvent?: boolean; private currentMarkerData: Record; private currentTrackData: Record; @@ -168,6 +168,16 @@ export default class GeoView extends ViewMode { map.on("click", (e) => this.#onMapClicked(e)); this.#reloadMarkers(); + + if (hasTouchBar) { + map.on("zoom", () => { + if (!this.ignoreNextZoomEvent) { + this.triggerCommand("refreshTouchBar"); + } + + this.ignoreNextZoomEvent = false; + }); + } } async #restoreViewportAndZoom() { @@ -303,4 +313,30 @@ export default class GeoView extends ViewMode { this.#changeState(State.Normal); } + buildTouchBarCommand({ TouchBar }: CommandListenerData<"buildTouchBar">) { + const map = this.map; + const that = this; + if (!map) { + return; + } + + return [ + new TouchBar.TouchBarSlider({ + label: "Zoom", + value: map.getZoom(), + minValue: map.getMinZoom(), + maxValue: map.getMaxZoom(), + change(newValue) { + that.ignoreNextZoomEvent = true; + map.setZoom(newValue); + }, + }), + new TouchBar.TouchBarButton({ + label: "New geo note", + click: () => this.triggerCommand("geoMapCreateChildNote"), + enabled: (this._state === State.Normal) + }) + ]; + } + }