aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llui/lltabcontainer.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2008-09-06 18:24:57 -0500
committerJacek Antonelli2008-09-06 18:25:07 -0500
commit798d367d54a6c6379ad355bd8345fa40e31e7fe9 (patch)
tree1921f1708cd0240648c97bc02df2c2ab5f2fc41e /linden/indra/llui/lltabcontainer.cpp
parentSecond Life viewer sources 1.20.15 (diff)
downloadmeta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.zip
meta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.tar.gz
meta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.tar.bz2
meta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.tar.xz
Second Life viewer sources 1.21.0-RC
Diffstat (limited to 'linden/indra/llui/lltabcontainer.cpp')
-rw-r--r--linden/indra/llui/lltabcontainer.cpp141
1 files changed, 80 insertions, 61 deletions
diff --git a/linden/indra/llui/lltabcontainer.cpp b/linden/indra/llui/lltabcontainer.cpp
index 827d4fb..7bf1485 100644
--- a/linden/indra/llui/lltabcontainer.cpp
+++ b/linden/indra/llui/lltabcontainer.cpp
@@ -42,7 +42,6 @@
42#include "lltabcontainervertical.h" 42#include "lltabcontainervertical.h"
43#include "llrender.h" 43#include "llrender.h"
44 44
45
46const F32 SCROLL_STEP_TIME = 0.4f; 45const F32 SCROLL_STEP_TIME = 0.4f;
47const F32 SCROLL_DELAY_TIME = 0.5f; 46const F32 SCROLL_DELAY_TIME = 0.5f;
48const S32 TAB_PADDING = 15; 47const S32 TAB_PADDING = 15;
@@ -66,7 +65,7 @@ const S32 TABCNTRV_PAD = 0;
66 65
67static LLRegisterWidget<LLTabContainer> r("tab_container"); 66static LLRegisterWidget<LLTabContainer> r("tab_container");
68 67
69LLTabContainer::LLTabContainer(const LLString& name, const LLRect& rect, TabPosition pos, 68LLTabContainer::LLTabContainer(const std::string& name, const LLRect& rect, TabPosition pos,
70 BOOL bordered, BOOL is_vertical ) 69 BOOL bordered, BOOL is_vertical )
71 : 70 :
72 LLPanel(name, rect, bordered), 71 LLPanel(name, rect, bordered),
@@ -122,7 +121,7 @@ void LLTabContainer::reshape(S32 width, S32 height, BOOL called_from_parent)
122} 121}
123 122
124//virtual 123//virtual
125LLView* LLTabContainer::getChildView(const LLString& name, BOOL recurse, BOOL create_if_missing) const 124LLView* LLTabContainer::getChildView(const std::string& name, BOOL recurse, BOOL create_if_missing) const
126{ 125{
127 tuple_list_t::const_iterator itor; 126 tuple_list_t::const_iterator itor;
128 for (itor = mTabList.begin(); itor != mTabList.end(); ++itor) 127 for (itor = mTabList.begin(); itor != mTabList.end(); ++itor)
@@ -153,24 +152,43 @@ LLView* LLTabContainer::getChildView(const LLString& name, BOOL recurse, BOOL cr
153void LLTabContainer::draw() 152void LLTabContainer::draw()
154{ 153{
155 S32 target_pixel_scroll = 0; 154 S32 target_pixel_scroll = 0;
156 S32 cur_scroll_pos = mIsVertical ? 0 : getScrollPos(); 155 S32 cur_scroll_pos = getScrollPos();
157 if (cur_scroll_pos > 0) 156 if (cur_scroll_pos > 0)
158 { 157 {
159 S32 available_width_with_arrows = getRect().getWidth() - mRightTabBtnOffset - 2 * (LLPANEL_BORDER_WIDTH + TABCNTR_ARROW_BTN_SIZE + TABCNTR_ARROW_BTN_SIZE + 1); 158 if (!mIsVertical)
160 for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter)
161 { 159 {
162 if (cur_scroll_pos == 0) 160 S32 available_width_with_arrows = getRect().getWidth() - mRightTabBtnOffset - 2 * (LLPANEL_BORDER_WIDTH + TABCNTR_ARROW_BTN_SIZE + TABCNTR_ARROW_BTN_SIZE + 1);
161 for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter)
163 { 162 {
164 break; 163 if (cur_scroll_pos == 0)
164 {
165 break;
166 }
167 target_pixel_scroll += (*iter)->mButton->getRect().getWidth();
168 cur_scroll_pos--;
165 } 169 }
166 target_pixel_scroll += (*iter)->mButton->getRect().getWidth();
167 cur_scroll_pos--;
168 }
169 170
170 // Show part of the tab to the left of what is fully visible 171 // Show part of the tab to the left of what is fully visible
171 target_pixel_scroll -= TABCNTR_TAB_PARTIAL_WIDTH; 172 target_pixel_scroll -= TABCNTR_TAB_PARTIAL_WIDTH;
172 // clamp so that rightmost tab never leaves right side of screen 173 // clamp so that rightmost tab never leaves right side of screen
173 target_pixel_scroll = llmin(mTotalTabWidth - available_width_with_arrows, target_pixel_scroll); 174 target_pixel_scroll = llmin(mTotalTabWidth - available_width_with_arrows, target_pixel_scroll);
175 }
176 else
177 {
178 S32 available_height_with_arrows = getRect().getHeight() - getTopBorderHeight() - (LLPANEL_BORDER_WIDTH + TABCNTR_ARROW_BTN_SIZE + TABCNTR_ARROW_BTN_SIZE + 1);
179 for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter)
180 {
181 if (cur_scroll_pos==0)
182 {
183 break;
184 }
185 target_pixel_scroll += (*iter)->mButton->getRect().getHeight();
186 cur_scroll_pos--;
187 }
188 S32 total_tab_height = (BTN_HEIGHT + TABCNTRV_PAD) * getTabCount() + TABCNTRV_PAD;
189 // clamp so that the bottom tab never leaves bottom of panel
190 target_pixel_scroll = llmin(total_tab_height - available_height_with_arrows, target_pixel_scroll);
191 }
174 } 192 }
175 193
176 setScrollPosPixels((S32)lerp((F32)getScrollPosPixels(), (F32)target_pixel_scroll, LLCriticalDamp::getInterpolant(0.08f))); 194 setScrollPosPixels((S32)lerp((F32)getScrollPosPixels(), (F32)target_pixel_scroll, LLCriticalDamp::getInterpolant(0.08f)));
@@ -461,7 +479,7 @@ BOOL LLTabContainer::handleMouseUp( S32 x, S32 y, MASK mask )
461} 479}
462 480
463// virtual 481// virtual
464BOOL LLTabContainer::handleToolTip( S32 x, S32 y, LLString& msg, LLRect* sticky_rect ) 482BOOL LLTabContainer::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rect )
465{ 483{
466 BOOL handled = LLPanel::handleToolTip( x, y, msg, sticky_rect ); 484 BOOL handled = LLPanel::handleToolTip( x, y, msg, sticky_rect );
467 if (!handled && getTabCount() > 0) 485 if (!handled && getTabCount() > 0)
@@ -605,7 +623,7 @@ LLXMLNodePtr LLTabContainer::getXML(bool save_children) const
605} 623}
606 624
607// virtual 625// virtual
608BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType type, void* cargo_data, EAcceptance *accept, LLString &tooltip) 626BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType type, void* cargo_data, EAcceptance *accept, std::string &tooltip)
609{ 627{
610 BOOL has_scroll_arrows = (getMaxScrollPos() > 0); 628 BOOL has_scroll_arrows = (getMaxScrollPos() > 0);
611 629
@@ -613,13 +631,13 @@ BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDrag
613 { 631 {
614 if (has_scroll_arrows) 632 if (has_scroll_arrows)
615 { 633 {
616 if (mJumpPrevArrowBtn->getRect().pointInRect(x, y)) 634 if (mJumpPrevArrowBtn && mJumpPrevArrowBtn->getRect().pointInRect(x, y))
617 { 635 {
618 S32 local_x = x - mJumpPrevArrowBtn->getRect().mLeft; 636 S32 local_x = x - mJumpPrevArrowBtn->getRect().mLeft;
619 S32 local_y = y - mJumpPrevArrowBtn->getRect().mBottom; 637 S32 local_y = y - mJumpPrevArrowBtn->getRect().mBottom;
620 mJumpPrevArrowBtn->handleHover(local_x, local_y, mask); 638 mJumpPrevArrowBtn->handleHover(local_x, local_y, mask);
621 } 639 }
622 if (mJumpNextArrowBtn->getRect().pointInRect(x, y)) 640 if (mJumpNextArrowBtn && mJumpNextArrowBtn->getRect().pointInRect(x, y))
623 { 641 {
624 S32 local_x = x - mJumpNextArrowBtn->getRect().mLeft; 642 S32 local_x = x - mJumpNextArrowBtn->getRect().mLeft;
625 S32 local_y = y - mJumpNextArrowBtn->getRect().mBottom; 643 S32 local_y = y - mJumpNextArrowBtn->getRect().mBottom;
@@ -657,7 +675,7 @@ BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDrag
657} 675}
658 676
659void LLTabContainer::addTabPanel(LLPanel* child, 677void LLTabContainer::addTabPanel(LLPanel* child,
660 const LLString& label, 678 const std::string& label,
661 BOOL select, 679 BOOL select,
662 void (*on_tab_clicked)(void*, bool), 680 void (*on_tab_clicked)(void*, bool),
663 void* userdata, 681 void* userdata,
@@ -674,8 +692,8 @@ void LLTabContainer::addTabPanel(LLPanel* child,
674 692
675 // Store the original label for possible xml export. 693 // Store the original label for possible xml export.
676 child->setLabel(label); 694 child->setLabel(label);
677 LLString trimmed_label = label; 695 std::string trimmed_label = label;
678 LLString::trim(trimmed_label); 696 LLStringUtil::trim(trimmed_label);
679 697
680 S32 button_width = mMinTabWidth; 698 S32 button_width = mMinTabWidth;
681 if (!mIsVertical) 699 if (!mIsVertical)
@@ -724,8 +742,8 @@ void LLTabContainer::addTabPanel(LLPanel* child,
724 742
725 // Tab button 743 // Tab button
726 LLRect btn_rect; // Note: btn_rect.mLeft is just a dummy. Will be updated in draw(). 744 LLRect btn_rect; // Note: btn_rect.mLeft is just a dummy. Will be updated in draw().
727 LLString tab_img; 745 std::string tab_img;
728 LLString tab_selected_img; 746 std::string tab_selected_img;
729 S32 tab_fudge = 1; // To make new tab art look better, nudge buttons up 1 pel 747 S32 tab_fudge = 1; // To make new tab art look better, nudge buttons up 1 pel
730 748
731 if (mIsVertical) 749 if (mIsVertical)
@@ -756,21 +774,21 @@ void LLTabContainer::addTabPanel(LLPanel* child,
756 btn_rect.translate(0, -LLBUTTON_V_PAD-2); 774 btn_rect.translate(0, -LLBUTTON_V_PAD-2);
757 textbox = new LLTextBox(trimmed_label, btn_rect, trimmed_label, font); 775 textbox = new LLTextBox(trimmed_label, btn_rect, trimmed_label, font);
758 776
759 btn = new LLButton("", LLRect(0,0,0,0)); 777 btn = new LLButton(LLStringUtil::null, LLRect(0,0,0,0));
760 } 778 }
761 else 779 else
762 { 780 {
763 if (mIsVertical) 781 if (mIsVertical)
764 { 782 {
765 btn = new LLButton("vert tab button", 783 btn = new LLButton(std::string("vert tab button"),
766 btn_rect, 784 btn_rect,
767 "", 785 LLStringUtil::null,
768 "", 786 LLStringUtil::null,
769 "", 787 LLStringUtil::null,
770 &LLTabContainer::onTabBtn, NULL, 788 &LLTabContainer::onTabBtn, NULL,
771 font, 789 font,
772 trimmed_label, trimmed_label); 790 trimmed_label, trimmed_label);
773 btn->setImages("tab_left.tga", "tab_left_selected.tga"); 791 btn->setImages(std::string("tab_left.tga"), std::string("tab_left_selected.tga"));
774 btn->setScaleImage(TRUE); 792 btn->setScaleImage(TRUE);
775 btn->setHAlign(LLFontGL::LEFT); 793 btn->setHAlign(LLFontGL::LEFT);
776 btn->setFollows(FOLLOWS_TOP | FOLLOWS_LEFT); 794 btn->setFollows(FOLLOWS_TOP | FOLLOWS_LEFT);
@@ -782,13 +800,13 @@ void LLTabContainer::addTabPanel(LLPanel* child,
782 } 800 }
783 else 801 else
784 { 802 {
785 LLString tooltip = trimmed_label; 803 std::string tooltip = trimmed_label;
786 tooltip += "\nAlt-Left arrow for previous tab"; 804 tooltip += "\nAlt-Left arrow for previous tab";
787 tooltip += "\nAlt-Right arrow for next tab"; 805 tooltip += "\nAlt-Right arrow for next tab";
788 806
789 btn = new LLButton(LLString(child->getName()) + " tab", 807 btn = new LLButton(std::string(child->getName()) + " tab",
790 btn_rect, 808 btn_rect,
791 "", "", "", 809 LLStringUtil::null, LLStringUtil::null, LLStringUtil::null,
792 &LLTabContainer::onTabBtn, NULL, // set userdata below 810 &LLTabContainer::onTabBtn, NULL, // set userdata below
793 font, 811 font,
794 trimmed_label, trimmed_label ); 812 trimmed_label, trimmed_label );
@@ -845,7 +863,7 @@ void LLTabContainer::addTabPanel(LLPanel* child,
845 updateMaxScrollPos(); 863 updateMaxScrollPos();
846} 864}
847 865
848void LLTabContainer::addPlaceholder(LLPanel* child, const LLString& label) 866void LLTabContainer::addPlaceholder(LLPanel* child, const std::string& label)
849{ 867{
850 addTabPanel(child, label, FALSE, NULL, NULL, 0, TRUE); 868 addTabPanel(child, label, FALSE, NULL, NULL, 0, TRUE);
851} 869}
@@ -1012,7 +1030,7 @@ S32 LLTabContainer::getIndexForPanel(LLPanel* panel)
1012 return -1; 1030 return -1;
1013} 1031}
1014 1032
1015S32 LLTabContainer::getPanelIndexByTitle(const LLString& title) 1033S32 LLTabContainer::getPanelIndexByTitle(const std::string& title)
1016{ 1034{
1017 for (S32 index = 0 ; index < (S32)mTabList.size(); index++) 1035 for (S32 index = 0 ; index < (S32)mTabList.size(); index++)
1018 { 1036 {
@@ -1024,7 +1042,7 @@ S32 LLTabContainer::getPanelIndexByTitle(const LLString& title)
1024 return -1; 1042 return -1;
1025} 1043}
1026 1044
1027LLPanel *LLTabContainer::getPanelByName(const LLString& name) 1045LLPanel *LLTabContainer::getPanelByName(const std::string& name)
1028{ 1046{
1029 for (S32 index = 0 ; index < (S32)mTabList.size(); index++) 1047 for (S32 index = 0 ; index < (S32)mTabList.size(); index++)
1030 { 1048 {
@@ -1038,7 +1056,7 @@ LLPanel *LLTabContainer::getPanelByName(const LLString& name)
1038} 1056}
1039 1057
1040// Change the name of the button for the current tab. 1058// Change the name of the button for the current tab.
1041void LLTabContainer::setCurrentTabName(const LLString& name) 1059void LLTabContainer::setCurrentTabName(const std::string& name)
1042{ 1060{
1043 // Might not have a tab selected 1061 // Might not have a tab selected
1044 if (mCurrentTabIdx < 0) return; 1062 if (mCurrentTabIdx < 0) return;
@@ -1212,7 +1230,7 @@ BOOL LLTabContainer::selectTab(S32 which)
1212 return is_visible; 1230 return is_visible;
1213} 1231}
1214 1232
1215BOOL LLTabContainer::selectTabByName(const LLString& name) 1233BOOL LLTabContainer::selectTabByName(const std::string& name)
1216{ 1234{
1217 LLPanel* panel = getPanelByName(name); 1235 LLPanel* panel = getPanelByName(name);
1218 if (!panel) 1236 if (!panel)
@@ -1276,7 +1294,7 @@ void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const L
1276 } 1294 }
1277} 1295}
1278 1296
1279void LLTabContainer::setTitle(const LLString& title) 1297void LLTabContainer::setTitle(const std::string& title)
1280{ 1298{
1281 if (mTitleBox) 1299 if (mTitleBox)
1282 { 1300 {
@@ -1284,14 +1302,14 @@ void LLTabContainer::setTitle(const LLString& title)
1284 } 1302 }
1285} 1303}
1286 1304
1287const LLString LLTabContainer::getPanelTitle(S32 index) 1305const std::string LLTabContainer::getPanelTitle(S32 index)
1288{ 1306{
1289 if (index >= 0 && index < (S32)mTabList.size()) 1307 if (index >= 0 && index < (S32)mTabList.size())
1290 { 1308 {
1291 LLButton* tab_button = mTabList[index]->mButton; 1309 LLButton* tab_button = mTabList[index]->mButton;
1292 return tab_button->getLabelSelected(); 1310 return tab_button->getLabelSelected();
1293 } 1311 }
1294 return LLString::null; 1312 return LLStringUtil::null;
1295} 1313}
1296 1314
1297void LLTabContainer::setTopBorderHeight(S32 height) 1315void LLTabContainer::setTopBorderHeight(S32 height)
@@ -1329,7 +1347,7 @@ void LLTabContainer::setRightTabBtnOffset(S32 offset)
1329 updateMaxScrollPos(); 1347 updateMaxScrollPos();
1330} 1348}
1331 1349
1332void LLTabContainer::setPanelTitle(S32 index, const LLString& title) 1350void LLTabContainer::setPanelTitle(S32 index, const std::string& title)
1333{ 1351{
1334 if (index >= 0 && index < getTabCount()) 1352 if (index >= 0 && index < getTabCount())
1335 { 1353 {
@@ -1435,7 +1453,7 @@ void LLTabContainer::onPrevBtnHeld( void* userdata )
1435// static 1453// static
1436LLView* LLTabContainer::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) 1454LLView* LLTabContainer::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory)
1437{ 1455{
1438 LLString name("tab_container"); 1456 std::string name("tab_container");
1439 node->getAttributeString("name", name); 1457 node->getAttributeString("name", name);
1440 1458
1441 // Figure out if we are creating a vertical or horizontal tab container. 1459 // Figure out if we are creating a vertical or horizontal tab container.
@@ -1443,9 +1461,9 @@ LLView* LLTabContainer::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFacto
1443 LLTabContainer::TabPosition tab_position = LLTabContainer::TOP; 1461 LLTabContainer::TabPosition tab_position = LLTabContainer::TOP;
1444 if (node->hasAttribute("tab_position")) 1462 if (node->hasAttribute("tab_position"))
1445 { 1463 {
1446 LLString tab_position_string; 1464 std::string tab_position_string;
1447 node->getAttributeString("tab_position", tab_position_string); 1465 node->getAttributeString("tab_position", tab_position_string);
1448 LLString::toLower(tab_position_string); 1466 LLStringUtil::toLower(tab_position_string);
1449 1467
1450 if ("top" == tab_position_string) 1468 if ("top" == tab_position_string)
1451 { 1469 {
@@ -1507,7 +1525,7 @@ LLView* LLTabContainer::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFacto
1507 if (control && control->isPanel()) 1525 if (control && control->isPanel())
1508 { 1526 {
1509 LLPanel* panelp = (LLPanel*)control; 1527 LLPanel* panelp = (LLPanel*)control;
1510 LLString label; 1528 std::string label;
1511 child->getAttributeString("label", label); 1529 child->getAttributeString("label", label);
1512 if (label.empty()) 1530 if (label.empty())
1513 { 1531 {
@@ -1515,7 +1533,7 @@ LLView* LLTabContainer::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFacto
1515 } 1533 }
1516 BOOL placeholder = FALSE; 1534 BOOL placeholder = FALSE;
1517 child->getAttributeBOOL("placeholder", placeholder); 1535 child->getAttributeBOOL("placeholder", placeholder);
1518 tab_container->addTabPanel(panelp, label.c_str(), false, 1536 tab_container->addTabPanel(panelp, label, false,
1519 NULL, NULL, 0, placeholder); 1537 NULL, NULL, 0, placeholder);
1520 } 1538 }
1521 } 1539 }
@@ -1539,8 +1557,8 @@ void LLTabContainer::initButtons()
1539 return; // Don't have a rect yet or already got called 1557 return; // Don't have a rect yet or already got called
1540 } 1558 }
1541 1559
1542 LLString out_id; 1560 std::string out_id;
1543 LLString in_id; 1561 std::string in_id;
1544 1562
1545 if (mIsVertical) 1563 if (mIsVertical)
1546 { 1564 {
@@ -1556,16 +1574,16 @@ void LLTabContainer::initButtons()
1556 1574
1557 out_id = "UIImgBtnScrollUpOutUUID"; 1575 out_id = "UIImgBtnScrollUpOutUUID";
1558 in_id = "UIImgBtnScrollUpInUUID"; 1576 in_id = "UIImgBtnScrollUpInUUID";
1559 mPrevArrowBtn = new LLButton("Up Arrow", up_arrow_btn_rect, 1577 mPrevArrowBtn = new LLButton(std::string("Up Arrow"), up_arrow_btn_rect,
1560 out_id, in_id, "", 1578 out_id, in_id, LLStringUtil::null,
1561 &onPrevBtn, this, NULL ); 1579 &onPrevBtn, this, NULL );
1562 mPrevArrowBtn->setFollowsTop(); 1580 mPrevArrowBtn->setFollowsTop();
1563 mPrevArrowBtn->setFollowsLeft(); 1581 mPrevArrowBtn->setFollowsLeft();
1564 1582
1565 out_id = "UIImgBtnScrollDownOutUUID"; 1583 out_id = "UIImgBtnScrollDownOutUUID";
1566 in_id = "UIImgBtnScrollDownInUUID"; 1584 in_id = "UIImgBtnScrollDownInUUID";
1567 mNextArrowBtn = new LLButton("Down Arrow", down_arrow_btn_rect, 1585 mNextArrowBtn = new LLButton(std::string("Down Arrow"), down_arrow_btn_rect,
1568 out_id, in_id, "", 1586 out_id, in_id, LLStringUtil::null,
1569 &onNextBtn, this, NULL ); 1587 &onNextBtn, this, NULL );
1570 mNextArrowBtn->setFollowsBottom(); 1588 mNextArrowBtn->setFollowsBottom();
1571 mNextArrowBtn->setFollowsLeft(); 1589 mNextArrowBtn->setFollowsLeft();
@@ -1604,31 +1622,31 @@ void LLTabContainer::initButtons()
1604 1622
1605 out_id = "UIImgBtnJumpLeftOutUUID"; 1623 out_id = "UIImgBtnJumpLeftOutUUID";
1606 in_id = "UIImgBtnJumpLeftInUUID"; 1624 in_id = "UIImgBtnJumpLeftInUUID";
1607 mJumpPrevArrowBtn = new LLButton("Jump Left Arrow", jump_left_arrow_btn_rect, 1625 mJumpPrevArrowBtn = new LLButton(std::string("Jump Left Arrow"), jump_left_arrow_btn_rect,
1608 out_id, in_id, "", 1626 out_id, in_id, LLStringUtil::null,
1609 &LLTabContainer::onJumpFirstBtn, this, LLFontGL::sSansSerif ); 1627 &LLTabContainer::onJumpFirstBtn, this, LLFontGL::sSansSerif );
1610 mJumpPrevArrowBtn->setFollowsLeft(); 1628 mJumpPrevArrowBtn->setFollowsLeft();
1611 1629
1612 out_id = "UIImgBtnScrollLeftOutUUID"; 1630 out_id = "UIImgBtnScrollLeftOutUUID";
1613 in_id = "UIImgBtnScrollLeftInUUID"; 1631 in_id = "UIImgBtnScrollLeftInUUID";
1614 mPrevArrowBtn = new LLButton("Left Arrow", left_arrow_btn_rect, 1632 mPrevArrowBtn = new LLButton(std::string("Left Arrow"), left_arrow_btn_rect,
1615 out_id, in_id, "", 1633 out_id, in_id, LLStringUtil::null,
1616 &LLTabContainer::onPrevBtn, this, LLFontGL::sSansSerif ); 1634 &LLTabContainer::onPrevBtn, this, LLFontGL::sSansSerif );
1617 mPrevArrowBtn->setHeldDownCallback(onPrevBtnHeld); 1635 mPrevArrowBtn->setHeldDownCallback(onPrevBtnHeld);
1618 mPrevArrowBtn->setFollowsLeft(); 1636 mPrevArrowBtn->setFollowsLeft();
1619 1637
1620 out_id = "UIImgBtnJumpRightOutUUID"; 1638 out_id = "UIImgBtnJumpRightOutUUID";
1621 in_id = "UIImgBtnJumpRightInUUID"; 1639 in_id = "UIImgBtnJumpRightInUUID";
1622 mJumpNextArrowBtn = new LLButton("Jump Right Arrow", jump_right_arrow_btn_rect, 1640 mJumpNextArrowBtn = new LLButton(std::string("Jump Right Arrow"), jump_right_arrow_btn_rect,
1623 out_id, in_id, "", 1641 out_id, in_id, LLStringUtil::null,
1624 &LLTabContainer::onJumpLastBtn, this, 1642 &LLTabContainer::onJumpLastBtn, this,
1625 LLFontGL::sSansSerif); 1643 LLFontGL::sSansSerif);
1626 mJumpNextArrowBtn->setFollowsRight(); 1644 mJumpNextArrowBtn->setFollowsRight();
1627 1645
1628 out_id = "UIImgBtnScrollRightOutUUID"; 1646 out_id = "UIImgBtnScrollRightOutUUID";
1629 in_id = "UIImgBtnScrollRightInUUID"; 1647 in_id = "UIImgBtnScrollRightInUUID";
1630 mNextArrowBtn = new LLButton("Right Arrow", right_arrow_btn_rect, 1648 mNextArrowBtn = new LLButton(std::string("Right Arrow"), right_arrow_btn_rect,
1631 out_id, in_id, "", 1649 out_id, in_id, LLStringUtil::null,
1632 &LLTabContainer::onNextBtn, this, 1650 &LLTabContainer::onNextBtn, this,
1633 LLFontGL::sSansSerif); 1651 LLFontGL::sSansSerif);
1634 mNextArrowBtn->setFollowsRight(); 1652 mNextArrowBtn->setFollowsRight();
@@ -1795,3 +1813,4 @@ void LLTabContainer::commitHoveredButton(S32 x, S32 y)
1795} 1813}
1796 1814
1797 1815
1816