svn merge -r 57620:58007 svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance

master
Josh Bell 2007-02-20 22:02:36 +00:00
parent 73bc0fb42b
commit 7dada07dba
29 changed files with 254 additions and 196 deletions

View File

@ -306,7 +306,7 @@ const U32 MAP_ITEM_TELEHUB = 0x01;
const U32 MAP_ITEM_PG_EVENT = 0x02;
const U32 MAP_ITEM_MATURE_EVENT = 0x03;
const U32 MAP_ITEM_POPULAR = 0x04;
const U32 MAP_ITEM_AGENT_COUNT = 0x05;
//const U32 MAP_ITEM_AGENT_COUNT = 0x05;
const U32 MAP_ITEM_AGENT_LOCATIONS = 0x06;
const U32 MAP_ITEM_LAND_FOR_SALE = 0x07;
const U32 MAP_ITEM_CLASSIFIED = 0x08;

View File

@ -57,7 +57,5 @@ const char LSL_DOC_URL[] =
const char SL_KB_URL[] =
"http://secondlife.com/knowledgebase/";
const char ACCOUNT_TRANSACTIONS_URL[] =
"https://secondlife.com/account/transactions.php";
const char RELEASE_NOTES[] = "releasenotes.txt";

View File

@ -55,9 +55,6 @@ extern const char LSL_DOC_URL[];
// SL KnowledgeBase page
extern const char SL_KB_URL[];
// Account transactions
extern const char ACCOUNT_TRANSACTIONS_URL[];
// Local Url Release Notes
extern const char RELEASE_NOTES[];

View File

