Added the redo action
Redo now works properly regardless of cursor position