From 9102a54ce4f6d141bf53449802349cb839393399 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 12 Mar 2020 06:53:11 -0700 Subject: [PATCH] Added click to toggle breakpoint, ctrl-click for goto definition --- IDE/src/ui/SourceEditWidgetContent.bf | 6 +++++ IDE/src/ui/SourceViewPanel.bf | 38 ++++++++++++++++++--------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/IDE/src/ui/SourceEditWidgetContent.bf b/IDE/src/ui/SourceEditWidgetContent.bf index 55a1b104..7ae6c3b4 100644 --- a/IDE/src/ui/SourceEditWidgetContent.bf +++ b/IDE/src/ui/SourceEditWidgetContent.bf @@ -2964,6 +2964,12 @@ namespace IDE.ui var useX = x; var useY = y; + if ((btn == 0) && (mWidgetWindow.IsKeyDown(.Control))) + { + gApp.GoToDefinition(); + return; + } + if ((btn == 1) && (mSourceViewPanel != null)) { #unwarn diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index 165bd367..06930452 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -3688,18 +3688,19 @@ namespace IDE.ui return null; } + int lineIdx; + int lineCharIdx; + mEditWidget.Content.GetLineCharAtIdx(mEditWidget.Content.CursorTextPos, out lineIdx, out lineCharIdx); + return ToggleBreakpointAt(lineIdx, lineCharIdx, setKind, flags, threadId); + } + + public Breakpoint ToggleBreakpointAt(int lineIdx, int lineCharIdx, Breakpoint.SetKind setKind = .Toggle, Breakpoint.SetFlags flags = .None, int threadId = -1) + { + var lineIdx; + var lineCharIdx; + DebugManager debugManager = IDEApp.sApp.mDebugger; - int lineIdx; - int lineCharIdx; - mEditWidget.Content.GetLineCharAtIdx(mEditWidget.Content.CursorTextPos, out lineIdx, out lineCharIdx); - - /*let lineAndCol = mEditWidget.Content.CursorLineAndColumn; - if (SelectBreakpointsAtLine(lineAndCol.mLine)) - { - gApp.mBreakpointPanel.ConfigureBreakpoints(mWidgetWindow); - }*/ - HashSet breakpoints = scope .(); bool hadBreakpoint = false; @@ -3742,7 +3743,7 @@ namespace IDE.ui int textPos = mEditWidget.Content.CursorTextPos - lineCharIdx; lineCharIdx = 0; - // Find first non-space char8 + // Find first non-space char while ((textPos < editWidgetContent.mData.mTextLength) && (((char8)editWidgetContent.mData.mText[textPos].mChar).IsWhiteSpace)) { textPos++; @@ -6134,7 +6135,7 @@ namespace IDE.ui public int GetLineAt(float x, float y) { - if (x > GS!(40)) + if (x > mEditWidget.mX - GS!(4)) return -1; DarkEditWidgetContent darkEditWidgetContent = (DarkEditWidgetContent)mEditWidget.Content; @@ -6178,6 +6179,19 @@ namespace IDE.ui { base.MouseClicked(x, y, btn); + if (btn == 0) + { + if ((x >= GS!(3)) && (x < mEditWidget.mX - GS!(8))) + { + int lineClick = GetLineAt(x, y); + if (lineClick >= 0) + { + ToggleBreakpointAt(lineClick, 0); + } + return; + } + } + if (btn == 1) { int lineClick = GetLineAt(x, y);