Commit 835ec4d31814c8b138f1f659e8e016b5278847c4

Authored by perry.werneck@gmail.com
1 parent 83f82697

Rômulo Silva Neiva - 29 de agosto de 2012 07:54

 * a rolagem do cursor para nas bordas superior e inferior ou seja, não percorre a janela ciclicamente.
Showing 2 changed files with 18 additions and 5 deletions   Show diff stats
@@ -5,7 +5,7 @@ msgid "" @@ -5,7 +5,7 @@ msgid ""
5 msgstr "" 5 msgstr ""
6 "Project-Id-Version: pw3270 5.0\n" 6 "Project-Id-Version: pw3270 5.0\n"
7 "Report-Msgid-Bugs-To: \n" 7 "Report-Msgid-Bugs-To: \n"
8 -"POT-Creation-Date: 2012-08-28 07:32-0300\n" 8 +"POT-Creation-Date: 2012-08-28 10:10-0300\n"
9 "PO-Revision-Date: 2012-08-27 09:01-0300\n" 9 "PO-Revision-Date: 2012-08-27 09:01-0300\n"
10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11 "Language-Team: Português do Brasil <>\n" 11 "Language-Team: Português do Brasil <>\n"
src/lib3270/selection.c
@@ -695,6 +695,7 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir @@ -695,6 +695,7 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir
695 LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) 695 LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel)
696 { 696 {
697 int cursor_addr = hSession->cursor_addr; 697 int cursor_addr = hSession->cursor_addr;
  698 + int maxlen = hSession->cols * hSession->rows;
698 699
699 if(!lib3270_connected(hSession)) 700 if(!lib3270_connected(hSession))
700 return -1; 701 return -1;
@@ -702,25 +703,25 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u @@ -702,25 +703,25 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u
702 switch(dir) 703 switch(dir)
703 { 704 {
704 case LIB3270_DIR_UP: 705 case LIB3270_DIR_UP:
705 - if(cursor_addr <= hSession->cols) 706 + if(sel && cursor_addr <= hSession->cols)
706 return EINVAL; 707 return EINVAL;
707 cursor_addr -= hSession->cols; 708 cursor_addr -= hSession->cols;
708 break; 709 break;
709 710
710 case LIB3270_DIR_DOWN: 711 case LIB3270_DIR_DOWN:
711 - if(cursor_addr >= (hSession->cols * (hSession->rows-1))) 712 + if(sel && cursor_addr >= (hSession->cols * (hSession->rows-1)))
712 return EINVAL; 713 return EINVAL;
713 cursor_addr += hSession->cols; 714 cursor_addr += hSession->cols;
714 break; 715 break;
715 716
716 case LIB3270_DIR_LEFT: 717 case LIB3270_DIR_LEFT:
717 - if( (cursor_addr % hSession->cols) < 1) 718 + if(sel && (cursor_addr % hSession->cols) < 1)
718 return EINVAL; 719 return EINVAL;
719 cursor_addr--; 720 cursor_addr--;
720 break; 721 break;
721 722
722 case LIB3270_DIR_RIGHT: 723 case LIB3270_DIR_RIGHT:
723 - if( (cursor_addr % hSession->cols) >= (hSession->cols-1)) 724 + if(sel && (cursor_addr % hSession->cols) >= (hSession->cols-1))
724 return EINVAL; 725 return EINVAL;
725 cursor_addr++; 726 cursor_addr++;
726 break; 727 break;
@@ -730,9 +731,21 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u @@ -730,9 +731,21 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u
730 } 731 }
731 732
732 if(sel) 733 if(sel)
  734 + {
733 lib3270_select_to(hSession,cursor_addr); 735 lib3270_select_to(hSession,cursor_addr);
  736 + }
  737 + else if(cursor_addr >= maxlen)
  738 + {
  739 + cursor_move(hSession,cursor_addr % maxlen);
  740 + }
  741 + else if(cursor_addr < 0)
  742 + {
  743 + cursor_move(hSession,cursor_addr + maxlen);
  744 + }
734 else 745 else
  746 + {
735 cursor_move(hSession,cursor_addr); 747 cursor_move(hSession,cursor_addr);
  748 + }
736 749
737 return 0; 750 return 0;
738 } 751 }