mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 13:30:02 +00:00
Fix dpad analog overlap interaction
This commit is contained in:
parent
d31eddf417
commit
fc7033318f
@ -97,16 +97,13 @@ void MultiTouchButton::GetContentDimensions(const UIContext &dc, float &w, float
|
||||
}
|
||||
|
||||
void MultiTouchButton::Touch(const TouchInput &input) {
|
||||
if (analogPointerMask & (1 << input.id))
|
||||
return;
|
||||
|
||||
GamepadView::Touch(input);
|
||||
if ((input.flags & TOUCH_DOWN) && bounds_.Contains(input.x, input.y)) {
|
||||
pointerDownMask_ |= 1 << input.id;
|
||||
usedPointerMask |= 1 << input.id;
|
||||
}
|
||||
if (input.flags & TOUCH_MOVE) {
|
||||
if (bounds_.Contains(input.x, input.y))
|
||||
if (bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id)))
|
||||
pointerDownMask_ |= 1 << input.id;
|
||||
else
|
||||
pointerDownMask_ &= ~(1 << input.id);
|
||||
@ -156,9 +153,6 @@ void MultiTouchButton::Draw(UIContext &dc) {
|
||||
}
|
||||
|
||||
void BoolButton::Touch(const TouchInput &input) {
|
||||
if (analogPointerMask & (1 << input.id))
|
||||
return;
|
||||
|
||||
bool lastDown = pointerDownMask_ != 0;
|
||||
MultiTouchButton::Touch(input);
|
||||
bool down = pointerDownMask_ != 0;
|
||||
@ -172,9 +166,6 @@ void BoolButton::Touch(const TouchInput &input) {
|
||||
}
|
||||
|
||||
void PSPButton::Touch(const TouchInput &input) {
|
||||
if (analogPointerMask & (1 << input.id))
|
||||
return;
|
||||
|
||||
bool lastDown = pointerDownMask_ != 0;
|
||||
MultiTouchButton::Touch(input);
|
||||
bool down = pointerDownMask_ != 0;
|
||||
@ -202,9 +193,6 @@ void ComboKey::GetContentDimensions(const UIContext &dc, float &w, float &h) con
|
||||
}
|
||||
|
||||
void ComboKey::Touch(const TouchInput &input) {
|
||||
if (analogPointerMask & (1 << input.id))
|
||||
return;
|
||||
|
||||
using namespace CustomKey;
|
||||
bool lastDown = pointerDownMask_ != 0;
|
||||
MultiTouchButton::Touch(input);
|
||||
@ -244,9 +232,6 @@ void PSPDpad::GetContentDimensions(const UIContext &dc, float &w, float &h) cons
|
||||
}
|
||||
|
||||
void PSPDpad::Touch(const TouchInput &input) {
|
||||
if (analogPointerMask & (1 << input.id))
|
||||
return;
|
||||
|
||||
GamepadView::Touch(input);
|
||||
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
@ -257,7 +242,7 @@ void PSPDpad::Touch(const TouchInput &input) {
|
||||
}
|
||||
}
|
||||
if (input.flags & TOUCH_MOVE) {
|
||||
if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y)) {
|
||||
if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) {
|
||||
dragPointerId_ = input.id;
|
||||
}
|
||||
if (input.id == dragPointerId_) {
|
||||
|
Loading…
Reference in New Issue
Block a user