[LLScrollColumnHeader] Fix the ImageOverlay icons being overwritten every draw and thus destroying our image_overlay parameter!

Seriously, whose idea was that?
Ignore space changes and this will be a lot easier for all of us.
This commit is contained in:
Inusaito Sayori
2013-11-10 02:49:10 -05:00
parent a510af9480
commit be7c33e3c7
3 changed files with 22 additions and 13 deletions

View File

@@ -43,6 +43,7 @@ const S32 MIN_COLUMN_WIDTH = 20;
LLScrollColumnHeader::LLScrollColumnHeader(const std::string& name, const LLRect& rect, LLScrollListColumn* column, const std::string& unselected_image_name, const std::string& selected_image_name)
: LLButton(name, rect, unselected_image_name, selected_image_name, LLStringUtil::null, NULL, LLFontGL::getFontSansSerifSmall()),
mColumn(column),
mDrawArrow(true),
mHasResizableElement(FALSE)
{
setClickedCallback(boost::bind(&LLScrollColumnHeader::onClick, this, _2));
@@ -65,20 +66,23 @@ LLScrollColumnHeader::~LLScrollColumnHeader()
void LLScrollColumnHeader::draw()
{
std::string sort_column = mColumn->mParentCtrl->getSortColumnName();
BOOL draw_arrow = !mColumn->mLabel.empty()
&& mColumn->mParentCtrl->isSorted()
// check for indirect sorting column as well as column's sorting name
&& (sort_column == mColumn->mSortingColumn || sort_column == mColumn->mName);
if (mDrawArrow)
{
std::string sort_column = mColumn->mParentCtrl->getSortColumnName();
BOOL draw_arrow = !mColumn->mLabel.empty()
&& mColumn->mParentCtrl->isSorted()
// check for indirect sorting column as well as column's sorting name
&& (sort_column == mColumn->mSortingColumn || sort_column == mColumn->mName);
BOOL is_ascending = mColumn->mParentCtrl->getSortAscending();
if (draw_arrow)
{
setImageOverlay(is_ascending ? "up_arrow.tga" : "down_arrow.tga", LLFontGL::RIGHT, LLColor4::white);
}
else
{
setImageOverlay(LLUUID::null);
BOOL is_ascending = mColumn->mParentCtrl->getSortAscending();
if (draw_arrow)
{
setImageOverlay(is_ascending ? "up_arrow.tga" : "down_arrow.tga", LLFontGL::RIGHT, LLColor4::white);
}
else
{
setImageOverlay(LLUUID::null);
}
}
// Draw children

View File

@@ -51,6 +51,8 @@ public:
/*virtual*/ void handleReshape(const LLRect& new_rect, bool by_user = false);
LLScrollListColumn* getColumn() { return mColumn; }
// Singu Note: Toggles drawing the sort arrow altogether
void setDrawArrow(bool draw_arrow) { mDrawArrow = draw_arrow; }
void setHasResizableElement(BOOL resizable);
void updateResizeBars();
BOOL canResize();
@@ -60,6 +62,7 @@ public:
private:
LLScrollListColumn* mColumn;
bool mDrawArrow;
LLResizeBar* mResizeBar;
BOOL mHasResizableElement;
};

View File

@@ -2851,6 +2851,7 @@ void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params
if (column_params.header.image.isProvided())
{
new_column->mHeader = new LLScrollColumnHeader("btn_" + name, temp_rect, new_column, column_params.header.image, column_params.header.image);
new_column->mHeader->setDrawArrow(false);
}
else
{
@@ -2858,6 +2859,7 @@ void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params
if (column_params.header.image_overlay.isProvided())
{
new_column->mHeader->setImageOverlay(column_params.header.image_overlay);
new_column->mHeader->setDrawArrow(false);
}
else
{