From eaa1ff5bd0057ff4b0f926ad12aa7b64c695250a Mon Sep 17 00:00:00 2001 From: Pere Pujal i Carabantes Date: Mon, 10 May 2010 21:59:39 +0000 Subject: [PATCH] A fix for a crash with labels, Undo via CTRL-Z was mangled. The crash:start, begin to type a label, click on save, hit enter. --- src/tuxpaint.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 17c35a3c0..acdf4b9aa 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -2085,8 +2085,28 @@ static void mainloop(void) magic_switchout(canvas); if (tool_avail[TOOL_UNDO]) - { - hide_blinking_cursor(); + { + if (cursor_x != -1 && cursor_y != -1) + { + hide_blinking_cursor(); + if (texttool_len > 0) + { + rec_undo_buffer(); + do_render_cur_text(1); + texttool_len = 0; + cursor_textwidth = 0; + label_node_to_edit = NULL; + } + else if(cur_tool == TOOL_LABEL && label_node_to_edit) + { + rec_undo_buffer(); + have_to_rec_label_node = TRUE; + add_label_node(0, 0, 0, 0, NULL); + derender_node(&label_node_to_edit); + label_node_to_edit = NULL; + } + } + if (cur_undo == newest_undo) { rec_undo_buffer(); @@ -19458,6 +19478,7 @@ static void undo_tmp_applied_text() derender_node(&aux_label_node); delete_label_list(&aux_label_node); + have_to_rec_label_node = FALSE; do_render_cur_text(0); } }