Mercurial > 510Connectbot
diff src/org/tn5250j/framework/tn5250/Screen5250.java @ 139:c2fa8ae31cfa
another attempt at setField()
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 20 Jun 2014 18:57:11 -0700 |
parents | e312405090e1 |
children | 4fe73e73d4d7 |
line wrap: on
line diff
--- a/src/org/tn5250j/framework/tn5250/Screen5250.java Fri Jun 20 15:03:05 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/Screen5250.java Fri Jun 20 18:57:11 2014 -0700 @@ -2672,10 +2672,7 @@ // this routine is based on offset 0,0 not 1,1 protected void goto_XY(int pos) { - // setCursorOff(); - updateCursorLoc(); lastPos = pos; - // setCursorOn(); updateCursorLoc(); } @@ -2687,11 +2684,21 @@ ScreenField cf; if (l >= 0) { - int position = l * numCols + c; - isInField(position, true); - cf = screenFields.getCurrentField(); - lastPos = cf.getStartPos(); - setDirty(lastPos); + if (screenFields.isCurrentFieldHighlightedEntry()) + unsetFieldHighlighted(screenFields.getCurrentField()); + int pos = l * numCols + c; + int n = screenFields.getSize(); + for (int i=0; i<n; i++) { + cf = screenFields.getField(i); + if (cf.getStartPos() == pos) { + screenFields.setCurrentField(cf); + if (screenFields.isCurrentFieldHighlightedEntry()) + setFieldHighlighted(screenFields.getCurrentField()); + gotoField(cf); + isInField(pos); + break; + } + } } if ((data != null) && (data.length > 0)) {