diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/settings_per_account.xml | 14 | ||||
| -rw-r--r-- | indra/newview/llinventoryfilter.cpp | 24 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.cpp | 26 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.h | 5 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceinbox.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceinboxinventory.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceoutbox.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llsidepanelinventory.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llsidetray.cpp | 255 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_main_inventory.xml | 5 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/inventory_panel.xml | 11 | 
11 files changed, 202 insertions, 164 deletions
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index c7140283f1..d8295ddb87 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -34,15 +34,15 @@              <string />          </map>      <key>LastInventoryInboxActivity</key> -       <map> -            <key>Comment</key> +        <map> +        <key>Comment</key>              <string>The last time the received items inbox was poked by the user.</string> -            <key>Persist</key> +        <key>Persist</key>              <integer>1</integer> -            <key>Type</key> -            <string>String</string> -            <key>Value</key> -            <string /> +        <key>Type</key> +            <string>U32</string> +        <key>Value</key> +            <integer>0</integer>          </map>      <key>LastLogoff</key>          <map> diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index d6278a5fda..516b47e616 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -256,16 +256,20 @@ std::string::size_type LLInventoryFilter::getStringMatchOffset() const  // has user modified default filter params?  BOOL LLInventoryFilter::isNotDefault() const  { -	return mFilterOps.mFilterObjectTypes != mDefaultFilterOps.mFilterObjectTypes  -		|| mFilterOps.mFilterCategoryTypes != mDefaultFilterOps.mFilterCategoryTypes  -		|| mFilterOps.mFilterWearableTypes != mDefaultFilterOps.mFilterWearableTypes  -		|| mFilterOps.mFilterTypes != FILTERTYPE_OBJECT -		|| mFilterOps.mFilterLinks != FILTERLINK_INCLUDE_LINKS -		|| mFilterSubString.size()  -		|| mFilterOps.mPermissions != mDefaultFilterOps.mPermissions -		|| mFilterOps.mMinDate != mDefaultFilterOps.mMinDate  -		|| mFilterOps.mMaxDate != mDefaultFilterOps.mMaxDate -		|| mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo; +	BOOL not_default = FALSE; + +	not_default |= (mFilterOps.mFilterObjectTypes != mDefaultFilterOps.mFilterObjectTypes); +	not_default |= (mFilterOps.mFilterCategoryTypes != mDefaultFilterOps.mFilterCategoryTypes); +	not_default |= (mFilterOps.mFilterWearableTypes != mDefaultFilterOps.mFilterWearableTypes); +	not_default |= (mFilterOps.mFilterTypes != mDefaultFilterOps.mFilterTypes); +	not_default |= (mFilterOps.mFilterLinks != mDefaultFilterOps.mFilterLinks); +	not_default |= (mFilterSubString.size()); +	not_default |= (mFilterOps.mPermissions != mDefaultFilterOps.mPermissions); +	not_default |= (mFilterOps.mMinDate != mDefaultFilterOps.mMinDate); +	not_default |= (mFilterOps.mMaxDate != mDefaultFilterOps.mMaxDate); +	not_default |= (mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo); + +	return not_default;  }  BOOL LLInventoryFilter::isActive() const diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 173e5c6ae6..615d3aefde 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -129,6 +129,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :  	mScroller(NULL),  	mSortOrderSetting(p.sort_order_setting),  	mInventory(p.inventory), +	mAcceptsDragAndDrop(p.accepts_drag_and_drop),  	mAllowMultiSelect(p.allow_multi_select),  	mShowItemLinkOverlays(p.show_item_link_overlays),  	mShowLoadStatus(p.show_load_status), @@ -824,19 +825,24 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  								   EAcceptance* accept,  								   std::string& tooltip_msg)  { -	BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); +	BOOL handled = FALSE; -	// If folder view is empty the (x, y) point won't be in its rect -	// so the handler must be called explicitly. -	// but only if was not handled before. See EXT-6746. -	if (!handled && !mFolderRoot->hasVisibleChildren()) +	if (mAcceptsDragAndDrop)  	{ -		handled = mFolderRoot->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); -	} +		handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); -	if (handled) -	{ -		mFolderRoot->setDragAndDropThisFrame(); +		// If folder view is empty the (x, y) point won't be in its rect +		// so the handler must be called explicitly. +		// but only if was not handled before. See EXT-6746. +		if (!handled && !mFolderRoot->hasVisibleChildren()) +		{ +			handled = mFolderRoot->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); +		} + +		if (handled) +		{ +			mFolderRoot->setDragAndDropThisFrame(); +		}  	}  	return handled; diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index cfb84bf4b7..8635ebc5c8 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -86,6 +86,7 @@ public:  		Optional<bool>						use_label_suffix;  		Optional<bool>						show_load_status;  		Optional<LLScrollContainer::Params>	scroll; +		Optional<bool>						accepts_drag_and_drop;  		Params()  		:	sort_order_setting("sort_order_setting"), @@ -96,7 +97,8 @@ public:  			start_folder("start_folder"),  			use_label_suffix("use_label_suffix", true),  			show_load_status("show_load_status"), -			scroll("scroll") +			scroll("scroll"), +			accepts_drag_and_drop("accepts_drag_and_drop")  		{}  	}; @@ -181,6 +183,7 @@ protected:  	LLInventoryModel*			mInventory;  	LLInventoryObserver*		mInventoryObserver;  	LLInvPanelComplObserver*	mCompletionObserver; +	BOOL						mAcceptsDragAndDrop;  	BOOL 						mAllowMultiSelect;  	BOOL 						mShowItemLinkOverlays; // Shows link graphic over inventory item icons  	BOOL						mShowLoadStatus; diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index 2cb91f771f..0579ecbb90 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -97,6 +97,7 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()  	// Set the sort order newest to oldest  	mInventoryPanel->setSortOrder(LLInventoryFilter::SO_DATE);	 +	mInventoryPanel->getFilter()->markDefault();  	// Set selection callback for proper update of inventory status buttons  	mInventoryPanel->setSelectCallback(boost::bind(&LLPanelMarketplaceInbox::onSelectionChange, this)); @@ -116,7 +117,7 @@ void LLPanelMarketplaceInbox::onFocusReceived()  	sidepanel_inventory->clearSelections(true, false, true); -	gSavedPerAccountSettings.setString("LastInventoryInboxActivity", LLDate::now().asString()); +	gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());  }  BOOL LLPanelMarketplaceInbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string& tooltip_msg) diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index d51aa73c93..f525dbf434 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -192,20 +192,16 @@ void LLInboxFolderViewFolder::draw()  void LLInboxFolderViewFolder::computeFreshness()  { -	const std::string& last_expansion = gSavedPerAccountSettings.getString("LastInventoryInboxActivity"); +	const U32 last_expansion = gSavedPerAccountSettings.getU32("LastInventoryInboxActivity"); -	if (!last_expansion.empty()) +	if (last_expansion > 0)  	{ -		// Inventory DB timezone is hardcoded to PDT or GMT-7, which is 7 hours behind GMT -		const F64 SEVEN_HOURS_IN_SECONDS = 7 * 60 * 60; -		const F64 saved_freshness_inventory_db_timezone = LLDate(last_expansion).secondsSinceEpoch() - SEVEN_HOURS_IN_SECONDS; - -		mFresh = (mCreationDate > saved_freshness_inventory_db_timezone); +		mFresh = (mCreationDate > last_expansion);  #if DEBUGGING_FRESHNESS  		if (mFresh)  		{ -			llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << saved_freshness_inventory_db_timezone << llendl; +			llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion << llendl;  		}  #endif  	} @@ -219,7 +215,7 @@ void LLInboxFolderViewFolder::deFreshify()  {  	mFresh = false; -	gSavedPerAccountSettings.setString("LastInventoryInboxActivity", LLDate::now().asString()); +	gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());  }  void LLInboxFolderViewFolder::selectItem() diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp index 839369bffe..73fb92ff72 100644 --- a/indra/newview/llpanelmarketplaceoutbox.cpp +++ b/indra/newview/llpanelmarketplaceoutbox.cpp @@ -117,8 +117,11 @@ LLInventoryPanel * LLPanelMarketplaceOutbox::setupInventoryPanel()  	LLRect inventory_placeholder_rect = outbox_inventory_placeholder->getRect();  	mInventoryPanel->setShape(inventory_placeholder_rect); -	// Set the sort order newest to oldest, and a selection change callback +	// Set the sort order newest to oldest  	mInventoryPanel->setSortOrder(LLInventoryFilter::SO_DATE);	 +	mInventoryPanel->getFilter()->markDefault(); + +	// Set selection callback for proper update of inventory status buttons  	mInventoryPanel->setSelectCallback(boost::bind(&LLPanelMarketplaceOutbox::onSelectionChange, this));  	// Set up the note to display when the outbox is empty diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 9814e5b81a..bd62b5c101 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -539,7 +539,7 @@ void LLSidepanelInventory::onToggleInboxBtn()  	if (inbox_expanded && inboxPanel->isInVisibleChain())  	{ -		gSavedPerAccountSettings.setString("LastInventoryInboxActivity", LLDate::now().asString()); +		gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());  	}  } @@ -568,7 +568,7 @@ void LLSidepanelInventory::onOpen(const LLSD& key)  #else  	if (mInboxEnabled && getChild<LLButton>(INBOX_BUTTON_NAME)->getToggleState())  	{ -		gSavedPerAccountSettings.setString("LastInventoryInboxActivity", LLDate::now().asString()); +		gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());  	}  #endif diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index f53b08a4bc..55d6378ad8 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -62,6 +62,8 @@  using namespace std;  using namespace LLNotificationsUI; +class LLSideTrayButton; +  static LLRootViewRegistry::Register<LLSideTray>	t1("side_tray");  static LLDefaultChildRegistry::Register<LLSideTrayTab>	t2("sidetray_tab"); @@ -168,8 +170,131 @@ private:  	bool			mHasBadge;  	LLBadge::Params	mBadgeParams; +	LLSideTrayButton*	mSideTrayButton; +}; + +////////////////////////////////////////////////////////////////////////////// +// LLSideTrayButton +// Side Tray tab button with "tear off" handling. +////////////////////////////////////////////////////////////////////////////// + +class LLSideTrayButton : public LLButton +{ +public: +	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) +	{ +		// Route future Mouse messages here preemptively.  (Release on mouse up.) +		// No handler needed for focus lost since this class has no state that depends on it. +		gFocusMgr.setMouseCapture(this); + +		localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY); + +		// Note: don't pass on to children +		return TRUE; +	} + +	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask) +	{ +		// We only handle the click if the click both started and ended within us +		if( !hasMouseCapture() ) return FALSE; + +		S32 screen_x; +		S32 screen_y; +		localPointToScreen(x, y, &screen_x, &screen_y); + +		S32 delta_x = screen_x - mDragLastScreenX; +		S32 delta_y = screen_y - mDragLastScreenY; + +		LLSideTray* side_tray = LLSideTray::getInstance(); + +		// Check if the tab we are dragging is docked. +		if (!side_tray->isTabAttached(mTabName)) return FALSE; + +		// Same value is hardcoded in LLDragHandle::handleHover(). +		const S32 undock_threshold = 12; + +		// Detach a tab if it has been pulled further than undock_threshold. +		if (delta_x <= -undock_threshold ||	delta_x >= undock_threshold	|| +			delta_y <= -undock_threshold ||	delta_y >= undock_threshold) +		{ +			LLSideTrayTab* tab = side_tray->getTab(mTabName); +			if (!tab) return FALSE; + +			tab->setDocked(false); + +			LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName()); +			if (!floater_tab) return FALSE; + +			LLRect original_rect = floater_tab->getRect(); +			S32 header_snap_y = floater_tab->getHeaderHeight() / 2; +			S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2; +			S32 snap_y = screen_y - original_rect.mTop + header_snap_y; + +			// Move the floater to appear "under" the mouse pointer. +			floater_tab->setRect(original_rect.translate(snap_x, snap_y)); + +			// Snap the mouse pointer to the center of the floater header +			// and call 'mouse down' event handler to begin dragging. +			floater_tab->handleMouseDown(original_rect.getWidth() / 2, +				original_rect.getHeight() - header_snap_y, +				mask); + +			return TRUE; +		} + +		return FALSE; +	} + +	void setBadgeDriver(LLSideTrayTabBadgeDriver* driver) +	{ +		mBadgeDriver = driver; +	} + +	void setVisible(BOOL visible) +	{ +		setBadgeVisibility(visible); + +		LLButton::setVisible(visible); +	} + +protected: +	LLSideTrayButton(const LLButton::Params& p) +		: LLButton(p) +		, mDragLastScreenX(0) +		, mDragLastScreenY(0) +		, mBadgeDriver(NULL) +	{ +		// Find out the tab name to use in handleHover(). +		size_t pos = getName().find("_button"); +		llassert(pos != std::string::npos); +		mTabName = getName().substr(0, pos); +	} + +	friend class LLUICtrlFactory; + +	void draw() +	{ +		if (mBadgeDriver) +		{ +			setBadgeLabel(mBadgeDriver->getBadgeString()); +		} + +		LLButton::draw(); +	} + +private: +	S32		mDragLastScreenX; +	S32		mDragLastScreenY; + +	std::string					mTabName; +	LLSideTrayTabBadgeDriver*	mBadgeDriver;  }; + +//////////////////////////////////////////////////// +// LLSideTrayTab implementation +//////////////////////////////////////////////////// +  LLSideTrayTab::LLSideTrayTab(const Params& p)  :	LLPanel(),  	mTabTitle(p.tab_title), @@ -177,7 +302,8 @@ LLSideTrayTab::LLSideTrayTab(const Params& p)  	mImageSelected(p.image_selected),  	mDescription(p.description),  	mMainPanel(NULL), -	mBadgeParams(p.badge) +	mBadgeParams(p.badge), +	mSideTrayButton(NULL)  {  	mHasBadge = p.badge.isProvided();  } @@ -271,6 +397,11 @@ void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)  	bool docking = !isDocked(); +	if (mSideTrayButton) +	{ +		mSideTrayButton->setVisible(docking); +	} +  	// Hide the "Tear Off" button when a tab gets undocked  	// and show "Dock" button instead.  	getChild<LLButton>("undock")->setVisible(docking); @@ -462,116 +593,6 @@ template <>  LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab) { return tab; }  ////////////////////////////////////////////////////////////////////////////// -// LLSideTrayButton -// Side Tray tab button with "tear off" handling. -////////////////////////////////////////////////////////////////////////////// - -class LLSideTrayButton : public LLButton -{ -public: -	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) -	{ -		// Route future Mouse messages here preemptively.  (Release on mouse up.) -		// No handler needed for focus lost since this class has no state that depends on it. -		gFocusMgr.setMouseCapture(this); - -		localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY); - -		// Note: don't pass on to children -		return TRUE; -	} - -	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask) -	{ -		// We only handle the click if the click both started and ended within us -		if( !hasMouseCapture() ) return FALSE; - -		S32 screen_x; -		S32 screen_y; -		localPointToScreen(x, y, &screen_x, &screen_y); - -		S32 delta_x = screen_x - mDragLastScreenX; -		S32 delta_y = screen_y - mDragLastScreenY; - -		LLSideTray* side_tray = LLSideTray::getInstance(); - -		// Check if the tab we are dragging is docked. -		if (!side_tray->isTabAttached(mTabName)) return FALSE; - -		// Same value is hardcoded in LLDragHandle::handleHover(). -		const S32 undock_threshold = 12; - -		// Detach a tab if it has been pulled further than undock_threshold. -		if (delta_x <= -undock_threshold ||	delta_x >= undock_threshold	|| -			delta_y <= -undock_threshold ||	delta_y >= undock_threshold) -		{ -			LLSideTrayTab* tab = side_tray->getTab(mTabName); -			if (!tab) return FALSE; - -			tab->setDocked(false); - -			LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName()); -			if (!floater_tab) return FALSE; - -			LLRect original_rect = floater_tab->getRect(); -			S32 header_snap_y = floater_tab->getHeaderHeight() / 2; -			S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2; -			S32 snap_y = screen_y - original_rect.mTop + header_snap_y; - -			// Move the floater to appear "under" the mouse pointer. -			floater_tab->setRect(original_rect.translate(snap_x, snap_y)); - -			// Snap the mouse pointer to the center of the floater header -			// and call 'mouse down' event handler to begin dragging. -			floater_tab->handleMouseDown(original_rect.getWidth() / 2, -										 original_rect.getHeight() - header_snap_y, -										 mask); - -			return TRUE; -		} - -		return FALSE; -	} - -	void setBadgeDriver(LLSideTrayTabBadgeDriver* driver) -	{ -		mBadgeDriver = driver; -	} - -protected: -	LLSideTrayButton(const LLButton::Params& p) -		: LLButton(p) -		, mDragLastScreenX(0) -		, mDragLastScreenY(0) -		, mBadgeDriver(NULL) -	{ -		// Find out the tab name to use in handleHover(). -		size_t pos = getName().find("_button"); -		llassert(pos != std::string::npos); -		mTabName = getName().substr(0, pos); -	} - -	friend class LLUICtrlFactory; - -	void draw() -	{ -		if (mBadgeDriver) -		{ -			setBadgeLabel(mBadgeDriver->getBadgeString()); -		} - -		LLButton::draw(); -	} - -private: -	S32		mDragLastScreenX; -	S32		mDragLastScreenY; - -	std::string					mTabName; -	LLSideTrayTabBadgeDriver*	mBadgeDriver; -}; - -//////////////////////////////////////////////////////////////////////////////  // LLSideTray  ////////////////////////////////////////////////////////////////////////////// @@ -786,7 +807,7 @@ bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible  	{  		// Keep previously active tab visible if requested.  		if (keep_prev_visible) tab_to_keep_visible = mActiveTab; -	toggleTabButton(mActiveTab); +		toggleTabButton(mActiveTab);  	}  	//select new tab @@ -794,9 +815,9 @@ bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible  	if (mActiveTab)  	{ -	toggleTabButton(mActiveTab); -	LLSD key;//empty -	mActiveTab->onOpen(key); +		toggleTabButton(mActiveTab); +		LLSD key;//empty +		mActiveTab->onOpen(key);  	}  	//arrange(); @@ -976,7 +997,9 @@ LLButton* LLSideTrayTab::createButton(bool allowTearOff, LLUICtrl::commit_callba  	LLButton* button;  	if (allowTearOff)  	{ -		button = LLUICtrlFactory::create<LLSideTrayButton>(bparams); +		mSideTrayButton = LLUICtrlFactory::create<LLSideTrayButton>(bparams); + +		button = mSideTrayButton;  	}  	else  	{ diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 888230a00e..e6c5110999 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -82,10 +82,11 @@       left="0"       name="All Items"       sort_order_setting="InventorySortOrder" -	 show_item_link_overlays="true" +     show_item_link_overlays="true"       top="16"       width="288" />      <recent_inventory_panel +     accepts_drag_and_drop="false"       bg_opaque_color="DkGray2"       bg_alpha_color="DkGray2"       background_visible="true" @@ -99,7 +100,7 @@       layout="topleft"       left_delta="0"       name="Recent Items" -	 show_item_link_overlays="true" +     show_item_link_overlays="true"       width="290" />    </tab_container>    <layout_stack diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml index 00f4c43915..eaf148c5e4 100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -4,11 +4,12 @@    background_visible="true"    background_opaque="true"    show_load_status="true" +  accepts_drag_and_drop="true"    >      <scroll -		name="Inventory Scroller" -        follows="all" -		reserve_scroll_corner="true" -        tab_stop="true" -        /> +      name="Inventory Scroller" +      follows="all" +      reserve_scroll_corner="true" +      tab_stop="true" +    />  </panel>  | 
