Browse Source

Make block undo and single undo work again.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
2f91da168d
2 changed files with 20 additions and 7 deletions
  1. +16
    -3
      Loggable.C
  2. +4
    -4
      Loggable.H

+ 16
- 3
Loggable.C View File

@@ -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;



+ 4
- 4
Loggable.H View File

@@ -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…
Cancel
Save