1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Recreate CaretComponent correctly in CodeEditorComponent::lookAndFeelChanged()

This commit is contained in:
ed 2021-01-29 14:12:36 +00:00
parent 5b432431fd
commit bcb85bc752

View file

@ -348,9 +348,6 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons
setMouseCursor (MouseCursor::IBeamCursor); setMouseCursor (MouseCursor::IBeamCursor);
setWantsKeyboardFocus (true); setWantsKeyboardFocus (true);
lookAndFeelChanged();
addAndMakeVisible (caret.get());
addAndMakeVisible (verticalScrollBar); addAndMakeVisible (verticalScrollBar);
verticalScrollBar.setSingleStepSize (1.0); verticalScrollBar.setSingleStepSize (1.0);
@ -369,6 +366,8 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons
verticalScrollBar.addListener (pimpl.get()); verticalScrollBar.addListener (pimpl.get());
horizontalScrollBar.addListener (pimpl.get()); horizontalScrollBar.addListener (pimpl.get());
document.addListener (pimpl.get()); document.addListener (pimpl.get());
lookAndFeelChanged();
} }
CodeEditorComponent::~CodeEditorComponent() CodeEditorComponent::~CodeEditorComponent()
@ -405,7 +404,10 @@ void CodeEditorComponent::setTemporaryUnderlining (const Array<Range<int>>&)
Rectangle<int> CodeEditorComponent::getCaretRectangle() Rectangle<int> CodeEditorComponent::getCaretRectangle()
{ {
return getLocalArea (caret.get(), caret->getLocalBounds()); if (caret != nullptr)
return getLocalArea (caret.get(), caret->getLocalBounds());
return {};
} }
void CodeEditorComponent::setLineNumbersShown (const bool shouldBeShown) void CodeEditorComponent::setLineNumbersShown (const bool shouldBeShown)
@ -582,7 +584,8 @@ void CodeEditorComponent::retokenise (int startIndex, int endIndex)
//============================================================================== //==============================================================================
void CodeEditorComponent::updateCaretPosition() void CodeEditorComponent::updateCaretPosition()
{ {
caret->setCaretPosition (getCharacterBounds (getCaretPos())); if (caret != nullptr)
caret->setCaretPosition (getCharacterBounds (getCaretPos()));
} }
void CodeEditorComponent::moveCaretTo (const CodeDocument::Position& newPos, const bool highlighting) void CodeEditorComponent::moveCaretTo (const CodeDocument::Position& newPos, const bool highlighting)
@ -1318,6 +1321,7 @@ bool CodeEditorComponent::perform (const InvocationInfo& info)
void CodeEditorComponent::lookAndFeelChanged() void CodeEditorComponent::lookAndFeelChanged()
{ {
caret.reset (getLookAndFeel().createCaretComponent (this)); caret.reset (getLookAndFeel().createCaretComponent (this));
addAndMakeVisible (*caret);
} }
bool CodeEditorComponent::performCommand (const CommandID commandID) bool CodeEditorComponent::performCommand (const CommandID commandID)