diff --git a/IDE/src/ui/GoToLineDialog.bf b/IDE/src/ui/GoToLineDialog.bf index 3aa2221d..7970d67c 100644 --- a/IDE/src/ui/GoToLineDialog.bf +++ b/IDE/src/ui/GoToLineDialog.bf @@ -15,6 +15,8 @@ namespace IDE.ui SourceViewPanel mSourceViewPanel; int mCursorPos; double mVertPos; + bool mIsValid = true; + EditWidget mEditWidget; public this(String title = null, String text = null, Image icon = null) : base(title, text, icon) @@ -35,14 +37,16 @@ namespace IDE.ui mDefaultButton = AddButton("OK", new (evt) => GotoLineSubmit(true)); mEscButton = AddButton("Cancel", new (evt) => Cancel()); - var editWidget = AddEdit(StackStringFormat!("{0}", line + 1)); - editWidget.mOnContentChanged.Add(new (evt) => GotoLineSubmit(false)); + mEditWidget = AddEdit(StackStringFormat!("{0}", line + 1)); + mEditWidget.mOnContentChanged.Add(new (evt) => GotoLineSubmit(false)); } void GotoLineSubmit(bool isFinal) { var editWidgetContent = mSourceViewPanel.mEditWidget; + mIsValid = false; + var text = scope String(); mDialogEditWidget.GetText(text); var lineResult = int32.Parse(text); @@ -52,10 +56,12 @@ namespace IDE.ui line--; if ((line < 0) || (line >= editWidgetContent.Content.GetLineCount())) { - IDEApp.Beep(IDEApp.MessageBeepType.Error); + if (isFinal) + IDEApp.Beep(IDEApp.MessageBeepType.Error); return; } - + + mIsValid = true; int column = ((SourceEditWidgetContent)editWidgetContent.Content).GetLineEndColumn(line, false, true, true); editWidgetContent.Content.CursorLineAndColumn = EditWidgetContent.LineAndColumn(line, column); editWidgetContent.Content.CursorMoved(); @@ -74,8 +80,23 @@ namespace IDE.ui editWidgetContent.Content.mSelection = EditSelection(lineStart, lineEnd + 1); } } + else + { + if (isFinal) + IDEApp.Beep(IDEApp.MessageBeepType.Error); + } } + public override void DrawAll(Graphics g) + { + base.DrawAll(g); + if (!mIsValid) + { + using (g.PushColor(0xFFFF0000)) + g.DrawBox(DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Outline), mEditWidget.mX, mEditWidget.mY, mEditWidget.mWidth, mEditWidget.mHeight); + } + } + void Cancel() { var editWidgetContent = mSourceViewPanel.mEditWidget;