diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index c5d7d1db5694bcbbc7c06d418cd889e634097216..a5fd3ea55252bdb89ca7ee284833043021d4bb24 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1951,6 +1951,12 @@ void LLFloater::setCanDrag(BOOL can_drag) } } +bool LLFloater::getCanDrag() +{ + return mDragHandle->getEnabled(); +} + + void LLFloater::updateTitleButtons() { static LLUICachedControl<S32> floater_close_box_size ("UIFloaterCloseBoxSize", 0); @@ -2181,7 +2187,7 @@ void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent) LLFloater* floaterp = (LLFloater*)viewp; if (floaterp->isDependent()) { - // dependents use same follow flags as their "dependee" + // dependents are moved with their "dependee" continue; } @@ -2209,7 +2215,11 @@ void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent) translate_y = new_top - old_top; } - floaterp->translate(translate_x, translate_y); + // don't reposition immovable floaters + if (floaterp->getCanDrag()) + { + floaterp->translate(translate_x, translate_y); + } BOOST_FOREACH(LLHandle<LLFloater> dependent_floater, floaterp->mDependents) { if (dependent_floater.get()) diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 4e8c539144fde7c586279a928f5f75770e38e685..8886ae3393c4a9f1ec6479b47077eaa48e83389a 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -234,6 +234,7 @@ class LLFloater : public LLPanel void setCanTearOff(BOOL can_tear_off); virtual void setCanResize(BOOL can_resize); void setCanDrag(BOOL can_drag); + bool getCanDrag(); void setHost(LLMultiFloater* host); BOOL isResizable() const { return mResizable; } void setResizeLimits( S32 min_width, S32 min_height ); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index a7dabeb56373ddba317c3ffefd820265e57f5cbf..e9b4d4d96db64547d65ca87455cf6c9bc6d1f7e1 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1893,6 +1893,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>DebugHideEmptySystemFolders</key> + <map> + <key>Comment</key> + <string>Hide empty system folders when on</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>DebugInventoryFilters</key> <map> <key>Comment</key> diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index a179b61cffc78c7c61ade5cd39935c2ffa079588..c39df7efce3019dd646b644bb8725b35e8a8067a 100644 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -30,6 +30,7 @@ #include "lldictionary.h" #include "llmemory.h" #include "llvisualparam.h" +#include "llviewercontrol.h" static const std::string empty_string; @@ -266,7 +267,7 @@ BOOL LLViewerFolderType::lookupIsQuietType(LLFolderType::EType folder_type) bool LLViewerFolderType::lookupIsHiddenIfEmpty(LLFolderType::EType folder_type) { const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type); - if (entry) + if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders") && entry) { return entry->mHideIfEmpty; }