@ -719,8 +719,11 @@ LLTransferSourceChannel::LLTransferSourceChannel(const LLTransferChannelType cha
LLTransferSourceChannel::~LLTransferSourceChannel()
{
LLPriQueueMap<LLTransferSource *>::pqm_iter iter;
for (iter = mTransferSources.mMap.begin(); iter != mTransferSources.mMap.end(); iter++)
LLPriQueueMap<LLTransferSource*>::pqm_iter iter =
mTransferSources.mMap.begin();
LLPriQueueMap<LLTransferSource*>::pqm_iter end =
mTransferSources.mMap.end();
for (; iter != end; ++iter)
{
// Just kill off all of the transfers
(*iter).second->abortTransfer();

View File

@ -628,7 +628,7 @@ S32 LLFontGL::render(const LLWString &wstr,
case LEFT:
break;
case RIGHT:
cur_x -= (F32)getWidth(wstr.c_str(), 0, length) * sScaleX;
cur_x -= llmin(scaled_max_pixels, llround(getWidthF32(wstr.c_str(), 0, length) * sScaleX));
break;
case HCENTER:
cur_x -= llmin(scaled_max_pixels, llround(getWidthF32(wstr.c_str(), 0, length) * sScaleX)) / 2;
@ -653,12 +653,13 @@ S32 LLFontGL::render(const LLWString &wstr,
BOOL draw_ellipses = FALSE;
if (use_ellipses)
if (use_ellipses && halign == LEFT)
{
// check for too long of a string
if (getWidthF32(wstr.c_str(), 0, max_chars) > scaled_max_pixels)
{
const LLWString dots(utf8str_to_wstring(LLString("...")));
// use four dots for ellipsis width to generate padding
const LLWString dots(utf8str_to_wstring(LLString("....")));
scaled_max_pixels = llmax(0, scaled_max_pixels - llround(getWidthF32(dots.c_str())));
draw_ellipses = TRUE;
}

View File

@ -1218,24 +1218,36 @@ void LLFloater::onClickEdit(void *userdata)
}
// static
void LLFloater::closeByMenu( void* userdata )
void LLFloater::closeFocusedFloater()
{
LLFloater* self = (LLFloater*) userdata;
if (!self || self->getHost()) return;
LLFloater* focused_floater = NULL;
LLFloaterView* parent = (LLFloaterView*) self->getParent();
// grab focus status before close just in case floater is deleted
BOOL has_focus = gFocusMgr.childHasKeyboardFocus(self);
self->close();
// if this floater used to have focus and now nothing took focus
// give it to next floater (to allow closing multiple windows via keyboard in rapid succession)
if (has_focus && gFocusMgr.getKeyboardFocus() == NULL)
std::map<LLViewHandle, LLFloater*>::iterator iter;
for(iter = sFloaterMap.begin(); iter != sFloaterMap.end(); ++iter)
{
parent->focusFrontFloater();
focused_floater = iter->second;
if (focused_floater->hasFocus())
{
break;
}
}
if (iter == sFloaterMap.end())
{
// nothing found, return
return;
}
focused_floater->close();
// if nothing took focus after closing focused floater
// give it to next floater (to allow closing multiple windows via keyboard in rapid succession)
if (gFocusMgr.getKeyboardFocus() == NULL)
{
// HACK: use gFloaterView directly in case we are using Ctrl-W to close snapshot window
// which sits in gSnapshotFloaterView, and needs to pass focus on to normal floater view
gFloaterView->focusFrontFloater();
}
}

View File

@ -183,7 +183,8 @@ public:
/*virtual*/ LLView* getRootMostFastFrameView();
static void closeByMenu(void *userdata);
static void closeFocusedFloater();
static void onClickClose(void *userdata);
static void onClickMinimize(void *userdata);
static void onClickTearOff(void *userdata);

View File

@ -1155,70 +1155,6 @@ void LLMenuItemToggleGL::doIt( void )
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLMenuItemBranchGL
//
// The LLMenuItemBranchGL represents a menu item that has a
// sub-menu. This is used to make cascading menus.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLMenuItemBranchGL : public LLMenuItemGL
{
protected:
LLMenuGL* mBranch;
public:
LLMenuItemBranchGL( const LLString& name, const LLString& label, LLMenuGL* branch,
KEY key = KEY_NONE, MASK mask = MASK_NONE );
virtual LLXMLNodePtr getXML(bool save_children = true) const;
virtual LLView* getChildByName(const LLString& name, BOOL recurse) const;
virtual LLString getType() const { return "menu"; }
virtual EWidgetType getWidgetType() const;
virtual LLString getWidgetTag() const;
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
virtual BOOL handleAcceleratorKey(KEY key, MASK mask);
// check if we've used these accelerators already
virtual BOOL addToAcceleratorList(std::list <LLKeyBinding*> *listp);
// called to rebuild the draw label
virtual void buildDrawLabel( void );
// doIt() - do the primary funcationality of the menu item.
virtual void doIt( void );
virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
// set the hover status (called by it's menu) and if the object is
// active. This is used for behavior transfer.
virtual void setHighlight( BOOL highlight );
virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent);
virtual BOOL isActive() const;
virtual BOOL isOpen() const;
LLMenuGL *getBranch() const { return mBranch; }
virtual void updateBranchParent( LLView* parentp );
// LLView Functionality
virtual void onVisibilityChange( BOOL curVisibilityIn );
virtual void draw();
virtual void setEnabledSubMenus(BOOL enabled);
virtual void openMenu();
};
LLMenuItemBranchGL::LLMenuItemBranchGL( const LLString& name, const LLString& label, LLMenuGL* branch,
KEY key, MASK mask ) :
LLMenuItemGL( name, label, key, mask ),

View File

@ -542,6 +542,75 @@ protected:
KEY mJumpKey;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLMenuItemBranchGL
//
// The LLMenuItemBranchGL represents a menu item that has a
// sub-menu. This is used to make cascading menus.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLMenuItemBranchGL : public LLMenuItemGL
{
protected:
LLMenuGL* mBranch;
public:
LLMenuItemBranchGL( const LLString& name, const LLString& label, LLMenuGL* branch,
KEY key = KEY_NONE, MASK mask = MASK_NONE );
virtual LLXMLNodePtr getXML(bool save_children = true) const;
virtual LLView* getChildByName(const LLString& name, BOOL recurse) const;
virtual LLString getType() const { return "menu"; }
virtual EWidgetType getWidgetType() const;
virtual LLString getWidgetTag() const;
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
virtual BOOL handleAcceleratorKey(KEY key, MASK mask);
// check if we've used these accelerators already
virtual BOOL addToAcceleratorList(std::list <LLKeyBinding*> *listp);
// called to rebuild the draw label
virtual void buildDrawLabel( void );
// doIt() - do the primary funcationality of the menu item.
virtual void doIt( void );
virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
// set the hover status (called by it's menu) and if the object is
// active. This is used for behavior transfer.
virtual void setHighlight( BOOL highlight );
virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent);
virtual BOOL isActive() const;
virtual BOOL isOpen() const;
LLMenuGL *getBranch() const { return mBranch; }
virtual void updateBranchParent( LLView* parentp );
// LLView Functionality
virtual void onVisibilityChange( BOOL curVisibilityIn );
virtual void draw();
virtual void setEnabledSubMenus(BOOL enabled);
virtual void openMenu();
};
//-----------------------------------------------------------------------------
// class LLPieMenu
// A circular menu of items, icons, etc.

View File

@ -338,16 +338,6 @@ BOOL LLPanel::handleKeyHere( KEY key, MASK mask, BOOL called_from_parent )
gFocusMgr.childHasKeyboardFocus(this) && !called_from_parent )
{
LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus();
if (key == KEY_RETURN && mask == MASK_NONE)
{
// set keyboard focus to self to trigger commitOnFocusLost behavior on current ctrl
if (cur_focus && cur_focus->acceptsTextInput())
{
cur_focus->onCommit();
handled = TRUE;
}
}
// If we have a default button, click it when
// return is pressed, unless current focus is a return-capturing button
// in which case *that* button will handle the return key
@ -363,6 +353,16 @@ BOOL LLPanel::handleKeyHere( KEY key, MASK mask, BOOL called_from_parent )
handled = TRUE;
}
}
if (key == KEY_RETURN && mask == MASK_NONE)
{
// set keyboard focus to self to trigger commitOnFocusLost behavior on current ctrl
if (cur_focus && cur_focus->acceptsTextInput())
{
cur_focus->onCommit();
handled = TRUE;
}
}
}
return handled;

