diff --git a/autobuild.xml b/autobuild.xml index 84e0fd03263b1cd2da739cdc5bd194271001b850..a5578c9e4c6d814963cb838f815ec87d6b5f016b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2022,11 +2022,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>6b10752aa728c7763cd7b21843706a06d8067e06018c8dddf33487bccec64c0e0080a33546e769067538cdef8e6688623bc94278547f44671182ded91bc0ddaf</string> + <string>3a6ec1fce8accdbb7d6ee8d52e16822425449e42a76558a4475e3a5ae0ac404c3c51c7d0cb5b4aeb6892d8f76bee2fae690da0d5ce30dbb7e998f600c1a832bc</string> <key>hash_algorithm</key> <string>blake2b</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/205/packages/generic/sdbus-cpp/1.4.0.2375/sdbus_cpp-1.4.0-linux64-2375.tar.zst</string> + <string>https://git.alchemyviewer.org/api/v4/projects/205/packages/generic/sdbus-cpp/1.5.0.2399/sdbus_cpp-1.5.0-linux64-2399.tar.zst</string> </map> <key>name</key> <string>linux64</string> @@ -2039,7 +2039,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>copyright</key> <string>Copyright (c) 22016 - 2021 KISTLER INSTRUMENTE AG, Winterthur, Switzerland, (C) 2016 - 2022 Stanislav Angelovic stanislav.angelovic@protonmail.com</string> <key>version</key> - <string>1.4.0</string> + <string>1.5.0</string> <key>name</key> <string>sdbus-cpp</string> <key>canonical_repo</key> diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 6c69a45d87fc2f4d5266ea5fc8be8f274dd19adb..dcf82c1f19c2f2ad391315d0d7bfb8fad8b1e248 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2064,7 +2064,11 @@ void LLFloater::handleShowCollapseButtonChanged(const LLSD& sdValue) void LLFloater::closeFrontmostFloater() { LLFloater* floater_to_close = gFloaterView->getFrontmostClosableFloater(); - if(floater_to_close) + if (LLMultiFloater* multi_floater = dynamic_cast<LLMultiFloater*>(floater_to_close)) + { + multi_floater->closeDockedFloater(); + } + else if(floater_to_close) { floater_to_close->closeFloater(); } diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index 94f6885a84060924f2ee69e136075b0791895400..af81184484f81855837ee4eee5be2709f9183ca2 100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp @@ -315,10 +315,15 @@ void LLMultiFloater::removeFloater(LLFloater* floaterp) floaterp->setCanDrag(TRUE); floaterp->setHost(NULL); floaterp->applyRectControl(); + floaterp->setFollowsNone(); updateResizeLimits(); - tabOpen((LLFloater*)mTabContainer->getCurrentPanel(), false); + LLFloater* tab_floaterp = dynamic_cast<LLFloater*>(mTabContainer->getCurrentPanel()); + if (tab_floaterp) + { + tabOpen(tab_floaterp, false); + } } void LLMultiFloater::tabOpen(LLFloater* opened_floater, bool from_click) @@ -360,23 +365,11 @@ void LLMultiFloater::setVisible(BOOL visible) BOOL LLMultiFloater::handleKeyHere(KEY key, MASK mask) { - if (key == 'W' && mask == MASK_CONTROL) - { - LLFloater* floater = getActiveFloater(); - // is user closeable and is system closeable - if (floater && floater->canClose() && floater->isCloseable()) - { - floater->closeFloater(); - - // EXT-5695 (Tabbed IM window loses focus if close any tabs by Ctrl+W) - // bring back focus on tab container if there are any tab left - if(mTabContainer->getTabCount() > 0) - { - mTabContainer->setFocus(TRUE); - } - } - return TRUE; - } + //if (key == 'W' && mask == MASK_CONTROL) + //{ + // closeDockedFloater(); + // return TRUE; + //} return LLFloater::handleKeyHere(key, mask); } @@ -529,3 +522,30 @@ void LLMultiFloater::computeResizeLimits(S32& new_min_width, S32& new_min_height } } } + +void LLMultiFloater::closeDockedFloater() +{ + LLFloater* floater = getActiveFloater(); + // is user closeable and is system closeable + if (floater && floater->canClose() && floater->isCloseable()) + { + floater->closeFloater(); + + // EXT-5695 (Tabbed IM window loses focus if close any tabs by Ctrl+W) + // bring back focus on tab container if there are any tab left + if(mTabContainer->getTabCount() > 0) + { + mTabContainer->setFocus(TRUE); + } + else + { + // Call closeFloater() here so that focus gets properly handed over + closeFloater(); + } + + return; + } + + // Close multifloater itself if we can't close any hosted floaters + closeFloater(); +} diff --git a/indra/llui/llmultifloater.h b/indra/llui/llmultifloater.h index 85273e6533161d8e43e14645785c7d1f72209d14..f1aff9796e78c5ab67f50ff93f8f7fbfe812ce6a 100644 --- a/indra/llui/llmultifloater.h +++ b/indra/llui/llmultifloater.h @@ -76,6 +76,8 @@ class LLMultiFloater : public LLFloater virtual void updateResizeLimits(); virtual void updateFloaterTitle(LLFloater* floaterp); + void closeDockedFloater(); + protected: struct LLFloaterData { diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 82f759f8dcb3fde07f35a47b4d0c4dcc1486dff4..f2dd65758985140ecff40499c3eaf0bbddd6ab89 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -176,7 +176,7 @@ LLControlVariable::LLControlVariable(const std::string name, eControlType type, { if ((persist != PERSIST_NO) && mComment.empty()) { - LL_ERRS() << "Must supply a comment for control " << mName << LL_ENDL; + LL_WARNS() << "Must supply a comment for control " << mName << LL_ENDL; } //Push back versus setValue'ing here, since we don't want to call a signal yet mValues.push_back(initial); diff --git a/indra/newview/aldiscordmanager.cpp b/indra/newview/aldiscordmanager.cpp index 2adb8a7093a3ae92e9be5414b6f1eb48e990a1dc..2e7249894d6817a7f16eadacaa0e2320d7389fbc 100644 --- a/indra/newview/aldiscordmanager.cpp +++ b/indra/newview/aldiscordmanager.cpp @@ -87,6 +87,7 @@ void ALDiscordManager::init() return; } +#if 0 mDiscord->SetLogHook( discord::LogLevel::Info, [](discord::LogLevel level, const char* message) { @@ -100,19 +101,20 @@ void ALDiscordManager::init() LL_WARNS() << "Discord: " << message << LL_ENDL; break; } - //case discord::LogLevel::Info: - //{ - // LL_DEBUGS() << "Discord: " << message << LL_ENDL; - // break; - //} - //case discord::LogLevel::Debug: - //{ - // LL_DEBUGS() << "Discord: " << message << LL_ENDL; - // break; - //} + case discord::LogLevel::Info: + { + LL_DEBUGS() << "Discord: " << message << LL_ENDL; + break; + } + case discord::LogLevel::Debug: + { + LL_DEBUGS() << "Discord: " << message << LL_ENDL; + break; + } } } }); +#endif discord::Activity activity{}; activity.GetAssets().SetLargeImage("alchemy_1024"); diff --git a/indra/newview/llappviewerlinux_api-client-glue.h b/indra/newview/llappviewerlinux_api-client-glue.h index 56719ae020da396519e4a9515cf860f5a0ba472a..d38d518537ae391fa50d92eebce10f5a57133ba0 100644 --- a/indra/newview/llappviewerlinux_api-client-glue.h +++ b/indra/newview/llappviewerlinux_api-client-glue.h @@ -20,22 +20,27 @@ class ViewerAppAPI_proxy protected: ViewerAppAPI_proxy(sdbus::IProxy& proxy) - : proxy_(proxy) + : proxy_(&proxy) { } + ViewerAppAPI_proxy(const ViewerAppAPI_proxy&) = delete; + ViewerAppAPI_proxy& operator=(const ViewerAppAPI_proxy&) = delete; + ViewerAppAPI_proxy(ViewerAppAPI_proxy&&) = default; + ViewerAppAPI_proxy& operator=(ViewerAppAPI_proxy&&) = default; + ~ViewerAppAPI_proxy() = default; public: bool GoSLURL(const std::string& slurl) { bool result; - proxy_.callMethod("GoSLURL").onInterface(INTERFACE_NAME).withArguments(slurl).storeResultsTo(result); + proxy_->callMethod("GoSLURL").onInterface(INTERFACE_NAME).withArguments(slurl).storeResultsTo(result); return result; } private: - sdbus::IProxy& proxy_; + sdbus::IProxy* proxy_; }; }} // namespaces diff --git a/indra/newview/llappviewerlinux_api-server-glue.h b/indra/newview/llappviewerlinux_api-server-glue.h index ba04105f966e36f393020af35d4b83c1e5fb6513..b740c306a539b0bc05e7c92a3de96a1ee106306c 100644 --- a/indra/newview/llappviewerlinux_api-server-glue.h +++ b/indra/newview/llappviewerlinux_api-server-glue.h @@ -20,18 +20,23 @@ class ViewerAppAPI_adaptor protected: ViewerAppAPI_adaptor(sdbus::IObject& object) - : object_(object) + : object_(&object) { - object_.registerMethod("GoSLURL").onInterface(INTERFACE_NAME).withInputParamNames("slurl").withOutputParamNames("success_ret").implementedAs([this](const std::string& slurl){ return this->GoSLURL(slurl); }); + object_->registerMethod("GoSLURL").onInterface(INTERFACE_NAME).withInputParamNames("slurl").withOutputParamNames("success_ret").implementedAs([this](const std::string& slurl){ return this->GoSLURL(slurl); }); } + ViewerAppAPI_adaptor(const ViewerAppAPI_adaptor&) = delete; + ViewerAppAPI_adaptor& operator=(const ViewerAppAPI_adaptor&) = delete; + ViewerAppAPI_adaptor(ViewerAppAPI_adaptor&&) = default; + ViewerAppAPI_adaptor& operator=(ViewerAppAPI_adaptor&&) = default; + ~ViewerAppAPI_adaptor() = default; private: virtual bool GoSLURL(const std::string& slurl) = 0; private: - sdbus::IObject& object_; + sdbus::IObject* object_; }; }} // namespaces diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 2dafb816399339f65dddaf68cab5e69a97771610..6f76d89454d47b00e1fa5ff7433c07db89789345 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -426,8 +426,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>); LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>); - LLFloaterReg::add("item_properties", "floater_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>); - LLFloaterReg::add("task_properties", "floater_task_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>); + LLFloaterReg::add("item_properties", "floater_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>, "item_properties"); + LLFloaterReg::add("task_properties", "floater_task_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>, "item_properties"); LLFloaterReg::add("inventory_settings", "floater_inventory_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInventorySettings>); LLInspectAvatarUtil::registerFloater(); LLInspectGroupUtil::registerFloater(); diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index 854bdeb863520ab803e68c8ea45a43211f2d389c..133e6e32e3dd7b38c935e518fa48924c0985e638 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -449,10 +449,10 @@ follows="bottom|left|right" height="23" layout="topleft" - left="2" + left="10" name="button_panel" top_pad="6" - width="333"> + width="313"> <layout_stack follows="bottom|left|right" height="23" @@ -462,7 +462,7 @@ left="0" orientation="horizontal" top="0" - width="333"> + width="313"> <layout_panel follows="bottom|left|right" height="23" diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 8488563106dd889a86c4657a295b3a0f0073a6c7..c201056b09155bd050189c7b3904f98f37ca71f8 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -165,7 +165,7 @@ mouse_opaque="false" name="location_combo" top_delta="0" - width="355"> + width="285"> <combo_list mouse_wheel_opaque="true"/> </location_input> @@ -206,7 +206,7 @@ name="landmarks_btn" tool_tip="My Landmarks" top_delta="1" - left_pad="8" + left_pad="5" scale_image="false" image_overlay="Landmarks_overlay" image_hover_unselected="PushButton_Over">