Inspired by
today's xkcd I tried to make a quick patch to fedit control used by fasmw, which would allow to move through undo/redo space with the mouse wheel:
wm_mousewheel:
lea ebx,[kbstate]
invoke GetKeyboardState,ebx
test [kbstate+VK_MENU],80h
jnz time_scroll
; ...
time_scroll:
test [editor_mode],FEMODE_READONLY
jnz ignore
test [editor_mode],FEMODE_NOUNDO
jnz enable_undo
move_through_time:
cmp word [wparam+2],0
jl forward_in_time
sub word [wparam+2],120
jc time_scroll_done
mov eax,[undo_data]
test eax,eax
jz time_scroll_done
call undo_changes
jmp move_through_time
forward_in_time:
add word [wparam+2],120
jc time_scroll_done
mov eax,[redo_data]
test eax,eax
jz time_scroll_done
call redo_changes
jmp move_through_time
time_scroll_done:
call create_caret
mov [last_operation],0
jmp text_changed
It allows to "scroll through time" when mouse wheel is used while holding down ALT key.
After playing a bit with this trick I'm starting to think that this could in fact be treated seriously.