View File

@ -137,10 +137,11 @@ BOOL LLScrollListCheck::handleClick()
//
U32 LLScrollListText::sCount = 0;
LLScrollListText::LLScrollListText( const LLString& text, const LLFontGL* font, S32 width, U8 font_style, LLColor4& color, BOOL use_color, BOOL visible)
LLScrollListText::LLScrollListText( const LLString& text, const LLFontGL* font, S32 width, U8 font_style, LLFontGL::HAlign font_alignment, LLColor4& color, BOOL use_color, BOOL visible)
: mText( text ),
mFont( font ),
mFontStyle( font_style ),
mFontAlignment( font_alignment ),
mWidth( width ),
mVisible( visible ),
mHighlightCount( 0 ),
@ -163,10 +164,6 @@ LLScrollListText::LLScrollListText( const LLString& text, const LLFontGL* font,
{
mRoundedRectImage = LLUI::sImageProvider->getUIImageByID(LLUUID(LLUI::sAssetsGroup->getString("rounded_square.tga")));
}
// Yes, that's four dots, because we want it to have a little
// padding, in proportion to the font size.
mEllipsisWidth = (S32)mFont->getWidth("....");
}
LLScrollListText::~LLScrollListText()
@ -202,7 +199,19 @@ void LLScrollListText::drawToWidth(S32 width, const LLColor4& color, const LLCol
{
mRoundedRectImage->bind();
glColor4fv(highlight_color.mV);
S32 left = mFont->getWidth(mText.getString(), 0, mHighlightOffset);
S32 left = 0;
switch(mFontAlignment)
{
case LLFontGL::LEFT:
left = mFont->getWidth(mText.getString(), 0, mHighlightOffset);
break;
case LLFontGL::RIGHT:
left = width - mFont->getWidth(mText.getString(), mHighlightOffset, S32_MAX);
break;
case LLFontGL::HCENTER:
left = (width - mFont->getWidth(mText.getString())) / 2;
break;
}
gl_segmented_rect_2d_tex(left - 2,
llround(mFont->getLineHeight()) + 1,
left + mFont->getWidth(mText.getString(), mHighlightOffset, mHighlightCount) + 1,
@ -215,21 +224,28 @@ void LLScrollListText::drawToWidth(S32 width, const LLColor4& color, const LLCol
// Try to draw the entire string
F32 right_x;
U32 string_chars = mText.length();
U32 drawn_chars = mFont->render(mText.getWString(), 0, 0, 2,
*display_color,
LLFontGL::LEFT,
LLFontGL::BOTTOM,
mFontStyle,
string_chars,
width - mEllipsisWidth,
&right_x, FALSE);
// If we didn't get the whole string, abbreviate
if (drawn_chars < string_chars && drawn_chars)
F32 start_x = 0.f;
switch(mFontAlignment)
{
mFont->renderUTF8("...", 0, right_x, 0.f, color, LLFontGL::LEFT, LLFontGL::BOTTOM, mFontStyle,
S32_MAX, S32_MAX, NULL, FALSE);
case LLFontGL::LEFT:
start_x = 0.f;
break;
case LLFontGL::RIGHT:
start_x = (F32)width;
break;
case LLFontGL::HCENTER:
start_x = (F32)width * 0.5f;
break;
}
mFont->render(mText.getWString(), 0,
start_x, 2.f,
*display_color,
mFontAlignment,
LLFontGL::BOTTOM,
mFontStyle,
string_chars,
width,
&right_x, FALSE, TRUE);
}
@ -2171,7 +2187,7 @@ LLView* LLScrollListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFac
NULL,
multi_select,
draw_border);
scroll_list->setDisplayHeading(draw_heading);
if (node->hasAttribute("heading_height"))
{
@ -2226,6 +2242,8 @@ LLView* LLScrollListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFac
F32 columnrelwidth = 0.f;
child->getAttributeF32("relwidth", columnrelwidth);
LLFontGL::HAlign h_align = LLFontGL::LEFT;
h_align = LLView::selectFontHAlign(child);
columns[index]["name"] = columnname;
columns[index]["sort"] = sortname;
@ -2234,6 +2252,7 @@ LLView* LLScrollListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFac
columns[index]["width"] = columnwidth;
columns[index]["relwidth"] = columnrelwidth;
columns[index]["dynamicwidth"] = columndynamicwidth;
columns[index]["halign"] = (S32)h_align;
index++;
}
}
@ -2580,6 +2599,7 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& value, EAddPosition p
S32 index = column_itor->second.mIndex;
S32 width = column_itor->second.mWidth;
LLFontGL::HAlign font_alignment = column_itor->second.mFontAlignment;
LLSD value = (*itor)["value"];
LLString fontname = (*itor)["font"].asString();
@ -2607,7 +2627,7 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& value, EAddPosition p
}
else
{
new_item->setColumn(index, new LLScrollListText(value.asString(), font, width, font_style));
new_item->setColumn(index, new LLScrollListText(value.asString(), font, width, font_style, font_alignment));
}
}
@ -2715,3 +2735,4 @@ void LLScrollListCtrl::onFocusLost()
}
}
}

