diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4439329d0..e5aed233c 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3095,6 +3095,7 @@ void FurnaceGUI::drawPattern() { } if (!patternOpen) return; if (e->isPlaying() && followPattern) cursor.y=oldRow; + int demandX=0; SelectionPoint sel1=selStart; SelectionPoint sel2=selEnd; if (sel2.y(ImGui::GetWindowWidth()-200*dpiScale)) { + ImGui::SetScrollX(demandX+200*dpiScale); + } + demandScrollX=false; + } ImGui::EndTable(); } ImGui::PopStyleColor(3); @@ -5227,6 +5242,7 @@ void FurnaceGUI::moveCursor(int x, int y, bool select) { curNibble=false; if (x!=0) { + demandScrollX=true; if (x>0) { for (int i=0; i=(e->song.chanCollapse[cursor.xCoarse]?1:(3+e->song.pat[cursor.xCoarse].effectRows*2))) { @@ -7279,6 +7295,7 @@ bool FurnaceGUI::loop() { if (selecting) { cursor=selEnd; finishSelection(); + demandScrollX=true; if (cursor.xCoarse==selStart.xCoarse && cursor.xFine==selStart.xFine && cursor.y==selStart.y && cursor.xCoarse==selEnd.xCoarse && cursor.xFine==selEnd.xFine && cursor.y==selEnd.y) { updateScroll(cursor.y); @@ -8649,6 +8666,7 @@ FurnaceGUI::FurnaceGUI(): followPattern(true), changeAllOrders(false), collapseWindow(false), + demandScrollX(false), curWindow(GUI_WINDOW_NOTHING), nextWindow(GUI_WINDOW_NOTHING), wavePreviewOn(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 507959554..171457342 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -480,7 +480,7 @@ class FurnaceGUI { bool pianoOpen, notesOpen, channelsOpen; SelectionPoint selStart, selEnd, cursor; bool selecting, curNibble, orderNibble, extraChannelButtons, followOrders, followPattern, changeAllOrders; - bool collapseWindow; + bool collapseWindow, demandScrollX; FurnaceGUIWindows curWindow, nextWindow; float peak[2];