From 3a38ce6e4a569bd1fb7769c2bab8d25fa4ed33c3 Mon Sep 17 00:00:00 2001 From: "Matthew R. Wilson" Date: Sat, 7 Jun 2025 14:04:21 -0700 Subject: [PATCH] bugfix: Correct Response row and col values (swap them) --- example1/example1.go | 10 ++++++++-- response.go | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/example1/example1.go b/example1/example1.go index 835b904..69dd363 100644 --- a/example1/example1.go +++ b/example1/example1.go @@ -60,7 +60,8 @@ var screen2 = go3270.Screen{ {Row: 9, Col: 41, Intense: true, Content: "PF3"}, {Row: 9, Col: 45, Content: "to quit and disconnect."}, {Row: 12, Col: 0, Color: go3270.Turquoise, Highlighting: go3270.ReverseVideo, Content: "Here is a field with extended attributes."}, - {Row: 12, Col: 42}, // remember to "stop" fields with a regular field, to clear the reverse video for example + {Row: 12, Col: 42}, // remember to "stop" fields with a regular field, to clear the reverse video for example + {Row: 14, Col: 0, Name: "position"}, // will be filled when displaying {Row: 22, Col: 0, Content: "PF3 Exit"}, } @@ -93,6 +94,8 @@ func handle(conn net.Conn) { go3270.NegotiateTelnet(conn) fieldValues := make(map[string]string) + var response go3270.Response + var err error // We will loop forever until the user quits with PF3 mainLoop: @@ -109,7 +112,7 @@ mainLoop: // We're passing in the fieldValues map to carry values over from // the previous submission. We could pass nil, instead, if always want // the fields to start out blank. - response, err := go3270.ShowScreen(screen1, fieldValues, 4, 20, conn) + response, err = go3270.ShowScreen(screen1, fieldValues, 4, 20, conn) if err != nil { fmt.Println(err) return @@ -159,6 +162,9 @@ mainLoop: } fieldValues["passwordOutput"] = fmt.Sprintf("Your password was %d character%s long", passwordLength, passwordPlural) + fieldValues["position"] = fmt.Sprintf( + "When you pressed enter the cursor was at row %d column %d.", + response.Row+1, response.Col+1) response, err := go3270.ShowScreen(screen2, fieldValues, 0, 0, conn) if err != nil { fmt.Println(err) diff --git a/response.go b/response.go index 7a83b1c..ba6ab95 100644 --- a/response.go +++ b/response.go @@ -128,8 +128,8 @@ func readPosition(c net.Conn) (row, col, addr int, err error) { // Decode the raw position addr = decodeBufAddr([2]byte{raw[0], raw[1]}) - row = addr % 80 - col = (addr - row) / 80 + col = addr % 80 + row = (addr - col) / 80 debugf("Got position bytes %02x %02x, decoded to %d\n", raw[0], raw[1], addr)