SL-13582 FIXED The Favorites bar overflow list is shifted after clicking any button on the context menu
parent
c0087286e7
commit
2b219a0bd5
|
|
@ -3244,7 +3244,7 @@ void hide_top_view( LLView* view )
|
|||
// x and y are the desired location for the popup, in the spawning_view's
|
||||
// coordinate frame, NOT necessarily the mouse location
|
||||
// static
|
||||
void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
|
||||
void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y, S32 mouse_x, S32 mouse_y)
|
||||
{
|
||||
const S32 CURSOR_HEIGHT = 22; // Approximate "normal" cursor size
|
||||
const S32 CURSOR_WIDTH = 12;
|
||||
|
|
@ -3275,12 +3275,6 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
|
|||
}
|
||||
}
|
||||
|
||||
// Save click point for detecting cursor moves before mouse-up.
|
||||
// Must be in local coords to compare with mouseUp events.
|
||||
// If the mouse doesn't move, the menu will stay open ala the Mac.
|
||||
// See also LLContextMenu::show()
|
||||
S32 mouse_x, mouse_y;
|
||||
|
||||
// Resetting scrolling position
|
||||
if (menu->isScrollable() && menu->isScrollPositionOnShowReset())
|
||||
{
|
||||
|
|
@ -3291,7 +3285,18 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
|
|||
menu->needsArrange();
|
||||
menu->arrangeAndClear();
|
||||
|
||||
LLUI::getInstance()->getMousePositionLocal(menu->getParent(), &mouse_x, &mouse_y);
|
||||
if ((mouse_x == 0) || (mouse_y == 0))
|
||||
|
||||
{
|
||||
// Save click point for detecting cursor moves before mouse-up.
|
||||
// Must be in local coords to compare with mouseUp events.
|
||||
// If the mouse doesn't move, the menu will stay open ala the Mac.
|
||||
// See also LLContextMenu::show()
|
||||
|
||||
LLUI::getInstance()->getMousePositionLocal(menu->getParent(), &mouse_x, &mouse_y);
|
||||
}
|
||||
|
||||
|
||||
LLMenuHolderGL::sContextMenuSpawnPos.set(mouse_x,mouse_y);
|
||||
|
||||
const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getRect();
|
||||
|
|
|
|||
|
|
@ -510,7 +510,7 @@ public:
|
|||
void createJumpKeys();
|
||||
|
||||
// Show popup at a specific location, in the spawn_view's coordinate frame
|
||||
static void showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y);
|
||||
static void showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y, S32 mouse_x = 0, S32 mouse_y = 0);
|
||||
|
||||
// Whether to drop shadow menu bar
|
||||
void setDropShadowed( const BOOL shadowed );
|
||||
|
|
|
|||
|
|
@ -384,6 +384,8 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
|
|||
mUpdateDropDownItems(true),
|
||||
mRestoreOverflowMenu(false),
|
||||
mGetPrevItems(true),
|
||||
mMouseX(0),
|
||||
mMouseY(0),
|
||||
mItemsChangedTimer()
|
||||
{
|
||||
// Register callback for menus with current registrar (will be parent panel's registrar)
|
||||
|
|
@ -399,7 +401,7 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
|
|||
//make chevron button
|
||||
LLTextBox::Params more_button_params(p.more_button);
|
||||
mMoreTextBox = LLUICtrlFactory::create<LLTextBox> (more_button_params);
|
||||
mMoreTextBox->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
|
||||
mMoreTextBox->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::onMoreTextBoxClicked, this));
|
||||
addChild(mMoreTextBox);
|
||||
|
||||
mDropDownItemsCount = 0;
|
||||
|
|
@ -975,6 +977,12 @@ BOOL LLFavoritesBarCtrl::collectFavoriteItems(LLInventoryModel::item_array_t &it
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFavoritesBarCtrl::onMoreTextBoxClicked()
|
||||
{
|
||||
LLUI::getInstance()->getMousePositionScreen(&mMouseX, &mMouseY);
|
||||
showDropDownMenu();
|
||||
}
|
||||
|
||||
void LLFavoritesBarCtrl::showDropDownMenu()
|
||||
{
|
||||
if (mOverflowMenuHandle.isDead())
|
||||
|
|
@ -1130,7 +1138,7 @@ void LLFavoritesBarCtrl::positionAndShowMenu(LLToggleableMenu* menu)
|
|||
}
|
||||
}
|
||||
|
||||
LLMenuGL::showPopup(this, menu, menu_x, menu_y);
|
||||
LLMenuGL::showPopup(this, menu, menu_x, menu_y, mMouseX, mMouseY);
|
||||
}
|
||||
|
||||
void LLFavoritesBarCtrl::onButtonClick(LLUUID item_id)
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ protected:
|
|||
|
||||
void showDropDownMenu();
|
||||
|
||||
void onMoreTextBoxClicked();
|
||||
|
||||
LLHandle<LLView> mOverflowMenuHandle;
|
||||
LLHandle<LLView> mContextMenuHandle;
|
||||
|
||||
|
|
@ -163,6 +165,9 @@ private:
|
|||
|
||||
BOOL mTabsHighlightEnabled;
|
||||
|
||||
S32 mMouseX;
|
||||
S32 mMouseY;
|
||||
|
||||
boost::signals2::connection mEndDragConnection;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue