Skip to content

Commit bcb85bc

Browse files
committed
Recreate CaretComponent correctly in CodeEditorComponent::lookAndFeelChanged()
1 parent 5b43243 commit bcb85bc

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -348,9 +348,6 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons
348348
setMouseCursor (MouseCursor::IBeamCursor);
349349
setWantsKeyboardFocus (true);
350350

351-
lookAndFeelChanged();
352-
addAndMakeVisible (caret.get());
353-
354351
addAndMakeVisible (verticalScrollBar);
355352
verticalScrollBar.setSingleStepSize (1.0);
356353

@@ -369,6 +366,8 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons
369366
verticalScrollBar.addListener (pimpl.get());
370367
horizontalScrollBar.addListener (pimpl.get());
371368
document.addListener (pimpl.get());
369+
370+
lookAndFeelChanged();
372371
}
373372

374373
CodeEditorComponent::~CodeEditorComponent()
@@ -405,7 +404,10 @@ void CodeEditorComponent::setTemporaryUnderlining (const Array<Range<int>>&)
405404

406405
Rectangle<int> CodeEditorComponent::getCaretRectangle()
407406
{
408-
return getLocalArea (caret.get(), caret->getLocalBounds());
407+
if (caret != nullptr)
408+
return getLocalArea (caret.get(), caret->getLocalBounds());
409+
410+
return {};
409411
}
410412

411413
void CodeEditorComponent::setLineNumbersShown (const bool shouldBeShown)
@@ -582,7 +584,8 @@ void CodeEditorComponent::retokenise (int startIndex, int endIndex)
582584
//==============================================================================
583585
void CodeEditorComponent::updateCaretPosition()
584586
{
585-
caret->setCaretPosition (getCharacterBounds (getCaretPos()));
587+
if (caret != nullptr)
588+
caret->setCaretPosition (getCharacterBounds (getCaretPos()));
586589
}
587590

588591
void CodeEditorComponent::moveCaretTo (const CodeDocument::Position& newPos, const bool highlighting)
@@ -1318,6 +1321,7 @@ bool CodeEditorComponent::perform (const InvocationInfo& info)
13181321
void CodeEditorComponent::lookAndFeelChanged()
13191322
{
13201323
caret.reset (getLookAndFeel().createCaretComponent (this));
1324+
addAndMakeVisible (*caret);
13211325
}
13221326

13231327
bool CodeEditorComponent::performCommand (const CommandID commandID)

0 commit comments

Comments
 (0)