Bug 146976 Save state of the report not correct.
Reproduce: 1) New a library "lib1", add a label "label1" 2) Publish "lib1" 3) New a report "report1", use "lib1" 4) Drag "lib1.label1" into "report1" 5) Go back to "lib1", drop "label1", save and publish again. 6) Go to "report1", refresh the libaray explorer and design. 7) Save "report1" 8) Now, we go back to "lib1" 9) Undo the previous "delete command", "label1" is added back. 10) Save "lib1", and re-publish. 11) Go to "report1", refresh the libaray explorer and design. 12) Save "report1" At this stage, "report1" is saved, but the dirty indicator(*) still displayed in the left side of the report name. I am testing on build N20060613
model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/activity/ActivityStack.java
/**
	 * Undoes the most recently executed (or redone) record. The record is
	 * popped from the undo stack to and pushed onto the redo stack. This method
	 * should only be called when {@link #canUndo()}returns <code>true</code>.
	 * Undo <em>cannot</em> be called while a transaction is active.
	 * <p>
	 * <em><strong>Note</strong>: It is possible to redefine undo( ) to reverse the
	 * action of a record within a transaction. We defer implementation
	 * of this feature until it the application has a demonstrated need
	 * for this feature.</em>
	 */
	public void undo( )
	{
		
		assert canUndo( );
		
		ActivityRecord record = (ActivityRecord) undoStack.pop( );
		assert record.getState( ) == ActivityRecord.DONE_STATE
				|| record.getState( ) == ActivityRecord.REDONE_STATE;
		record.undo( );
		record.setState( ActivityRecord.UNDONE_STATE );
		
		redoStack.push( record );
		record.performPostTasks( transStack );
		
		sendNotifcations( new ActivityStackEvent( this,
				ActivityStackEvent.UNDONE ) );
	}
	/**
	 * Calls redo on the ActivityRecord at the top of the redo stack, and pushes