Can we get ComponentListener::lookAndFeelChanged please?

I want to write a class that performs updates every time a look and feel changes. So I need to monitor hierarchy changing (which I can do) and LookAndFeel changing (which I can’t do without Inheritance, but I can’t use inheritance because my object may already inherit from Listbox, Button, etc).

what about some hacky thing like this:

struct LnFChecker : Timer
   struct Listener  { 
      virtual ~Listener() { }
      virtual void lookAndFeelChanged(LookAndFeel_V4* newLookAndFeel) = 0;

   ListenerList<Listener> listeners;
   LookAndFeel_V4* lnf = nullptr;
   Component* compToMonitor = nullptr;

   void timerCallback() override
       if( compToMonitor )
           auto* lookAndFeel = compToMonitor->getLookAndFeel();
           if( lookAndFeel != lnf )
               lnf = lookAndFeel;
     [](Listener& l) { l.lookAndFeelChanged(lnf); });

set the timer hz to whatever you need… It’s possibly a nice bandaid fix… :thinking:

Can you just use the Component::lookAndFeelChanged() and/or Component:: sendLookAndFeelChange() methods ?

Instead of a ComponentListener ?


Perhaps adding a std::function <void ()> onLookAndFeelChange member to Component could suffice for your purposes?

Maybe that could find a faster route for integration in the JUCE codebase