@@ -411,7 +411,7 @@ inline namespace v1 {
411
411
return modifiers;
412
412
}
413
413
414
- bool translateEvent (Vector2i size, const SDL_Event *in, Event& out) {
414
+ bool translateEvent (Vector2i size, const SDL_Event *in, Event& out, Flags<EventFilter> filters ) {
415
415
out.timestamp = in->common .timestamp ;
416
416
417
417
switch (in->type ) {
@@ -513,7 +513,7 @@ inline namespace v1 {
513
513
break ;
514
514
515
515
case SDL_MOUSEWHEEL:
516
- if (in->wheel .which == SDL_TOUCH_MOUSEID) {
516
+ if (in->wheel .which == SDL_TOUCH_MOUSEID && !filters. test (EventFilter::TouchAsMouse) ) {
517
517
return false ;
518
518
}
519
519
@@ -530,7 +530,7 @@ inline namespace v1 {
530
530
case SDL_MOUSEBUTTONDOWN:
531
531
assert (in->button .state == SDL_PRESSED);
532
532
533
- if (in->button .which == SDL_TOUCH_MOUSEID) {
533
+ if (in->button .which == SDL_TOUCH_MOUSEID && !filters. test (EventFilter::TouchAsMouse) ) {
534
534
return false ;
535
535
}
536
536
@@ -545,7 +545,7 @@ inline namespace v1 {
545
545
case SDL_MOUSEBUTTONUP:
546
546
assert (in->button .state == SDL_RELEASED);
547
547
548
- if (in->button .which == SDL_TOUCH_MOUSEID) {
548
+ if (in->button .which == SDL_TOUCH_MOUSEID && !filters. test (EventFilter::TouchAsMouse) ) {
549
549
return false ;
550
550
}
551
551
@@ -558,7 +558,7 @@ inline namespace v1 {
558
558
break ;
559
559
560
560
case SDL_MOUSEMOTION:
561
- if (in->motion .which == SDL_TOUCH_MOUSEID) {
561
+ if (in->motion .which == SDL_TOUCH_MOUSEID && !filters. test (EventFilter::TouchAsMouse) ) {
562
562
return false ;
563
563
}
564
564
@@ -710,7 +710,7 @@ inline namespace v1 {
710
710
711
711
} // anonymous namespace
712
712
713
- bool Window::pollEvent (Event& event) {
713
+ bool Window::pollEvent (Event& event, Flags<EventFilter> filters ) {
714
714
assert (m_window);
715
715
716
716
if (pickEventForWindow (m_windowId, event)) {
@@ -726,9 +726,9 @@ inline namespace v1 {
726
726
if (status == 0 ) {
727
727
return false ;
728
728
}
729
- } while (!translateEvent (getSize (), &ev, event));
729
+ } while (!translateEvent (getSize (), &ev, event, filters ));
730
730
731
- if (isEventWindowDependent (event) && getWindowIdFromEvent (event) != m_windowId) {
731
+ if (isEventWindowDependent (event) && (filters. test (EventFilter::AnyWindow) || getWindowIdFromEvent (event) != m_windowId) ) {
732
732
g_pendingEvents.push_back (event);
733
733
} else {
734
734
break ;
@@ -738,7 +738,7 @@ inline namespace v1 {
738
738
return true ;
739
739
}
740
740
741
- bool Window::waitEvent (Event& event) {
741
+ bool Window::waitEvent (Event& event, Flags<EventFilter> filters ) {
742
742
assert (m_window);
743
743
SDL_Event ev;
744
744
@@ -753,9 +753,9 @@ inline namespace v1 {
753
753
if (status == 0 ) {
754
754
return false ;
755
755
}
756
- } while (!translateEvent (getSize (), &ev, event));
756
+ } while (!translateEvent (getSize (), &ev, event, filters ));
757
757
758
- if (isEventWindowDependent (event) && getWindowIdFromEvent (event) != m_windowId) {
758
+ if (isEventWindowDependent (event) && (filters. test (EventFilter::AnyWindow) || getWindowIdFromEvent (event) != m_windowId) ) {
759
759
g_pendingEvents.push_back (event);
760
760
} else {
761
761
break ;
0 commit comments