From ed341f28cf3b110134a29e9cf5c20d02c21eb32e Mon Sep 17 00:00:00 2001 From: Joachim Meyer Date: Thu, 1 Oct 2015 19:01:06 +0200 Subject: [PATCH] Fix #670. --- include/polycode/ide/PolycodeIDEApp.h | 2 +- src/ide/PolycodeIDEApp.cpp | 23 ++++++++++++----------- src/ide/PolycodeTextEditor.cpp | 3 ++- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/include/polycode/ide/PolycodeIDEApp.h b/include/polycode/ide/PolycodeIDEApp.h index 94bf7ef98..55c3303db 100644 --- a/include/polycode/ide/PolycodeIDEApp.h +++ b/include/polycode/ide/PolycodeIDEApp.h @@ -67,7 +67,7 @@ class PolycodeIDEApp : public EventDispatcher { void saveConfigFile(); void loadConfigFile(); - void openFileInProject(PolycodeProject *project, String filePath); + bool openFileInProject(PolycodeProject *project, String filePath); void openFile(OSFileEntry file); diff --git a/src/ide/PolycodeIDEApp.cpp b/src/ide/PolycodeIDEApp.cpp index fdc8c724d..c36b02164 100644 --- a/src/ide/PolycodeIDEApp.cpp +++ b/src/ide/PolycodeIDEApp.cpp @@ -672,7 +672,7 @@ void PolycodeIDEApp::openDocs() { #endif } -void PolycodeIDEApp::openFileInProject(PolycodeProject *project, String filePath) { +bool PolycodeIDEApp::openFileInProject(PolycodeProject *project, String filePath) { OSFileEntry fileEntry = OSFileEntry(project->getRootFolder()+"/"+filePath, OSFileEntry::TYPE_FILE); Polycode::CoreFile *file = Services()->getCore()->openFile(project->getRootFolder()+"/"+filePath,"r"); @@ -687,9 +687,10 @@ void PolycodeIDEApp::openFileInProject(PolycodeProject *project, String filePath openFile(fileEntry); } else { PolycodeConsole::print("File not available.\n"); + return false; } } - + return true; } void PolycodeIDEApp::openFile(OSFileEntry file) { @@ -819,16 +820,16 @@ void PolycodeIDEApp::handleEvent(Event *event) { if(event->getDispatcher() == frame->console->backtraceWindow) { if(event->getEventType() == "BackTraceEvent" && event->getEventCode() == BackTraceEvent::EVENT_BACKTRACE_SELECTED) { BackTraceEvent *btEvent = (BackTraceEvent*) event; - openFileInProject(btEvent->project, btEvent->fileName); - - PolycodeEditor *editor = editorManager->getCurrentEditor(); - if(editor) { - if(editor->getEditorType() == "PolycodeTextEditor") { - PolycodeTextEditor *textEditor = (PolycodeTextEditor*) editor; - textEditor->highlightLine(btEvent->lineNumber); + if (openFileInProject(btEvent->project, btEvent->fileName)) { + + PolycodeEditor *editor = editorManager->getCurrentEditor(); + if (editor) { + if (editor->getEditorType() == "PolycodeTextEditor") { + PolycodeTextEditor *textEditor = (PolycodeTextEditor*)editor; + textEditor->highlightLine(btEvent->lineNumber); + } } - - } + } } } diff --git a/src/ide/PolycodeTextEditor.cpp b/src/ide/PolycodeTextEditor.cpp index 832d83001..3b347e602 100644 --- a/src/ide/PolycodeTextEditor.cpp +++ b/src/ide/PolycodeTextEditor.cpp @@ -630,7 +630,8 @@ void PolycodeTextEditor::hideFindBar() { void PolycodeTextEditor::highlightLine(unsigned int lineNumber) { int lineSize = textInput->getLineText(lineNumber-1).length(); textInput->setSelection(lineNumber-1, lineNumber-1, 0, lineSize); - textInput->showLine(lineNumber, false); + if (lineNumber > 0) + textInput->showLine(lineNumber-1, false); } void PolycodeTextEditor::saveFile() {