summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrew Dyukov <adyukov@productengine.com>2009-11-13 18:12:55 +0200
committerAndrew Dyukov <adyukov@productengine.com>2009-11-13 18:12:55 +0200
commit3add88cd9775639b10e8bb8090bc39470588ffa4 (patch)
tree3450b20641a826481568ed0cc62c88adab167d25 /indra
parent63ea6ccf58b8d275ddd96b3e6fc9eaf76d8508ff (diff)
Fixed normal bug EXT-1014 (Unable to move undocked camera controls bar)
--HG-- branch : product-engine
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/lljoystickbutton.cpp23
-rw-r--r--indra/newview/lljoystickbutton.h2
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml1
3 files changed, 22 insertions, 4 deletions
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;
}
diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h
index 4c657913b8..0465f78031 100644
--- a/indra/newview/lljoystickbutton.h
+++ b/indra/newview/lljoystickbutton.h
@@ -78,6 +78,8 @@ public:
static void onBtnHeldDown(void *userdata); // called by llbutton callback handler
void setInitialQuadrant(EJoystickQuadrant initial) { mInitialQuadrant = initial; };
+
+ BOOL pointInCircle(S32 x, S32 y) const;
static std::string nameFromQuadrant(const EJoystickQuadrant quadrant);
static EJoystickQuadrant quadrantFromName(const std::string& name);
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 2af451400e..f553184c19 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -107,6 +107,7 @@
image_unselected="Cam_Rotate_Out"
layout="topleft"
left="45"
+ mouse_opaque="false"
name="cam_rotate_stick"
quadrant="left"
scale_image="false"