fix bugs related to checking the version of WXME data and chaining undos that are generated within an editor sequence

svn: r6074
This commit is contained in:
Matthew Flatt 2007-04-28 22:56:59 +00:00
parent 2cb314de1b
commit 6fd30fc5c1
5 changed files with 12 additions and 10 deletions

View File

@ -139,16 +139,17 @@ char *wxSchemeModifyRecord::GetName()
#endif
wxUnmodifyRecord::wxUnmodifyRecord(void)
wxUnmodifyRecord::wxUnmodifyRecord(Bool _cont)
{
ok = 1;
cont = _cont;
}
Bool wxUnmodifyRecord::Undo(wxMediaBuffer *media)
{
if (ok)
media->SetModified(FALSE);
return FALSE;
return cont;
}
void wxUnmodifyRecord::DropSetUnmodified(void)

View File

@ -37,9 +37,9 @@ class wxSchemeModifyRecord : public wxChangeRecord
class wxUnmodifyRecord : public wxChangeRecord
{
int ok;
Bool ok, cont;
public:
wxUnmodifyRecord(void);
wxUnmodifyRecord(Bool cont);
Bool Undo(wxMediaBuffer *media);
void DropSetUnmodified(void);
#if CGREC_DEBUG

View File

@ -737,6 +737,7 @@ Bool wxReadMediaVersion(wxMediaStreamIn *mf, wxMediaStreamInBase *b, Bool parseF
b->Read(vbuf, MRED_START_STR_LEN);
if (strcmp(vbuf, MRED_START_STR)) {
/* Maybe we have a #reader... prefix? */
memset(vbuf XFORM_OK_PLUS MRED_START_STR_LEN, 0, MRED_READER_STR_LEN - MRED_START_STR_LEN + 1);
b->Read(vbuf XFORM_OK_PLUS MRED_START_STR_LEN, MRED_READER_STR_LEN - MRED_START_STR_LEN);
if (!strcmp(vbuf, MRED_READER_STR)) {
/* Yes, so try reading start again. */

View File

@ -430,7 +430,7 @@ void wxMediaEdit::OnEvent(wxMouseEvent *event)
return;
if (!event->Moving())
EndStreaks(wxSTREAK_EXCEPT_KEY_SEQUENCE | wxSTREAK_EXCEPT_CURSOR);
EndStreaks(wxSTREAK_EXCEPT_KEY_SEQUENCE | wxSTREAK_EXCEPT_CURSOR | wxSTREAK_EXCEPT_DELAYED);
if (event->ButtonDown() || caretSnip) {
/* First, find clicked-on snip: */
@ -1802,7 +1802,7 @@ void wxMediaEdit::_Insert(wxSnip *isnip, long strlen, wxchar *str, wxList *snips
if (!modified) {
wxUnmodifyRecord *ur;
ur = new WXGC_PTRS wxUnmodifyRecord;
ur = new WXGC_PTRS wxUnmodifyRecord(delayedStreak);
AddUndo(ur);
}
if (!noundomode) {
@ -1932,7 +1932,7 @@ void wxMediaEdit::Insert(wxchar a_char, long start, long end)
streak = typingStreak;
ifs = insertForceStreak;
EndStreaks();
EndStreaks(wxSTREAK_EXCEPT_DELAYED);
insertForceStreak = streak;
Insert(buffer, start, end);
@ -2024,7 +2024,7 @@ void wxMediaEdit::_Delete(long start, long end, Bool withUndo, Bool scrollOk)
if (withUndo) {
if (!modified) {
wxUnmodifyRecord *ur;
ur = new WXGC_PTRS wxUnmodifyRecord;
ur = new WXGC_PTRS wxUnmodifyRecord(delayedStreak);
AddUndo(ur);
}
rec = new WXGC_PTRS wxDeleteRecord(start, end, deletionStreak || delayedStreak
@ -2220,7 +2220,7 @@ void wxMediaEdit::Delete()
dstreak = deletionStreak;
dfs = deleteForceStreak;
EndStreaks();
EndStreaks(wxSTREAK_EXCEPT_DELAYED);
deleteForceStreak = dstreak;
Delete(startpos, (endpos == startpos) ? -1 : endpos);

View File

@ -352,7 +352,7 @@ void wxMediaEdit::_ChangeStyle(long start, long end,
if (!modified) {
wxUnmodifyRecord *ur;
ur = new WXGC_PTRS wxUnmodifyRecord;
ur = new WXGC_PTRS wxUnmodifyRecord(delayedStreak);
AddUndo(ur);
}
if (rec)