Triggering the unsaved state on each letter typed, so we can safely go to open or new.
This commit is contained in:
parent
6e74cb03cb
commit
ac5400ecf2
1 changed files with 83 additions and 8 deletions
|
|
@ -1433,7 +1433,7 @@ static int brush_counter, brush_frame;
|
||||||
|
|
||||||
|
|
||||||
static unsigned cur_color;
|
static unsigned cur_color;
|
||||||
static int cur_tool, cur_brush;
|
static int cur_tool, cur_brush, old_tool;
|
||||||
static int cur_stamp[MAX_STAMP_GROUPS];
|
static int cur_stamp[MAX_STAMP_GROUPS];
|
||||||
static int cur_shape, cur_magic;
|
static int cur_shape, cur_magic;
|
||||||
static int cur_font, cur_eraser;
|
static int cur_font, cur_eraser;
|
||||||
|
|
@ -2062,7 +2062,7 @@ static void mainloop(void)
|
||||||
old_stamp_group;
|
old_stamp_group;
|
||||||
int num_things;
|
int num_things;
|
||||||
int *thing_scroll;
|
int *thing_scroll;
|
||||||
int cur_thing, do_draw, old_tool, max;
|
int cur_thing, do_draw, max;
|
||||||
int ignoring_motion;
|
int ignoring_motion;
|
||||||
SDL_TimerID scrolltimer = NULL;
|
SDL_TimerID scrolltimer = NULL;
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
|
@ -2391,9 +2391,8 @@ static void mainloop(void)
|
||||||
{
|
{
|
||||||
/*Select tool has been selected but no text has been selected to edit*/
|
/*Select tool has been selected but no text has been selected to edit*/
|
||||||
}
|
}
|
||||||
else
|
else if ((cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL) &&
|
||||||
//{FIXAM
|
cursor_x != -1 && cursor_y != -1)
|
||||||
if ((cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL) && cursor_x != -1 && cursor_y != -1)
|
|
||||||
{
|
{
|
||||||
static int redraw = 0;
|
static int redraw = 0;
|
||||||
wchar_t* im_cp = im_data.s;
|
wchar_t* im_cp = im_data.s;
|
||||||
|
|
@ -2445,6 +2444,18 @@ static void mainloop(void)
|
||||||
SNDDIST_NEAR);
|
SNDDIST_NEAR);
|
||||||
|
|
||||||
do_render_cur_text(0);
|
do_render_cur_text(0);
|
||||||
|
|
||||||
|
if (been_saved)
|
||||||
|
{
|
||||||
|
been_saved = 0;
|
||||||
|
|
||||||
|
if (!disable_save)
|
||||||
|
tool_avail[TOOL_SAVE] = 1;
|
||||||
|
|
||||||
|
draw_toolbar();
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (*im_cp == L'\r')
|
else if (*im_cp == L'\r')
|
||||||
|
|
@ -2458,6 +2469,17 @@ static void mainloop(void)
|
||||||
do_render_cur_text(1);
|
do_render_cur_text(1);
|
||||||
texttool_len = 0;
|
texttool_len = 0;
|
||||||
cursor_textwidth = 0;
|
cursor_textwidth = 0;
|
||||||
|
|
||||||
|
if (been_saved)
|
||||||
|
{
|
||||||
|
been_saved = 0;
|
||||||
|
|
||||||
|
if (!disable_save)
|
||||||
|
tool_avail[TOOL_SAVE] = 1;
|
||||||
|
|
||||||
|
draw_toolbar();
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (cur_tool == TOOL_LABEL &&
|
else if (cur_tool == TOOL_LABEL &&
|
||||||
cur_label == LABEL_SELECT &&
|
cur_label == LABEL_SELECT &&
|
||||||
|
|
@ -2470,6 +2492,17 @@ static void mainloop(void)
|
||||||
add_label_node(0, 0, 0, 0, &label_node_to_edit, NULL);
|
add_label_node(0, 0, 0, 0, &label_node_to_edit, NULL);
|
||||||
derender_node(&label_node_to_edit);
|
derender_node(&label_node_to_edit);
|
||||||
// playsound(screen, 0, SND_DELETE_LABEL, 0, SNDPOS_CENTER); // FIXME lack of specific sound
|
// playsound(screen, 0, SND_DELETE_LABEL, 0, SNDPOS_CENTER); // FIXME lack of specific sound
|
||||||
|
|
||||||
|
if (been_saved)
|
||||||
|
{
|
||||||
|
been_saved = 0;
|
||||||
|
|
||||||
|
if (!disable_save)
|
||||||
|
tool_avail[TOOL_SAVE] = 1;
|
||||||
|
|
||||||
|
draw_toolbar();
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
font_height = TuxPaint_Font_FontHeight(getfonthandle(cur_font));
|
font_height = TuxPaint_Font_FontHeight(getfonthandle(cur_font));
|
||||||
|
|
@ -2495,6 +2528,17 @@ static void mainloop(void)
|
||||||
cursor_x = min(cursor_x + cursor_textwidth, canvas->w);
|
cursor_x = min(cursor_x + cursor_textwidth, canvas->w);
|
||||||
texttool_len = 0;
|
texttool_len = 0;
|
||||||
cursor_textwidth = 0;
|
cursor_textwidth = 0;
|
||||||
|
|
||||||
|
if (been_saved)
|
||||||
|
{
|
||||||
|
been_saved = 0;
|
||||||
|
|
||||||
|
if (!disable_save)
|
||||||
|
tool_avail[TOOL_SAVE] = 1;
|
||||||
|
|
||||||
|
draw_toolbar();
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (cur_tool == TOOL_LABEL &&
|
else if (cur_tool == TOOL_LABEL &&
|
||||||
cur_label == LABEL_SELECT &&
|
cur_label == LABEL_SELECT &&
|
||||||
|
|
@ -2507,6 +2551,17 @@ static void mainloop(void)
|
||||||
add_label_node(0, 0, 0, 0, &label_node_to_edit, NULL);
|
add_label_node(0, 0, 0, 0, &label_node_to_edit, NULL);
|
||||||
derender_node(&label_node_to_edit);
|
derender_node(&label_node_to_edit);
|
||||||
// playsound(screen, 0, SND_DELETE_LABEL, 0, SNDPOS_CENTER); // FIXME lack of specific sound
|
// playsound(screen, 0, SND_DELETE_LABEL, 0, SNDPOS_CENTER); // FIXME lack of specific sound
|
||||||
|
|
||||||
|
if (been_saved)
|
||||||
|
{
|
||||||
|
been_saved = 0;
|
||||||
|
|
||||||
|
if (!disable_save)
|
||||||
|
tool_avail[TOOL_SAVE] = 1;
|
||||||
|
|
||||||
|
draw_toolbar();
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SPEECH
|
#ifdef SPEECH
|
||||||
|
|
@ -2532,6 +2587,17 @@ static void mainloop(void)
|
||||||
|
|
||||||
do_render_cur_text(0);
|
do_render_cur_text(0);
|
||||||
|
|
||||||
|
if (been_saved)
|
||||||
|
{
|
||||||
|
been_saved = 0;
|
||||||
|
|
||||||
|
if (!disable_save)
|
||||||
|
tool_avail[TOOL_SAVE] = 1;
|
||||||
|
|
||||||
|
draw_toolbar();
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (cursor_x + old_cursor_textwidth <= canvas->w - 50 &&
|
if (cursor_x + old_cursor_textwidth <= canvas->w - 50 &&
|
||||||
cursor_x + cursor_textwidth > canvas->w - 50)
|
cursor_x + cursor_textwidth > canvas->w - 50)
|
||||||
|
|
@ -13595,6 +13661,15 @@ static int do_save(int tool, int dont_show_success_results)
|
||||||
if (disable_save)
|
if (disable_save)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
printf("%i, %i\n",TOOL_LABEL, tool);
|
||||||
|
if ((tool == TOOL_TEXT || tool == TOOL_LABEL) ||
|
||||||
|
(tool==TOOL_OPEN && (old_tool == TOOL_TEXT || old_tool == TOOL_LABEL)) ||
|
||||||
|
(tool == TOOL_NEW && (old_tool == TOOL_TEXT || old_tool == TOOL_LABEL)) )
|
||||||
|
{
|
||||||
|
do_render_cur_text(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SDL_BlitSurface(canvas, NULL, save_canvas, NULL);
|
SDL_BlitSurface(canvas, NULL, save_canvas, NULL);
|
||||||
SDL_BlitSurface(label, NULL, save_canvas, NULL);
|
SDL_BlitSurface(label, NULL, save_canvas, NULL);
|
||||||
|
|
||||||
|
|
@ -16792,7 +16867,8 @@ static void do_render_cur_text(int do_blit)
|
||||||
do_setcursor(cursor_arrow);
|
do_setcursor(cursor_arrow);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(cur_tool == TOOL_LABEL && cur_label == LABEL_LABEL)
|
else if((cur_tool == TOOL_LABEL && cur_label == LABEL_LABEL) ||
|
||||||
|
(cur_tool == TOOL_PRINT && old_tool == TOOL_LABEL && cur_label == LABEL_LABEL))
|
||||||
{
|
{
|
||||||
myblit(tmp_surf, &src, label, &dest);
|
myblit(tmp_surf, &src, label, &dest);
|
||||||
|
|
||||||
|
|
@ -19899,7 +19975,7 @@ int do_new_dialog(void)
|
||||||
SDL_BlitSurface(img_starter, NULL, canvas, NULL);
|
SDL_BlitSurface(img_starter, NULL, canvas, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (first_template != -1 && which >= first_template)
|
else if (first_template != -1 && which >= first_template)
|
||||||
{
|
{
|
||||||
/* Load a template: */
|
/* Load a template: */
|
||||||
|
|
||||||
|
|
@ -19907,7 +19983,6 @@ else if (first_template != -1 && which >= first_template)
|
||||||
|
|
||||||
snprintf(fname, sizeof(fname), "%s/%s%s",
|
snprintf(fname, sizeof(fname), "%s/%s%s",
|
||||||
dirname[d_places[which]], d_names[which], d_exts[which]);
|
dirname[d_places[which]], d_names[which], d_exts[which]);
|
||||||
|
|
||||||
img = myIMG_Load(fname);
|
img = myIMG_Load(fname);
|
||||||
|
|
||||||
if (img == NULL)
|
if (img == NULL)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue