From 80c03fcbaec573770c3668b92d7608d1885c46d2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 11 Jan 2022 18:54:31 -0500 Subject: [PATCH] GUI: home/end keys --- src/gui/gui.cpp | 34 ++++++++++++++++++++++++++++++++++ src/gui/gui.h | 2 ++ 2 files changed, 36 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index cd483e47f..602a7d227 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1835,6 +1835,34 @@ void FurnaceGUI::moveCursor(int x, int y) { updateScroll(cursor.y); } +void FurnaceGUI::moveCursorTop() { + finishSelection(); + curNibble=false; + if (cursor.y==0) { + cursor.xCoarse=0; + cursor.xFine=0; + } else { + cursor.y=0; + } + selStart=cursor; + selEnd=cursor; + updateScroll(cursor.y); +} + +void FurnaceGUI::moveCursorBottom() { + finishSelection(); + curNibble=false; + if (cursor.y==e->song.patLen-1) { + cursor.xCoarse=e->getTotalChannelCount()-1; + cursor.xFine=2+e->song.pat[cursor.xCoarse].effectRows*2; + } else { + cursor.y=e->song.patLen-1; + } + selStart=cursor; + selEnd=cursor; + updateScroll(cursor.y); +} + void FurnaceGUI::editAdvance() { finishSelection(); cursor.y+=editStep; @@ -2353,6 +2381,12 @@ void FurnaceGUI::keyDown(SDL_Event& ev) { case SDLK_PAGEDOWN: moveCursor(0,16); break; + case SDLK_HOME: + moveCursorTop(); + break; + case SDLK_END: + moveCursorBottom(); + break; case SDLK_DELETE: doDelete(); break; diff --git a/src/gui/gui.h b/src/gui/gui.h index 424383f3a..6768bfe6a 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -235,6 +235,8 @@ class FurnaceGUI { void finishSelection(); void moveCursor(int x, int y); + void moveCursorTop(); + void moveCursorBottom(); void editAdvance(); void prepareUndo(ActionType action); void makeUndo(ActionType action);