#13: undo/redo
This commit is contained in:
parent
cf175d396b
commit
83f42e42f0
|
@ -34,6 +34,7 @@ vibreoffice currently supports:
|
||||||
- Deletion: `x`, `d`, `c`, `s`, `D`, `C`, `S`, `dd`, `cc`
|
- Deletion: `x`, `d`, `c`, `s`, `D`, `C`, `S`, `dd`, `cc`
|
||||||
- Plus movement and number modifiers: e.g. `5dw`, `c3j`, `2dfe`
|
- Plus movement and number modifiers: e.g. `5dw`, `c3j`, `2dfe`
|
||||||
- Delete a/inner block: e.g. `di(`, `da{`, `ci[`, `ci"`, `ca'`, `dit`
|
- Delete a/inner block: e.g. `di(`, `da{`, `ci[`, `ci"`, `ca'`, `dit`
|
||||||
|
- Undo/redo: `u`, `C-r`
|
||||||
|
|
||||||
### Known differences/issues
|
### Known differences/issues
|
||||||
|
|
||||||
|
|
|
@ -402,7 +402,9 @@ End Function
|
||||||
|
|
||||||
|
|
||||||
Function ProcessNormalKey(keyChar, modifiers)
|
Function ProcessNormalKey(keyChar, modifiers)
|
||||||
dim i, bMatched, bIsVisual, iIterations
|
dim i, bMatched, bIsVisual, iIterations, bIsControl
|
||||||
|
bIsControl = (modifiers = 2) or (modifiers = 8)
|
||||||
|
|
||||||
bIsVisual = (MODE = "VISUAL") ' is this hardcoding bad? what about visual block?
|
bIsVisual = (MODE = "VISUAL") ' is this hardcoding bad? what about visual block?
|
||||||
|
|
||||||
' ----------------------
|
' ----------------------
|
||||||
|
@ -439,7 +441,20 @@ Function ProcessNormalKey(keyChar, modifiers)
|
||||||
|
|
||||||
|
|
||||||
' --------------------
|
' --------------------
|
||||||
' 2. Check Special/Delete Key
|
' 2. Undo/Redo
|
||||||
|
' --------------------
|
||||||
|
If keyChar = "u" Or (bIsControl And keyChar = "r") Then
|
||||||
|
For i = 1 To iIterations
|
||||||
|
Undo(keyChar = "u")
|
||||||
|
Next i
|
||||||
|
|
||||||
|
ProcessNormalKey = True
|
||||||
|
Exit Function
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
' --------------------
|
||||||
|
' 3. Check Special/Delete Key
|
||||||
' --------------------
|
' --------------------
|
||||||
|
|
||||||
' There are no special/delete keys with modifier keys, so exit early
|
' There are no special/delete keys with modifier keys, so exit early
|
||||||
|
@ -461,10 +476,28 @@ Function ProcessNormalKey(keyChar, modifiers)
|
||||||
bMatched = bMatched or bMatchedSpecial
|
bMatched = bMatched or bMatchedSpecial
|
||||||
Next i
|
Next i
|
||||||
|
|
||||||
|
|
||||||
ProcessNormalKey = bMatched
|
ProcessNormalKey = bMatched
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
' Function for both undo and redo
|
||||||
|
Sub Undo(bUndo)
|
||||||
|
On Error Goto ErrorHandler
|
||||||
|
|
||||||
|
If bUndo Then
|
||||||
|
thisComponent.getUndoManager().undo()
|
||||||
|
Else
|
||||||
|
thisComponent.getUndoManager().redo()
|
||||||
|
End If
|
||||||
|
Exit Sub
|
||||||
|
|
||||||
|
' Ignore errors from no more undos/redos in stack
|
||||||
|
ErrorHandler:
|
||||||
|
Resume Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
Function ProcessSpecialKey(keyChar)
|
Function ProcessSpecialKey(keyChar)
|
||||||
dim oTextCursor, bMatched, bIsSpecial
|
dim oTextCursor, bMatched, bIsSpecial
|
||||||
bMatched = True
|
bMatched = True
|
||||||
|
|
Loading…
Reference in New Issue