merge late 3.0.1 beta candidate fixes
commit
cb957d3dab
2
.hgtags
2
.hgtags
|
|
@ -168,6 +168,8 @@ ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start
|
|||
599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1
|
||||
599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1
|
||||
46a010f4885a9d223b511eac553ba5720284b1dc 3.0.0-start
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1
|
||||
46a010f4885a9d223b511eac553ba5720284b1dc 3.0.0-start
|
||||
6b678ea52f90d5c14181661dcd2546e25bde483e 3.0.0-start
|
||||
82a2079ffcb57ecb1b3849cb41376b443e1eb912 3.0.1-start
|
||||
|
|
|
|||
|
|
@ -313,8 +313,10 @@ LLSDParser::LLSDParser()
|
|||
LLSDParser::~LLSDParser()
|
||||
{ }
|
||||
|
||||
LLFastTimer::DeclareTimer FTM_SD_PARSE("LLSD Parsing");
|
||||
S32 LLSDParser::parse(std::istream& istr, LLSD& data, S32 max_bytes)
|
||||
{
|
||||
LLFastTimer _(FTM_SD_PARSE);
|
||||
mCheckLimits = (LLSDSerialize::SIZE_UNLIMITED == max_bytes) ? false : true;
|
||||
mMaxBytesLeft = max_bytes;
|
||||
return doParse(istr, data);
|
||||
|
|
|
|||
|
|
@ -354,6 +354,7 @@ static unsigned get_till_eol(std::istream& input, char *buf, unsigned bufsize)
|
|||
return count;
|
||||
}
|
||||
|
||||
LLFastTimer::DeclareTimer FTM_SD_PARSE_READ_STREAM("LLSD Read Stream");
|
||||
S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
|
||||
{
|
||||
XML_Status status;
|
||||
|
|
@ -373,10 +374,13 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
|
|||
{
|
||||
break;
|
||||
}
|
||||
count = get_till_eol(input, (char *)buffer, BUFFER_SIZE);
|
||||
if (!count)
|
||||
{
|
||||
break;
|
||||
{ LLFastTimer _(FTM_SD_PARSE_READ_STREAM);
|
||||
|
||||
count = get_till_eol(input, (char *)buffer, BUFFER_SIZE);
|
||||
if (!count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
status = XML_ParseBuffer(mParser, count, false);
|
||||
|
||||
|
|
|
|||
|
|
@ -68,9 +68,11 @@ using namespace llsd;
|
|||
# include <sys/utsname.h>
|
||||
# include <stdint.h>
|
||||
# include <Carbon/Carbon.h>
|
||||
# include <sys/wait.h>
|
||||
# include <string.h>
|
||||
# include <stdexcept>
|
||||
# include <mach/host_info.h>
|
||||
# include <mach/mach_host.h>
|
||||
# include <mach/task.h>
|
||||
# include <mach/task_info.h>
|
||||
#elif LL_LINUX
|
||||
# include <errno.h>
|
||||
# include <sys/utsname.h>
|
||||
|
|
@ -990,17 +992,89 @@ LLSD LLMemoryInfo::loadStatsMap()
|
|||
stats.add("PrivateUsage KB", pmem.PrivateUsage/1024);
|
||||
|
||||
#elif LL_DARWIN
|
||||
uint64_t phys = 0;
|
||||
|
||||
size_t len = sizeof(phys);
|
||||
const vm_size_t pagekb(vm_page_size / 1024);
|
||||
|
||||
//
|
||||
// Collect the vm_stat's
|
||||
//
|
||||
|
||||
if (sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
|
||||
{
|
||||
stats.add("Total Physical KB", phys/1024);
|
||||
vm_statistics_data_t vmstat;
|
||||
mach_msg_type_number_t vmstatCount = HOST_VM_INFO_COUNT;
|
||||
|
||||
if (host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t) &vmstat, &vmstatCount) != KERN_SUCCESS)
|
||||
{
|
||||
LL_WARNS("LLMemoryInfo") << "Unable to collect memory information" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
stats.add("Pages free KB", pagekb * vmstat.free_count);
|
||||
stats.add("Pages active KB", pagekb * vmstat.active_count);
|
||||
stats.add("Pages inactive KB", pagekb * vmstat.inactive_count);
|
||||
stats.add("Pages wired KB", pagekb * vmstat.wire_count);
|
||||
|
||||
stats.add("Pages zero fill", vmstat.zero_fill_count);
|
||||
stats.add("Page reactivations", vmstat.reactivations);
|
||||
stats.add("Page-ins", vmstat.pageins);
|
||||
stats.add("Page-outs", vmstat.pageouts);
|
||||
|
||||
stats.add("Faults", vmstat.faults);
|
||||
stats.add("Faults copy-on-write", vmstat.cow_faults);
|
||||
|
||||
stats.add("Cache lookups", vmstat.lookups);
|
||||
stats.add("Cache hits", vmstat.hits);
|
||||
|
||||
stats.add("Page purgeable count", vmstat.purgeable_count);
|
||||
stats.add("Page purges", vmstat.purges);
|
||||
|
||||
stats.add("Page speculative reads", vmstat.speculative_count);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("LLMemoryInfo") << "Unable to collect hw.memsize memory information" << LL_ENDL;
|
||||
|
||||
//
|
||||
// Collect the misc task info
|
||||
//
|
||||
|
||||
{
|
||||
task_events_info_data_t taskinfo;
|
||||
unsigned taskinfoSize = sizeof(taskinfo);
|
||||
|
||||
if (task_info(mach_task_self(), TASK_EVENTS_INFO, (task_info_t) &taskinfo, &taskinfoSize) != KERN_SUCCESS)
|
||||
{
|
||||
LL_WARNS("LLMemoryInfo") << "Unable to collect task information" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
stats.add("Task page-ins", taskinfo.pageins);
|
||||
stats.add("Task copy-on-write faults", taskinfo.cow_faults);
|
||||
stats.add("Task messages sent", taskinfo.messages_sent);
|
||||
stats.add("Task messages received", taskinfo.messages_received);
|
||||
stats.add("Task mach system call count", taskinfo.syscalls_mach);
|
||||
stats.add("Task unix system call count", taskinfo.syscalls_unix);
|
||||
stats.add("Task context switch count", taskinfo.csw);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Collect the basic task info
|
||||
//
|
||||
|
||||
{
|
||||
task_basic_info_64_data_t taskinfo;
|
||||
unsigned taskinfoSize = sizeof(taskinfo);
|
||||
|
||||
if (task_info(mach_task_self(), TASK_BASIC_INFO_64, (task_info_t) &taskinfo, &taskinfoSize) != KERN_SUCCESS)
|
||||
{
|
||||
LL_WARNS("LLMemoryInfo") << "Unable to collect task information" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
stats.add("Basic suspend count", taskinfo.suspend_count);
|
||||
stats.add("Basic virtual memory KB", taskinfo.virtual_size / 1024);
|
||||
stats.add("Basic resident memory KB", taskinfo.resident_size / 1024);
|
||||
stats.add("Basic new thread policy", taskinfo.policy);
|
||||
}
|
||||
}
|
||||
|
||||
#elif LL_SOLARIS
|
||||
|
|
|
|||
|
|
@ -1034,8 +1034,11 @@ void LLInventoryItem::asLLSD( LLSD& sd ) const
|
|||
sd[INV_CREATION_DATE_LABEL] = (S32) mCreationDate;
|
||||
}
|
||||
|
||||
LLFastTimer::DeclareTimer FTM_INVENTORY_SD_DESERIALIZE("Inventory SD Deserialize");
|
||||
|
||||
bool LLInventoryItem::fromLLSD(const LLSD& sd)
|
||||
{
|
||||
LLFastTimer _(FTM_INVENTORY_SD_DESERIALIZE);
|
||||
mInventoryType = LLInventoryType::IT_NONE;
|
||||
mAssetUUID.setNull();
|
||||
std::string w;
|
||||
|
|
|
|||
|
|
@ -410,7 +410,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
|
|||
}
|
||||
else if(message_name == "sleep_time")
|
||||
{
|
||||
mSleepTime = parsed.getValueReal("time");
|
||||
mSleepTime = llmax(parsed.getValueReal("time"), 1.0 / 100.0); // clamp to maximum of 100Hz
|
||||
}
|
||||
else if(message_name == "crash")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -927,6 +927,7 @@ void LLPluginProcessParent::receiveMessage(const LLPluginMessage &message)
|
|||
}
|
||||
|
||||
// Send initial sleep time
|
||||
llassert_always(mSleepTime != 0.f);
|
||||
setSleepTime(mSleepTime, true);
|
||||
|
||||
setState(STATE_RUNNING);
|
||||
|
|
|
|||
|
|
@ -35,9 +35,16 @@
|
|||
|
||||
static LLDefaultChildRegistry::Register<LLMenuButton> r("menu_button");
|
||||
|
||||
void LLMenuButton::MenuPositions::declareValues()
|
||||
{
|
||||
declare("topleft", MP_TOP_LEFT);
|
||||
declare("topright", MP_TOP_RIGHT);
|
||||
declare("bottomleft", MP_BOTTOM_LEFT);
|
||||
}
|
||||
|
||||
LLMenuButton::Params::Params()
|
||||
: menu_filename("menu_filename")
|
||||
: menu_filename("menu_filename"),
|
||||
position("position", MP_BOTTOM_LEFT)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -45,7 +52,7 @@ LLMenuButton::Params::Params()
|
|||
LLMenuButton::LLMenuButton(const LLMenuButton::Params& p)
|
||||
: LLButton(p),
|
||||
mIsMenuShown(false),
|
||||
mMenuPosition(MP_BOTTOM_LEFT)
|
||||
mMenuPosition(p.position)
|
||||
{
|
||||
std::string menu_filename = p.menu_filename;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,21 +35,30 @@ class LLMenuButton
|
|||
: public LLButton
|
||||
{
|
||||
public:
|
||||
struct Params
|
||||
: public LLInitParam::Block<Params, LLButton::Params>
|
||||
{
|
||||
// filename for it's toggleable menu
|
||||
Optional<std::string> menu_filename;
|
||||
|
||||
Params();
|
||||
};
|
||||
|
||||
typedef enum e_menu_position
|
||||
{
|
||||
MP_TOP_LEFT,
|
||||
MP_TOP_RIGHT,
|
||||
MP_BOTTOM_LEFT
|
||||
} EMenuPosition;
|
||||
|
||||
struct MenuPositions
|
||||
: public LLInitParam::TypeValuesHelper<EMenuPosition, MenuPositions>
|
||||
{
|
||||
static void declareValues();
|
||||
};
|
||||
|
||||
struct Params
|
||||
: public LLInitParam::Block<Params, LLButton::Params>
|
||||
{
|
||||
// filename for it's toggleable menu
|
||||
Optional<std::string> menu_filename;
|
||||
Optional<EMenuPosition> position;
|
||||
|
||||
Params();
|
||||
};
|
||||
|
||||
|
||||
|
||||
boost::signals2::connection setMouseDownCallback( const mouse_signal_t::slot_type& cb );
|
||||
|
||||
|
|
|
|||
|
|
@ -1655,15 +1655,19 @@ BOOL LLView::hasAncestor(const LLView* parentp) const
|
|||
|
||||
BOOL LLView::childHasKeyboardFocus( const std::string& childname ) const
|
||||
{
|
||||
LLView *child = findChildView(childname, TRUE);
|
||||
if (child)
|
||||
LLView *focus = dynamic_cast<LLView *>(gFocusMgr.getKeyboardFocus());
|
||||
|
||||
while (focus != NULL)
|
||||
{
|
||||
return gFocusMgr.childHasKeyboardFocus(child);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
if (focus->getName() == childname)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
focus = focus->getParent();
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -697,12 +697,8 @@ std::set<LLUUID> LLAvatarActions::getInventorySelectedUUIDs()
|
|||
if (inventory_selected_uuids.empty())
|
||||
{
|
||||
LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
|
||||
LLInventoryPanel * inbox = sidepanel_inventory->findChild<LLInventoryPanel>("inventory_inbox");
|
||||
if (inbox)
|
||||
{
|
||||
inventory_selected_uuids = inbox->getRootFolder()->getSelectionList();
|
||||
}
|
||||
|
||||
inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
|
||||
}
|
||||
|
||||
return inventory_selected_uuids;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ BOOL LLFeatureList::isFeatureAvailable(const std::string& name)
|
|||
return mFeatures[name].mAvailable;
|
||||
}
|
||||
|
||||
LL_WARNS("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL;
|
||||
LL_WARNS_ONCE("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL;
|
||||
|
||||
// changing this to TRUE so you have to explicitly disable
|
||||
// something for it to be disabled
|
||||
|
|
@ -120,7 +120,7 @@ F32 LLFeatureList::getRecommendedValue(const std::string& name)
|
|||
return mFeatures[name].mRecommendedLevel;
|
||||
}
|
||||
|
||||
LL_WARNS("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL;
|
||||
LL_WARNS_ONCE("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -237,16 +237,19 @@ const LLUUID LLFloaterWorldMap::sHomeID( "10000000-0000-0000-0000-000000000001"
|
|||
|
||||
LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mInventory(NULL),
|
||||
mInventoryObserver(NULL),
|
||||
mFriendObserver(NULL),
|
||||
mCompletingRegionName(),
|
||||
mCompletingRegionPos(),
|
||||
mWaitingForTracker(FALSE),
|
||||
mIsClosing(FALSE),
|
||||
mSetToUserPosition(TRUE),
|
||||
mTrackedLocation(0,0,0),
|
||||
mTrackedStatus(LLTracker::TRACKING_NOTHING)
|
||||
mInventory(NULL),
|
||||
mInventoryObserver(NULL),
|
||||
mFriendObserver(NULL),
|
||||
mCompletingRegionName(),
|
||||
mCompletingRegionPos(),
|
||||
mWaitingForTracker(FALSE),
|
||||
mIsClosing(FALSE),
|
||||
mSetToUserPosition(TRUE),
|
||||
mTrackedLocation(0,0,0),
|
||||
mTrackedStatus(LLTracker::TRACKING_NOTHING),
|
||||
mListFriendCombo(NULL),
|
||||
mListLandmarkCombo(NULL),
|
||||
mListSearchResults(NULL)
|
||||
{
|
||||
gFloaterWorldMap = this;
|
||||
|
||||
|
|
@ -281,17 +284,20 @@ BOOL LLFloaterWorldMap::postBuild()
|
|||
avatar_combo->selectFirstItem();
|
||||
avatar_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onAvatarComboPrearrange, this) );
|
||||
avatar_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) );
|
||||
mListFriendCombo = dynamic_cast<LLCtrlListInterface *>(avatar_combo);
|
||||
|
||||
LLSearchEditor *location_editor = getChild<LLSearchEditor>("location");
|
||||
location_editor->setFocusChangedCallback(boost::bind(&LLFloaterWorldMap::onLocationFocusChanged, this, _1));
|
||||
location_editor->setKeystrokeCallback( boost::bind(&LLFloaterWorldMap::onSearchTextEntry, this));
|
||||
|
||||
getChild<LLScrollListCtrl>("search_results")->setDoubleClickCallback( boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this));
|
||||
mListSearchResults = childGetListInterface("search_results");
|
||||
|
||||
LLComboBox *landmark_combo = getChild<LLComboBox>( "landmark combo");
|
||||
landmark_combo->selectFirstItem();
|
||||
landmark_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onLandmarkComboPrearrange, this) );
|
||||
landmark_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) );
|
||||
mListLandmarkCombo = dynamic_cast<LLCtrlListInterface *>(landmark_combo);
|
||||
|
||||
mCurZoomVal = log(LLWorldMapView::sMapScale)/log(2.f);
|
||||
getChild<LLUICtrl>("zoom slider")->setValue(LLWorldMapView::sMapScale);
|
||||
|
|
@ -864,7 +870,7 @@ void LLFloaterWorldMap::friendsChanged()
|
|||
// No longer really builds a list. Instead, just updates mAvatarCombo.
|
||||
void LLFloaterWorldMap::buildAvatarIDList()
|
||||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("friend combo");
|
||||
LLCtrlListInterface *list = mListFriendCombo;
|
||||
if (!list) return;
|
||||
|
||||
// Delete all but the "None" entry
|
||||
|
|
@ -894,7 +900,7 @@ void LLFloaterWorldMap::buildAvatarIDList()
|
|||
|
||||
void LLFloaterWorldMap::buildLandmarkIDLists()
|
||||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("landmark combo");
|
||||
LLCtrlListInterface *list = mListLandmarkCombo;
|
||||
if (!list) return;
|
||||
|
||||
// Delete all but the "None" entry
|
||||
|
|
@ -955,7 +961,7 @@ F32 LLFloaterWorldMap::getDistanceToDestination(const LLVector3d &destination,
|
|||
|
||||
void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui)
|
||||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("search_results");
|
||||
LLCtrlListInterface *list = mListSearchResults;
|
||||
if (list)
|
||||
{
|
||||
list->operateOnAll(LLCtrlListInterface::OP_DELETE);
|
||||
|
|
@ -969,7 +975,7 @@ void LLFloaterWorldMap::clearLandmarkSelection(BOOL clear_ui)
|
|||
{
|
||||
if (clear_ui || !childHasKeyboardFocus("landmark combo"))
|
||||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("landmark combo");
|
||||
LLCtrlListInterface *list = mListLandmarkCombo;
|
||||
if (list)
|
||||
{
|
||||
list->selectByValue( "None" );
|
||||
|
|
@ -983,7 +989,7 @@ void LLFloaterWorldMap::clearAvatarSelection(BOOL clear_ui)
|
|||
if (clear_ui || !childHasKeyboardFocus("friend combo"))
|
||||
{
|
||||
mTrackedStatus = LLTracker::TRACKING_NOTHING;
|
||||
LLCtrlListInterface *list = childGetListInterface("friend combo");
|
||||
LLCtrlListInterface *list = mListFriendCombo;
|
||||
if (list)
|
||||
{
|
||||
list->selectByValue( "None" );
|
||||
|
|
@ -1051,7 +1057,7 @@ void LLFloaterWorldMap::onLandmarkComboPrearrange( )
|
|||
return;
|
||||
}
|
||||
|
||||
LLCtrlListInterface *list = childGetListInterface("landmark combo");
|
||||
LLCtrlListInterface *list = mListLandmarkCombo;
|
||||
if (!list) return;
|
||||
|
||||
LLUUID current_choice = list->getCurrentID();
|
||||
|
|
@ -1087,7 +1093,7 @@ void LLFloaterWorldMap::onLandmarkComboCommit()
|
|||
return;
|
||||
}
|
||||
|
||||
LLCtrlListInterface *list = childGetListInterface("landmark combo");
|
||||
LLCtrlListInterface *list = mListLandmarkCombo;
|
||||
if (!list) return;
|
||||
|
||||
LLUUID asset_id;
|
||||
|
|
@ -1134,7 +1140,7 @@ void LLFloaterWorldMap::onAvatarComboPrearrange( )
|
|||
return;
|
||||
}
|
||||
|
||||
LLCtrlListInterface *list = childGetListInterface("friend combo");
|
||||
LLCtrlListInterface *list = mListFriendCombo;
|
||||
if (!list) return;
|
||||
|
||||
LLUUID current_choice;
|
||||
|
|
@ -1159,7 +1165,7 @@ void LLFloaterWorldMap::onAvatarComboCommit()
|
|||
return;
|
||||
}
|
||||
|
||||
LLCtrlListInterface *list = childGetListInterface("friend combo");
|
||||
LLCtrlListInterface *list = mListFriendCombo;
|
||||
if (!list) return;
|
||||
|
||||
const LLUUID& new_avatar_id = list->getCurrentID();
|
||||
|
|
@ -1559,7 +1565,7 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)
|
|||
|
||||
void LLFloaterWorldMap::onCommitSearchResult()
|
||||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("search_results");
|
||||
LLCtrlListInterface *list = mListSearchResults;
|
||||
if (!list) return;
|
||||
|
||||
LLSD selected_value = list->getSelectedValue();
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#include "lltracker.h"
|
||||
#include "llslurl.h"
|
||||
|
||||
class LLCtrlListInterface;
|
||||
class LLFriendObserver;
|
||||
class LLInventoryModel;
|
||||
class LLInventoryObserver;
|
||||
|
|
@ -190,6 +191,10 @@ private:
|
|||
std::string mTrackedSimName;
|
||||
std::string mTrackedAvatarName;
|
||||
LLSLURL mSLURL;
|
||||
|
||||
LLCtrlListInterface * mListFriendCombo;
|
||||
LLCtrlListInterface * mListLandmarkCombo;
|
||||
LLCtrlListInterface * mListSearchResults;
|
||||
};
|
||||
|
||||
extern LLFloaterWorldMap* gFloaterWorldMap;
|
||||
|
|
|
|||
|
|
@ -369,16 +369,6 @@ void LLFolderView::closeAllFolders()
|
|||
arrangeAll();
|
||||
}
|
||||
|
||||
void LLFolderView::openFolder(const std::string& foldername)
|
||||
{
|
||||
LLFolderViewFolder* inv = findChild<LLFolderViewFolder>(foldername);
|
||||
if (inv)
|
||||
{
|
||||
setSelection(inv, FALSE, FALSE);
|
||||
inv->setOpen(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFolderView::openTopLevelFolders()
|
||||
{
|
||||
for (folders_t::iterator iter = mFolders.begin();
|
||||
|
|
@ -720,8 +710,10 @@ void LLFolderView::extendSelection(LLFolderViewItem* selection, LLFolderViewItem
|
|||
mSignalSelectCallback = SIGNAL_KEYBOARD_FOCUS;
|
||||
}
|
||||
|
||||
static LLFastTimer::DeclareTimer FTM_SANITIZE_SELECTION("Sanitize Selection");
|
||||
void LLFolderView::sanitizeSelection()
|
||||
{
|
||||
LLFastTimer _(FTM_SANITIZE_SELECTION);
|
||||
// store off current item in case it is automatically deselected
|
||||
// and we want to preserve context
|
||||
LLFolderViewItem* original_selected_item = getCurSelectedItem();
|
||||
|
|
@ -1926,8 +1918,8 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
|||
}
|
||||
else
|
||||
{
|
||||
handled = mFolders.front()->handleDragAndDropFromChild(mask,drop,cargo_type,cargo_data,accept,tooltip_msg);
|
||||
}
|
||||
handled = mFolders.front()->handleDragAndDropFromChild(mask,drop,cargo_type,cargo_data,accept,tooltip_msg);
|
||||
}
|
||||
}
|
||||
|
||||
if (handled)
|
||||
|
|
@ -2048,8 +2040,10 @@ void LLFolderView::removeItemID(const LLUUID& id)
|
|||
mItemMap.erase(id);
|
||||
}
|
||||
|
||||
LLFastTimer::DeclareTimer FTM_GET_ITEM_BY_ID("Get FolderViewItem by ID");
|
||||
LLFolderViewItem* LLFolderView::getItemByID(const LLUUID& id)
|
||||
{
|
||||
LLFastTimer _(FTM_GET_ITEM_BY_ID);
|
||||
if (id == getListener()->getUUID())
|
||||
{
|
||||
return this;
|
||||
|
|
|
|||
|
|
@ -108,7 +108,6 @@ public:
|
|||
|
||||
// Close all folders in the view
|
||||
void closeAllFolders();
|
||||
void openFolder(const std::string& foldername);
|
||||
void openTopLevelFolders();
|
||||
|
||||
virtual void toggleOpen() {};
|
||||
|
|
|
|||
|
|
@ -328,6 +328,8 @@ public:
|
|||
virtual BOOL handleMouseUp( S32 x, S32 y, MASK mask );
|
||||
virtual BOOL handleDoubleClick( S32 x, S32 y, MASK mask );
|
||||
|
||||
virtual LLView* findChildView(const std::string& name, BOOL recurse) const { return NULL; }
|
||||
|
||||
// virtual void handleDropped();
|
||||
virtual void draw();
|
||||
virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
|
|
|
|||
|
|
@ -812,9 +812,7 @@ void LLInventoryPanel::openStartFolderOrMyInventory()
|
|||
&& fchild->getListener()
|
||||
&& fchild->getListener()->getUUID() == gInventory.getRootFolderID())
|
||||
{
|
||||
const std::string& child_name = child->getName();
|
||||
mFolderRoot->openFolder(child_name);
|
||||
mFolderRoot->clearSelection(); // No need to keep it selected though!
|
||||
fchild->setOpen(TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -568,6 +568,7 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia
|
|||
else
|
||||
{
|
||||
requested_options.append("basic-mode");
|
||||
requested_options.append("inventory-basic");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -154,10 +154,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
}
|
||||
updateLocationCombo(false);
|
||||
|
||||
LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
|
||||
mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
|
||||
mode_combo.setCommitCallback(boost::bind(&LLPanelLogin::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
|
||||
|
||||
LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo");
|
||||
server_choice_combo->setCommitCallback(onSelectServer, NULL);
|
||||
server_choice_combo->setFocusLostCallback(boost::bind(onServerComboLostFocus, _1));
|
||||
|
|
@ -1025,32 +1021,6 @@ void LLPanelLogin::updateLoginPanelLinks()
|
|||
sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
|
||||
}
|
||||
|
||||
void LLPanelLogin::onModeChange(const LLSD& original_value, const LLSD& new_value)
|
||||
{
|
||||
if (original_value.asString() != new_value.asString())
|
||||
{
|
||||
LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLPanelLogin::onModeChangeConfirm, this, original_value, new_value, _1, _2));
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelLogin::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
switch (option)
|
||||
{
|
||||
case 0:
|
||||
gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
|
||||
LLAppViewer::instance()->forceQuit();
|
||||
break;
|
||||
case 1:
|
||||
// revert to original value
|
||||
getChild<LLUICtrl>("mode_combo")->setValue(original_value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
std::string canonicalize_username(const std::string& name)
|
||||
{
|
||||
std::string cname = name;
|
||||
|
|
|
|||
|
|
@ -97,8 +97,6 @@ private:
|
|||
static void onServerComboLostFocus(LLFocusableElement*);
|
||||
static void updateServerCombo();
|
||||
static void updateStartSLURL();
|
||||
void onModeChange(const LLSD& original_value, const LLSD& new_value);
|
||||
void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
|
||||
|
||||
static void updateLoginPanelLinks();
|
||||
|
||||
|
|
|
|||
|
|
@ -572,28 +572,16 @@ void LLPanelMainInventory::updateItemcountText()
|
|||
{
|
||||
text = getString("ItemcountUnknown");
|
||||
}
|
||||
|
||||
// *TODO: Cache the LLUICtrl* for the ItemcountText control
|
||||
getChild<LLUICtrl>("ItemcountText")->setValue(text);
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::onFocusReceived()
|
||||
{
|
||||
LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
|
||||
|
||||
LLInventoryPanel * inbox_panel = sidepanel_inventory->findChild<LLInventoryPanel>("inventory_inbox");
|
||||
|
||||
if (inbox_panel)
|
||||
{
|
||||
inbox_panel->clearSelection();
|
||||
}
|
||||
|
||||
LLInventoryPanel * outbox_panel = sidepanel_inventory->findChild<LLInventoryPanel>("inventory_outbox");
|
||||
|
||||
if (outbox_panel)
|
||||
{
|
||||
outbox_panel->clearSelection();
|
||||
}
|
||||
|
||||
sidepanel_inventory->updateVerbs();
|
||||
|
||||
sidepanel_inventory->clearSelections(false, true, true);
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::setFilterTextFromFilter()
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ void LLPanelMarketplaceInbox::handleLoginComplete()
|
|||
LLSideTray::getInstance()->setTabButtonBadgeDriver("sidebar_inventory", this);
|
||||
}
|
||||
|
||||
void LLPanelMarketplaceInbox::setupInventoryPanel()
|
||||
LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
|
||||
{
|
||||
LLView * inbox_inventory_placeholder = getChild<LLView>("inbox_inventory_placeholder");
|
||||
LLView * inbox_inventory_parent = inbox_inventory_placeholder->getParent();
|
||||
|
|
@ -106,30 +106,15 @@ void LLPanelMarketplaceInbox::setupInventoryPanel()
|
|||
|
||||
// Hide the placeholder text
|
||||
inbox_inventory_placeholder->setVisible(FALSE);
|
||||
|
||||
return mInventoryPanel;
|
||||
}
|
||||
|
||||
void LLPanelMarketplaceInbox::onFocusReceived()
|
||||
{
|
||||
LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
|
||||
|
||||
if (sidepanel_inventory)
|
||||
{
|
||||
LLInventoryPanel * inv_panel = sidepanel_inventory->getActivePanel();
|
||||
|
||||
if (inv_panel)
|
||||
{
|
||||
inv_panel->clearSelection();
|
||||
}
|
||||
|
||||
LLInventoryPanel * outbox_panel = sidepanel_inventory->findChild<LLInventoryPanel>("inventory_outbox");
|
||||
|
||||
if (outbox_panel)
|
||||
{
|
||||
outbox_panel->clearSelection();
|
||||
}
|
||||
|
||||
sidepanel_inventory->updateVerbs();
|
||||
}
|
||||
sidepanel_inventory->clearSelections(true, false, true);
|
||||
}
|
||||
|
||||
BOOL LLPanelMarketplaceInbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string& tooltip_msg)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public:
|
|||
|
||||
/*virtual*/ void draw();
|
||||
|
||||
void setupInventoryPanel();
|
||||
LLInventoryPanel * setupInventoryPanel();
|
||||
|
||||
U32 getFreshItemCount() const;
|
||||
U32 getTotalItemCount() const;
|
||||
|
|
|
|||
|
|
@ -83,25 +83,8 @@ void LLPanelMarketplaceOutbox::handleLoginComplete()
|
|||
void LLPanelMarketplaceOutbox::onFocusReceived()
|
||||
{
|
||||
LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
|
||||
|
||||
if (sidepanel_inventory)
|
||||
{
|
||||
LLInventoryPanel * inv_panel = sidepanel_inventory->getActivePanel();
|
||||
|
||||
if (inv_panel)
|
||||
{
|
||||
inv_panel->clearSelection();
|
||||
}
|
||||
|
||||
LLInventoryPanel * inbox_panel = sidepanel_inventory->findChild<LLInventoryPanel>("inventory_inbox");
|
||||
|
||||
if (inbox_panel)
|
||||
{
|
||||
inbox_panel->clearSelection();
|
||||
}
|
||||
|
||||
sidepanel_inventory->updateVerbs();
|
||||
}
|
||||
|
||||
sidepanel_inventory->clearSelections(true, true, false);
|
||||
}
|
||||
|
||||
void LLPanelMarketplaceOutbox::onSelectionChange()
|
||||
|
|
@ -111,7 +94,7 @@ void LLPanelMarketplaceOutbox::onSelectionChange()
|
|||
sidepanel_inventory->updateVerbs();
|
||||
}
|
||||
|
||||
void LLPanelMarketplaceOutbox::setupInventoryPanel()
|
||||
LLInventoryPanel * LLPanelMarketplaceOutbox::setupInventoryPanel()
|
||||
{
|
||||
LLView * outbox_inventory_placeholder = getChild<LLView>("outbox_inventory_placeholder");
|
||||
LLView * outbox_inventory_parent = outbox_inventory_placeholder->getParent();
|
||||
|
|
@ -134,6 +117,8 @@ void LLPanelMarketplaceOutbox::setupInventoryPanel()
|
|||
|
||||
// Hide the placeholder text
|
||||
outbox_inventory_placeholder->setVisible(FALSE);
|
||||
|
||||
return mInventoryPanel;
|
||||
}
|
||||
|
||||
bool LLPanelMarketplaceOutbox::isOutboxEmpty() const
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
void setupInventoryPanel();
|
||||
LLInventoryPanel * setupInventoryPanel();
|
||||
|
||||
bool isOutboxEmpty() const;
|
||||
bool isSyncInProgress() const;
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@ private:
|
|||
LLSidepanelInventory::LLSidepanelInventory()
|
||||
: LLPanel()
|
||||
, mItemPanel(NULL)
|
||||
, mInventoryPanelInbox(NULL)
|
||||
, mInventoryPanelOutbox(NULL)
|
||||
, mPanelMainInventory(NULL)
|
||||
, mInboxEnabled(false)
|
||||
, mOutboxEnabled(false)
|
||||
|
|
@ -351,7 +353,7 @@ void LLSidepanelInventory::observeInboxModifications(const LLUUID& inboxID)
|
|||
//
|
||||
|
||||
LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);
|
||||
inbox->setupInventoryPanel();
|
||||
mInventoryPanelInbox = inbox->setupInventoryPanel();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -380,7 +382,7 @@ void LLSidepanelInventory::observeOutboxModifications(const LLUUID& outboxID)
|
|||
//
|
||||
|
||||
LLPanelMarketplaceOutbox * outbox = getChild<LLPanelMarketplaceOutbox>(MARKETPLACE_OUTBOX_PANEL);
|
||||
outbox->setupInventoryPanel();
|
||||
mInventoryPanelOutbox = outbox->setupInventoryPanel();
|
||||
}
|
||||
|
||||
void LLSidepanelInventory::enableInbox(bool enabled)
|
||||
|
|
@ -529,14 +531,12 @@ void LLSidepanelInventory::onShopButtonClicked()
|
|||
|
||||
void LLSidepanelInventory::performActionOnSelection(const std::string &action)
|
||||
{
|
||||
LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
|
||||
LLFolderViewItem* current_item = mPanelMainInventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
|
||||
if (!current_item)
|
||||
{
|
||||
LLInventoryPanel* inbox = findChild<LLInventoryPanel>("inventory_inbox");
|
||||
if (inbox)
|
||||
if (mInventoryPanelInbox)
|
||||
{
|
||||
current_item = inbox->getRootFolder()->getCurSelectedItem();
|
||||
current_item = mInventoryPanelInbox->getRootFolder()->getCurSelectedItem();
|
||||
}
|
||||
|
||||
if (!current_item)
|
||||
|
|
@ -545,7 +545,7 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action)
|
|||
}
|
||||
}
|
||||
|
||||
current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getModel(), action);
|
||||
current_item->getListener()->performAction(mPanelMainInventory->getActivePanel()->getModel(), action);
|
||||
}
|
||||
|
||||
void LLSidepanelInventory::onWearButtonClicked()
|
||||
|
|
@ -687,19 +687,16 @@ void LLSidepanelInventory::updateVerbs()
|
|||
|
||||
bool LLSidepanelInventory::canShare()
|
||||
{
|
||||
LLPanelMainInventory* panel_main_inventory =
|
||||
mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
|
||||
LLInventoryPanel* inbox = findChild<LLInventoryPanel>("inventory_inbox");
|
||||
LLInventoryPanel* inbox = mInventoryPanelInbox;
|
||||
|
||||
// Avoid flicker in the Recent tab while inventory is being loaded.
|
||||
if ( (!inbox || inbox->getRootFolder()->getSelectionList().empty())
|
||||
&& (panel_main_inventory && !panel_main_inventory->getActivePanel()->getRootFolder()->hasVisibleChildren()) )
|
||||
&& (mPanelMainInventory && !mPanelMainInventory->getActivePanel()->getRootFolder()->hasVisibleChildren()) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return ( (panel_main_inventory ? LLAvatarActions::canShareSelectedItems(panel_main_inventory->getActivePanel()) : false)
|
||||
return ( (mPanelMainInventory ? LLAvatarActions::canShareSelectedItems(mPanelMainInventory->getActivePanel()) : false)
|
||||
|| (inbox ? LLAvatarActions::canShareSelectedItems(inbox) : false) );
|
||||
}
|
||||
|
||||
|
|
@ -724,14 +721,13 @@ bool LLSidepanelInventory::canWearSelected()
|
|||
|
||||
LLInventoryItem *LLSidepanelInventory::getSelectedItem()
|
||||
{
|
||||
LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
|
||||
LLFolderViewItem* current_item = mPanelMainInventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
|
||||
|
||||
if (!current_item)
|
||||
{
|
||||
LLInventoryPanel* inbox = findChild<LLInventoryPanel>("inventory_inbox");
|
||||
if (inbox)
|
||||
if (mInventoryPanelInbox)
|
||||
{
|
||||
current_item = inbox->getRootFolder()->getCurSelectedItem();
|
||||
current_item = mInventoryPanelInbox->getRootFolder()->getCurSelectedItem();
|
||||
}
|
||||
|
||||
if (!current_item)
|
||||
|
|
@ -748,14 +744,20 @@ U32 LLSidepanelInventory::getSelectedCount()
|
|||
{
|
||||
int count = 0;
|
||||
|
||||
LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
std::set<LLUUID> selection_list = panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList();
|
||||
std::set<LLUUID> selection_list = mPanelMainInventory->getActivePanel()->getRootFolder()->getSelectionList();
|
||||
count += selection_list.size();
|
||||
|
||||
LLInventoryPanel* inbox = findChild<LLInventoryPanel>("inventory_inbox");
|
||||
if (inbox)
|
||||
if ((count == 0) && mInboxEnabled && (mInventoryPanelInbox != NULL))
|
||||
{
|
||||
selection_list = inbox->getRootFolder()->getSelectionList();
|
||||
selection_list = mInventoryPanelInbox->getRootFolder()->getSelectionList();
|
||||
|
||||
count += selection_list.size();
|
||||
}
|
||||
|
||||
if ((count == 0) && mOutboxEnabled && (mInventoryPanelOutbox != NULL))
|
||||
{
|
||||
selection_list = mInventoryPanelOutbox->getRootFolder()->getSelectionList();
|
||||
|
||||
count += selection_list.size();
|
||||
}
|
||||
|
||||
|
|
@ -779,3 +781,45 @@ BOOL LLSidepanelInventory::isMainInventoryPanelActive() const
|
|||
{
|
||||
return mInventoryPanel->getVisible();
|
||||
}
|
||||
|
||||
void LLSidepanelInventory::clearSelections(bool clearMain, bool clearInbox, bool clearOutbox)
|
||||
{
|
||||
if (clearMain)
|
||||
{
|
||||
LLInventoryPanel * inv_panel = getActivePanel();
|
||||
|
||||
if (inv_panel)
|
||||
{
|
||||
inv_panel->clearSelection();
|
||||
}
|
||||
}
|
||||
|
||||
if (clearInbox && mInboxEnabled && (mInventoryPanelInbox != NULL))
|
||||
{
|
||||
mInventoryPanelInbox->clearSelection();
|
||||
}
|
||||
|
||||
if (clearOutbox && mOutboxEnabled && (mInventoryPanelOutbox != NULL))
|
||||
{
|
||||
mInventoryPanelOutbox->clearSelection();
|
||||
}
|
||||
|
||||
updateVerbs();
|
||||
}
|
||||
|
||||
std::set<LLUUID> LLSidepanelInventory::getInboxOrOutboxSelectionList()
|
||||
{
|
||||
std::set<LLUUID> inventory_selected_uuids;
|
||||
|
||||
if (mInboxEnabled && (mInventoryPanelInbox != NULL))
|
||||
{
|
||||
inventory_selected_uuids = mInventoryPanelInbox->getRootFolder()->getSelectionList();
|
||||
}
|
||||
|
||||
if (inventory_selected_uuids.empty() && mOutboxEnabled && (mInventoryPanelOutbox != NULL))
|
||||
{
|
||||
inventory_selected_uuids = mInventoryPanelOutbox->getRootFolder()->getSelectionList();
|
||||
}
|
||||
|
||||
return inventory_selected_uuids;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ public:
|
|||
LLInventoryPanel* getActivePanel(); // Returns an active inventory panel, if any.
|
||||
LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }
|
||||
BOOL isMainInventoryPanelActive() const;
|
||||
|
||||
void clearSelections(bool clearMain, bool clearInbox, bool clearOutbox);
|
||||
std::set<LLUUID> getInboxOrOutboxSelectionList();
|
||||
|
||||
void showItemInfoPanel();
|
||||
void showTaskInfoPanel();
|
||||
|
|
@ -95,6 +98,8 @@ protected:
|
|||
//
|
||||
private:
|
||||
LLPanel* mInventoryPanel; // Main inventory view
|
||||
LLInventoryPanel* mInventoryPanelInbox;
|
||||
LLInventoryPanel* mInventoryPanelOutbox;
|
||||
LLSidepanelItemInfo* mItemPanel; // Individual item view
|
||||
LLSidepanelTaskInfo* mTaskPanel; // Individual in-world object view
|
||||
LLPanelMainInventory* mPanelMainInventory;
|
||||
|
|
|
|||
|
|
@ -720,7 +720,13 @@ bool idle_startup()
|
|||
|
||||
timeout_count = 0;
|
||||
|
||||
// Login screen needs menus for preferences, but we can enter
|
||||
// this startup phase more than once.
|
||||
if (gLoginMenuBarView == NULL)
|
||||
{
|
||||
initialize_edit_menu();
|
||||
init_menus();
|
||||
}
|
||||
|
||||
if (show_connect_box)
|
||||
{
|
||||
|
|
@ -755,19 +761,6 @@ bool idle_startup()
|
|||
LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
|
||||
}
|
||||
|
||||
// *NOTE: This is where LLViewerParcelMgr::getInstance() used to get allocated before becoming LLViewerParcelMgr::getInstance().
|
||||
|
||||
// *NOTE: This is where gHUDManager used to bet allocated before becoming LLHUDManager::getInstance().
|
||||
|
||||
// *NOTE: This is where gMuteList used to get allocated before becoming LLMuteList::getInstance().
|
||||
|
||||
// Login screen needs menus for preferences, but we can enter
|
||||
// this startup phase more than once.
|
||||
if (gLoginMenuBarView == NULL)
|
||||
{
|
||||
init_menus();
|
||||
}
|
||||
|
||||
gViewerWindow->setNormalControlsVisible( FALSE );
|
||||
gLoginMenuBarView->setVisible( TRUE );
|
||||
gLoginMenuBarView->setEnabled( TRUE );
|
||||
|
|
@ -1562,6 +1555,12 @@ bool idle_startup()
|
|||
}
|
||||
}
|
||||
|
||||
LLSD inv_basic = response["inventory-basic"];
|
||||
if(inv_basic.isDefined())
|
||||
{
|
||||
llinfos << "Basic inventory root folder id is " << inv_basic["folder_id"] << llendl;
|
||||
}
|
||||
|
||||
LLSD buddy_list = response["buddy-list"];
|
||||
if(buddy_list.isDefined())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -832,7 +832,8 @@ U32 feature_from_string(std::string feature)
|
|||
};
|
||||
|
||||
|
||||
class LLAdvancedToggleFeature : public view_listener_t{
|
||||
class LLAdvancedToggleFeature : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
U32 feature = feature_from_string( userdata.asString() );
|
||||
|
|
@ -845,7 +846,8 @@ class LLAdvancedToggleFeature : public view_listener_t{
|
|||
};
|
||||
|
||||
class LLAdvancedCheckFeature : public view_listener_t
|
||||
{bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
U32 feature = feature_from_string( userdata.asString() );
|
||||
bool new_value = false;
|
||||
|
|
@ -7777,6 +7779,55 @@ class LLToggleUIHints : public view_listener_t
|
|||
}
|
||||
};
|
||||
|
||||
class LLCheckSessionsSettings : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
std::string expected = userdata.asString();
|
||||
return gSavedSettings.getString("SessionSettingsFile") == expected;
|
||||
}
|
||||
};
|
||||
|
||||
class LLChangeMode : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
std::string mode = userdata.asString();
|
||||
if (mode == "basic")
|
||||
{
|
||||
if (gSavedSettings.getString("SessionSettingsFile") != "settings_minimal.xml")
|
||||
{
|
||||
LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "settings_minimal.xml", _1, _2));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (mode == "advanced")
|
||||
{
|
||||
if (gSavedSettings.getString("SessionSettingsFile") != "")
|
||||
{
|
||||
LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "", _1, _2));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static void onModeChangeConfirm(const std::string& new_session_settings_file, const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
switch (option)
|
||||
{
|
||||
case 0:
|
||||
gSavedSettings.getControl("SessionSettingsFile")->set(new_session_settings_file);
|
||||
LLAppViewer::instance()->forceQuit();
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void LLUploadCostCalculator::calculateCost()
|
||||
{
|
||||
S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
|
||||
|
|
@ -8266,6 +8317,8 @@ void initialize_menus()
|
|||
view_listener_t::addMenu(new LLEditableSelectedMono(), "EditableSelectedMono");
|
||||
|
||||
view_listener_t::addMenu(new LLToggleUIHints(), "ToggleUIHints");
|
||||
view_listener_t::addMenu(new LLCheckSessionsSettings(), "CheckSessionSettings");
|
||||
view_listener_t::addMenu(new LLChangeMode(), "ChangeMode");
|
||||
|
||||
commit.add("Destination.show", boost::bind(&toggle_destination_and_avatar_picker, 0));
|
||||
commit.add("Avatar.show", boost::bind(&toggle_destination_and_avatar_picker, 1));
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
legacy_header_height="18"
|
||||
can_resize="true"
|
||||
can_resize="true"
|
||||
height="775"
|
||||
layout="topleft"
|
||||
min_height="400"
|
||||
layout="topleft"
|
||||
min_height="400"
|
||||
min_width="500"
|
||||
name="floater_web_content"
|
||||
help_topic="floater_web_content"
|
||||
save_rect="true"
|
||||
save_rect="true"
|
||||
auto_tile="true"
|
||||
save_visibility="true"
|
||||
save_visibility="true"
|
||||
title=""
|
||||
initial_mime_type="text/html"
|
||||
width="780"
|
||||
tab_stop="true"
|
||||
tab_stop="true"
|
||||
filename="floater_web_content.xml"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
name="Mode Change">
|
||||
<menu_item_check
|
||||
label="Basic"
|
||||
name="BasicMode">
|
||||
<on_check
|
||||
function="CheckSessionSettings"
|
||||
parameter="settings_minimal.xml" />
|
||||
<on_click
|
||||
function="ChangeMode"
|
||||
parameter="basic"/>
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Advanced"
|
||||
name="AdvancedMode">
|
||||
<on_check
|
||||
function="CheckSessionSettings"
|
||||
parameter="" />
|
||||
<on_click
|
||||
function="ChangeMode"
|
||||
parameter="advanced"/>
|
||||
</menu_item_check>
|
||||
</toggleable_menu>
|
||||
|
|
@ -117,33 +117,16 @@ label="Remember password"
|
|||
name="connect_btn"
|
||||
top="35"
|
||||
width="90" />
|
||||
<text
|
||||
follows="left|bottom"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
left_pad="10"
|
||||
name="mode_selection_text"
|
||||
top="20"
|
||||
width="130">
|
||||
Mode:
|
||||
</text>
|
||||
<combo_box
|
||||
follows="left|bottom"
|
||||
<menu_button
|
||||
left_pad="5"
|
||||
top="35"
|
||||
width="80"
|
||||
height="23"
|
||||
max_chars="128"
|
||||
label="Mode ▲"
|
||||
name="mode_menu"
|
||||
tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
|
||||
top_pad="0"
|
||||
name="mode_combo"
|
||||
width="110">
|
||||
<combo_box.item
|
||||
label="Basic"
|
||||
name="Basic"
|
||||
value="settings_minimal.xml" />
|
||||
<combo_box.item
|
||||
label="Advanced"
|
||||
name="Advanced"
|
||||
value="" />
|
||||
</combo_box>
|
||||
menu_filename="menu_mode_change.xml"
|
||||
/>
|
||||
<text
|
||||
follows="left|bottom"
|
||||
font="SansSerifSmall"
|
||||
|
|
|
|||
|
|
@ -77,6 +77,18 @@
|
|||
top="0"
|
||||
width="55" />
|
||||
</panel>
|
||||
<menu_button
|
||||
follows="right|top"
|
||||
image_color="0 0 0 0"
|
||||
hover_glow_amount="0"
|
||||
left_pad="2"
|
||||
top="0"
|
||||
width="55"
|
||||
height="18"
|
||||
label="Mode ▼"
|
||||
tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
|
||||
menu_filename="menu_mode_change.xml"
|
||||
/>
|
||||
<text
|
||||
type="string"
|
||||
font="SansSerifSmall"
|
||||
|
|
@ -89,7 +101,7 @@
|
|||
left_pad="0"
|
||||
name="TimeText"
|
||||
tool_tip="Current time (Pacific)"
|
||||
width="145">
|
||||
width="70">
|
||||
24:00 AM PST
|
||||
</text>
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -187,9 +187,9 @@
|
|||
name="status_bar_container"
|
||||
tab_stop="false"
|
||||
height="30"
|
||||
left="-70"
|
||||
left="-120"
|
||||
top="0"
|
||||
width="70"
|
||||
width="120"
|
||||
visible="false"/>
|
||||
<panel follows="top|bottom"
|
||||
height="500"
|
||||
|
|
|
|||
|
|
@ -118,33 +118,16 @@ label="Remember password"
|
|||
name="connect_btn"
|
||||
top="35"
|
||||
width="90" />
|
||||
<text
|
||||
follows="left|bottom"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
left_pad="10"
|
||||
name="mode_selection_text"
|
||||
top="20"
|
||||
width="130">
|
||||
Mode:
|
||||
</text>
|
||||
<combo_box
|
||||
follows="left|bottom"
|
||||
height="23"
|
||||
max_chars="128"
|
||||
top_pad="0"
|
||||
tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
|
||||
name="mode_combo"
|
||||
width="120">
|
||||
<combo_box.item
|
||||
label="Basic"
|
||||
name="Basic"
|
||||
value="settings_minimal.xml" />
|
||||
<combo_box.item
|
||||
label="Advanced"
|
||||
name="Advanced"
|
||||
value="" />
|
||||
</combo_box>
|
||||
<menu_button
|
||||
left_pad="10"
|
||||
top="35"
|
||||
width="80"
|
||||
height="23"
|
||||
label="Mode ▲"
|
||||
name="mode_menu"
|
||||
tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
|
||||
menu_filename="menu_mode_change.xml"
|
||||
/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
tab_stop="false"
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ width="31" />
|
|||
mouse_opaque="false"
|
||||
name="location_combo"
|
||||
top_delta="0"
|
||||
width="440">
|
||||
width="390">
|
||||
</location_input>
|
||||
<icon follows="right"
|
||||
height="20"
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
name="status"
|
||||
top="19"
|
||||
tab_stop="false"
|
||||
width="70">
|
||||
width="120">
|
||||
<panel.string
|
||||
name="packet_loss_tooltip">
|
||||
Packet Loss
|
||||
|
|
@ -33,6 +33,18 @@
|
|||
name="buycurrencylabel">
|
||||
L$ [AMT]
|
||||
</panel.string>
|
||||
<menu_button
|
||||
follows="right|top"
|
||||
image_color="0 0 0 0"
|
||||
hover_glow_amount="0"
|
||||
left="2"
|
||||
top="7"
|
||||
width="50"
|
||||
height="18"
|
||||
label="Mode ▼"
|
||||
tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
|
||||
menu_filename="menu_mode_change.xml"
|
||||
/>
|
||||
<button
|
||||
follows="right|top"
|
||||
height="16"
|
||||
|
|
@ -41,7 +53,7 @@
|
|||
image_pressed="Pause_Press"
|
||||
image_pressed_selected="Play_Press"
|
||||
is_toggle="true"
|
||||
left="15"
|
||||
left="65"
|
||||
top="7"
|
||||
name="media_toggle_btn"
|
||||
tool_tip="Start/Stop All Media (Music, Video, Web pages)"
|
||||
|
|
|
|||
Loading…
Reference in New Issue