@@ -527,6 +527,22 @@ bool LVGLWidget<BaseWidget>::onMouse(const Widget::MouseEvent& event)
527527 return true ;
528528}
529529
530+ template <>
531+ bool LVGLWidget<SubWidget>::onMouse(const Widget::MouseEvent& event)
532+ {
533+ if (SubWidget::onMouse (event))
534+ return true ;
535+
536+ if (!getAbsoluteArea ().contains (event.absolutePos ))
537+ return false ;
538+
539+ if (event.button > ARRAY_SIZE (lvglData->mouseButtons ))
540+ return false ;
541+
542+ lvglData->mouseButtons [event.button ] = event.press ;
543+ return true ;
544+ }
545+
530546template <class BaseWidget >
531547bool LVGLWidget<BaseWidget>::onMotion(const Widget::MotionEvent& event)
532548{
@@ -538,6 +554,20 @@ bool LVGLWidget<BaseWidget>::onMotion(const Widget::MotionEvent& event)
538554 return true ;
539555}
540556
557+ template <>
558+ bool LVGLWidget<SubWidget>::onMotion(const Widget::MotionEvent& event)
559+ {
560+ if (SubWidget::onMotion (event))
561+ return true ;
562+
563+ if (!getAbsoluteArea ().contains (event.absolutePos ))
564+ return false ;
565+
566+ lvglData->mousePos .x = std::max (0 , std::min<int >(getWidth () - 1 , event.pos .getX ()));
567+ lvglData->mousePos .y = std::max (0 , std::min<int >(getHeight () - 1 , event.pos .getY ()));
568+ return true ;
569+ }
570+
541571template <class BaseWidget >
542572bool LVGLWidget<BaseWidget>::onScroll(const Widget::ScrollEvent& event)
543573{
@@ -548,6 +578,19 @@ bool LVGLWidget<BaseWidget>::onScroll(const Widget::ScrollEvent& event)
548578 return false ;
549579}
550580
581+ template <>
582+ bool LVGLWidget<SubWidget>::onScroll(const Widget::ScrollEvent& event)
583+ {
584+ if (SubWidget::onScroll (event))
585+ return true ;
586+
587+ if (!getAbsoluteArea ().contains (event.absolutePos ))
588+ return false ;
589+
590+ lvglData->mouseWheelDelta -= event.delta .getY ();
591+ return false ;
592+ }
593+
551594template <class BaseWidget >
552595void LVGLWidget<BaseWidget>::onResize(const Widget::ResizeEvent& event)
553596{
0 commit comments