X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbctextbox.C;h=15ece1c5aef641ab0c92ce7cd9f160b1917dcedb;hb=5249bc8407920effc00e13940d3d4ccea0dd5d9f;hp=0bcf9f464440069c1b517eac99987d0064a6fd61;hpb=b0adaf11e855fd84af935d879848467a957d6c67;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bctextbox.C b/cinelerra-5.1/guicast/bctextbox.C index 0bcf9f46..15ece1c5 100644 --- a/cinelerra-5.1/guicast/bctextbox.C +++ b/cinelerra-5.1/guicast/bctextbox.C @@ -2079,50 +2079,29 @@ int BC_TextBox::get_cursor_letter2(int cursor_x, int cursor_y) void BC_TextBox::select_word(int &letter1, int &letter2, int ibeam_letter) { int wtext_len = wtext_update(); - if(!wtext_len) return; - letter1 = letter2 = ibeam_letter; - do { - if(iswalnum(wtext[letter1])) letter1--; - } while(letter1 > 0 && iswalnum(wtext[letter1])); - - if( !iswalnum(wtext[letter1]) ) letter1++; - - do { - if( iswalnum(wtext[letter2]) ) letter2++; - } while( letter2 < wtext_len && isalnum(wtext[letter2]) ); - - if( letter2 < wtext_len && wtext[letter2] == ' ') letter2++; - - if(letter1 < 0) letter1 = 0; - if(letter2 < 0) letter2 = 0; - if(letter1 > wtext_len) letter1 = wtext_len; - if(letter2 > wtext_len) letter2 = wtext_len; + if( letter1 < 0 ) letter1 = 0; + if( letter2 < 0 ) letter2 = 0; + if( letter1 > wtext_len ) letter1 = wtext_len; + if( letter2 > wtext_len ) letter2 = wtext_len; + if( !wtext_len ) return; + for( int i=letter1; i>=0 && iswalnum(wtext[i]); --i ) letter1 = i; + for( int i=letter2; i 0 && wtext[letter1] != '\n' ); - if( wtext[letter1] == '\n' ) letter1++; - -// Advance to next linefeed - do { - if( wtext[letter2] != '\n' ) letter2++; - } while( letter2 < wtext_len && wtext[letter2] != '\n' ); - if( letter2 < wtext_len && wtext[letter2] == '\n') letter2++; - - if(letter1 < 0) letter1 = 0; - if(letter2 < 0) letter2 = 0; - if(letter1 > wtext_len) letter1 = wtext_len; - if(letter2 > wtext_len) letter2 = wtext_len; + if( letter1 < 0 ) letter1 = 0; + if( letter2 < 0 ) letter2 = 0; + if( letter1 > wtext_len ) letter1 = wtext_len; + if( letter2 > wtext_len ) letter2 = wtext_len; + if( !wtext_len ) return; + for( int i=letter1; i>=0 && wtext[i]!='\n'; --i ) letter1 = i; + for( int i=letter2; ito_clipboard(ctext, clip_len, clipboard_num); } @@ -2146,11 +2125,11 @@ void BC_TextBox::paste_selection(int clipboard_num) int len = get_clipboard()->clipboard_len(clipboard_num); if( len > 0 ) { - char cstring[len]; wchar_t wstring[len]; --len; - get_clipboard()->from_clipboard(cstring, len, clipboard_num); + char cstring[len]; wchar_t wstring[len]; + get_clipboard()->from_clipboard(cstring, len, clipboard_num); --len; //printf("BC_TextBox::paste_selection %d '%*.*s'\n",len,len,len,cstring); - BC_Resources::encode(BC_Resources::encoding, BC_Resources::wide_encoding, - cstring,(len+1), (char *)wstring,(len+1)*sizeof(wchar_t)); + len = BC_Resources::encode(BC_Resources::encoding, BC_Resources::wide_encoding, + cstring,len, (char *)wstring,(len+1)*sizeof(wchar_t)) / sizeof(wchar_t); insert_text(wstring, len); } } @@ -2434,6 +2413,11 @@ void BC_ScrollTextBox::wset_selection(int char1, int char2, int ibeam) this->text->wset_selection(char1, char2, ibeam); } +int BC_ScrollTextBox::get_ibeam_letter() +{ + return this->text->get_ibeam_letter(); +} +