static void DoCancel(ReviewHintData *hd) { StemInfosFree(hd->cv->b.sc->hstem); StemInfosFree(hd->cv->b.sc->vstem); hd->cv->b.sc->hstem = hd->oldh; hd->cv->b.sc->vstem = hd->oldv; hd->cv->b.sc->hconflicts = StemListAnyConflicts(hd->cv->b.sc->hstem); hd->cv->b.sc->vconflicts = StemListAnyConflicts(hd->cv->b.sc->vstem); hd->cv->b.sc->manualhints = hd->oldmanual; if ( hd->undocreated ) SCDoUndo(hd->cv->b.sc,ly_fore); SCOutOfDateBackground(hd->cv->b.sc); SCUpdateAll(hd->cv->b.sc); hd->done = true; }
void collabclient_sendRedo_SC( SplineChar *sc, int layer ) { #ifdef BUILD_COLLAB if( layer == UNDO_LAYER_UNKNOWN ) { layer = ly_fore; } FontViewBase* fv = sc->parent->fv; cloneclient_t* cc = fv->collabClient; if( !cc ) return; printf("collabclient_sendRedo(SC) fv:%p layer:%d\n", fv, layer ); printf("collabclient_sendRedo() preserveUndo:%p\n", cc->preserveUndo ); if( !cc->preserveUndo ) return; if( DEBUG_SHOW_SFD_CHUNKS ) dumpUndoChain( "start of collabclient_sendRedo()", sc, sc->layers[layer].undoes ); if( true ) { Undoes* undo = sc->layers[layer].undoes; while( undo && undo->undotype == ut_statehint ) { undo = undo->next; // FIXME: throwing away the statehints for now. } sc->layers[layer].undoes = undo; } #if 0 // This is a special case for testing metricsview // for undo chains 3,1,7: ut_statehint, ut_state, ut_width { Undoes* undo = sc->layers[layer].undoes; if( undo && undo->next && undo->undotype == ut_state && undo->next->undotype == ut_width ) undo = undo->next; // FIXME: throwing away info here, should do better. sc->layers[layer].undoes = undo; } #endif if( DEBUG_SHOW_SFD_CHUNKS ) dumpUndoChain( "start of collabclient_sendRedo(2)", sc, sc->layers[layer].undoes ); SCDoUndo( sc, layer ); // CVDoUndo( cv ); Undoes *undo = sc->layers[layer].redoes; printf("collabclient_sendRedo() undo:%p\n", undo ); if( undo ) { sc->layers[layer].redoes = undo->next; collabclient_sendRedo_Internal( fv, sc, undo, 0 ); undo->next = 0; UndoesFree( undo ); } cc->preserveUndo = 0; #endif }