Tweak left/right/backspace in text boxes
This commit is contained in:
		
							parent
							
								
									fa0352a0e8
								
							
						
					
					
						commit
						25b55ef7f9
					
				@ -527,7 +527,7 @@ byte Readline_ex_unicode(word x_pos, word y_pos, char * str, word * str_unicode,
 | 
				
			|||||||
      size = 255;
 | 
					      size = 255;
 | 
				
			||||||
    memcpy(initial_string_unicode, str_unicode, 2*(size+1));
 | 
					    memcpy(initial_string_unicode, str_unicode, 2*(size+1));
 | 
				
			||||||
    if (position >= size)
 | 
					    if (position >= size)
 | 
				
			||||||
      position = (byte)((size<max_size) ? size : size-1);
 | 
					      position = (byte)((size <= max_size) ? size : size - 1);
 | 
				
			||||||
    if (position-offset>=visible_size)
 | 
					    if (position-offset>=visible_size)
 | 
				
			||||||
      offset=position-visible_size+1;
 | 
					      offset=position-visible_size+1;
 | 
				
			||||||
    // copy only part of the string if it is too long
 | 
					    // copy only part of the string if it is too long
 | 
				
			||||||
@ -553,7 +553,7 @@ byte Readline_ex_unicode(word x_pos, word y_pos, char * str, word * str_unicode,
 | 
				
			|||||||
    if (size > 255)
 | 
					    if (size > 255)
 | 
				
			||||||
      size = 255;
 | 
					      size = 255;
 | 
				
			||||||
    if (position >= size)
 | 
					    if (position >= size)
 | 
				
			||||||
      position = (byte)((size<max_size) ? size : size-1);
 | 
					      position = (byte)((size<=max_size) ? size : size-1);
 | 
				
			||||||
    if (position-offset>=visible_size)
 | 
					    if (position-offset>=visible_size)
 | 
				
			||||||
      offset=position-visible_size+1;
 | 
					      offset=position-visible_size+1;
 | 
				
			||||||
    // copy only part of the string if it is too long
 | 
					    // copy only part of the string if it is too long
 | 
				
			||||||
@ -755,7 +755,7 @@ byte Readline_ex_unicode(word x_pos, word y_pos, char * str, word * str_unicode,
 | 
				
			|||||||
          // ce qui augmente la taille de la chaine
 | 
					          // ce qui augmente la taille de la chaine
 | 
				
			||||||
          size++;
 | 
					          size++;
 | 
				
			||||||
          // et qui risque de déplacer le curseur vers la droite
 | 
					          // et qui risque de déplacer le curseur vers la droite
 | 
				
			||||||
          if (size<max_size)
 | 
					          if (size <= max_size)
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
            position++;
 | 
					            position++;
 | 
				
			||||||
            if (position-offset>=visible_size)
 | 
					            if (position-offset>=visible_size)
 | 
				
			||||||
@ -798,21 +798,24 @@ byte Readline_ex_unicode(word x_pos, word y_pos, char * str, word * str_unicode,
 | 
				
			|||||||
      case KEY_LEFT : // Gauche
 | 
					      case KEY_LEFT : // Gauche
 | 
				
			||||||
            if (position>0)
 | 
					            if (position>0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					              char at_end_of_string;
 | 
				
			||||||
 | 
					              if (str_unicode != NULL)
 | 
				
			||||||
 | 
					                at_end_of_string = (str_unicode[position] == '\0');
 | 
				
			||||||
 | 
					              else
 | 
				
			||||||
 | 
					                at_end_of_string = (str[position] == '\0');
 | 
				
			||||||
              // Effacement de la chaîne
 | 
					              // Effacement de la chaîne
 | 
				
			||||||
              if (position==size)
 | 
					              if (position==size)
 | 
				
			||||||
                Screen_FillRect((window_x+(x_pos*Menu_factor_X))*Pixel_width, (window_y+(y_pos*Menu_factor_Y))*Pixel_height,
 | 
					                Screen_FillRect((window_x+(x_pos*Menu_factor_X))*Pixel_width, (window_y+(y_pos*Menu_factor_Y))*Pixel_height,
 | 
				
			||||||
                  (visible_size*(Menu_factor_X<<3))*Pixel_width, (Menu_factor_Y<<3)*Pixel_height, BACKGROUND_COLOR);              position--;
 | 
					                  (visible_size*(Menu_factor_X<<3))*Pixel_width, (Menu_factor_Y<<3)*Pixel_height, BACKGROUND_COLOR);              position--;
 | 
				
			||||||
              if (offset > 0 && (position == 0 || position < (offset + 1)))
 | 
					              if (offset > 0 && (position < (offset + 1) || at_end_of_string))
 | 
				
			||||||
                offset--;
 | 
					                offset--;
 | 
				
			||||||
              goto affichage;
 | 
					              goto affichage;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
      case KEY_RIGHT : // Droite
 | 
					      case KEY_RIGHT : // Droite
 | 
				
			||||||
            if ((position<size) && (position<max_size-1))
 | 
					            if ((position < size) && (position < max_size))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
              position++;
 | 
					              position++;
 | 
				
			||||||
              //if (position > visible_size + offset - 2)
 | 
					 | 
				
			||||||
              //if (offset + visible_size < max_size && (position == size || (position > visible_size + offset - 2)))
 | 
					 | 
				
			||||||
              if (str_unicode != NULL)
 | 
					              if (str_unicode != NULL)
 | 
				
			||||||
              {
 | 
					              {
 | 
				
			||||||
                if (display_string_unicode[position-offset]==(byte)RIGHT_TRIANGLE_CHARACTER || position-offset>=visible_size)
 | 
					                if (display_string_unicode[position-offset]==(byte)RIGHT_TRIANGLE_CHARACTER || position-offset>=visible_size)
 | 
				
			||||||
@ -850,8 +853,15 @@ byte Readline_ex_unicode(word x_pos, word y_pos, char * str, word * str_unicode,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (position > 0)
 | 
					        if (position > 0)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          char at_end_of_string;
 | 
				
			||||||
 | 
					          if (str_unicode != NULL)
 | 
				
			||||||
 | 
					            at_end_of_string = (str_unicode[position] == '\0');
 | 
				
			||||||
 | 
					          else
 | 
				
			||||||
 | 
					            at_end_of_string = (str[position] == '\0');
 | 
				
			||||||
          position--;
 | 
					          position--;
 | 
				
			||||||
          if (offset > 0 && (position == 0 || position < (offset + 1)))
 | 
					          if (offset > 0 && ((position < (offset + 2)) ||
 | 
				
			||||||
 | 
					                at_end_of_string ||
 | 
				
			||||||
 | 
					                !(display_string[visible_size-1]==RIGHT_TRIANGLE_CHARACTER)))
 | 
				
			||||||
            offset--;
 | 
					            offset--;
 | 
				
			||||||
          if (str_unicode != NULL)
 | 
					          if (str_unicode != NULL)
 | 
				
			||||||
            Remove_character_unicode(str_unicode,position);
 | 
					            Remove_character_unicode(str_unicode,position);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user