View File

@ -46,9 +46,8 @@ public:
class LLScrollListText : public LLScrollListCell
{
static U32 sCount;
public:
LLScrollListText( const LLString& text, const LLFontGL* font, S32 width = 0, U8 font_style = LLFontGL::NORMAL, LLColor4& color = LLColor4::black, BOOL use_color = FALSE, BOOL visible = TRUE);
LLScrollListText( const LLString& text, const LLFontGL* font, S32 width = 0, U8 font_style = LLFontGL::NORMAL, LLFontGL::HAlign font_alignment = LLFontGL::LEFT, LLColor4& color = LLColor4::black, BOOL use_color = FALSE, BOOL visible = TRUE);
/*virtual*/ ~LLScrollListText();
virtual void drawToWidth(S32 width, const LLColor4& color, const LLColor4& highlight_color) const;
@ -65,13 +64,15 @@ private:
const LLFontGL* mFont;
LLColor4* mColor;
const U8 mFontStyle;
LLFontGL::HAlign mFontAlignment;
S32 mWidth;
S32 mEllipsisWidth; // in pixels, of "..."
BOOL mVisible;
S32 mHighlightCount;
S32 mHighlightOffset;
LLPointer<LLImageGL> mRoundedRectImage;
static U32 sCount;
};
class LLScrollListIcon : public LLScrollListCell
@ -116,9 +117,10 @@ class LLScrollListColumn
{
public:
// Default constructor
LLScrollListColumn() : mName(""), mSortingColumn(""), mLabel(""), mWidth(-1), mRelWidth(-1.0), mDynamicWidth(FALSE), mIndex(-1), mParentCtrl(NULL), mButton(NULL) { }
LLScrollListColumn() : mName(""), mSortingColumn(""), mLabel(""), mWidth(-1), mRelWidth(-1.0), mDynamicWidth(FALSE), mIndex(-1), mParentCtrl(NULL), mButton(NULL), mFontAlignment(LLFontGL::LEFT)
{ }
LLScrollListColumn(LLString name, LLString label, S32 width, F32 relwidth)
LLScrollListColumn(LLString name, LLString label, S32 width, F32 relwidth)
: mName(name), mSortingColumn(name), mLabel(label), mWidth(width), mRelWidth(relwidth), mDynamicWidth(FALSE), mIndex(-1), mParentCtrl(NULL), mButton(NULL) { }
LLScrollListColumn(const LLSD &sd)
@ -150,20 +152,27 @@ public:
mDynamicWidth = FALSE;
mRelWidth = -1;
}
if (sd.has("halign"))
{
mFontAlignment = (LLFontGL::HAlign)llclamp(sd.get("halign").asInteger(), (S32)LLFontGL::LEFT, (S32)LLFontGL::HCENTER);
}
mIndex = -1;
mParentCtrl = NULL;
mButton = NULL;
}
LLString mName;
LLString mSortingColumn;
LLString mLabel;
S32 mWidth;
F32 mRelWidth;
BOOL mDynamicWidth;
S32 mIndex;
LLScrollListCtrl *mParentCtrl;
LLButton *mButton;
LLString mName;
LLString mSortingColumn;
LLString mLabel;
S32 mWidth;
F32 mRelWidth;
BOOL mDynamicWidth;
S32 mIndex;
LLScrollListCtrl* mParentCtrl;
LLButton* mButton;
LLFontGL::HAlign mFontAlignment;
};
class LLScrollListItem
@ -190,8 +199,8 @@ public:
// If width = 0, just use the width of the text. Otherwise override with
// specified width in pixels.
void addColumn( const LLString& text, const LLFontGL* font, S32 width = 0 , U8 font_style = LLFontGL::NORMAL, BOOL visible = TRUE)
{ mColumns.push_back( new LLScrollListText(text, font, width, font_style, LLColor4::black, FALSE, visible) ); }
void addColumn( const LLString& text, const LLFontGL* font, S32 width = 0 , U8 font_style = LLFontGL::NORMAL, LLFontGL::HAlign font_alignment = LLFontGL::LEFT, BOOL visible = TRUE)
{ mColumns.push_back( new LLScrollListText(text, font, width, font_style, font_alignment, LLColor4::black, FALSE, visible) ); }
void addColumn( LLImageGL* icon, S32 width = 0 )
{ mColumns.push_back( new LLScrollListIcon(icon, width) ); }

