diff --git a/po/pt_BR.po b/po/pt_BR.po index 47e8d2a..006bd7b 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: pw3270 5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-28 07:32-0300\n" +"POT-Creation-Date: 2012-08-28 10:10-0300\n" "PO-Revision-Date: 2012-08-27 09:01-0300\n" "Last-Translator: Perry Werneck \n" "Language-Team: Português do Brasil <>\n" diff --git a/src/lib3270/selection.c b/src/lib3270/selection.c index 64619ac..ef717a6 100644 --- a/src/lib3270/selection.c +++ b/src/lib3270/selection.c @@ -695,6 +695,7 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) { int cursor_addr = hSession->cursor_addr; + int maxlen = hSession->cols * hSession->rows; if(!lib3270_connected(hSession)) return -1; @@ -702,25 +703,25 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u switch(dir) { case LIB3270_DIR_UP: - if(cursor_addr <= hSession->cols) + if(sel && cursor_addr <= hSession->cols) return EINVAL; cursor_addr -= hSession->cols; break; case LIB3270_DIR_DOWN: - if(cursor_addr >= (hSession->cols * (hSession->rows-1))) + if(sel && cursor_addr >= (hSession->cols * (hSession->rows-1))) return EINVAL; cursor_addr += hSession->cols; break; case LIB3270_DIR_LEFT: - if( (cursor_addr % hSession->cols) < 1) + if(sel && (cursor_addr % hSession->cols) < 1) return EINVAL; cursor_addr--; break; case LIB3270_DIR_RIGHT: - if( (cursor_addr % hSession->cols) >= (hSession->cols-1)) + if(sel && (cursor_addr % hSession->cols) >= (hSession->cols-1)) return EINVAL; cursor_addr++; break; @@ -730,9 +731,21 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u } if(sel) + { lib3270_select_to(hSession,cursor_addr); + } + else if(cursor_addr >= maxlen) + { + cursor_move(hSession,cursor_addr % maxlen); + } + else if(cursor_addr < 0) + { + cursor_move(hSession,cursor_addr + maxlen); + } else + { cursor_move(hSession,cursor_addr); + } return 0; } -- libgit2 0.21.2