diff --git a/src/sounds.h b/src/sounds.h index c6d5792d5..360cf1c4c 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -4,11 +4,11 @@ For Tux Paint List of sound effects. - Copyright (c) 2002 by Bill Kendrick + Copyright (c) 2005 by Bill Kendrick bill@newbreedsoftware.com http://www.newbreedsoftware.com/tuxpaint/ - June 15, 2002 - December 12, 2004 + June 15, 2002 - January 7, 2005 */ @@ -50,9 +50,12 @@ enum { SND_TINT, /* Magic tint */ SND_CARTOON, /* Magic cartoon */ SND_KEYCLICK, /* Text tool keyboard click feedback */ + SND_KEYCLICKRING, /* Text tool keyboard click feedback with bell ring */ SND_RETURN, /* Text tool carriage return sound */ SND_SHRINK, /* Stamp shrink */ SND_GROW, /* Stamp grow */ + SND_ITALIC_ON, /* Italic on */ + SND_ITALIC_OFF, /* Italic off */ NUM_SOUNDS }; @@ -94,8 +97,11 @@ const char * const sound_fnames[NUM_SOUNDS] = { DATA_PREFIX "sounds/tint.wav", DATA_PREFIX "sounds/cartoon.wav", DATA_PREFIX "sounds/keyclick.wav", + DATA_PREFIX "sounds/typewriterbell.wav", DATA_PREFIX "sounds/return.wav", DATA_PREFIX "sounds/shrink.wav", - DATA_PREFIX "sounds/grow.wav" + DATA_PREFIX "sounds/grow.wav", + DATA_PREFIX "sounds/italic_on.wav", + DATA_PREFIX "sounds/italic_off.wav" }; diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 4bcde9856..72f642dd6 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -22,12 +22,12 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - June 14, 2002 - January 6, 2005 + June 14, 2002 - January 7, 2005 */ #define VER_VERSION "0.9.15" -#define VER_DATE "2005-01-06" +#define VER_DATE "2005-01-07" //#define VIDEO_BPP 15 // saves memory @@ -2632,7 +2632,7 @@ static void mainloop(void) { texttool_len--; texttool_str[texttool_len] = '\0'; - playsound(0, SND_KEYCLICK, 1); + playsound(0, SND_KEYCLICK, 0); do_render_cur_text(0); } @@ -2653,10 +2653,23 @@ static void mainloop(void) playsound(0, SND_RETURN, 1); } + else if (key_down == SDLK_TAB) + { + if (texttool_len > 0) + { + rec_undo_buffer(); + do_render_cur_text(1); + cursor_x = min(cursor_x + cursor_textwidth, + canvas->w); + texttool_len = 0; + cursor_textwidth = 0; + } + } else if (isprint(key_unicode)) { if (texttool_len < sizeof(texttool_str) - MAX_UTF8_CHAR_LENGTH) { + int old_cursor_textwidth = cursor_textwidth; #ifdef DEBUG printf(" key = %c\n" "unicode = %c (%d)\n\n", @@ -2666,8 +2679,18 @@ static void mainloop(void) texttool_str[texttool_len++] = key_unicode; texttool_str[texttool_len] = '\0'; - playsound(0, SND_KEYCLICK, 1); do_render_cur_text(0); + + + if (cursor_x + old_cursor_textwidth <= canvas->w - 50 && + cursor_x + cursor_textwidth > canvas->w - 50) + { + playsound(0, SND_KEYCLICKRING, 1); + } + else + { + playsound(0, SND_KEYCLICK, 0); + } } } } @@ -3107,12 +3130,12 @@ static void mainloop(void) if (text_state & TTF_STYLE_ITALIC) { text_state &= ~TTF_STYLE_ITALIC; - control_sound = SND_CHALK; + control_sound = SND_ITALIC_ON; } else { text_state |= TTF_STYLE_ITALIC; - control_sound = SND_SMUDGE; + control_sound = SND_ITALIC_OFF; } } else @@ -3133,19 +3156,24 @@ static void mainloop(void) if (control_sound != -1) { playsound(0, control_sound, 0); - // need to invalidate all the cached user fonts, causing reload on demand - int i; - for (i = 0; i < num_font_families; i++) - { - if (user_font_families[i] && user_font_families[i]->handle) - { - TTF_CloseFont(user_font_families[i]->handle); - user_font_families[i]->handle = NULL; - } - } - // FIXME: is setting do_draw enough? - draw_fonts(); - update_screen_rect(&r_toolopt); + + + if (cur_tool == TOOL_TEXT) + { + // need to invalidate all the cached user fonts, causing reload on demand + int i; + for (i = 0; i < num_font_families; i++) + { + if (user_font_families[i] && user_font_families[i]->handle) + { + TTF_CloseFont(user_font_families[i]->handle); + user_font_families[i]->handle = NULL; + } + } + // FIXME: is setting do_draw enough? + draw_fonts(); + update_screen_rect(&r_toolopt); + } } } } @@ -7969,6 +7997,8 @@ static void draw_fonts(void) SDL_Color black = {0, 0, 0, 0}; + printf("Redrawing fonts\n"); + /* Draw the title: */ draw_image_title(TITLE_LETTERS, r_ttoolopt);