diff --git a/autobuild.xml b/autobuild.xml index 8416298e7c..0ae2f5a2f2 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -22,16 +22,16 @@ archive hash - f332d752a72cb524eb5db8ee6fdba3da + e6eecee825b9159b3be34b5fd21ef3e0 url - http://3p.firestormviewer.org/SDL2-2.0.20-linux64_bionic-221151857.tar.bz2 + http://3p.firestormviewer.org/SDL-2.0.20-linux64-222521433.tar.bz2 name linux64 version - 1.2.15 + 2.0.20 gstreamer10 @@ -2622,16 +2622,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 88fb222412b98a7f371d6bf2ff42a973 + c7c1f7f656d155b5af852ae1ef4954d9 url - http://3p.firestormviewer.org/open_libndofdev-0.13.211211036-linux64-211211036.tar.bz2 + http://3p.firestormviewer.org/open_libndofdev-0.13.222441031-linux64-222441031.tar.bz2 name linux64 version - 0.3.180841957 + 0.13.222441031 openal @@ -2918,9 +2918,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - f5f4bc956734e53ef99125ae9aae3a87 + db89d5ce9695457cc1e94cf657678f1a url - http://3p.firestormviewer.org/slvoice-3.2-linux64_bionic-220651719.tar.bz2 + http://3p.firestormviewer.org/slvoice-3.2-linux64-222532329.tar.bz2 name linux64 diff --git a/indra/llwindow/llwindowsdl2.cpp b/indra/llwindow/llwindowsdl2.cpp index 4f7e58fd55..02551fa176 100644 --- a/indra/llwindow/llwindowsdl2.cpp +++ b/indra/llwindow/llwindowsdl2.cpp @@ -1040,9 +1040,14 @@ BOOL LLWindowSDL::getFullscreen() BOOL LLWindowSDL::getPosition(LLCoordScreen *position) { - // *FIX: can anything be done with this? - position->mX = 0; - position->mY = 0; + int x; + int y; + + SDL_GetWindowPosition(mWindow, &x, &y); + + position->mX = x; + position->mY = y; + return TRUE; } diff --git a/indra/newview/fsfloaterpartialinventory.cpp b/indra/newview/fsfloaterpartialinventory.cpp index c88bcca5d4..548427d022 100644 --- a/indra/newview/fsfloaterpartialinventory.cpp +++ b/indra/newview/fsfloaterpartialinventory.cpp @@ -28,7 +28,6 @@ #include "fsfloaterpartialinventory.h" #include "llfiltereditor.h" -#include "llinventorypanel.h" //========================================================================= diff --git a/indra/newview/fsfloaterpartialinventory.h b/indra/newview/fsfloaterpartialinventory.h index bc7c3255df..01e207ee53 100644 --- a/indra/newview/fsfloaterpartialinventory.h +++ b/indra/newview/fsfloaterpartialinventory.h @@ -28,9 +28,9 @@ #define FS_FLOATERPARTIALINVENTORY_H #include "llfloater.h" +#include "llinventorypanel.h" class LLFilterEditor; -class LLInventoryPanel; class FSFloaterPartialInventory : public LLFloater { @@ -41,6 +41,8 @@ public: BOOL postBuild() override; void onOpen(const LLSD& key) override; + LLInventoryPanel* getInventoryPanel() const { return mInventoryList; }; + private: LLUUID mRootFolderId; LLInventoryPanel* mInventoryList{ nullptr }; diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 50ac64ef4d..f17deda451 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -90,6 +90,7 @@ #include "fslslbridge.h" #include "fsradar.h" #include "fsassetblacklist.h" +#include "llagentpicksinfo.h" #include "llfloaterregioninfo.h" #include "llfloaterreporter.h" #include "llparcel.h" @@ -503,6 +504,14 @@ void LLAvatarActions::showPick(const LLUUID& avatar_id, const LLUUID& pick_id) // static void LLAvatarActions::createPick() { + // FIRE-7694 / BUG-932 / MAINT-1999 + if (LLAgentPicksInfo::getInstance()->isPickLimitReached()) + { + LLNotificationsUtil::add("PickLimitReached"); + return; + } + // + LLFloaterProfile* profilefloater = dynamic_cast(LLFloaterReg::showInstance("profile", LLSD().with("id", gAgent.getID()))); LLViewerRegion* region = gAgent.getRegion(); if (profilefloater && region) diff --git a/indra/newview/llfloaterprofiletexture.cpp b/indra/newview/llfloaterprofiletexture.cpp index 2ebbbdf08b..94340eb36f 100644 --- a/indra/newview/llfloaterprofiletexture.cpp +++ b/indra/newview/llfloaterprofiletexture.cpp @@ -71,7 +71,7 @@ BOOL LLFloaterProfileTexture::postBuild() mCloseButton->setCommitCallback([this](LLUICtrl*, void*) { closeFloater(); }, nullptr); // Add refresh function - getChild("btn_refresh")->setCommitCallback([this](LLUICtrl*, void*) { refresh(); }, nullptr); + getChild("btn_refresh")->setCommitCallback([this](LLUICtrl*, void*) { refreshTexture(); }, nullptr); return TRUE; } @@ -230,7 +230,7 @@ void LLFloaterProfileTexture::onTextureLoaded( } // Add refresh function -void LLFloaterProfileTexture::refresh() +void LLFloaterProfileTexture::refreshTexture() { if (mImageID.notNull() && mImage.notNull()) { diff --git a/indra/newview/llfloaterprofiletexture.h b/indra/newview/llfloaterprofiletexture.h index 0faa22c99e..cbc5322e8b 100644 --- a/indra/newview/llfloaterprofiletexture.h +++ b/indra/newview/llfloaterprofiletexture.h @@ -47,7 +47,7 @@ public: void loadAsset(const LLUUID &image_id); // Add refresh function - void refresh(); + void refreshTexture(); static void onTextureLoaded( diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 0f6284f674..6cda352d7a 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -58,6 +58,7 @@ #include "rlvactions.h" #include "rlvcommon.h" // [/RLVa:KB] +#include "fsfloaterpartialinventory.h" class LLInventoryRecentItemsPanel; class LLAssetFilteredInventoryPanel; @@ -1899,6 +1900,11 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open) // { LLFloaterSidePanelContainer* inventory_floater = dynamic_cast(*iter); + + // Guard against nullpointer access violation + if (!inventory_floater) + continue; + inventory_panel = inventory_floater->findChild("main_panel"); if (inventory_floater && inventory_panel && inventory_floater->getVisible()) @@ -1913,6 +1919,23 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open) } } + // Show folder in new window option + LLFloaterReg::const_instance_list_t& inst_list_partial = LLFloaterReg::getFloaterList("fs_partial_inventory"); + for (const auto inst : inst_list_partial) + { + if (inst->getVisible()) + { + S32 z_order = gFloaterView->getZOrder(inst); + if (z_order < z_min) + { + res = static_cast(inst)->getInventoryPanel(); + z_min = z_order; + active_inv_floaterp = inst; + } + } + } + // + if (res) { // Make sure the floater is not minimized (STORM-438). diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index a7dae3f9d5..c60f57c8d5 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -1676,8 +1676,6 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/) //mMenuClipboardColor->setEnabled(editable && single_volume); mBtnCopyFaces->setEnabled(editable && single_volume); mBtnPasteFaces->setEnabled(editable && !mClipboardParams.emptyMap() && (mClipboardParams.has("color") || mClipboardParams.has("texture"))); - - LL_INFOS() << "ADBG: enabled = " << (editable && !mClipboardParams.emptyMap() && (mClipboardParams.has("color") || mClipboardParams.has("texture")) ? "true" : "false") << LL_ENDL; // // Set variable values for numeric expressions diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 4a1c02afbb..107bd77601 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -695,17 +695,11 @@ BOOL LLPanelPeople::postBuild() mAllFriendList = friends_tab->getChild("avatars_all"); mOnlineFriendList->setNoItemsCommentText(getString("no_friends_online")); mOnlineFriendList->setShowIcons("FriendsListShowIcons"); - // Firestorm radar - //mOnlineFriendList->showPermissions("FriendsListShowPermissions"); - mOnlineFriendList->showPermissions(true); - // Firestorm radar + mOnlineFriendList->showPermissions("FriendsListShowPermissions"); mOnlineFriendList->setShowCompleteName(!gSavedSettings.getBOOL("FriendsListHideUsernames")); mAllFriendList->setNoItemsCommentText(getString("no_friends")); mAllFriendList->setShowIcons("FriendsListShowIcons"); - // Firestorm radar - //mAllFriendList->showPermissions("FriendsListShowPermissions"); - mAllFriendList->showPermissions(true); - // Firestorm radar + mAllFriendList->showPermissions("FriendsListShowPermissions"); mAllFriendList->setShowCompleteName(!gSavedSettings.getBOOL("FriendsListHideUsernames")); LLPanel* nearby_tab = getChild(NEARBY_TAB_NAME); diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index f307207056..af5ac657ea 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -2493,6 +2493,7 @@ BOOL LLPanelProfileFirstLife::postBuild() mSaveChanges->setCommitCallback([this](LLUICtrl*, void*) { onSaveDescriptionChanges(); }, nullptr); mDiscardChanges->setCommitCallback([this](LLUICtrl*, void*) { onDiscardDescriptionChanges(); }, nullptr); mDescriptionEdit->setKeystrokeCallback([this](LLTextEditor* caller) { onSetDescriptionDirty(); }); + mPicture->setMouseUpCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask) { onShowPhoto(); }); // Make "first life" picture clickable return TRUE; } @@ -2532,6 +2533,23 @@ void LLPanelProfileFirstLife::setProfileImageUploaded(const LLUUID &image_asset_ { mPicture->setValue(image_asset_id); mImageId = image_asset_id; + + // Make "first life" picture clickable + LLFloater *floater = mFloaterProfileTextureHandle.get(); + if (floater) + { + LLFloaterProfileTexture * texture_view = dynamic_cast(floater); + if (mImageId.notNull()) + { + texture_view->loadAsset(mImageId); + } + else + { + texture_view->resetAsset(); + } + } + // Make "first life" picture clickable + setProfileImageUploading(false); } @@ -2630,6 +2648,52 @@ void LLPanelProfileFirstLife::onRemovePhoto() } } +// Make "first life" picture clickable +void LLPanelProfileFirstLife::onShowPhoto() +{ + if (!getIsLoaded()) + { + return; + } + + LLFloater *floater = mFloaterProfileTextureHandle.get(); + if (!floater) + { + LLFloater* parent_floater = gFloaterView->getParentFloater(this); + if (parent_floater) + { + LLFloaterProfileTexture * texture_view = new LLFloaterProfileTexture(parent_floater); + mFloaterProfileTextureHandle = texture_view->getHandle(); + if (mImageId.notNull()) + { + texture_view->loadAsset(mImageId); + } + else + { + texture_view->resetAsset(); + } + texture_view->openFloater(); + texture_view->setVisibleAndFrontmost(TRUE); + parent_floater->addDependentFloater(mFloaterProfileTextureHandle); + } + } + else // already open + { + LLFloaterProfileTexture * texture_view = dynamic_cast(floater); + texture_view->setMinimized(FALSE); + texture_view->setVisibleAndFrontmost(TRUE); + if (mImageId.notNull()) + { + texture_view->loadAsset(mImageId); + } + else + { + texture_view->resetAsset(); + } + } +} +// Make "first life" picture clickable + void LLPanelProfileFirstLife::onCommitPhoto(const LLUUID& id) { if (mImageId == id) @@ -2655,6 +2719,22 @@ void LLPanelProfileFirstLife::onCommitPhoto(const LLUUID& id) mPicture->setValue("Generic_Person_Large"); } + // Make "first life" picture clickable + LLFloater *floater = mFloaterProfileTextureHandle.get(); + if (floater) + { + LLFloaterProfileTexture * texture_view = dynamic_cast(floater); + if (mImageId == LLUUID::null) + { + texture_view->resetAsset(); + } + else + { + texture_view->loadAsset(mImageId); + } + } + // Make "first life" picture clickable + mRemovePhoto->setEnabled(mImageId.notNull()); } else diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index 96939dfbac..add9699f52 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -341,6 +341,13 @@ protected: std::string mCurrentDescription; LLUUID mImageId; bool mHasUnsavedChanges; + +// Make "first life" picture clickable +private: + LLHandle mFloaterProfileTextureHandle; + void onShowPhoto(); +// Make "first life" picture clickable + }; /** diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index 665add06b9..80a76ac95b 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -567,10 +567,15 @@ void LLPanelProfilePick::setAvatarId(const LLUUID& avatar_id) { mPickName->setEnabled(TRUE); mPickDescription->setEnabled(TRUE); - mSetCurrentLocationButton->setVisible(TRUE); + // Make sure the "Set Location" button is only visible when viewing own picks + // mSetCurrentLocationButton->setVisible(TRUE); + childSetVisible("set_to_curr_location_btn_lp", true); + // } else { + // Make sure the "Set Location" button is only visible when viewing own picks + childSetVisible("set_to_curr_location_btn_lp", false); mSnapshotCtrl->setEnabled(FALSE); } } diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp index e68768cecd..67f3f75616 100644 --- a/indra/newview/llviewerjoystick.cpp +++ b/indra/newview/llviewerjoystick.cpp @@ -563,6 +563,14 @@ void LLViewerJoystick::updateStatus() LL_PROFILE_ZONE_SCOPED_CATEGORY_INPUT; #if LIB_NDOF + // FIRE-32004 - fix crash when opening joystick config and the device structure + // is not yet initialized or missing the necessary data inside + if (!mNdofDev || !mNdofDev->private_data) + { + return; + } + // + ndof_update(mNdofDev); // FIRE-14344 - Add button preview and allow for more than 6 axes diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 06dae81cd1..89003c7fc0 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -5546,6 +5546,10 @@ Welche Bezeichnung soll für die Region Bitte geben Sie einen gültigen Wert für die Zeitspanne ein! + + Neue Auswahl kann nicht erstellt werden, da bereits die maximale Anzahl an Auswahlen erstellt wurde. + + Abhängig von der Serverauslastung kann es einen Moment dauern, bis das Umschalten der Sichtbarkeit des Online-Status effektiv wird. diff --git a/indra/newview/skins/default/xui/de/panel_profile_firstlife.xml b/indra/newview/skins/default/xui/de/panel_profile_firstlife.xml index 9ecee040fd..0050a7533c 100644 --- a/indra/newview/skins/default/xui/de/panel_profile_firstlife.xml +++ b/indra/newview/skins/default/xui/de/panel_profile_firstlife.xml @@ -1,5 +1,6 @@ +