From 035344054768562bee7db12e02e3bec1c8409210 Mon Sep 17 00:00:00 2001 From: citrons Date: Mon, 2 Jun 2025 17:38:27 -0500 Subject: window history --- client/navigation.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 client/navigation.go (limited to 'client/navigation.go') diff --git a/client/navigation.go b/client/navigation.go new file mode 100644 index 0000000..e418445 --- /dev/null +++ b/client/navigation.go @@ -0,0 +1,38 @@ +package main + +import ( + "citrons.xyz/talk/client/window" +) + +func (a *application) removeFromHistory(location window.Location) { + for i := len(a.windowHist) - 1; i >= 0; i-- { + if a.windowHist[i] != location { + continue + } + if i < len(a.windowHist) - 1 { + a.windowHist = append(a.windowHist[:i], a.windowHist[i + 1:]...) + } else { + a.windowHist = a.windowHist[:i] + } + break + } +} + +func (a *application) traverseHistory(direction int) { + var i int + for i = 0; i < len(a.windowHist); i++ { + if a.windowHist[i] == a.currentWindow { + break + } + } + i += direction + if i >= 0 && i < len(a.windowHist) { + a.currentWindow = a.windowHist[i] + } +} + +func (a *application) goTo(location window.Location) { + a.removeFromHistory(location) + a.windowHist = append(a.windowHist, location) + a.currentWindow = location +} -- cgit v1.2.3