diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 5d4b04760a..16cfea4779 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -423,6 +423,13 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, mKeyVirtualKey = 0; mhDC = NULL; mhRC = NULL; + + // Respect "Hide pointer while typing" Windows preference setting + if (!SystemParametersInfo(SPI_GETMOUSEVANISH, 0, &mMouseVanish, 0)) + { + mMouseVanish = TRUE; + } + // // Initialize the keyboard gKeyboard = new LLKeyboardWin32(); @@ -1683,7 +1690,10 @@ void LLWindowWin32::showCursorFromMouseMove() void LLWindowWin32::hideCursorUntilMouseMove() { - if (!mHideCursorPermanent) + // Respect "Hide pointer while typing" Windows preference setting + //if (!mHideCursorPermanent) + if (!mHideCursorPermanent && mMouseVanish) + // { hideCursor(); mHideCursorPermanent = FALSE; @@ -2700,6 +2710,20 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ return 0; break; + + // Respect "Hide pointer while typing" Windows preference setting + case WM_SETTINGCHANGE: + { + if (w_param == SPI_SETMOUSEVANISH) + { + if (!SystemParametersInfo(SPI_GETMOUSEVANISH, 0, &window_imp->mMouseVanish, 0)) + { + window_imp->mMouseVanish = TRUE; + } + } + } + break; + // } window_imp->mCallbacks->handlePauseWatchdog(window_imp); diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 7d44987fa1..2aa063f852 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -221,6 +221,9 @@ protected: U32 mRawWParam; U32 mRawLParam; + // Respect "Hide pointer while typing" Windows preference setting + BOOL mMouseVanish; + friend class LLWindowManager; // Allow to query for window chrome sizes. public: diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index a279e2fe49..baa2ee35d8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1758,6 +1758,17 @@ Value 1 + AssetFetchConcurrency + + Comment + Maximum number of HTTP connections used for asset fetches + Persist + 1 + Type + U32 + Value + 0 + AuctionShowFence Comment @@ -16830,7 +16841,7 @@ Change of this parameter will affect the layout of buttons in notification toast Comment show physics shapes while building Persist - 1 + 0 Type Boolean Value diff --git a/indra/newview/fspanellogin.cpp b/indra/newview/fspanellogin.cpp index 2690b69fbe..b32b2025b5 100644 --- a/indra/newview/fspanellogin.cpp +++ b/indra/newview/fspanellogin.cpp @@ -82,6 +82,7 @@ const S32 MAX_PASSWORD_OPENSIM = 255; FSPanelLogin *FSPanelLogin::sInstance = NULL; BOOL FSPanelLogin::sCapslockDidNotification = FALSE; +BOOL FSPanelLogin::sCredentialSet = FALSE; std::string FSPanelLogin::sPassword = ""; // Helper for converting a user name into the canonical "Firstname Lastname" form. @@ -187,6 +188,7 @@ FSPanelLogin::FSPanelLogin(const LLRect &rect, setBackgroundOpaque(TRUE); mPasswordModified = FALSE; + FSPanelLogin::sInstance = this; LLView* login_holder = gViewerWindow->getLoginPanelHolder(); @@ -463,6 +465,7 @@ void FSPanelLogin::setFields(LLPointer credential, bool from_start LL_WARNS() << "Attempted setFields with no login view shown" << LL_ENDL; return; } + sCredentialSet = TRUE; LL_INFOS("Credentials") << "Setting login fields to " << *credential << LL_ENDL; std::string login_id; @@ -727,9 +730,12 @@ void FSPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl) updateServer(); // to change the links and splash screen } - location_combo->setTextEntry(new_start_slurl.getLocationString()); - sInstance->mLocationLength = new_start_slurl.getLocationString().length(); - sInstance->updateLoginButtons(); + if ( new_start_slurl.getLocationString().length() ) + { + location_combo->setTextEntry(new_start_slurl.getLocationString()); + sInstance->mLocationLength = new_start_slurl.getLocationString().length(); + sInstance->updateLoginButtons(); + } } else { @@ -908,6 +914,7 @@ void FSPanelLogin::onClickConnect(void *) } else { + sCredentialSet = FALSE; LLPointer cred; BOOL remember; getFields(cred, remember); diff --git a/indra/newview/fspanellogin.h b/indra/newview/fspanellogin.h index 656e6654b5..9941d8171f 100644 --- a/indra/newview/fspanellogin.h +++ b/indra/newview/fspanellogin.h @@ -58,6 +58,8 @@ public: static void getFields(LLPointer& credential, BOOL& remember); + static BOOL isCredentialSet() { return sCredentialSet; } + static BOOL areCredentialFieldsDirty(); static void setLocation(const LLSLURL& slurl); static void autologinToLocation(const LLSLURL& slurl); @@ -122,6 +124,8 @@ private: static FSPanelLogin* sInstance; static BOOL sCapslockDidNotification; + static BOOL sCredentialSet; + unsigned int mUsernameLength; unsigned int mPasswordLength; unsigned int mLocationLength; diff --git a/indra/newview/llappcorehttp.cpp b/indra/newview/llappcorehttp.cpp index b054fe84c7..391465d15b 100644 --- a/indra/newview/llappcorehttp.cpp +++ b/indra/newview/llappcorehttp.cpp @@ -72,6 +72,13 @@ static const struct "", "other" }, + // Avoid stall in texture fetch due to asset fetching. [Drake] + { // AP_ASSET + 12, 1, 16, 0, true, + "AssetFetchConcurrency", + "asset fetch" + }, + // { // AP_TEXTURE 8, 1, 12, 0, true, "TextureFetchConcurrency", diff --git a/indra/newview/llappcorehttp.h b/indra/newview/llappcorehttp.h index 95c138d598..953b30e699 100644 --- a/indra/newview/llappcorehttp.h +++ b/indra/newview/llappcorehttp.h @@ -61,6 +61,22 @@ public: /// Pipelined: no AP_DEFAULT, + // Avoid stall in texture fetch due to asset fetching. [Drake] + /// Asset fetching policy class. Used to + /// download assets via capability. + /// Deep queueing of requests. + /// Do not share. GET requests only. + /// + /// Destination: cdn:80 + /// Protocol: http: + /// Transfer size: KB-MB + /// Long poll: no + /// Concurrency: high + /// Request rate: high + /// Pipelined: yes + AP_ASSET, + // + /// Texture fetching policy class. Used to /// download textures via capability or SSA /// baking service. Deep queueing of requests. diff --git a/indra/newview/llfloaterhoverheight.cpp b/indra/newview/llfloaterhoverheight.cpp index 35745e377d..2d36d2dda4 100644 --- a/indra/newview/llfloaterhoverheight.cpp +++ b/indra/newview/llfloaterhoverheight.cpp @@ -115,7 +115,14 @@ void LLFloaterHoverHeight::onSliderMoved(LLUICtrl* ctrl, void* userData) //gAgentAvatarp->setHoverOffset(offset, false); if (gAgent.getRegion() && gAgent.getRegion()->avatarHoverHeightEnabled()) { - gAgentAvatarp->setHoverOffset(offset, false); + if (sldrCtrl->isMouseHeldDown()) + { + gAgentAvatarp->setHoverOffset(offset, false); + } + else + { + gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", value); + } } else if (!gAgentAvatarp->isUsingServerBakes()) { diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index d53cf2a9a3..9928c08215 100644 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -258,7 +258,10 @@ bool LLFolderViewModelItemInventory::filter( LLFolderViewFilter& filter) { // This is where filter check on the item done (CHUI-849) const bool passed_filter = filter.check(this); - if (passed_filter && mChildren.empty()) // Update the latest filter generation for empty folders + // FIRE-21632: Only do this for folders or it will break correct filtering of the "Worn" inventory tab + //if (passed_filter && mChildren.empty()) // Update the latest filter generation for empty folders + if (passed_filter && mChildren.empty() && getInventoryType() == LLInventoryType::IT_CATEGORY) // Update the latest filter generation for empty folders + // { LLFolderViewModelItemInventory* view_model = this; while (view_model && view_model->mMostFilteredDescendantGeneration < filter_generation) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index f44daacd5a..47f807321b 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1132,13 +1132,16 @@ bool idle_startup() // Show the login dialog login_show(); // connect dialog is already shown, so fill in the names - if (gUserCredential.notNull()) + // + //if (gUserCredential.notNull() && !LLPanelLogin::isCredentialSet()) + //{ + // LLPanelLogin::setFields( gUserCredential, gRememberPassword); + //} + if (gUserCredential.notNull() && !FSPanelLogin::isCredentialSet()) { -// - //LLPanelLogin::setFields( gUserCredential, gRememberPassword); FSPanelLogin::setFields(gUserCredential, true); -// } + // // [FS Login Panel] //LLPanelLogin::giveFocus(); FSPanelLogin::giveFocus(); diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index 8abd1f9b82..a6d6a4ad02 100644 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp @@ -522,8 +522,10 @@ void LLViewerAssetStorage::assetRequestCoro( std::string url = getAssetURL(mViewerAssetUrl, uuid,atype); LL_DEBUGS("ViewerAsset") << "request url: " << url << LL_ENDL; - - LLCore::HttpRequest::policy_t httpPolicy(LLAppCoreHttp::AP_TEXTURE); + // Avoid stall in texture fetch due to asset fetching.[Drake] + // LLCore::HttpRequest::policy_t httpPolicy(LLAppCoreHttp::AP_TEXTURE); + LLCore::HttpRequest::policy_t httpPolicy(LLAppCoreHttp::AP_ASSET); + // LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("assetRequestCoro", httpPolicy)); LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); diff --git a/indra/newview/quickprefs.cpp b/indra/newview/quickprefs.cpp index 785dae3366..f929053d2b 100644 --- a/indra/newview/quickprefs.cpp +++ b/indra/newview/quickprefs.cpp @@ -2098,7 +2098,14 @@ void FloaterQuickPrefs::onAvatarZOffsetSliderMoved() LL_INFOS("Avatar") << "setting hover from slider moved" << offset[VZ] << LL_ENDL; if (gAgent.getRegion() && gAgent.getRegion()->avatarHoverHeightEnabled()) { - gAgentAvatarp->setHoverOffset(offset, false); + if (mAvatarZOffsetSlider->isMouseHeldDown()) + { + gAgentAvatarp->setHoverOffset(offset, false); + } + else + { + gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", value); + } } else if (!gAgentAvatarp->isUsingServerBakes()) { diff --git a/indra/newview/skins/default/xui/en/floater_linkreplace.xml b/indra/newview/skins/default/xui/en/floater_linkreplace.xml index ece75e2576..1c37a408e8 100644 --- a/indra/newview/skins/default/xui/en/floater_linkreplace.xml +++ b/indra/newview/skins/default/xui/en/floater_linkreplace.xml @@ -3,7 +3,7 @@ name="linkreplace" help_topic="linkreplace" positioning="centered" - title="REPLACE INVENTORY LINKS" + title="Replace Inventory Links" width="333" height="130" save_rect="true" diff --git a/indra/newview/skins/starlight/xui/en/floater_tools.xml b/indra/newview/skins/starlight/xui/en/floater_tools.xml index 490d3f350d..b09b70a668 100644 --- a/indra/newview/skins/starlight/xui/en/floater_tools.xml +++ b/indra/newview/skins/starlight/xui/en/floater_tools.xml @@ -2780,21 +2780,36 @@ even though the user gets a free copy. width="130"> Physics Shape Type: - + +