diff --git a/src/g_editor.c b/src/g_editor.c index f7796b7898c412028ae0d6e44e359565a3324bff..97818f2572ee200598d04b4d249e24b565a0326f 100644 --- a/src/g_editor.c +++ b/src/g_editor.c @@ -67,6 +67,8 @@ extern void glob_preset_node_list_check_loc_and_update(void); // for preset_node extern t_class *text_class; +int do_not_redraw = 0; + struct _outlet { t_object *o_owner; @@ -185,6 +187,7 @@ int gobj_shouldvis(t_gobj *x, struct _glist *glist) void gobj_vis(t_gobj *x, struct _glist *glist, int flag) { + if (do_not_redraw) return; if (x->g_pd->c_wb && x->g_pd->c_wb->w_visfn && gobj_shouldvis(x, glist)) (*x->g_pd->c_wb->w_visfn)(x, glist, flag); } @@ -743,6 +746,7 @@ void canvas_undo_cut(t_canvas *x, void *z, int action) int mode = buf->u_mode; if (action == UNDO_UNDO) { + do_not_redraw += 1; //fprintf(stderr,"UNDO_UNDO\n"); if (mode == UCUT_CUT) { //fprintf(stderr, "UCUT_CUT\n"); @@ -823,6 +827,7 @@ void canvas_undo_cut(t_canvas *x, void *z, int action) } } } + do_not_redraw -= 1; canvas_redraw(x); glob_preset_node_list_check_loc_and_update(); } @@ -4211,7 +4216,7 @@ static void canvas_doclear(t_canvas *x) if (&y->g_pd == newest) glist_select(x, y); } } - while (1) /* this is pretty wierd... should rewrite it */ + while (1) /* this is pretty weird... should rewrite it */ { for (y = x->gl_list; y; y = y2) { @@ -4241,7 +4246,7 @@ static void canvas_doclear(t_canvas *x) restore: canvas_dirty(x, 1); canvas_redraw(x); - //sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); + sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); canvas_resume_dsp(dspstate); } @@ -4354,6 +4359,7 @@ extern int we_are_undoing; static void canvas_dopaste(t_canvas *x, t_binbuf *b) { //fprintf(stderr,"start dopaste\n"); + do_not_redraw += 1; t_gobj *newgobj, *last, *g2; int dspstate = canvas_suspend_dsp(), nbox, count; @@ -4462,6 +4468,10 @@ static void canvas_dopaste(t_canvas *x, t_binbuf *b) /*if (!canvas_undo_name || canvas_undo_name[0] != 'd') { canvas_redraw(x); }*/ + do_not_redraw -= 1; + //fprintf(stderr,"dopaste redraw\n"); + canvas_redraw(x); + sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); if (!abort_when_pasting_from_external_buffer) { glist_donewloadbangs(x);