Make block undo and single undo work again.

This commit is contained in:
Jonathan Moore Liles 2008-03-05 11:03:17 -06:00
parent bccdecdee6
commit 2f91da168d
2 changed files with 20 additions and 7 deletions

View File

@ -242,15 +242,26 @@ Loggable::undo ( void )
int ui = _undo_index; int ui = _undo_index;
block_start();
if ( strcmp( b, "{" ) )
{
/* It's a single undo, get rid of trailing messages in this block */
n = 1;
s = b + 2;
s += strlen( s ) - 1;
}
while ( n-- ) while ( n-- )
{ {
while ( s >= b && *(--s) ); while ( s >= b && *(--s) );
s++; s++;
if ( ( ! strcmp( s, "{" ) ) if ( ! strcmp( s, "{" ) )
|| ( ! strcmp( s, "}" ) ) ) break;
continue;
if ( *s == '\t' ) if ( *s == '\t' )
s++; s++;
@ -313,6 +324,8 @@ Loggable::undo ( void )
s -= 2; s -= 2;
} }
block_end();
// FIXME: bogus... needs to account for multiple events. // FIXME: bogus... needs to account for multiple events.
_undo_index = ui + 1; _undo_index = ui + 1;

View File

@ -84,17 +84,17 @@ public:
void void
block_start ( void ) block_start ( void )
{ {
// indent();
// log( "{\n" );
++Loggable::_level; ++Loggable::_level;
} }
static static
void void
block_end ( void ) block_end ( void )
{ {
assert( --Loggable::_level >= 0 ); assert( --Loggable::_level >= 0 );
// indent();
// log( "}\n" ); if ( Loggable::_level == 0 )
flush();
} }
static static