mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-23 04:55:13 +00:00
GUI: finally fix scroll changes order
This commit is contained in:
parent
251893c5f8
commit
7ba5b172d5
3 changed files with 9 additions and 3 deletions
|
@ -6863,6 +6863,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
waveEditStyle(0),
|
waveEditStyle(0),
|
||||||
displayInsTypeListMakeInsSample(-1),
|
displayInsTypeListMakeInsSample(-1),
|
||||||
mobileEditPage(0),
|
mobileEditPage(0),
|
||||||
|
wheelCalmDown(0),
|
||||||
mobileMenuPos(0.0f),
|
mobileMenuPos(0.0f),
|
||||||
autoButtonSize(0.0f),
|
autoButtonSize(0.0f),
|
||||||
mobileEditAnim(0.0f),
|
mobileEditAnim(0.0f),
|
||||||
|
|
|
@ -1342,6 +1342,7 @@ class FurnaceGUI {
|
||||||
int waveEditStyle;
|
int waveEditStyle;
|
||||||
int displayInsTypeListMakeInsSample;
|
int displayInsTypeListMakeInsSample;
|
||||||
int mobileEditPage;
|
int mobileEditPage;
|
||||||
|
int wheelCalmDown;
|
||||||
float mobileMenuPos, autoButtonSize, mobileEditAnim;
|
float mobileMenuPos, autoButtonSize, mobileEditAnim;
|
||||||
ImVec2 mobileEditButtonPos, mobileEditButtonSize;
|
ImVec2 mobileEditButtonPos, mobileEditButtonSize;
|
||||||
const int* curSysSection;
|
const int* curSysSection;
|
||||||
|
|
|
@ -437,7 +437,7 @@ void FurnaceGUI::drawPattern() {
|
||||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX()+centerOff);
|
ImGui::SetCursorPosX(ImGui::GetCursorPosX()+centerOff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTable("PatternView",displayChans+2,ImGuiTableFlags_BordersInnerV|ImGuiTableFlags_ScrollX|ImGuiTableFlags_ScrollY|ImGuiTableFlags_NoPadInnerX|ImGuiTableFlags_NoBordersInFrozenArea|(settings.cursorFollowsWheel?ImGuiTableFlags_NoScrollWithMouse:0))) {
|
if (ImGui::BeginTable("PatternView",displayChans+2,ImGuiTableFlags_BordersInnerV|ImGuiTableFlags_ScrollX|ImGuiTableFlags_ScrollY|ImGuiTableFlags_NoPadInnerX|ImGuiTableFlags_NoBordersInFrozenArea|((settings.cursorFollowsWheel || wheelCalmDown)?ImGuiTableFlags_NoScrollWithMouse:0))) {
|
||||||
ImGui::TableSetupColumn("pos",ImGuiTableColumnFlags_WidthFixed);
|
ImGui::TableSetupColumn("pos",ImGuiTableColumnFlags_WidthFixed);
|
||||||
char chanID[2048];
|
char chanID[2048];
|
||||||
float lineHeight=(ImGui::GetTextLineHeight()+2*dpiScale);
|
float lineHeight=(ImGui::GetTextLineHeight()+2*dpiScale);
|
||||||
|
@ -955,8 +955,8 @@ void FurnaceGUI::drawPattern() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// overflow changes order
|
// overflow changes order
|
||||||
// TODO: this is very unreliable and sometimes it can warp you out of the song
|
if (--wheelCalmDown<0) wheelCalmDown=0;
|
||||||
if (settings.scrollChangesOrder && (!e->isPlaying() || !followPattern) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows) && !settings.cursorFollowsWheel) {
|
if (settings.scrollChangesOrder && (!e->isPlaying() || !followPattern) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows) && !settings.cursorFollowsWheel && !wheelCalmDown) {
|
||||||
if (wheelY!=0) {
|
if (wheelY!=0) {
|
||||||
if (wheelY>0) {
|
if (wheelY>0) {
|
||||||
if (ImGui::GetScrollY()<=0) {
|
if (ImGui::GetScrollY()<=0) {
|
||||||
|
@ -965,10 +965,12 @@ void FurnaceGUI::drawPattern() {
|
||||||
setOrder(curOrder-1);
|
setOrder(curOrder-1);
|
||||||
ImGui::SetScrollY(ImGui::GetScrollMaxY());
|
ImGui::SetScrollY(ImGui::GetScrollMaxY());
|
||||||
updateScroll(e->curSubSong->patLen);
|
updateScroll(e->curSubSong->patLen);
|
||||||
|
wheelCalmDown=2;
|
||||||
} else if (settings.scrollChangesOrder==2) {
|
} else if (settings.scrollChangesOrder==2) {
|
||||||
setOrder(e->curSubSong->ordersLen-1);
|
setOrder(e->curSubSong->ordersLen-1);
|
||||||
ImGui::SetScrollY(ImGui::GetScrollMaxY());
|
ImGui::SetScrollY(ImGui::GetScrollMaxY());
|
||||||
updateScroll(e->curSubSong->patLen);
|
updateScroll(e->curSubSong->patLen);
|
||||||
|
wheelCalmDown=2;
|
||||||
}
|
}
|
||||||
haveHitBounds=false;
|
haveHitBounds=false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -984,10 +986,12 @@ void FurnaceGUI::drawPattern() {
|
||||||
setOrder(curOrder+1);
|
setOrder(curOrder+1);
|
||||||
ImGui::SetScrollY(0);
|
ImGui::SetScrollY(0);
|
||||||
updateScroll(0);
|
updateScroll(0);
|
||||||
|
wheelCalmDown=2;
|
||||||
} else if (settings.scrollChangesOrder==2) {
|
} else if (settings.scrollChangesOrder==2) {
|
||||||
setOrder(0);
|
setOrder(0);
|
||||||
ImGui::SetScrollY(0);
|
ImGui::SetScrollY(0);
|
||||||
updateScroll(0);
|
updateScroll(0);
|
||||||
|
wheelCalmDown=2;
|
||||||
}
|
}
|
||||||
haveHitBounds=false;
|
haveHitBounds=false;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue