From bcb85bc752f6fce28c50abe22cfa5baf853eee74 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 29 Jan 2021 14:12:36 +0000 Subject: [PATCH] Recreate CaretComponent correctly in CodeEditorComponent::lookAndFeelChanged() --- .../code_editor/juce_CodeEditorComponent.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp b/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp index 0ac4532350..08f4546bf5 100644 --- a/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp +++ b/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp @@ -348,9 +348,6 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons setMouseCursor (MouseCursor::IBeamCursor); setWantsKeyboardFocus (true); - lookAndFeelChanged(); - addAndMakeVisible (caret.get()); - addAndMakeVisible (verticalScrollBar); verticalScrollBar.setSingleStepSize (1.0); @@ -369,6 +366,8 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons verticalScrollBar.addListener (pimpl.get()); horizontalScrollBar.addListener (pimpl.get()); document.addListener (pimpl.get()); + + lookAndFeelChanged(); } CodeEditorComponent::~CodeEditorComponent() @@ -405,7 +404,10 @@ void CodeEditorComponent::setTemporaryUnderlining (const Array>&) Rectangle CodeEditorComponent::getCaretRectangle() { - return getLocalArea (caret.get(), caret->getLocalBounds()); + if (caret != nullptr) + return getLocalArea (caret.get(), caret->getLocalBounds()); + + return {}; } void CodeEditorComponent::setLineNumbersShown (const bool shouldBeShown) @@ -582,7 +584,8 @@ void CodeEditorComponent::retokenise (int startIndex, int endIndex) //============================================================================== void CodeEditorComponent::updateCaretPosition() { - caret->setCaretPosition (getCharacterBounds (getCaretPos())); + if (caret != nullptr) + caret->setCaretPosition (getCharacterBounds (getCaretPos())); } void CodeEditorComponent::moveCaretTo (const CodeDocument::Position& newPos, const bool highlighting) @@ -1318,6 +1321,7 @@ bool CodeEditorComponent::perform (const InvocationInfo& info) void CodeEditorComponent::lookAndFeelChanged() { caret.reset (getLookAndFeel().createCaretComponent (this)); + addAndMakeVisible (*caret); } bool CodeEditorComponent::performCommand (const CommandID commandID)