Make block undo and single undo work again.
This commit is contained in:
parent
bccdecdee6
commit
2f91da168d
19
Loggable.C
19
Loggable.C
|
@ -242,15 +242,26 @@ Loggable::undo ( void )
|
|||
|
||||
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 ( s >= b && *(--s) );
|
||||
|
||||
s++;
|
||||
|
||||
if ( ( ! strcmp( s, "{" ) )
|
||||
|| ( ! strcmp( s, "}" ) ) )
|
||||
continue;
|
||||
if ( ! strcmp( s, "{" ) )
|
||||
break;
|
||||
|
||||
if ( *s == '\t' )
|
||||
s++;
|
||||
|
@ -313,6 +324,8 @@ Loggable::undo ( void )
|
|||
s -= 2;
|
||||
}
|
||||
|
||||
block_end();
|
||||
|
||||
// FIXME: bogus... needs to account for multiple events.
|
||||
_undo_index = ui + 1;
|
||||
|
||||
|
|
|
@ -84,17 +84,17 @@ public:
|
|||
void
|
||||
block_start ( void )
|
||||
{
|
||||
// indent();
|
||||
// log( "{\n" );
|
||||
++Loggable::_level;
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
block_end ( void )
|
||||
{
|
||||
assert( --Loggable::_level >= 0 );
|
||||
// indent();
|
||||
// log( "}\n" );
|
||||
|
||||
if ( Loggable::_level == 0 )
|
||||
flush();
|
||||
}
|
||||
|
||||
static
|
||||
|
|
Loading…
Reference in New Issue