When the color of the caret is set on a TextEditor, i.e. textEditor->setColour (CaretComponent::caretColourId, colour);, the color is not applied when the CaretComponent is created. The Label component relies on this to work in order for the caret color to be set correctly (in Label::createEditorComponent). This is one possible fix:
juce_LookAndFeel.cpp:
CaretComponent* LookAndFeel::createCaretComponent (Component* keyFocusOwner)
{
CaretComponent* caret = new CaretComponent (keyFocusOwner);
Colour colour = keyFocusOwner->findColour (CaretComponent::caretColourId);
if (colour != Colours::transparentBlack)
caret->setColour (CaretComponent::caretColourId, colour);
return caret;
}
juce_TextEditor.cpp
void TextEditor::colourChanged()
{
setOpaque (findColour (backgroundColourId).isOpaque());
if (isCaretVisible())
{
Colour colour = findColour (CaretComponent::caretColourId);
if (colour != Colours::transparentBlack)
caret->setColour (CaretComponent::caretColourId, colour);
}
repaint();
}