From 96b3ccab8ae245c6d0d92c9b7c2c64dbdd978275 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 23 Aug 2022 03:57:21 -0500 Subject: [PATCH] I see UI!!!! --- src/gui/gui.cpp | 27 ++++++++++++++++++++++++++- src/gui/gui.h | 1 + src/gui/insEdit.cpp | 18 +++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8ea22a14..0d53e97d 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1783,7 +1783,31 @@ void FurnaceGUI::showError(String what) { #define B30(tt) (macroDragBit30?((((tt)&0xc0000000)==0x40000000 || ((tt)&0xc0000000)==0x80000000)?0x40000000:0):0) #define MACRO_DRAG(t) \ - if (macroDragBitMode) { \ + if (macroDragSettingBit30) { \ + if (macroDragLastX!=x || macroDragLastY!=y) { \ + macroDragLastX=x; \ + macroDragLastY=y; \ + if (macroDragInitialValueSet) { \ + if (!macroDragInitialValue) { \ + if (t[x]&0x80000000) { \ + t[x]&=~0x40000000; \ + } else { \ + t[x]|=0x40000000; \ + } \ + } else { \ + if (t[x]&0x80000000) { \ + t[x]|=0x40000000; \ + } else { \ + t[x]&=~0x40000000; \ + } \ + } \ + } else { \ + macroDragInitialValue=(((t[x])&0xc0000000)==0x40000000 || ((t[x])&0xc0000000)==0x80000000); \ + macroDragInitialValueSet=true; \ + t[x]^=0x40000000; \ + } \ + } \ + } else if (macroDragBitMode) { \ if (macroDragLastX!=x || macroDragLastY!=y) { \ macroDragLastX=x; \ macroDragLastY=y; \ @@ -4893,6 +4917,7 @@ FurnaceGUI::FurnaceGUI(): macroDragInitialValue(false), macroDragChar(false), macroDragBit30(false), + macroDragSettingBit30(false), macroDragLineMode(false), macroDragMouseMoved(false), macroDragLineInitial(0,0), diff --git a/src/gui/gui.h b/src/gui/gui.h index a7f906ae..80aa087f 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1397,6 +1397,7 @@ class FurnaceGUI { bool macroDragInitialValue; bool macroDragChar; bool macroDragBit30; + bool macroDragSettingBit30; bool macroDragLineMode; bool macroDragMouseMoved; ImVec2 macroDragLineInitial; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 2a2c8ecd..c89652a3 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1374,6 +1374,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { macroDragLen=totalFit; macroDragActive=true; macroDragBit30=i.bit30; + macroDragSettingBit30=false; macroDragTarget=i.macro->val; macroDragChar=false; macroDragLineMode=(i.isBitfield)?false:ImGui::IsItemClicked(ImGuiMouseButton_Right); @@ -1442,9 +1443,24 @@ void FurnaceGUI::drawMacros(std::vector& macros) { } // bit 30 area - // TODO: ability to set it if (i.bit30) { PlotCustom("##IMacroBit30",bit30Indicator,totalFit,macroDragScroll,NULL,0,1,ImVec2(availableWidth,12.0f*dpiScale),sizeof(float),i.color,i.macro->len-macroDragScroll,¯oHoverBit30); + if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { + macroDragStart=ImGui::GetItemRectMin(); + macroDragAreaSize=ImVec2(availableWidth,12.0f*dpiScale); + macroDragInitialValueSet=false; + macroDragInitialValue=false; + macroDragLen=totalFit; + macroDragActive=true; + macroDragBit30=i.bit30; + macroDragSettingBit30=true; + macroDragTarget=i.macro->val; + macroDragChar=false; + macroDragLineMode=false; + macroDragLineInitial=ImVec2(0,0); + lastMacroDesc=i; + processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); + } } // loop area