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:
parent
2cb314de1b
commit
6fd30fc5c1
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user