カテゴリー
C++ JUCE

JUCE Forwarding MouseEvent

Child ComponentがParent Componentのエリアを全て覆ってしまっている場合、Parent ComponentのMouseEventが実行されませんが、以下のようにoverrideすると実行されるようになります。

class ForwardingLabel  : public juce::Label
{
public:
  ForwardingLabel()
  {

  }
  
  void mouseDown(const juce::MouseEvent &event) override {
    if(auto parent = getParentComponent()) {
      parent->mouseDown(event);
    }
  }
  
  void mouseExit(const juce::MouseEvent &event) override {
    if(auto parent = getParentComponent()) {
      parent->mouseExit(event);
    }
  }

private:
  JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ForwardingLabel)
};