void GetA::init(int x1, int y1, int x2, char *field, unsigned length, Font *fontPtr, char align, char detectEsc, char hide) { x = x1; y = y1; x_limit = x2; input_field = field; field_len = length; font_ptr = fontPtr; align_flag = align; enable_flag = 1; esc_key_flag = detectEsc; mouse_drag_flag = 0; back_ground_bitmap = NULL; disp_field = input_field; if( hide ) { unsigned len = strlen(input_field); err_when(len >= field_len); hide_flag = 1; hide_field = mem_add(field_len+1); memset(hide_field, HIDE_CHAR, len); hide_field[len] = 0; disp_field = hide_field; } select_whole(); }
void GetA::init( int x1, int y1, int x2, char *field, unsigned length, Font *fontPtr, char align, char detectEsc) { x = x1; y = y1; x_limit = x2; input_field = field; field_len = length; font_ptr = fontPtr; align_flag = align; enable_flag = 1; esc_key_flag = detectEsc; mouse_drag_flag = 0; back_ground_bitmap = NULL; select_whole(); }
// return 1 for selected int GetA::detect_click() { if( !enable_flag ) return 0; if( !mouse_drag_flag ) { int clickCount = mouse.any_click(x-font_ptr->max_font_width, y, x_limit, y+height()-1); if( clickCount == 1) { // set cursor_pos // scan from the last character, until the clicked x is // less than the character x for( cursor_pos = strlen(input_field); cursor_pos > 0 && mouse.click_x() < cursor_x(cursor_pos); --cursor_pos ); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field)); clear_select(); mouse_drag_flag = 1; return 1; } else if( clickCount > 1 ) { select_whole(); return 1; } } else { if( !mouse.left_press ) { mouse_drag_flag = 0; } for( cursor_pos = strlen(input_field); cursor_pos > 0 && mouse.cur_x < cursor_x(cursor_pos); --cursor_pos ); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field)); return 1; } return 0; }