summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2009-07-06 21:58:04 +0000
committerJames Cook <james@lindenlab.com>2009-07-06 21:58:04 +0000
commitd6101558a171dbd2390792ac1e78d09fc2c27711 (patch)
treee5fea96c850fb254237c2869f2234fc4a4367e98 /indra/llui
parent39905b927d60e204438705728d2c214cb3f9ef81 (diff)
Merge xui-army-5 to viewer-2, includes layout, art, and color changes, also UI color refactoring and new FreeType font library on Linux.
svn merge -r126038:126164 svn+ssh://svn.lindenlab.com/svn/linden/branches/skinning/xui-army-5
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/CMakeLists.txt2
-rw-r--r--indra/llui/llcombobox.cpp22
-rw-r--r--indra/llui/llcombobox.h3
-rw-r--r--indra/llui/llconsole.cpp4
-rw-r--r--indra/llui/lldraghandle.h4
-rw-r--r--indra/llui/llfloater.cpp19
-rw-r--r--indra/llui/llflyoutbutton.cpp7
-rw-r--r--indra/llui/llflyoutbutton.h8
-rw-r--r--indra/llui/llfocusmgr.cpp2
-rw-r--r--indra/llui/lllineeditor.cpp11
-rw-r--r--indra/llui/llmenugl.cpp26
-rw-r--r--indra/llui/llmenugl.h2
-rw-r--r--indra/llui/llmodaldialog.cpp2
-rw-r--r--indra/llui/llpanel.cpp4
-rw-r--r--indra/llui/llresizehandle.cpp2
-rw-r--r--indra/llui/llspinctrl.cpp8
-rw-r--r--indra/llui/llstatgraph.cpp4
-rw-r--r--indra/llui/llstyle.h2
-rw-r--r--indra/llui/lltextbox.cpp2
-rw-r--r--indra/llui/lltexteditor.cpp6
-rw-r--r--indra/llui/lltexteditor.h2
-rw-r--r--indra/llui/llui.cpp10
-rw-r--r--indra/llui/llui.h12
-rw-r--r--indra/llui/lluicolortable.cpp169
-rw-r--r--indra/llui/lluicolortable.h33
-rw-r--r--indra/llui/lluictrl.cpp8
-rw-r--r--indra/llui/lluictrlfactory.cpp8
-rw-r--r--indra/llui/lluictrlfactory.h2
-rw-r--r--indra/llui/lluiimage.cpp2
-rw-r--r--indra/llui/lluiimage.h4
-rw-r--r--indra/llui/llview.cpp16
31 files changed, 270 insertions, 136 deletions
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 117e8e28ab..e62d875a01 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -81,6 +81,7 @@ set(llui_SOURCE_FILES
lltextparser.cpp
lltrans.cpp
llui.cpp
+ lluicolor.cpp
lluicolortable.cpp
lluictrl.cpp
lluictrlfactory.cpp
@@ -154,6 +155,7 @@ set(llui_HEADER_FILES
lltexteditor.h
lltextparser.h
lltrans.h
+ lluicolor.h
lluicolortable.h
lluiconstants.h
lluictrlfactory.h
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 51ab3326fe..e19eacb774 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -83,12 +83,12 @@ LLComboBox::Params::Params()
: allow_text_entry("allow_text_entry", false),
show_text_as_tentative("show_text_as_tentative", true),
max_chars("max_chars", 20),
- arrow_image("arrow_image"),
list_position("list_position", BELOW),
items("item"),
combo_button("combo_button"),
combo_list("combo_list"),
- combo_editor("combo_editor")
+ combo_editor("combo_editor"),
+ drop_down_button("drop_down_button")
{
addSynonym(items, "combo_item");
}
@@ -104,19 +104,29 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p)
mPrearrangeCallback(p.prearrange_callback()),
mTextEntryCallback(p.text_entry_callback()),
mSelectionCallback(p.selection_callback()),
- mArrowImage(p.arrow_image),
mListPosition(p.list_position)
{
// Text label button
- LLButton::Params button_params = p.combo_button;
+ LLButton::Params button_params = (mAllowTextEntry ? p.combo_button : p.drop_down_button);
button_params.mouse_down_callback.function(boost::bind(&LLComboBox::onButtonDown, this));
button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT);
button_params.rect(p.rect);
- button_params.pad_right(2);
+
+ if(mAllowTextEntry)
+ {
+ button_params.pad_right(2);
+ }
+
+ mArrowImage = button_params.image_unselected;
mButton = LLUICtrlFactory::create<LLButton>(button_params);
- mButton->setRightHPad(2); //redo to compensate for button hack that leaves space for a character
+ if(mAllowTextEntry)
+ {
+ //redo to compensate for button hack that leaves space for a character
+ //unless it is a "minimal combobox"(drop down)
+ mButton->setRightHPad(2);
+ }
addChild(mButton);
LLScrollListCtrl::Params params = p.combo_list;
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index bc98690a01..cb5f72dcbe 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -84,7 +84,6 @@ public:
Optional<commit_callback_t> prearrange_callback,
text_entry_callback,
selection_callback;
- Optional<LLUIImage*> arrow_image;
Optional<EPreferredPosition, PreferredPositionValues> list_position;
@@ -93,6 +92,8 @@ public:
Optional<LLScrollListCtrl::Params> combo_list;
Optional<LLLineEditor::Params> combo_editor;
+ Optional<LLButton::Params> drop_down_button;
+
Multiple<ItemParams> items;
Params();
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index f1fc3d8f43..1e8b8a5537 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -177,8 +177,8 @@ void LLConsole::draw()
// F32 console_opacity = llclamp(gSavedSettings.getF32("ConsoleBackgroundOpacity"), 0.f, 1.f);
F32 console_opacity = llclamp(LLUI::sSettingGroups["config"]->getF32("ConsoleBackgroundOpacity"), 0.f, 1.f);
-// LLColor4 color = gSavedSkinSettings.getColor("ConsoleBackground");
- LLColor4 color = LLUI::sSettingGroups["color"]->getColor("ConsoleBackground");
+// LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");
+ LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");
color.mV[VALPHA] *= console_opacity;
F32 line_height = mFont->getLineHeight();
diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h
index 8b53c46ae9..0448c20068 100644
--- a/indra/llui/lldraghandle.h
+++ b/indra/llui/lldraghandle.h
@@ -53,8 +53,8 @@ public:
Optional<LLUIColor> drag_shadow_color;
Params()
- : drag_highlight_color("", LLUI::getCachedColorFunctor("DefaultHighlightLight")),
- drag_shadow_color("", LLUI::getCachedColorFunctor("DefaultShadowDark"))
+ : drag_highlight_color("", LLUIColorTable::instance().getColor("DefaultHighlightLight")),
+ drag_shadow_color("", LLUIColorTable::instance().getColor("DefaultShadowDark"))
{
mouse_opaque(true);
follows.flags(FOLLOWS_ALL);
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 8932a7ccf2..d37459c040 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -66,7 +66,7 @@ const S32 TABBED_FLOATER_OFFSET = 0;
std::string LLFloater::sButtonActiveImageNames[BUTTON_COUNT] =
{
- "closebox.tga", //BUTTON_CLOSE
+ "Icon_Close_Foreground", //BUTTON_CLOSE
"restore.tga", //BUTTON_RESTORE
"minimize.tga", //BUTTON_MINIMIZE
"tearoffbox.tga", //BUTTON_TEAR_OFF
@@ -84,7 +84,7 @@ std::string LLFloater::sButtonInactiveImageNames[BUTTON_COUNT] =
std::string LLFloater::sButtonPressedImageNames[BUTTON_COUNT] =
{
- "close_in_blue.tga", //BUTTON_CLOSE
+ "Icon_Close_Press", //BUTTON_CLOSE
"restore_pressed.tga", //BUTTON_RESTORE
"minimize_pressed.tga", //BUTTON_MINIMIZE
"tearoff_pressed.tga", //BUTTON_TEAR_OFF
@@ -221,8 +221,8 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
mPreviousMinimizedLeft(0),
mNotificationContext(NULL)
{
- static LLUICachedControl<LLColor4> default_background_color ("FloaterDefaultBackgroundColor", *(new LLColor4));
- static LLUICachedControl<LLColor4> focus_background_color ("FloaterFocusBackgroundColor", *(new LLColor4));
+ static LLUIColor default_background_color = LLUIColorTable::instance().getColor("FloaterDefaultBackgroundColor");
+ static LLUIColor focus_background_color = LLUIColorTable::instance().getColor("FloaterFocusBackgroundColor");
for (S32 i = 0; i < BUTTON_COUNT; i++)
{
@@ -1449,7 +1449,7 @@ void LLFloater::draw()
S32 bottom = LLPANEL_BORDER_WIDTH;
static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0);
- static LLUICachedControl<LLColor4> shadow_color_cached ("ColorDropShadow", *(new LLColor4));
+ static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow");
LLColor4 shadow_color = shadow_color_cached;
F32 shadow_offset = (F32)shadow_offset_S32;
@@ -1474,7 +1474,7 @@ void LLFloater::draw()
if(gFocusMgr.childHasKeyboardFocus(this) && !getIsChrome() && !getCurrentTitle().empty())
{
- static LLUICachedControl<LLColor4> titlebar_focus_color ("TitleBarFocusColor", *(new LLColor4));
+ static LLUIColor titlebar_focus_color = LLUIColorTable::instance().getColor("TitleBarFocusColor");
// draw highlight on title bar to indicate focus. RDW
const LLFontGL* font = LLFontGL::getFontSansSerif();
LLRect r = getRect();
@@ -1533,10 +1533,10 @@ void LLFloater::draw()
{
// add in a border to improve spacialized visual aclarity ;)
// use lines instead of gl_rect_2d so we can round the edges as per james' recommendation
- static LLUICachedControl<LLColor4> focus_border_color ("FloaterFocusBorderColor", *(new LLColor4));
- static LLUICachedControl<LLColor4> unfocus_border_color ("FloaterUnfocusBorderColor", *(new LLColor4));
+ static LLUIColor focus_border_color = LLUIColorTable::instance().getColor("FloaterFocusBorderColor");
+ static LLUIColor unfocus_border_color = LLUIColorTable::instance().getColor("FloaterUnfocusBorderColor");
LLUI::setLineWidth(1.5f);
- LLColor4 outlineColor = gFocusMgr.childHasKeyboardFocus(this) ? focus_border_color() : unfocus_border_color;
+ LLColor4 outlineColor = gFocusMgr.childHasKeyboardFocus(this) ? focus_border_color : unfocus_border_color;
gl_rect_2d_offset_local(0, getRect().getHeight() + 1, getRect().getWidth() + 1, 0, outlineColor, -LLPANEL_BORDER_WIDTH, FALSE);
LLUI::setLineWidth(1.f);
}
@@ -1699,7 +1699,6 @@ void LLFloater::buildButtons()
p.tab_stop(false);
p.follows.flags(FOLLOWS_TOP|FOLLOWS_RIGHT);
p.tool_tip(sButtonToolTips[i]);
- p.image_color(LLUI::getCachedColorFunctor("FloaterButtonImageColor"));
p.scale_image(true);
LLButton* buttonp = LLUICtrlFactory::create<LLButton>(p);
diff --git a/indra/llui/llflyoutbutton.cpp b/indra/llui/llflyoutbutton.cpp
index 8846f2a8c4..a99c3a4fe6 100644
--- a/indra/llui/llflyoutbutton.cpp
+++ b/indra/llui/llflyoutbutton.cpp
@@ -54,11 +54,6 @@ LLFlyoutButton::LLFlyoutButton(const Params& p)
mActionButton = LLUICtrlFactory::create<LLButton>(bp);
addChild(mActionButton);
-
- mButton->setOrigin(getRect().getWidth() - FLYOUT_BUTTON_ARROW_WIDTH, 0);
- mButton->reshape(FLYOUT_BUTTON_ARROW_WIDTH, getRect().getHeight());
- mButton->setFollows(FOLLOWS_RIGHT | FOLLOWS_TOP | FOLLOWS_BOTTOM);
- mButton->setImageOverlay(mListPosition == BELOW ? "down_arrow.tga" : "up_arrow.tga", LLFontGL::RIGHT);
}
void LLFlyoutButton::onActionButtonClick(const LLSD& data)
@@ -75,7 +70,7 @@ void LLFlyoutButton::draw()
//FIXME: this should be an attribute of comboboxes, whether they have a distinct label or
// the label reflects the last selected item, for now we have to manually remove the label
- mButton->setLabel(LLStringUtil::null);
+ setLabel(LLStringUtil::null);
LLComboBox::draw();
}
diff --git a/indra/llui/llflyoutbutton.h b/indra/llui/llflyoutbutton.h
index f60fe1eb35..1f1716593a 100644
--- a/indra/llui/llflyoutbutton.h
+++ b/indra/llui/llflyoutbutton.h
@@ -46,10 +46,14 @@ public:
struct Params : public LLInitParam::Block<Params, LLComboBox::Params>
{
Optional<LLButton::Params> action_button;
+ Deprecated allow_text_entry;
Params()
- : action_button("action_button")
- {}
+ : action_button("action_button"),
+ allow_text_entry("allow_text_entry")
+ {
+ LLComboBox::Params::allow_text_entry = false;
+ }
};
protected:
diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp
index 9a4ec7627e..a66f147dcc 100644
--- a/indra/llui/llfocusmgr.cpp
+++ b/indra/llui/llfocusmgr.cpp
@@ -323,7 +323,7 @@ F32 LLFocusMgr::getFocusFlashAmt() const
LLColor4 LLFocusMgr::getFocusColor() const
{
- static LLUICachedControl<LLColor4> focus_color_cached ("FocusColor", *(new LLColor4));
+ static LLUIColor focus_color_cached = LLUIColorTable::instance().getColor("FocusColor");
LLColor4 focus_color = lerp(focus_color_cached, LLColor4::white, getFocusFlashAmt());
// de-emphasize keyboard focus when app has lost focus (to avoid typing into wrong window problem)
if (!mAppHasFocus)
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 5ea45e13cf..925f22d94e 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -184,6 +184,11 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
mBorder = LLUICtrlFactory::create<LLViewBorder>(border_p);
addChild( mBorder );
+ if(p.background_image.isProvided())
+ {
+ mImage = p.background_image;
+ }
+
// clamp text padding to current editor size
updateTextPadding();
setCursor(mText.length());
@@ -1525,12 +1530,12 @@ void LLLineEditor::draw()
LLColor4 bg_color = mReadOnlyBgColor.get();
-#if 0 // for when we're ready for image art.
+#if 1 // for when we're ready for image art.
if( hasFocus())
{
mImage->drawBorder(0, 0, getRect().getWidth(), getRect().getHeight(), gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth());
}
- mImage->draw(getLocalRect(), mReadOnly ? mReadOnlyBgColor : mWriteableBgColor );
+ mImage->draw(getLocalRect());
#else // the old programmer art.
// drawing solids requires texturing be disabled
{
@@ -1691,7 +1696,7 @@ void LLLineEditor::draw()
mMaxHPixels - llround(rendered_pixels_right),
&rendered_pixels_right);
}
-#if 0 // for when we're ready for image art.
+#if 1 // for when we're ready for image art.
mBorder->setVisible(FALSE); // no more programmatic art.
#endif
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 95221d5fc6..e79afe76d8 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -2333,10 +2333,10 @@ BOOL LLMenuGL::appendMenu( LLMenuGL* menu )
p.label = menu->getLabel();
p.branch = menu;
p.jump_key = menu->getJumpKey();
- p.enabled_color=LLUI::getCachedColorFunctor("MenuItemEnabledColor");
- p.disabled_color=LLUI::getCachedColorFunctor("MenuItemDisabledColor");
- p.highlight_bg_color=LLUI::getCachedColorFunctor("MenuItemHighlightBgColor");
- p.highlight_fg_color=LLUI::getCachedColorFunctor("MenuItemHighlightFgColor");
+ p.enabled_color=LLUIColorTable::instance().getColor("MenuItemEnabledColor");
+ p.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
+ p.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
+ p.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
LLMenuItemBranchGL* branch = LLUICtrlFactory::create<LLMenuItemBranchGL>(p);
success &= append( branch );
@@ -2743,7 +2743,7 @@ void LLMenuGL::draw( void )
if (mDropShadowed && !mTornOff)
{
static LLUICachedControl<S32> drop_shadow_floater ("DropShadowFloater", 0);
- static LLUICachedControl<LLColor4> color_drop_shadow ("ColorDropShadow", *(new LLColor4));
+ static LLUIColor color_drop_shadow = LLUIColorTable::instance().getColor("ColorDropShadow");
gl_drop_shadow(0, getRect().getHeight(), getRect().getWidth(), 0,
color_drop_shadow, drop_shadow_floater );
}
@@ -3117,10 +3117,10 @@ BOOL LLMenuBarGL::appendMenu( LLMenuGL* menu )
p.label = menu->getLabel();
p.visible = menu->getVisible();
p.branch = menu;
- p.enabled_color=LLUI::getCachedColorFunctor("MenuItemEnabledColor");
- p.disabled_color=LLUI::getCachedColorFunctor("MenuItemDisabledColor");
- p.highlight_bg_color=LLUI::getCachedColorFunctor("MenuItemHighlightBgColor");
- p.highlight_fg_color=LLUI::getCachedColorFunctor("MenuItemHighlightFgColor");
+ p.enabled_color=LLUIColorTable::instance().getColor("MenuItemEnabledColor");
+ p.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
+ p.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
+ p.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
LLMenuItemBranchDownGL* branch = LLUICtrlFactory::create<LLMenuItemBranchDownGL>(p);
success &= branch->addToAcceleratorList(&mAccelerators);
@@ -3804,10 +3804,10 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu)
p.name = menu->getName();
p.label = menu->getLabel();
p.branch = menu;
- p.enabled_color=LLUI::getCachedColorFunctor("MenuItemEnabledColor");
- p.disabled_color=LLUI::getCachedColorFunctor("MenuItemDisabledColor");
- p.highlight_bg_color=LLUI::getCachedColorFunctor("MenuItemHighlightBgColor");
- p.highlight_fg_color=LLUI::getCachedColorFunctor("MenuItemHighlightFgColor");
+ p.enabled_color=LLUIColorTable::instance().getColor("MenuItemEnabledColor");
+ p.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
+ p.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
+ p.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
item = LLUICtrlFactory::create<LLContextMenuBranch>(p);
LLMenuGL::sMenuContainer->addChild(item->getBranch());
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 526e1c2583..ad257f46c2 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -379,7 +379,7 @@ public:
drop_shadow("drop_shadow", true),
bg_visible("bg_visible", true),
create_jump_keys("create_jump_keys", false),
- bg_color("bg_color", LLUI::getCachedColorFunctor( "MenuDefaultBgColor" )),
+ bg_color("bg_color", LLUIColorTable::instance().getColor( "MenuDefaultBgColor" )),
scrollable("scrollable", false)
{
addSynonym(bg_visible, "opaque");
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp
index 8779eee28d..7557b87b94 100644
--- a/indra/llui/llmodaldialog.cpp
+++ b/indra/llui/llmodaldialog.cpp
@@ -244,7 +244,7 @@ void LLModalDialog::onClose(bool app_quitting)
// virtual
void LLModalDialog::draw()
{
- static LLUICachedControl<LLColor4> shadow_color ("ColorDropShadow", *(new LLColor4));
+ static LLUIColor shadow_color = LLUIColorTable::instance().getColor("ColorDropShadow");
static LLUICachedControl<S32> shadow_lines ("DropShadowFloater", 0);
gl_drop_shadow( 0, getRect().getHeight(), getRect().getWidth(), 0,
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 3a76e72868..6a6e15867b 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -428,14 +428,10 @@ void LLPanel::initFromParams(const LLPanel::Params& p)
mUIStrings[it->name] = it->text;
}
- setName(p.name());
setLabel(p.label());
-
setShape(p.rect);
parseFollowsFlags(p);
- setEnabled(p.enabled);
- setVisible(p.visible);
setToolTip(p.tool_tip());
setSaveToXML(p.serializable);
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 943e2f55f1..90f51b9919 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -63,7 +63,7 @@ LLResizeHandle::LLResizeHandle(const LLResizeHandle::Params& p)
{
if( RIGHT_BOTTOM == mCorner)
{
- mImage = LLUI::getUIImage("resize_handle_bottom_right_blue.tga");
+ mImage = LLUI::getUIImage("Resize_Corner");
}
switch( p.corner )
{
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index 72329a4b32..943891c572 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -111,8 +111,8 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
.right(btn_right)
.height(spinctrl_btn_height);
up_button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM);
- up_button_params.image_unselected.name("spin_up_out_blue.tga");
- up_button_params.image_selected.name("spin_up_in_blue.tga");
+ up_button_params.image_unselected.name("ScrollArrow_Up");
+ up_button_params.image_selected.name("ScrollArrow_Up");
up_button_params.click_callback.function(boost::bind(&LLSpinCtrl::onUpBtn, this, _2));
up_button_params.mouse_held_callback.function(boost::bind(&LLSpinCtrl::onUpBtn, this, _2));
up_button_params.tab_stop(false);
@@ -130,8 +130,8 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
.bottom(bottom)
.height(spinctrl_btn_height);
down_button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM);
- down_button_params.image_unselected.name("spin_down_out_blue.tga");
- down_button_params.image_selected.name("spin_down_in_blue.tga");
+ down_button_params.image_unselected.name("ScrollArrow_Down");
+ down_button_params.image_selected.name("ScrollArrow_Down");
down_button_params.click_callback.function(boost::bind(&LLSpinCtrl::onDownBtn, this, _2));
down_button_params.mouse_held_callback.function(boost::bind(&LLSpinCtrl::onDownBtn, this, _2));
down_button_params.tab_stop(false);
diff --git a/indra/llui/llstatgraph.cpp b/indra/llui/llstatgraph.cpp
index 3bd2c9f9e7..55d6b3159f 100644
--- a/indra/llui/llstatgraph.cpp
+++ b/indra/llui/llstatgraph.cpp
@@ -107,10 +107,10 @@ void LLStatGraph::draw()
}
//gl_drop_shadow(0, getRect().getHeight(), getRect().getWidth(), 0,
- // gSavedSkinSettings.getColor("ColorDropShadow"),
+ // LLUIColorTable::instance().getColor("ColorDropShadow"),
// (S32) gSavedSettings.getF32("DropShadowFloater") );
- color = LLUI::sSettingGroups["color"]->getColor( "MenuDefaultBgColor" );
+ color = LLUIColorTable::instance().getColor( "MenuDefaultBgColor" );
gGL.color4fv(color.mV);
gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, TRUE);
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
index 890abc7d67..1a94fcf2c6 100644
--- a/indra/llui/llstyle.h
+++ b/indra/llui/llstyle.h
@@ -106,7 +106,7 @@ protected:
private:
BOOL mVisible;
- LLColor4 mColor;
+ LLUIColor mColor;
std::string mFontName;
LLFontGL* mFont; // cached for performance
std::string mLink;
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
index 464e4be809..b812e876ef 100644
--- a/indra/llui/lltextbox.cpp
+++ b/indra/llui/lltextbox.cpp
@@ -314,7 +314,7 @@ void LLTextBox::draw()
if( mBorderDropShadowVisible )
{
- static LLUICachedControl<LLColor4> color_drop_shadow ("ColorDropShadow", *(new LLColor4));
+ static LLUIColor color_drop_shadow = LLUIColorTable::instance().getColor("ColorDropShadow");
static LLUICachedControl<S32> drop_shadow_tooltip ("DropShadowTooltip", 0);
gl_drop_shadow(0, getRect().getHeight(), getRect().getWidth(), 0,
color_drop_shadow, drop_shadow_tooltip);
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 34bced064e..6649264d9a 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -75,7 +75,7 @@ const S32 CURSOR_THICKNESS = 2;
const S32 SPACES_PER_TAB = 4;
-LLColor4 LLTextEditor::mLinkColor = LLColor4::blue;
+LLUIColor LLTextEditor::mLinkColor = LLColor4::blue;
void (* LLTextEditor::mURLcallback)(const std::string&) = NULL;
bool (* LLTextEditor::mSecondlifeURLcallback)(const std::string&) = NULL;
bool (* LLTextEditor::mSecondlifeURLcallbackRightClick)(const std::string&) = NULL;
@@ -3083,8 +3083,8 @@ void LLTextEditor::drawClippedSegment(const LLWString &text, S32 seg_start, S32
if (style->getIsEmbeddedItem())
{
- static LLUICachedControl<LLColor4> text_embedded_item_readonly_color ("TextEmbeddedItemReadOnlyColor", *(new LLColor4));
- static LLUICachedControl<LLColor4> text_embedded_item_color ("TextEmbeddedItemColor", *(new LLColor4));
+ static LLUIColor text_embedded_item_readonly_color = LLUIColorTable::instance().getColor("TextEmbeddedItemReadOnlyColor");
+ static LLUIColor text_embedded_item_color = LLUIColorTable::instance().getColor("TextEmbeddedItemColor");
if (mReadOnly)
{
color = text_embedded_item_readonly_color;
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index f64353555e..d0769c2a8f 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -512,7 +512,7 @@ private:
// Data
//
LLKeywords mKeywords;
- static LLColor4 mLinkColor;
+ static LLUIColor mLinkColor;
static void (*mURLcallback) (const std::string& url);
static bool (*mSecondlifeURLcallback) (const std::string& url);
static bool (*mSecondlifeURLcallbackRightClick) (const std::string& url);
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 1d3e5d7a15..12875b4ed1 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1579,7 +1579,6 @@ void LLUI::initClass(const settings_map_t& settings,
sSettingGroups = settings;
if ((get_ptr_in_map(sSettingGroups, std::string("config")) == NULL) ||
- (get_ptr_in_map(sSettingGroups, std::string("color")) == NULL) ||
(get_ptr_in_map(sSettingGroups, std::string("floater")) == NULL) ||
(get_ptr_in_map(sSettingGroups, std::string("ignores")) == NULL))
{
@@ -1590,7 +1589,7 @@ void LLUI::initClass(const settings_map_t& settings,
sAudioCallback = audio_callback;
sGLScaleFactor = (scale_factor == NULL) ? LLVector2(1.f, 1.f) : *scale_factor;
sWindow = NULL; // set later in startup
- LLFontGL::sShadowColor = LLUI::sSettingGroups["color"]->getColor("ColorDropShadow");
+ LLFontGL::sShadowColor = LLUIColorTable::instance().getColor("ColorDropShadow");
static LLUICachedControl<bool> show_xui_names ("ShowXUINames", false);
LLUI::sShowXUINames = show_xui_names;
@@ -1855,13 +1854,6 @@ void LLUI::setHtmlHelp(LLHtmlHelp* html_help)
LLUI::sHtmlHelp = html_help;
}
-// static
-boost::function<const LLColor4&()> LLUI::getCachedColorFunctor(const std::string& color_name)
-{
- return LLCachedControl<LLColor4>(*sSettingGroups["color"], color_name, LLColor4::magenta);
-}
-
-// static
LLControlGroup& LLUI::getControlControlGroup (const std::string& controlname)
{
for (settings_map_t::iterator itor = sSettingGroups.begin();
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index dbd295d4e8..c0873247c0 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -45,6 +45,8 @@
#include "lluiimage.h" // *TODO: break this dependency, need to add #include "lluiimage.h" to all widgets that hold an Optional<LLUIImage*> in their paramblocks
#include "llinitparam.h"
#include "llregistry.h"
+#include "lluicolor.h"
+#include "lluicolortable.h"
#include <boost/signals2.hpp>
#include "lllazyvalue.h"
@@ -202,7 +204,6 @@ public:
static void screenRectToGL(const LLRect& screen, LLRect *gl);
static void glRectToScreen(const LLRect& gl, LLRect *screen);
static void setHtmlHelp(LLHtmlHelp* html_help);
- static boost::function<const LLColor4&()> getCachedColorFunctor(const std::string& color_name);
// Returns the control group containing the control name, or the default group
static LLControlGroup& getControlControlGroup (const std::string& controlname);
@@ -690,8 +691,6 @@ public:
{}
};
-typedef LLLazyValue<LLColor4> LLUIColor;
-
namespace LLInitParam
{
template<>
@@ -767,11 +766,4 @@ namespace LLInitParam
};
}
-namespace LLInitParam
-{
- template<>
- bool ParamCompare<LLLazyValue<LLColor4> >::equals(
- const LLLazyValue<LLColor4> &a, const LLLazyValue<LLColor4> &b);
-}
-
#endif
diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp
index 27ba6cc8b4..0320e998d0 100644
--- a/indra/llui/lluicolortable.cpp
+++ b/indra/llui/lluicolortable.cpp
@@ -11,7 +11,10 @@
#include <queue>
+#include "lldir.h"
+#include "llui.h"
#include "lluicolortable.h"
+#include "lluictrlfactory.h"
LLUIColorTable::ColorParams::ColorParams()
: value("value"),
@@ -26,17 +29,16 @@ LLUIColorTable::ColorEntryParams::ColorEntryParams()
}
LLUIColorTable::Params::Params()
-: color_entries("color_entries")
+: color_entries("color")
{
}
-void LLUIColorTable::init(const Params& p)
+void LLUIColorTable::insertFromParams(const Params& p)
{
// this map will contain all color references after the following loop
typedef std::map<std::string, std::string> string_string_map_t;
string_string_map_t unresolved_refs;
- mColors.clear();
for(LLInitParam::ParamIterator<ColorEntryParams>::const_iterator it = p.color_entries().begin();
it != p.color_entries().end();
++it)
@@ -44,7 +46,7 @@ void LLUIColorTable::init(const Params& p)
ColorEntryParams color_entry = *it;
if(color_entry.color.value.isChosen())
{
- mColors.insert(string_color_map_t::value_type(color_entry.name, color_entry.color.value));
+ setColor(color_entry.name, color_entry.color.value, mLoadedColors);
}
else
{
@@ -66,19 +68,21 @@ void LLUIColorTable::init(const Params& p)
// we haven't visited any references yet
visited_refs.clear();
- string_string_map_t::iterator it = unresolved_refs.begin();
+ string_string_map_t::iterator current = unresolved_refs.begin();
+ string_string_map_t::iterator previous;
+
while(true)
{
- if(it != unresolved_refs.end())
+ if(current != unresolved_refs.end())
{
// locate the current reference in the previously visited references...
- string_color_ref_iter_map_t::iterator visited = visited_refs.lower_bound(it->first);
+ string_color_ref_iter_map_t::iterator visited = visited_refs.lower_bound(current->first);
if(visited != visited_refs.end()
- && !(visited_refs.key_comp()(it->first, visited->first)))
+ && !(visited_refs.key_comp()(current->first, visited->first)))
{
// ...if we find the current reference in the previously visited references
// we know that there is a cycle
- std::string ending_ref = it->first;
+ std::string ending_ref = current->first;
std::string warning("The following colors form a cycle: ");
// warn about the references in the chain and remove them from
@@ -102,17 +106,17 @@ void LLUIColorTable::init(const Params& p)
else
{
// ...continue along the reference chain
- ref_chain.push(it->first);
- visited_refs.insert(visited, string_color_ref_iter_map_t::value_type(it->first, it));
+ ref_chain.push(current->first);
+ visited_refs.insert(visited, string_color_ref_iter_map_t::value_type(current->first, current));
}
}
else
{
// since this reference does not refer to another reference it must refer to an
// actual color, lets find it...
- string_color_map_t::iterator color_value = mColors.find(it->second);
+ string_color_map_t::iterator color_value = mLoadedColors.find(previous->second);
- if(color_value != mColors.end())
+ if(color_value != mLoadedColors.end())
{
// ...we found the color, and we now add every reference in the reference chain
// to the color map
@@ -120,7 +124,7 @@ void LLUIColorTable::init(const Params& p)
iter != visited_refs.end();
++iter)
{
- mColors.insert(string_color_map_t::value_type(iter->first, color_value->second));
+ setColor(iter->first, color_value->second, mLoadedColors);
unresolved_refs.erase(iter->second);
}
@@ -143,13 +147,142 @@ void LLUIColorTable::init(const Params& p)
}
// find the next color reference in the reference chain
- it = unresolved_refs.find(it->second);
+ previous = current;
+ current = unresolved_refs.find(current->second);
+ }
+ }
+}
+
+void LLUIColorTable::clear()
+{
+ clearTable(mLoadedColors);
+ clearTable(mUserSetColors);
+}
+
+LLUIColor LLUIColorTable::getColor(const std::string& name, const LLColor4& default_color) const
+{
+ string_color_map_t::const_iterator iter = mUserSetColors.find(name);
+ if(iter != mUserSetColors.end())
+ {
+ return LLUIColor(&iter->second);
+ }
+
+ iter = mLoadedColors.find(name);
+ return (iter != mLoadedColors.end() ? LLUIColor(&iter->second) : LLUIColor(default_color));
+}
+
+// update user color, loaded colors are parsed on initialization
+void LLUIColorTable::setColor(const std::string& name, const LLColor4& color)
+{
+ setColor(name, color, mUserSetColors);
+}
+
+bool LLUIColorTable::loadFromSettings()
+{
+ bool result = false;
+
+ std::string default_filename = gDirUtilp->getExpandedFilename(LL_PATH_DEFAULT_SKIN, "colors_def.xml");
+ result |= loadFromFilename(default_filename);
+
+ std::string current_filename = gDirUtilp->getExpandedFilename(LL_PATH_TOP_SKIN, "colors_def.xml");
+ if(current_filename != default_filename)
+ {
+ result |= loadFromFilename(current_filename);
+ }
+
+ std::string user_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SKIN, "colors_def.xml");
+ loadFromFilename(user_filename);
+
+ return result;
+}
+
+void LLUIColorTable::saveUserSettings() const
+{
+ Params params;
+
+ for(string_color_map_t::const_iterator it = mUserSetColors.begin();
+ it != mUserSetColors.end();
+ ++it)
+ {
+ ColorEntryParams color_entry;
+ color_entry.name = it->first;
+ color_entry.color.value = it->second;
+
+ params.color_entries.add(color_entry);
+ }
+
+ LLXMLNodePtr output_node = new LLXMLNode("colors", false);
+ LLXUIParser::instance().writeXUI(output_node, params);
+
+ if(!output_node->isNull())
+ {
+ const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SKIN, "colors_def.xml");
+ LLFILE *fp = LLFile::fopen(filename, "w");
+
+ if(fp != NULL)
+ {
+ LLXMLNode::writeHeaderToFile(fp);
+ output_node->writeToFile(fp);
+
+ fclose(fp);
}
}
}
-const LLColor4& LLUIColorTable::getColor(const std::string& name) const
+bool LLUIColorTable::colorExists(const std::string& color_name) const
+{
+ return ((mLoadedColors.find(color_name) != mLoadedColors.end())
+ || (mUserSetColors.find(color_name) != mUserSetColors.end()));
+}
+
+void LLUIColorTable::clearTable(string_color_map_t& table)
+{
+ for(string_color_map_t::iterator it = table.begin();
+ it != table.end();
+ ++it)
+ {
+ it->second = LLColor4::magenta;
+ }
+}
+
+// this method inserts a color into the table if it does not exist
+// if the color already exists it changes the color
+void LLUIColorTable::setColor(const std::string& name, const LLColor4& color, string_color_map_t& table)
+{
+ string_color_map_t::iterator it = table.lower_bound(name);
+ if(it != table.end()
+ && !(table.key_comp()(name, it->first)))
+ {
+ it->second = color;
+ }
+ else
+ {
+ table.insert(it, string_color_map_t::value_type(name, color));
+ }
+}
+
+bool LLUIColorTable::loadFromFilename(const std::string& filename)
{
- string_color_map_t::const_iterator iter = mColors.find(name);
- return (iter != mColors.end() ? iter->second : LLColor4::magenta);
+ LLXMLNodePtr root;
+
+ if(!LLXMLNode::parseFile(filename, root, NULL))
+ {
+ llwarns << "Unable to parse color file " << filename << llendl;
+ return false;
+ }
+
+ Params params;
+ LLXUIParser::instance().readXUI(root, params);
+
+ if(params.validateBlock())
+ {
+ insertFromParams(params);
+ }
+ else
+ {
+ llwarns << filename << " failed to load" << llendl;
+ return false;
+ }
+
+ return true;
}
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index dcbb1ee5cb..f102a573b8 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -17,8 +17,11 @@
#include "v4color.h"
+class LLUIColor;
+
class LLUIColorTable : public LLSingleton<LLUIColorTable>
{
+LOG_CLASS(LLUIColorTable);
public:
struct ColorParams : LLInitParam::Choice<ColorParams>
{
@@ -44,15 +47,37 @@ public:
};
// define colors by passing in a param block that can be generated via XUI file or manually
- void init(const Params& p);
+ void insertFromParams(const Params& p);
+
+ // reset all colors to default magenta color
+ void clear();
// color lookup
- const LLColor4& getColor(const std::string& name) const;
+ LLUIColor getColor(const std::string& name, const LLColor4& default_color = LLColor4::magenta) const;
+
+ // if the color is in the table, it's value is changed, otherwise it is added
+ void setColor(const std::string& name, const LLColor4& color);
+
+ // returns true if color_name exists in the table
+ bool colorExists(const std::string& color_name) const;
+
+ // loads colors from settings files
+ bool loadFromSettings();
+
+ // saves colors specified by the user to the users skin directory
+ void saveUserSettings() const;
private:
- // consider using sorted vector
+ bool loadFromFilename(const std::string& filename);
+
+ // consider using sorted vector, can be much faster
typedef std::map<std::string, LLColor4> string_color_map_t;
- string_color_map_t mColors;
+
+ void clearTable(string_color_map_t& table);
+ void setColor(const std::string& name, const LLColor4& color, string_color_map_t& table);
+
+ string_color_map_t mLoadedColors;
+ string_color_map_t mUserSetColors;
};
#endif // LL_LLUICOLORTABLE_H
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index 0fbcf24c49..395bed7959 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -918,12 +918,4 @@ namespace LLInitParam
{
return false;
}
-
- template<>
- bool ParamCompare<LLLazyValue<LLColor4> >::equals(
- const LLLazyValue<LLColor4> &a,
- const LLLazyValue<LLColor4> &b)
- {
- return a.get() == b.get();
- }
}
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 24e4ad18e6..24caf51159 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -398,11 +398,11 @@ BOOL LLUICtrlFactory::getAttributeColor(LLXMLNodePtr node, const std::string& na
{
std::string colorstring;
BOOL res = node->getAttributeString(name.c_str(), colorstring);
- if (res && LLUI::sSettingGroups["color"])
+ if (res)
{
- if (LLUI::sSettingGroups["color"]->controlExists(colorstring))
+ if (LLUIColorTable::instance().colorExists(colorstring))
{
- color.setVec(LLUI::sSettingGroups["color"]->getColor(colorstring));
+ color.setVec(LLUIColorTable::instance().getColor(colorstring));
}
else
{
@@ -1010,7 +1010,7 @@ bool LLXUIParser::writeUIColorValue(const void* val_ptr, const name_stack_t& sta
LLUIColor color = *((LLUIColor*)val_ptr);
//RN: don't write out the color that is represented by a function
// rely on param block exporting to get the reference to the color settings
- if (color.isUsingFunction()) return false;
+ if (color.isReference()) return false;
node->setFloatValue(4, color.get().mV);
return true;
}
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index b9c61b1fed..f8d584bc75 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -305,7 +305,7 @@ fail:
static T* getDefaultWidget(const std::string& name)
{
dummy_widget_creator_func_t* dummy_func = LLDummyWidgetRegistry::instance().getValue(&typeid(T));
- return dynamic_cast<T*>((*dummy_func)(name));
+ return dummy_func ? dynamic_cast<T*>((*dummy_func)(name)) : NULL;
}
template <class T>
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index 8e0de0cb0c..84bc2d1bab 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -74,7 +74,7 @@ void LLUIImage::setScaleRegion(const LLRectf& region)
//TODO: move drawing implementation inside class
void LLUIImage::draw(S32 x, S32 y, const LLColor4& color) const
{
- gl_draw_image(x, y, mImage, color, mClipRegion);
+ gl_draw_scaled_image(x, y, getWidth(), getHeight(), mImage, color, mClipRegion);
}
void LLUIImage::draw(S32 x, S32 y, S32 width, S32 height, const LLColor4& color) const
diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h
index e35026cd3d..e3b473b5f6 100644
--- a/indra/llui/lluiimage.h
+++ b/indra/llui/lluiimage.h
@@ -60,11 +60,11 @@ public:
void drawSolid(S32 x, S32 y, S32 width, S32 height, const LLColor4& color) const;
void drawSolid(const LLRect& rect, const LLColor4& color) const { drawSolid(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(), color); }
- void drawSolid(S32 x, S32 y, const LLColor4& color) const { drawSolid(x, y, mImage->getWidth(0), mImage->getHeight(0), color); }
+ void drawSolid(S32 x, S32 y, const LLColor4& color) const { drawSolid(x, y, getWidth(), getHeight(), color); }
void drawBorder(S32 x, S32 y, S32 width, S32 height, const LLColor4& color, S32 border_width) const;
void drawBorder(const LLRect& rect, const LLColor4& color, S32 border_width) const { drawBorder(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(), color, border_width); }
- void drawBorder(S32 x, S32 y, const LLColor4& color, S32 border_width) const { drawBorder(x, y, mImage->getWidth(0), mImage->getHeight(0), color, border_width); }
+ void drawBorder(S32 x, S32 y, const LLColor4& color, S32 border_width) const { drawBorder(x, y, getWidth(), getHeight(), color, border_width); }
const std::string& getName() const { return mName; }
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index d225ad2767..29d0f6a168 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1325,13 +1325,6 @@ void LLView::draw()
LLRect rootRect = getRootView()->getRect();
LLRect screenRect;
- // draw focused control on top of everything else
- LLView* focus_view = gFocusMgr.getKeyboardFocus();
- if (focus_view && focus_view->getParent() != this)
- {
- focus_view = NULL;
- }
-
++sDepth;
for (child_list_reverse_iter_t child_iter = mChildList.rbegin(); child_iter != mChildList.rend();) // ++child_iter)
@@ -1339,7 +1332,7 @@ void LLView::draw()
child_list_reverse_iter_t child = child_iter++;
LLView *viewp = *child;
- if (viewp->getVisible() && viewp != focus_view && viewp->getRect().isValid())
+ if (viewp->getVisible() && viewp->getRect().isValid())
{
// Only draw views that are within the root view
localRectToScreen(viewp->getRect(),&screenRect);
@@ -1357,11 +1350,6 @@ void LLView::draw()
}
--sDepth;
-
- if (focus_view && focus_view->getVisible())
- {
- drawChild(focus_view);
- }
}
gGL.getTexUnit(0)->disable();
@@ -1398,7 +1386,7 @@ void LLView::drawDebugRect()
}
else
{
- static LLUICachedControl<LLColor4> scroll_highlighted_color ("ScrollHighlightedColor", *(new LLColor4));
+ static LLUIColor scroll_highlighted_color = LLUIColorTable::instance().getColor("ScrollHighlightedColor");
border_color = scroll_highlighted_color;
}
}