From 3add88cd9775639b10e8bb8090bc39470588ffa4 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 13 Nov 2009 18:12:55 +0200 Subject: Fixed normal bug EXT-1014 (Unable to move undocked camera controls bar) --HG-- branch : product-engine --- indra/newview/lljoystickbutton.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'indra/newview/lljoystickbutton.cpp') diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index bd6702a0b2..d7eaad94f0 100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp @@ -134,16 +134,31 @@ void LLJoystick::updateSlop() return; } +BOOL LLJoystick::pointInCircle(S32 x, S32 y) const +{ + //cnt is x and y coordinates of center of joystick circle, and also its radius, + //because area is not just rectangular, it's a square! + //Make sure to change method if this changes. + int cnt = this->getLocalRect().mTop/2; + if((x-cnt)*(x-cnt)+(y-cnt)*(y-cnt)<=cnt*cnt) + return TRUE; + return FALSE; +} BOOL LLJoystick::handleMouseDown(S32 x, S32 y, MASK mask) { //llinfos << "joystick mouse down " << x << ", " << y << llendl; + bool handles = false; - mLastMouse.set(x, y); - mFirstMouse.set(x, y); + if(handles = pointInCircle(x, y)) + { + mLastMouse.set(x, y); + mFirstMouse.set(x, y); + mMouseDownTimer.reset(); + handles = LLButton::handleMouseDown(x, y, mask); + } - mMouseDownTimer.reset(); - return LLButton::handleMouseDown(x, y, mask); + return handles; } -- cgit v1.2.3 From 32d8e9e396d497a83eb068888d794dd34216f6d7 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Mon, 16 Nov 2009 18:09:33 +0200 Subject: Some coding style changes of EXT-1014 (Unable to move undocked camera controls bar) fix (c63047a5bf60). --HG-- branch : product-engine --- indra/newview/lljoystickbutton.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'indra/newview/lljoystickbutton.cpp') diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index d7eaad94f0..0acc67ff5a 100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp @@ -134,15 +134,17 @@ void LLJoystick::updateSlop() return; } -BOOL LLJoystick::pointInCircle(S32 x, S32 y) const +bool LLJoystick::pointInCircle(S32 x, S32 y) const { - //cnt is x and y coordinates of center of joystick circle, and also its radius, - //because area is not just rectangular, it's a square! - //Make sure to change method if this changes. - int cnt = this->getLocalRect().mTop/2; - if((x-cnt)*(x-cnt)+(y-cnt)*(y-cnt)<=cnt*cnt) + if(this->getLocalRect().mTop!=this->getLocalRect().mRight) + { + llwarns << "Joystick shape is not square"<getLocalRect().mTop/2; + bool in_circle = (x - center) * (x - center) + (y - center) * (y - center) <= center * center; + return in_circle; } BOOL LLJoystick::handleMouseDown(S32 x, S32 y, MASK mask) @@ -150,7 +152,7 @@ BOOL LLJoystick::handleMouseDown(S32 x, S32 y, MASK mask) //llinfos << "joystick mouse down " << x << ", " << y << llendl; bool handles = false; - if(handles = pointInCircle(x, y)) + if(pointInCircle(x, y)) { mLastMouse.set(x, y); mFirstMouse.set(x, y); -- cgit v1.2.3 From e1aaaa34e45daca5a39a040865938cb3e2404f3e Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Tue, 17 Nov 2009 13:40:09 +0200 Subject: Minor style changes for EXT-1014 (Unable to move undocked camera controls bar) fix. --HG-- branch : product-engine --- indra/newview/lljoystickbutton.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview/lljoystickbutton.cpp') diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index 0acc67ff5a..2cc5c8335d 100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp @@ -136,13 +136,13 @@ void LLJoystick::updateSlop() bool LLJoystick::pointInCircle(S32 x, S32 y) const { - if(this->getLocalRect().mTop!=this->getLocalRect().mRight) + if(this->getLocalRect().getHeight() != this->getLocalRect().getWidth()) { llwarns << "Joystick shape is not square"<getLocalRect().mTop/2; + int center = this->getLocalRect().getHeight()/2; bool in_circle = (x - center) * (x - center) + (y - center) * (y - center) <= center * center; return in_circle; } -- cgit v1.2.3