View File

@ -397,6 +397,11 @@ void LLScriptLibrary::init()
addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelPrimCount", "i", "vii","integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)\nGets the number of prims on the parcel of the given category.\nCategories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP."));
addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelMaxPrims", "i", "vi","integer llGetParcelMaxPrims(vector pos, integer sim_wide)\nGets the maximum number of prims allowed on the parcel at pos."));
addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelDetails", "l", "vl","list llGetParcelDetails(vector pos, list params)\nGets the parcel details specified in params for the parcel at pos.\nParams is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA"));
addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il", "llSetLinkPrimitiveParams(integer linknumber, list rules)\nSet primitive parameters for linknumber based on rules."));
addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi", "llSetLinkTexture(integer link_pos, string texture, integer face)\nSets the texture of face for link_pos"));
// energy, sleep, dummy_func, name, return type, parameters, help text, gods-only
@ -421,10 +426,6 @@ void LLScriptLibrary::init()
//addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCamPositionLocked", NULL, "i", "llSetCamPositionLocked(TRUE or FALSE)\nLocks the camera position so it will not move"));
//addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCamFocusLocked", NULL, "i", "llSetCamFocusLocked(TRUE or FALSE)\nLocks the camera focus so it will not move"));
// These functions are being put on hold until we think through how we want them handled (security issues). DK 02/16/05
//addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il", "llSetLinkPrimitiveParams(integer linknumber, list rules)\nSet primitive parameters for linknumber based on rules."));
//addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi", "llSetLinkTexture(integer link_pos, string texture, integer face)\nSets the texture of face for link_pos"));
//addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetForSale", "i", "ii", "integer llSetForSale(integer selltype, integer price)\nSets this object for sale in mode selltype for price. Returns TRUE if successfully set for sale."));
LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), char *name, char *ret_type, char *args, char *desc, BOOL god_only)

View File

@ -166,7 +166,7 @@ BOOL LLFloaterBuyCurrencyUI::canClose()
void LLFloaterBuyCurrencyUI::onClose(bool app_quitting)
{
LLFloater::onClose(app_quitting);
delete this;
destroy();
}
void LLFloaterBuyCurrencyUI::updateUI()

View File

@ -993,7 +993,7 @@ BOOL LLFloaterBuyLandUI::canClose()
void LLFloaterBuyLandUI::onClose(bool app_quitting)
{
LLFloater::onClose(app_quitting);
delete this;
destroy();
}

View File

