summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xautobuild.xml10
-rwxr-xr-xindra/llwindow/llwindowmacosx.cpp18
-rw-r--r--indra/media_plugins/cef/media_plugin_cef.cpp15
-rwxr-xr-xindra/newview/app_settings/settings.xml108
-rwxr-xr-xindra/newview/lltoolpie.cpp86
5 files changed, 150 insertions, 87 deletions
diff --git a/autobuild.xml b/autobuild.xml
index 8b217bf800..6749d489e5 100755
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1536,11 +1536,11 @@
<key>archive</key>
<map>
<key>hash</key>
- <string>745fc3299d4c0e011fc294a3f7c23982</string>
+ <string>a78ea1cebcc73147f26970ebbfee5e44</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
- <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/308429/arch/Darwin/installer/llceflib-1.4.0.308429-darwin-308429.tar.bz2</string>
+ <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/308620/arch/Darwin/installer/llceflib-1.4.0.308620-darwin-308620.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@@ -1550,18 +1550,18 @@
<key>archive</key>
<map>
<key>hash</key>
- <string>b7530e755306d645f8743fa37dfdbd5b</string>
+ <string>c23c942b0d207221c6bf0c9b9a46a615</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
- <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/308429/arch/CYGWIN/installer/llceflib-1.4.0.308429-windows-308429.tar.bz2</string>
+ <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/308620/arch/CYGWIN/installer/llceflib-1.4.0.308620-windows-308620.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
</map>
</map>
<key>version</key>
- <string>1.4.0.308429</string>
+ <string>1.4.0.308620</string>
</map>
<key>llphysicsextensions_source</key>
<map>
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 952c6751db..0d41884462 100755
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -221,7 +221,23 @@ void callResetKeys()
bool callUnicodeCallback(wchar_t character, unsigned int mask)
{
- return gWindowImplementation->getCallbacks()->handleUnicodeChar(character, mask);
+ NativeKeyEventData eventData;
+
+ memset(&eventData, 0, sizeof(NativeKeyEventData));
+
+ eventData.mKeyEvent = NativeKeyEventData::KEYCHAR;
+ eventData.mEventType = 0;
+ eventData.mEventModifiers = mask;
+ eventData.mEventKeyCode = 0;
+ eventData.mEventChars = character;
+ eventData.mEventUnmodChars = character;
+ eventData.mEventRepeat = false;
+
+ mRawKeyEvent = &eventData;
+
+ bool result = gWindowImplementation->getCallbacks()->handleUnicodeChar(character, mask);
+ mRawKeyEvent = NULL;
+ return result;
}
void callFocus()
diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp
index 77e6d35b11..919d83bc09 100644
--- a/indra/media_plugins/cef/media_plugin_cef.cpp
+++ b/indra/media_plugins/cef/media_plugin_cef.cpp
@@ -763,16 +763,17 @@ void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::
return;
uint32_t eventType = native_key_data["event_type"].asInteger();
+ if (!eventType)
+ return;
uint32_t eventModifiers = native_key_data["event_modifiers"].asInteger();
uint32_t eventKeycode = native_key_data["event_keycode"].asInteger();
char eventChars = static_cast<char>(native_key_data["event_chars"].isUndefined() ? 0 : native_key_data["event_chars"].asInteger());
char eventUChars = static_cast<char>(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger());
bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean();
-
mLLCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL,
(eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode);
-
+
#elif LL_WINDOWS
U32 msg = ll_U32_from_sd(native_key_data["msg"]);
U32 wparam = ll_U32_from_sd(native_key_data["w_param"]);
@@ -787,6 +788,16 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboar
#if LL_DARWIN
//mLLCEFLib->keyPress(utf8str[0], true);
//mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
+ if (!native_key_data.has("event_chars") || !native_key_data.has("event_umodchars") ||
+ !native_key_data.has("event_keycode") || !native_key_data.has("event_modifiers"))
+ return;
+ uint32_t unicodeChar = native_key_data["event_chars"].asInteger();
+ uint32_t unmodifiedChar = native_key_data["event_umodchars"].asInteger();
+ uint32_t keyCode = native_key_data["event_keycode"].asInteger();
+ uint32_t rawmodifiers = native_key_data["event_modifiers"].asInteger();
+
+ mLLCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers);
+
#elif LL_WINDOWS
U32 msg = ll_U32_from_sd(native_key_data["msg"]);
U32 wparam = ll_U32_from_sd(native_key_data["w_param"]);
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index bedbed2dcc..1fdfdb51a8 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -734,7 +734,7 @@
<string>F32</string>
<key>Value</key>
<integer>60</integer>
- </map>
+ </map>
<key>AvatarRotateThresholdFast</key>
<map>
<key>Comment</key>
@@ -745,7 +745,7 @@
<string>F32</string>
<key>Value</key>
<integer>2</integer>
- </map>
+ </map>
<key>AvatarBakedTextureUploadTimeout</key>
<map>
<key>Comment</key>
@@ -1339,7 +1339,7 @@
<string>String</string>
<key>Value</key>
<string />
- </map>
+ </map>
<key>CacheNumberOfRegionsForObjects</key>
<map>
<key>Comment</key>
@@ -2005,7 +2005,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>ChatBarCustomWidth</key>
<map>
@@ -3788,7 +3788,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>FirstSelectedEnabledPopups</key>
<map>
<key>Comment</key>
@@ -3799,7 +3799,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>FixedWeather</key>
<map>
<key>Comment</key>
@@ -3921,7 +3921,7 @@
<key>Value</key>
<string>SW</string>
</map>
-
+
<key>FloaterStatisticsRect</key>
<map>
<key>Comment</key>
@@ -4448,7 +4448,7 @@
<string>String</string>
<key>Value</key>
<string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/howto/index.html</string>
- </map>
+ </map>
<key>HomeSidePanelURL</key>
<map>
<key>Comment</key>
@@ -4514,7 +4514,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>HostID</key>
<map>
<key>Comment</key>
@@ -4602,7 +4602,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>IgnorePixelDepth</key>
<map>
<key>Comment</key>
@@ -4657,7 +4657,7 @@
<string>F32</string>
<key>Value</key>
<real>0.5</real>
- </map>
+ </map>
<key>InspectorShowTime</key>
<map>
<key>Comment</key>
@@ -4668,7 +4668,7 @@
<string>F32</string>
<key>Value</key>
<real>3.0</real>
- </map>
+ </map>
<key>InstallLanguage</key>
<map>
<key>Comment</key>
@@ -5230,7 +5230,7 @@
<key>Value</key>
<string>0.0.0</string>
</map>
-
+
<key>LastSnapshotToProfileHeight</key>
<map>
<key>Comment</key>
@@ -6309,7 +6309,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>MenuAccessKeyTime</key>
<map>
<key>Comment</key>
@@ -6474,7 +6474,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>MouseSun</key>
<map>
<key>Comment</key>
@@ -6639,7 +6639,7 @@
<string>String</string>
<key>Value</key>
<string />
- </map>
+ </map>
<key>NextLoginLocation</key>
<map>
<key>Comment</key>
@@ -6763,7 +6763,7 @@
<string>String</string>
<key>Value</key>
<string>toast</string>
- </map>
+ </map>
<key>NotificationFriendIMOptions</key>
<map>
<key>Comment</key>
@@ -6819,7 +6819,7 @@
<string>String</string>
<key>Value</key>
<string>toast</string>
- </map>
+ </map>
<key>NotificationObjectIMOptions</key>
<map>
<key>Comment</key>
@@ -6833,7 +6833,7 @@
<string>String</string>
<key>Value</key>
<string>toast</string>
- </map>
+ </map>
<key>NotificationToastLifeTime</key>
<map>
<key>Comment</key>
@@ -7392,7 +7392,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>PlaySoundFriendIM</key>
<map>
<key>Comment</key>
@@ -7503,7 +7503,7 @@
<key>Value</key>
<real>0.9</real>
</map>
-
+
<key>PlainTextChatHistory</key>
<map>
<key>Comment</key>
@@ -7515,7 +7515,7 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
<key>PluginInstancesLow</key>
<map>
<key>Comment</key>
@@ -7769,7 +7769,7 @@
<real>0.4</real>
</array>
</map>
-
+
<key>PreviewDirection2</key>
<map>
<key>Comment</key>
@@ -8379,7 +8379,7 @@
<key>RenderComplexityStaticMax</key>
<map>
<key>Comment</key>
- <string>Sets a static max value for scaling of RenderComplexity
+ <string>Sets a static max value for scaling of RenderComplexity
display (-1 for dynamic scaling)</string>
<key>Persist</key>
<integer>1</integer>
@@ -8457,7 +8457,7 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
<key>RenderLocalLights</key>
<map>
<key>Comment</key>
@@ -8684,7 +8684,7 @@
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>Boolean</string>
+ <string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
@@ -8721,7 +8721,7 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
<key>RenderAnimateRes</key>
<map>
<key>Comment</key>
@@ -8894,7 +8894,7 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
<key>RenderDepthOfField</key>
<map>
<key>Comment</key>
@@ -9023,7 +9023,7 @@
<key>Value</key>
<real>0.1</real>
</map>
-
+
<key>RenderHighlightBrightness</key>
<map>
<key>Comment</key>
@@ -9047,7 +9047,7 @@
<key>Value</key>
<real>0.6</real>
</map>
-
+
<key>RenderHighlightColor</key>
<map>
<key>Comment</key>
@@ -9076,7 +9076,7 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
<key>RenderSpecularResX</key>
<map>
<key>Comment</key>
@@ -9981,7 +9981,7 @@
<key>Value</key>
<integer>1</integer>
</map>
-
+
<key>RenderAutoMuteByteLimit</key>
<map>
<key>Comment</key>
@@ -10036,7 +10036,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>RenderAutoHideSurfaceAreaLimit</key>
<map>
<key>Comment</key>
@@ -10522,7 +10522,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>SelectMovableOnly</key>
<map>
<key>Comment</key>
@@ -10764,7 +10764,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
- </map>
+ </map>
<key>ShowCrosshairs</key>
<map>
<key>Comment</key>
@@ -10841,7 +10841,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>ShowMiniMapButton</key>
<map>
<key>Comment</key>
@@ -10908,7 +10908,7 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>ShowObjectRenderingCost</key>
+ <key>ShowObjectRenderingCost</key>
<map>
<key>Comment</key>
<string>Show the object rendering cost in build tools</string>
@@ -10917,9 +10917,9 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
- </map>
- <key>ShowNavbarFavoritesPanel</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowNavbarFavoritesPanel</key>
<map>
<key>Comment</key>
<string>Show/hide navigation bar favorites panel</string>
@@ -10928,9 +10928,9 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>1</integer>
</map>
- <key>ShowNavbarNavigationPanel</key>
+ <key>ShowNavbarNavigationPanel</key>
<map>
<key>Comment</key>
<string>Show/hide navigation bar navigation panel</string>
@@ -10939,7 +10939,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>1</integer>
</map>
<key>ShowWorldMapButton</key>
<map>
@@ -11095,7 +11095,7 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>ShowPGSearchAll</key>
+ <key>ShowPGSearchAll</key>
<map>
<key>Comment</key>
<string>Display results of search All that are flagged as general</string>
@@ -11611,7 +11611,7 @@
<string>S32</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>SnapshotQuality</key>
<map>
<key>Comment</key>
@@ -12480,7 +12480,7 @@
<string>String</string>
<key>Value</key>
<string>B56AF90D-6684-48E4-B1E4-722D3DEB2CB6</string>
- </map>
+ </map>
<key>NearByChatChannelUUID</key>
<map>
<key>Comment</key>
@@ -12491,7 +12491,7 @@
<string>String</string>
<key>Value</key>
<string>E1158BD6-661C-4981-9DAD-4DCBFF062502</string>
- </map>
+ </map>
<key>NotificationChannelUUID</key>
<map>
<key>Comment</key>
@@ -12502,7 +12502,7 @@
<string>String</string>
<key>Value</key>
<string>AEED3193-8709-4693-8558-7452CCA97AE5</string>
- </map>
+ </map>
<key>AlertChannelUUID</key>
<map>
<key>Comment</key>
@@ -12513,7 +12513,7 @@
<string>String</string>
<key>Value</key>
<string>F3E07BC8-A973-476D-8C7F-F3B7293975D1</string>
- </map>
+ </map>
<key>UIImgWhiteUUID</key>
<map>
<key>Comment</key>
@@ -12535,7 +12535,7 @@
<string>S32</string>
<key>Value</key>
<integer>2</integer>
- </map>
+ </map>
<key>UIMaxComboWidth</key>
<map>
<key>Comment</key>
@@ -13448,7 +13448,7 @@
<string>String</string>
<key>Value</key>
<string>[i800,i600]</string>
- </map>
+ </map>
<key>sourceid</key>
<map>
<key>Comment</key>
@@ -14669,7 +14669,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
- </map>
+ </map>
<key>EnablePlaceProfile</key>
<map>
<key>Comment</key>
@@ -15491,7 +15491,7 @@
<key>Value</key>
<integer>0</integer>
</map>
-
+
<key>PathfindingLineWidth</key>
<map>
<key>Comment</key>
@@ -15532,7 +15532,7 @@
<real>1.0</real>
</array>
</map>
-
+
<key>HideUIControls</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 2081297717..60a7d284ef 100755
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -106,7 +106,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
mMouseDownX = x;
mMouseDownY = y;
- //left mouse down always picks transparent
+ //left mouse down always picks transparent (but see handleMouseUp)
mPick = gViewerWindow->pickImmediate(x, y, TRUE);
mPick.mKeyMask = mask;
@@ -661,30 +661,52 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
&& gAgentAvatarp
&& !gAgentAvatarp->isSitting()
&& !mBlockClickToWalk // another behavior hasn't cancelled click to walk
- && !mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick
- && (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land
- || mPick.mObjectID.notNull())) // or on an object
- {
- // handle special cases of steering picks
- LLViewerObject* avatar_object = mPick.getObject();
-
- // get pointer to avatar
- while (avatar_object && !avatar_object->isAvatar())
- {
- avatar_object = (LLViewerObject*)avatar_object->getParent();
- }
-
- if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
- {
- const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
- // pretend we picked some point a bit in front of avatar
- mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
- }
- gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
- walkToClickedLocation();
- LLFirstUse::notMoving(false);
-
- return TRUE;
+ )
+ {
+ // We may be doing click to walk, but we don't want to use a target on
+ // a transparent object because the user thought they were clicking on
+ // whatever they were seeing through it, so recompute what was clicked on
+ // ignoring transparent objects
+ LLPickInfo savedPick = mPick;
+ mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY,
+ FALSE /* ignore transparent */,
+ FALSE /* ignore particles */);
+
+ if (!mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick
+ && (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land
+ || mPick.mObjectID.notNull())) // or on an object
+ {
+ // handle special cases of steering picks
+ LLViewerObject* avatar_object = mPick.getObject();
+
+ // get pointer to avatar
+ while (avatar_object && !avatar_object->isAvatar())
+ {
+ avatar_object = (LLViewerObject*)avatar_object->getParent();
+ }
+
+ if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
+ {
+ const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
+ // pretend we picked some point a bit in front of avatar
+ mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
+ }
+ gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
+ walkToClickedLocation();
+ LLFirstUse::notMoving(false);
+
+ return TRUE;
+ }
+ else
+ {
+ LL_DEBUGS("maint5901") << "walk target was "
+ << (mPick.mPosGlobal.isExactlyZero() ? "zero" : "not zero")
+ << ", pick type was " << (mPick.mPickType == LLPickInfo::PICK_LAND ? "land" : "not land")
+ << ", pick object was " << mPick.mObjectID
+ << LL_ENDL;
+ // we didn't click to walk, so restore the original target
+ mPick = savedPick;
+ }
}
gViewerWindow->setCursor(UI_CURSOR_ARROW);
if (hasMouseCapture())
@@ -718,12 +740,26 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
{
+ // We may be doing double click to walk, but we don't want to use a target on
+ // a transparent object because the user thought they were clicking on
+ // whatever they were seeing through it, so recompute what was clicked on
+ // ignoring transparent objects
+ LLPickInfo savedPick = mPick;
+ mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY,
+ FALSE /* ignore transparent */,
+ FALSE /* ignore particles */);
+
if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
(mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
{
walkToClickedLocation();
return TRUE;
}
+ else
+ {
+ // restore the original pick for any other purpose
+ mPick = savedPick;
+ }
}
else if (gSavedSettings.getBOOL("DoubleClickTeleport"))
{