示例#1
0
void ADD_UNDO_FUNC(Playlist(void)){
  struct Tracker_Windows *window = root->song->tracker_windows;

  Undo_Add(
           window->l.num,
           window->wblock->l.num,
           window->curr_track,
           window->wblock->curr_realline,
           BL_copy(),
           Undo_Do_Playlist,
           "Playlist"
           );
}
示例#2
0
static void *Undo_Do_Playlist(
	struct Tracker_Windows *window,
	struct WBlocks *wblock,
	struct WTracks *wtrack,
	int realline,
	void *pointer
){
  int *ret = BL_copy();

  BL_paste(pointer);
  BS_UpdateBlockList();
  BS_UpdatePlayList();

  return ret;
}
void Undo_Block_Delete(
	NInt blockpos
){
	struct Tracker_Windows *window=root->song->tracker_windows;
	struct WBlocks *wblock=window->wblock;

	struct Undo_Block_InsertDelete *ubi=talloc(sizeof(struct Undo_Block_InsertDelete));
	ubi->blockpos=blockpos;
	ubi->wblock=(struct WBlocks *)ListFindElement1(&window->wblocks->l,blockpos);
        ubi->playlist=BL_copy();

	Undo_Add(
		window->l.num,
		wblock->l.num,
		window->curr_track,
		wblock->curr_realline,
		ubi,
		Undo_Do_Block_Delete
	);
}