@ -148,7 +148,7 @@ void LLFloaterSellLandUI::SelectionObserver::changed()
void LLFloaterSellLandUI::onClose(bool app_quitting)
{
LLFloater::onClose(app_quitting);
delete this;
destroy();
}
BOOL LLFloaterSellLandUI::postBuild()

View File

@ -148,7 +148,7 @@ LLHUDObject *LLHUDObject::addHUDObject(const U8 type)
((LLHUDEffectSpiral *)hud_objectp)->setColor(LLColor4U(255, 255, 255, 255));
break;
case LL_HUD_EFFECT_GLOW:
llerrs << "Glow not implemented!" << llendl;
// deprecated
break;
case LL_HUD_EFFECT_POINT:
hud_objectp = new LLHUDEffectSpiral(type);

View File

@ -592,7 +592,7 @@ void LLFloaterIMPanel::onInputEditorKeystroke(LLLineEditor* caller, void* userda
}
}
void LLFloaterIMPanel::close(bool app_quitting)
void LLFloaterIMPanel::onClose(bool app_quitting)
{
setTyping(FALSE);

View File

@ -37,7 +37,7 @@ public:
// Check typing timeout timer.
/*virtual*/ void draw();
/*virtual*/ void close(bool app_quitting = FALSE);
/*virtual*/ void onClose(bool app_quitting = FALSE);
// add target ids to the session.
// Return TRUE if successful, otherwise FALSE.

View File

@ -327,6 +327,14 @@ void hideContextEntries(LLMenuGL& menu,
for (itor = list->begin(); itor != list->end(); ++itor)
{
LLString name = (*itor)->getName();
// descend into split menus:
if ((name == "More") && (WIDGET_TYPE_MENU_ITEM_BRANCH == (*itor)->getWidgetType()))
{
hideContextEntries(*((LLMenuItemBranchGL *)(*itor))->getBranch(), entries_to_show, disabled_entries);
}
bool found = false;
std::vector<LLString>::const_iterator itor2;
for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)
@ -1758,6 +1766,14 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
LLInventoryModel* model = mInventoryPanel->getModel();
if(!model) return;
LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);
LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);
if (lost_and_found_id == mUUID)
{
// This is the lost+found folder.
mItems.push_back("Empty Lost And Found");
}
if(trash_id == mUUID)
{
// This is the trash.

View File

@ -63,7 +63,6 @@
#include "lleventnotifier.h"
#include "llface.h"
#include "llfeaturemanager.h"
#include "llfloateraccounthistory.h"
#include "llfloaterchat.h"
#include "llfloatergesture.h"
#include "llfloaterland.h"
@ -2287,11 +2286,11 @@ BOOL idle_startup()
// JC - 7/20/2002
gViewerWindow->sendShapeToSim();
// Ignore stipend information for now. Money history is on the web site.
// if needed, show the money history window
if (stipend_since_login && !gNoRender)
{
LLFloaterAccountHistory::show(NULL);
}
//if (stipend_since_login && !gNoRender)
//{
//}
if (!gAgent.isFirstLogin())
{
@ -3125,14 +3124,6 @@ void register_viewer_callbacks(LLMessageSystem* msg)
msg->setHandlerFuncFast(_PREHASH_GrantGodlikePowers, process_grant_godlike_powers);
msg->setHandlerFuncFast(_PREHASH_MoneySummaryReply,
LLFloaterAccountHistory::processMoneySummaryReply);
msg->setHandlerFuncFast(_PREHASH_MoneyDetailsReply,
LLFloaterAccountHistory::processMoneyDetailsReply);
msg->setHandlerFuncFast(_PREHASH_MoneyTransactionsReply,
LLFloaterAccountHistory::processMoneyTransactionsReply);
// ASDF
msg->setHandlerFuncFast(_PREHASH_GroupAccountSummaryReply,
LLGroupMoneyPlanningTabEventHandler::processGroupAccountSummaryReply);
msg->setHandlerFuncFast(_PREHASH_GroupAccountDetailsReply,

View File

@ -212,7 +212,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
mInventoryPanel->setAutoSelectOverride(true);
mInventoryPanel->setFilterTypes(filter_types);
mInventoryPanel->setFilterPermMask(getFilterPermMask());
//mInventoryPanel->setFilterPermMask(getFilterPermMask()); //Commented out due to no-copy texture loss.
mInventoryPanel->setFilterPermMask(immediate_filter_perm_mask);
mInventoryPanel->setSelectCallback(onSelectionChange, this);
mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mInventoryPanel->setAllowMultiSelect(FALSE);
@ -350,7 +351,8 @@ BOOL LLFloaterTexturePicker::handleDragAndDrop(
if (mod) item_perm_mask |= PERM_MODIFY;
if (xfer) item_perm_mask |= PERM_TRANSFER;
PermissionMask filter_perm_mask = getFilterPermMask();
//PermissionMask filter_perm_mask = getFilterPermMask(); Commented out due to no-copy texture loss.
PermissionMask filter_perm_mask = mImmediateFilterPermMask;
if ( (item_perm_mask & filter_perm_mask) == filter_perm_mask )
{
if (drop)
@ -729,7 +731,7 @@ void LLFloaterTexturePicker::onApplyImmediateCheck(LLUICtrl* ctrl, void *user_da
void LLFloaterTexturePicker::updateFilterPermMask()
{
mInventoryPanel->setFilterPermMask( getFilterPermMask() );
//mInventoryPanel->setFilterPermMask( getFilterPermMask() ); Commented out due to no-copy texture loss.
}
void LLFloaterTexturePicker::onSearchEdit(const LLString& search_string, void* user_data )
@ -1252,8 +1254,9 @@ BOOL LLTextureCtrl::allowDrop(LLInventoryItem* item)
if (mod) item_perm_mask |= PERM_MODIFY;
if (xfer) item_perm_mask |= PERM_TRANSFER;
PermissionMask filter_perm_mask = mCanApplyImmediately ?
mImmediateFilterPermMask : mNonImmediateFilterPermMask;
// PermissionMask filter_perm_mask = mCanApplyImmediately ? commented out due to no-copy texture loss.
// mImmediateFilterPermMask : mNonImmediateFilterPermMask;
PermissionMask filter_perm_mask = mImmediateFilterPermMask;
if ( (item_perm_mask & filter_perm_mask) == filter_perm_mask )
{
if(mDragCallback)

View File

@ -1185,6 +1185,8 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
return TRUE;
}
if (!item) return FALSE;
LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
if(!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
{
@ -1217,6 +1219,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
return FALSE;
}
}
std::cout << "ASSET ID: " << new_item->getAssetUUID() << "\n";
hit_obj->updateInventory(new_item, TASK_INVENTORY_ASSET_KEY, true);
}
else if(!item->getPermissions().allowOperationBy(PERM_TRANSFER,
@ -1230,6 +1233,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
// *FIX: may want to make sure agent can paint hit_obj.
// make sure the object has the texture in it's inventory.
std::cout << "ASSET ID: " << new_item->getAssetUUID() << "\n";
hit_obj->updateInventory(new_item, TASK_INVENTORY_ASSET_KEY, true);
}
return TRUE;
@ -2305,6 +2309,12 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
{
return ACCEPT_NO_LOCKED;
}
//If texture !copyable don't texture or you'll never get it back.
if(!item->getPermissions().allowCopyBy(gAgent.getID()))
{
return ACCEPT_NO;
}
if(drop && (ACCEPT_YES_SINGLE <= rv))
{
if((mask & MASK_SHIFT))

View File

@ -86,7 +86,7 @@ BOOL LLFloaterSettingsDebug::postBuild()
childSetUserData("boolean_combo", this);
childSetCommitCallback("color_swatch", onCommitSettings);
childSetUserData("color_swatch", this);
childSetAction("default_btn", onClickDefault, this);
mComment = (LLTextEditor*)getChildByName("comment_text");
return TRUE;
}

View File

@ -655,7 +655,7 @@ void copy_inventory_item(
msg->addUUIDFast(_PREHASH_OldAgentID, current_owner);
msg->addUUIDFast(_PREHASH_OldItemID, item_id);
msg->addUUIDFast(_PREHASH_NewFolderID, parent_id);
msg->addString("NewName", new_name);
msg->addStringFast(_PREHASH_NewName, new_name);
gAgent.sendReliableMessage();
}
@ -672,11 +672,11 @@ void move_inventory_item(
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, agent_id);
msg->addUUIDFast(_PREHASH_SessionID, session_id);
msg->addBOOLFast(_PREHASH_Stamp, false);
msg->addBOOLFast(_PREHASH_Stamp, FALSE);
msg->nextBlockFast(_PREHASH_InventoryData);
msg->addUUIDFast(_PREHASH_ItemID, item_id);
msg->addUUIDFast(_PREHASH_FolderID, parent_id);
msg->addString("NewName", new_name);
msg->addStringFast(_PREHASH_NewName, new_name);
gAgent.sendReliableMessage();
}

View File

@ -89,7 +89,6 @@
#include "llfloaterland.h"
#include "llfloaterlandholdings.h"
#include "llfloatermap.h"
#include "llfloateraccounthistory.h"
#include "llfloaterimagepreview.h"
#include "llfloatermute.h"
#include "llfloaternamedesc.h"
@ -5215,15 +5214,23 @@ void upload_error(const char* error_message, const char* label, const std::strin
LLFilePicker::instance().reset();
}
class LLFileEnableCloseWindow : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
bool new_value = gFloaterView->getFocusedFloater() != NULL || gSnapshotFloaterView->getFocusedFloater() != NULL;
// horrendously opaque, this code
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
return true;
}
};
class LLFileCloseWindow : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
LLFloater *top = gFloaterView->getFrontmost();
if (top && top->hasFocus())
{
LLFloater::closeByMenu( top );
}
LLFloater::closeFocusedFloater();
return true;
}
};
@ -6411,10 +6418,6 @@ class LLShowFloater : public view_listener_t
{
gDebugView->mStatViewp->setVisible(!gDebugView->mStatViewp->getVisible());
}
else if (floater_name == "account history")
{
LLFloaterAccountHistory::show(NULL);
}
else if (floater_name == "my land")
{
LLFloaterLandHoldings::show(NULL);
@ -8615,6 +8618,7 @@ void initialize_menu_actions()
(new LLFileUploadAnim())->registerListener(gMenuHolder, "File.UploadAnim");
(new LLFileUploadBulk())->registerListener(gMenuHolder, "File.UploadBulk");
(new LLFileCloseWindow())->registerListener(gMenuHolder, "File.CloseWindow");
(new LLFileEnableCloseWindow())->registerListener(gMenuHolder, "File.EnableCloseWindow");
(new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture");
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");

View File

@ -247,7 +247,6 @@ void LLWorldMap::setCurrentLayer(S32 layer, bool request_layer)
if (!mMapLoaded[layer] || request_layer)
{
sendMapLayerRequest();
sendItemRequest(MAP_ITEM_AGENT_COUNT);
}
if (mTelehubs.size() == 0 ||
@ -698,12 +697,6 @@ void LLWorldMap::processMapItemReply(LLMessageSystem* msg, void**)
gWorldMap->mClassifieds.push_back(new_item);
break;
}
case MAP_ITEM_AGENT_COUNT: // agent counts
{
// We only ever receive one per region, i.e. this update superceeds any others
gWorldMap->mNumAgents[new_item.mRegionHandle] = new_item.mExtra;
break;
}
case MAP_ITEM_AGENT_LOCATIONS: // agent locations
{
if (!siminfo)

View File

@ -148,8 +148,7 @@ LLWorldMapView::LLWorldMapView(const std::string& name, const LLRect& rect )
mMouseDownPanY( 0 ),
mMouseDownX( 0 ),
mMouseDownY( 0 ),
mSelectIDStart(0),
mAgentCountsUpdateTime(0)
mSelectIDStart(0)
{
sPixelsPerMeter = gMapScale / REGION_WIDTH_METERS;
clearLastClick();
@ -279,12 +278,6 @@ void LLWorldMapView::draw()
F64 current_time = LLTimer::getElapsedSeconds();
if (current_time - mAgentCountsUpdateTime > AGENT_COUNTS_UPDATE_TIME)
{
gWorldMap->sendItemRequest(MAP_ITEM_AGENT_COUNT);
mAgentCountsUpdateTime = current_time;
}
mVisibleRegions.clear();
// animate pan if necessary

View File

@ -33,8 +33,9 @@ class LLTextBox;
#define SIM_MAP_AGENT_SCALE 20 // width in pixels, where we start drawing agents
#define SIM_MAP_SCALE 90 // width in pixels, where we start drawing sim tiles
// Updates for agent locations.
#define AGENTS_UPDATE_TIME 60.0 // in seconds
#define AGENT_COUNTS_UPDATE_TIME 60.0 // in seconds
class LLWorldMapView : public LLPanel
{
@ -164,7 +165,6 @@ public:
static BOOL sHandledLastClick;
S32 mSelectIDStart;
F64 mAgentCountsUpdateTime;
typedef std::vector<U64> handle_list_t;
handle_list_t mVisibleRegions; // set every frame