diff options
Diffstat (limited to 'linden')
55 files changed, 420 insertions, 41 deletions
diff --git a/linden/indra/llui/llbutton.cpp b/linden/indra/llui/llbutton.cpp index 2c2c1c2..1a6c705 100644 --- a/linden/indra/llui/llbutton.cpp +++ b/linden/indra/llui/llbutton.cpp | |||
@@ -980,6 +980,8 @@ LLXMLNodePtr LLButton::getXML(bool save_children) const | |||
980 | { | 980 | { |
981 | LLXMLNodePtr node = LLUICtrl::getXML(); | 981 | LLXMLNodePtr node = LLUICtrl::getXML(); |
982 | 982 | ||
983 | node->setName(LL_BUTTON_TAG); | ||
984 | |||
983 | node->createChild("label", TRUE)->setStringValue(getLabelUnselected()); | 985 | node->createChild("label", TRUE)->setStringValue(getLabelUnselected()); |
984 | node->createChild("label_selected", TRUE)->setStringValue(getLabelSelected()); | 986 | node->createChild("label_selected", TRUE)->setStringValue(getLabelSelected()); |
985 | node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mGLFont)); | 987 | node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mGLFont)); |
diff --git a/linden/indra/llui/llcheckboxctrl.cpp b/linden/indra/llui/llcheckboxctrl.cpp index eda9467..c1daee7 100644 --- a/linden/indra/llui/llcheckboxctrl.cpp +++ b/linden/indra/llui/llcheckboxctrl.cpp | |||
@@ -298,12 +298,13 @@ void LLCheckBoxCtrl::resetDirty() | |||
298 | } | 298 | } |
299 | 299 | ||
300 | 300 | ||
301 | |||
302 | // virtual | 301 | // virtual |
303 | LLXMLNodePtr LLCheckBoxCtrl::getXML(bool save_children) const | 302 | LLXMLNodePtr LLCheckBoxCtrl::getXML(bool save_children) const |
304 | { | 303 | { |
305 | LLXMLNodePtr node = LLUICtrl::getXML(); | 304 | LLXMLNodePtr node = LLUICtrl::getXML(); |
306 | 305 | ||
306 | node->setName(LL_CHECK_BOX_CTRL_TAG); | ||
307 | |||
307 | node->createChild("label", TRUE)->setStringValue(mLabel->getText()); | 308 | node->createChild("label", TRUE)->setStringValue(mLabel->getText()); |
308 | 309 | ||
309 | std::string control_name = mButton->getControlName(); | 310 | std::string control_name = mButton->getControlName(); |
diff --git a/linden/indra/llui/llcombobox.cpp b/linden/indra/llui/llcombobox.cpp index cbc67fe..ce75f03 100644 --- a/linden/indra/llui/llcombobox.cpp +++ b/linden/indra/llui/llcombobox.cpp | |||
@@ -120,6 +120,8 @@ LLXMLNodePtr LLComboBox::getXML(bool save_children) const | |||
120 | { | 120 | { |
121 | LLXMLNodePtr node = LLUICtrl::getXML(); | 121 | LLXMLNodePtr node = LLUICtrl::getXML(); |
122 | 122 | ||
123 | node->setName(LL_COMBO_BOX_TAG); | ||
124 | |||
123 | // Attributes | 125 | // Attributes |
124 | 126 | ||
125 | node->createChild("allow_text_entry", TRUE)->setBoolValue(mAllowTextEntry); | 127 | node->createChild("allow_text_entry", TRUE)->setBoolValue(mAllowTextEntry); |
@@ -1172,6 +1174,33 @@ LLFlyoutButton::LLFlyoutButton( | |||
1172 | updateLayout(); | 1174 | updateLayout(); |
1173 | } | 1175 | } |
1174 | 1176 | ||
1177 | // virtual | ||
1178 | LLXMLNodePtr LLFlyoutButton::getXML(bool save_children) const | ||
1179 | { | ||
1180 | LLXMLNodePtr node = LLComboBox::getXML(); | ||
1181 | |||
1182 | node->setName(LL_FLYOUT_BUTTON_TAG); | ||
1183 | |||
1184 | LLXMLNodePtr child; | ||
1185 | |||
1186 | for (child = node->getFirstChild(); child.notNull();) | ||
1187 | { | ||
1188 | if (child->hasName("combo_item")) | ||
1189 | { | ||
1190 | child->setName(LL_FLYOUT_BUTTON_ITEM_TAG); | ||
1191 | |||
1192 | //setName does a delete and add, so we have to start over | ||
1193 | child = node->getFirstChild(); | ||
1194 | } | ||
1195 | else | ||
1196 | { | ||
1197 | child = child->getNextSibling(); | ||
1198 | } | ||
1199 | } | ||
1200 | |||
1201 | return node; | ||
1202 | } | ||
1203 | |||
1175 | //static | 1204 | //static |
1176 | LLView* LLFlyoutButton::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 1205 | LLView* LLFlyoutButton::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
1177 | { | 1206 | { |
diff --git a/linden/indra/llui/llcombobox.h b/linden/indra/llui/llcombobox.h index 33e1baa..95ad17a 100644 --- a/linden/indra/llui/llcombobox.h +++ b/linden/indra/llui/llcombobox.h | |||
@@ -217,6 +217,7 @@ public: | |||
217 | 217 | ||
218 | void setToggleState(BOOL state); | 218 | void setToggleState(BOOL state); |
219 | 219 | ||
220 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
220 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 221 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
221 | static void onActionButtonClick(void *userdata); | 222 | static void onActionButtonClick(void *userdata); |
222 | static void onSelectAction(LLUICtrl* ctrl, void *userdata); | 223 | static void onSelectAction(LLUICtrl* ctrl, void *userdata); |
diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp index defe200..8a03300 100644 --- a/linden/indra/llui/llfloater.cpp +++ b/linden/indra/llui/llfloater.cpp | |||
@@ -2513,6 +2513,15 @@ LLMultiFloater::LLMultiFloater( | |||
2513 | 2513 | ||
2514 | } | 2514 | } |
2515 | 2515 | ||
2516 | // virtual | ||
2517 | LLXMLNodePtr LLMultiFloater::getXML(bool save_children) const | ||
2518 | { | ||
2519 | LLXMLNodePtr node = LLFloater::getXML(); | ||
2520 | |||
2521 | node->setName(LL_MULTI_FLOATER_TAG); | ||
2522 | |||
2523 | return node; | ||
2524 | } | ||
2516 | 2525 | ||
2517 | void LLMultiFloater::open() /* Flawfinder: ignore */ | 2526 | void LLMultiFloater::open() /* Flawfinder: ignore */ |
2518 | { | 2527 | { |
@@ -2936,6 +2945,8 @@ LLXMLNodePtr LLFloater::getXML(bool save_children) const | |||
2936 | { | 2945 | { |
2937 | LLXMLNodePtr node = LLPanel::getXML(); | 2946 | LLXMLNodePtr node = LLPanel::getXML(); |
2938 | 2947 | ||
2948 | node->setName(LL_FLOATER_TAG); | ||
2949 | |||
2939 | node->createChild("title", TRUE)->setStringValue(getCurrentTitle()); | 2950 | node->createChild("title", TRUE)->setStringValue(getCurrentTitle()); |
2940 | 2951 | ||
2941 | node->createChild("can_resize", TRUE)->setBoolValue(isResizable()); | 2952 | node->createChild("can_resize", TRUE)->setBoolValue(isResizable()); |
diff --git a/linden/indra/llui/llfloater.h b/linden/indra/llui/llfloater.h index 0e3d148..12f878d 100644 --- a/linden/indra/llui/llfloater.h +++ b/linden/indra/llui/llfloater.h | |||
@@ -398,6 +398,7 @@ public: | |||
398 | virtual ~LLMultiFloater() {}; | 398 | virtual ~LLMultiFloater() {}; |
399 | 399 | ||
400 | virtual BOOL postBuild(); | 400 | virtual BOOL postBuild(); |
401 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
401 | /*virtual*/ void open(); /* Flawfinder: ignore */ | 402 | /*virtual*/ void open(); /* Flawfinder: ignore */ |
402 | /*virtual*/ void onClose(bool app_quitting); | 403 | /*virtual*/ void onClose(bool app_quitting); |
403 | /*virtual*/ void draw(); | 404 | /*virtual*/ void draw(); |
diff --git a/linden/indra/llui/lliconctrl.cpp b/linden/indra/llui/lliconctrl.cpp index cb3b2a3..e73c8fe 100644 --- a/linden/indra/llui/lliconctrl.cpp +++ b/linden/indra/llui/lliconctrl.cpp | |||
@@ -137,6 +137,8 @@ LLXMLNodePtr LLIconCtrl::getXML(bool save_children) const | |||
137 | { | 137 | { |
138 | LLXMLNodePtr node = LLUICtrl::getXML(); | 138 | LLXMLNodePtr node = LLUICtrl::getXML(); |
139 | 139 | ||
140 | node->setName(LL_ICON_CTRL_TAG); | ||
141 | |||
140 | if (mImageName != "") | 142 | if (mImageName != "") |
141 | { | 143 | { |
142 | node->createChild("image_name", TRUE)->setStringValue(mImageName); | 144 | node->createChild("image_name", TRUE)->setStringValue(mImageName); |
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp index 6994f0b..e5e193f 100644 --- a/linden/indra/llui/lllineeditor.cpp +++ b/linden/indra/llui/lllineeditor.cpp | |||
@@ -2210,6 +2210,8 @@ LLXMLNodePtr LLLineEditor::getXML(bool save_children) const | |||
2210 | { | 2210 | { |
2211 | LLXMLNodePtr node = LLUICtrl::getXML(); | 2211 | LLXMLNodePtr node = LLUICtrl::getXML(); |
2212 | 2212 | ||
2213 | node->setName(LL_LINE_EDITOR_TAG); | ||
2214 | |||
2213 | node->createChild("max_length", TRUE)->setIntValue(mMaxLengthBytes); | 2215 | node->createChild("max_length", TRUE)->setIntValue(mMaxLengthBytes); |
2214 | 2216 | ||
2215 | node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mGLFont)); | 2217 | node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mGLFont)); |
@@ -2799,6 +2801,16 @@ void LLSearchEditor::onClearSearch(void* user_data) | |||
2799 | } | 2801 | } |
2800 | } | 2802 | } |
2801 | 2803 | ||
2804 | // virtual | ||
2805 | LLXMLNodePtr LLSearchEditor::getXML(bool save_children) const | ||
2806 | { | ||
2807 | LLXMLNodePtr node = LLUICtrl::getXML(); | ||
2808 | |||
2809 | node->setName(LL_SEARCH_EDITOR_TAG); | ||
2810 | |||
2811 | return node; | ||
2812 | } | ||
2813 | |||
2802 | // static | 2814 | // static |
2803 | LLView* LLSearchEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 2815 | LLView* LLSearchEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
2804 | { | 2816 | { |
diff --git a/linden/indra/llui/lllineeditor.h b/linden/indra/llui/lllineeditor.h index f7cff8f..fc1b75f 100644 --- a/linden/indra/llui/lllineeditor.h +++ b/linden/indra/llui/lllineeditor.h | |||
@@ -386,6 +386,7 @@ public: | |||
386 | 386 | ||
387 | /*virtual*/ void draw(); | 387 | /*virtual*/ void draw(); |
388 | 388 | ||
389 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
389 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 390 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
390 | 391 | ||
391 | void setText(const LLStringExplicit &new_text) { mSearchEdit->setText(new_text); } | 392 | void setText(const LLStringExplicit &new_text) { mSearchEdit->setText(new_text); } |
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp index 175bf07..b70f98b 100644 --- a/linden/indra/llui/llmenugl.cpp +++ b/linden/indra/llui/llmenugl.cpp | |||
@@ -154,6 +154,8 @@ LLXMLNodePtr LLMenuItemGL::getXML(bool save_children) const | |||
154 | { | 154 | { |
155 | LLXMLNodePtr node = LLView::getXML(); | 155 | LLXMLNodePtr node = LLView::getXML(); |
156 | 156 | ||
157 | node->setName(LL_MENU_ITEM_TAG); | ||
158 | |||
157 | node->createChild("type", TRUE)->setStringValue(getType()); | 159 | node->createChild("type", TRUE)->setStringValue(getType()); |
158 | 160 | ||
159 | node->createChild("label", TRUE)->setStringValue(mLabel); | 161 | node->createChild("label", TRUE)->setStringValue(mLabel); |
@@ -526,6 +528,8 @@ class LLMenuItemSeparatorGL : public LLMenuItemGL | |||
526 | public: | 528 | public: |
527 | LLMenuItemSeparatorGL( const std::string &name = SEPARATOR_NAME ); | 529 | LLMenuItemSeparatorGL( const std::string &name = SEPARATOR_NAME ); |
528 | 530 | ||
531 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
532 | |||
529 | virtual std::string getType() const { return "separator"; } | 533 | virtual std::string getType() const { return "separator"; } |
530 | 534 | ||
531 | // doIt() - do the primary funcationality of the menu item. | 535 | // doIt() - do the primary funcationality of the menu item. |
@@ -544,6 +548,16 @@ LLMenuItemSeparatorGL::LLMenuItemSeparatorGL( const std::string &name ) : | |||
544 | { | 548 | { |
545 | } | 549 | } |
546 | 550 | ||
551 | |||
552 | LLXMLNodePtr LLMenuItemSeparatorGL::getXML(bool save_children) const | ||
553 | { | ||
554 | LLXMLNodePtr node = LLMenuItemGL::getXML(); | ||
555 | |||
556 | node->setName(LL_MENU_ITEM_SEPARATOR_GL_TAG); | ||
557 | |||
558 | return node; | ||
559 | } | ||
560 | |||
547 | void LLMenuItemSeparatorGL::draw( void ) | 561 | void LLMenuItemSeparatorGL::draw( void ) |
548 | { | 562 | { |
549 | gGL.color4fv( getDisabledColor().mV ); | 563 | gGL.color4fv( getDisabledColor().mV ); |
@@ -624,6 +638,15 @@ LLMenuItemTearOffGL::LLMenuItemTearOffGL(LLHandle<LLFloater> parent_floater_hand | |||
624 | } | 638 | } |
625 | 639 | ||
626 | 640 | ||
641 | LLXMLNodePtr LLMenuItemTearOffGL::getXML(bool save_children) const | ||
642 | { | ||
643 | LLXMLNodePtr node = LLMenuItemGL::getXML(); | ||
644 | |||
645 | node->setName(LL_MENU_ITEM_TEAR_OFF_GL_TAG); | ||
646 | |||
647 | return node; | ||
648 | } | ||
649 | |||
627 | void LLMenuItemTearOffGL::doIt() | 650 | void LLMenuItemTearOffGL::doIt() |
628 | { | 651 | { |
629 | if (getMenu()->getTornOff()) | 652 | if (getMenu()->getTornOff()) |
@@ -821,6 +844,8 @@ LLXMLNodePtr LLMenuItemCallGL::getXML(bool save_children) const | |||
821 | { | 844 | { |
822 | LLXMLNodePtr node = LLMenuItemGL::getXML(); | 845 | LLXMLNodePtr node = LLMenuItemGL::getXML(); |
823 | 846 | ||
847 | node->setName(LL_MENU_ITEM_CALL_GL_TAG); | ||
848 | |||
824 | // Contents | 849 | // Contents |
825 | 850 | ||
826 | std::vector<LLListenerEntry> listeners = mDispatcher->getListeners(); | 851 | std::vector<LLListenerEntry> listeners = mDispatcher->getListeners(); |
@@ -830,6 +855,9 @@ LLXMLNodePtr LLMenuItemCallGL::getXML(bool save_children) const | |||
830 | std::string listener_name = findEventListener((LLSimpleListener*)itor->listener); | 855 | std::string listener_name = findEventListener((LLSimpleListener*)itor->listener); |
831 | if (!listener_name.empty()) | 856 | if (!listener_name.empty()) |
832 | { | 857 | { |
858 | // *FIX: It's not always on_click. It could be on_check, on_enable or on_visible, | ||
859 | // but there's no way to get that from the data that is stored. | ||
860 | |||
833 | LLXMLNodePtr child_node = node->createChild("on_click", FALSE); | 861 | LLXMLNodePtr child_node = node->createChild("on_click", FALSE); |
834 | child_node->createChild("function", TRUE)->setStringValue(listener_name); | 862 | child_node->createChild("function", TRUE)->setStringValue(listener_name); |
835 | child_node->createChild("filter", TRUE)->setStringValue(itor->filter.asString()); | 863 | child_node->createChild("filter", TRUE)->setStringValue(itor->filter.asString()); |
@@ -971,6 +999,9 @@ void LLMenuItemCheckGL::setCheckedControl(std::string checked_control, LLView *c | |||
971 | LLXMLNodePtr LLMenuItemCheckGL::getXML(bool save_children) const | 999 | LLXMLNodePtr LLMenuItemCheckGL::getXML(bool save_children) const |
972 | { | 1000 | { |
973 | LLXMLNodePtr node = LLMenuItemCallGL::getXML(); | 1001 | LLXMLNodePtr node = LLMenuItemCallGL::getXML(); |
1002 | |||
1003 | node->setName(LL_MENU_ITEM_CHECK_GL_TAG); | ||
1004 | |||
974 | return node; | 1005 | return node; |
975 | } | 1006 | } |
976 | 1007 | ||
@@ -1734,6 +1765,8 @@ LLXMLNodePtr LLMenuGL::getXML(bool save_children) const | |||
1734 | { | 1765 | { |
1735 | LLXMLNodePtr node = LLView::getXML(); | 1766 | LLXMLNodePtr node = LLView::getXML(); |
1736 | 1767 | ||
1768 | node->setName(LL_MENU_GL_TAG); | ||
1769 | |||
1737 | // Attributes | 1770 | // Attributes |
1738 | 1771 | ||
1739 | node->createChild("opaque", TRUE)->setBoolValue(mBgVisible); | 1772 | node->createChild("opaque", TRUE)->setBoolValue(mBgVisible); |
@@ -1904,7 +1937,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
1904 | 1937 | ||
1905 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 1938 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
1906 | 1939 | ||
1907 | if (!callback) continue; | 1940 | if (!callback) |
1941 | { | ||
1942 | lldebugs << "Ignoring \"on_check\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
1943 | continue; | ||
1944 | } | ||
1908 | 1945 | ||
1909 | new_item->addListener(callback, "on_build", userdata); | 1946 | new_item->addListener(callback, "on_build", userdata); |
1910 | } | 1947 | } |
@@ -1945,7 +1982,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
1945 | 1982 | ||
1946 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 1983 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
1947 | 1984 | ||
1948 | if (!callback) continue; | 1985 | if (!callback) |
1986 | { | ||
1987 | lldebugs << "Ignoring \"on_click\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
1988 | continue; | ||
1989 | } | ||
1949 | 1990 | ||
1950 | new_item->addListener(callback, "on_click", callback_data); | 1991 | new_item->addListener(callback, "on_click", callback_data); |
1951 | } | 1992 | } |
@@ -1975,7 +2016,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
1975 | 2016 | ||
1976 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 2017 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
1977 | 2018 | ||
1978 | if (!callback) continue; | 2019 | if (!callback) |
2020 | { | ||
2021 | lldebugs << "Ignoring \"on_enable\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
2022 | continue; | ||
2023 | } | ||
1979 | 2024 | ||
1980 | new_item->addListener(callback, "on_build", userdata); | 2025 | new_item->addListener(callback, "on_build", userdata); |
1981 | } | 2026 | } |
@@ -2015,7 +2060,11 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory | |||
2015 | 2060 | ||
2016 | LLSimpleListener* callback = parent->getListenerByName(callback_name); | 2061 | LLSimpleListener* callback = parent->getListenerByName(callback_name); |
2017 | 2062 | ||
2018 | if (!callback) continue; | 2063 | if (!callback) |
2064 | { | ||
2065 | lldebugs << "Ignoring \"on_visible\" \"" << item_name << "\" because \"" << callback_name << "\" is not registered" << llendl; | ||
2066 | continue; | ||
2067 | } | ||
2019 | 2068 | ||
2020 | new_item->addListener(callback, "on_build", userdata); | 2069 | new_item->addListener(callback, "on_build", userdata); |
2021 | } | 2070 | } |
@@ -3033,6 +3082,8 @@ class LLPieMenuBranch : public LLMenuItemGL | |||
3033 | public: | 3082 | public: |
3034 | LLPieMenuBranch(const std::string& name, const std::string& label, LLPieMenu* branch); | 3083 | LLPieMenuBranch(const std::string& name, const std::string& label, LLPieMenu* branch); |
3035 | 3084 | ||
3085 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
3086 | |||
3036 | // called to rebuild the draw label | 3087 | // called to rebuild the draw label |
3037 | virtual void buildDrawLabel( void ); | 3088 | virtual void buildDrawLabel( void ); |
3038 | 3089 | ||
@@ -3055,6 +3106,17 @@ LLPieMenuBranch::LLPieMenuBranch(const std::string& name, | |||
3055 | mBranch->setParentMenuItem(this); | 3106 | mBranch->setParentMenuItem(this); |
3056 | } | 3107 | } |
3057 | 3108 | ||
3109 | // virtual | ||
3110 | LLXMLNodePtr LLPieMenuBranch::getXML(bool save_children) const | ||
3111 | { | ||
3112 | if (mBranch) | ||
3113 | { | ||
3114 | return mBranch->getXML(); | ||
3115 | } | ||
3116 | |||
3117 | return LLMenuItemGL::getXML(); | ||
3118 | } | ||
3119 | |||
3058 | // called to rebuild the draw label | 3120 | // called to rebuild the draw label |
3059 | void LLPieMenuBranch::buildDrawLabel( void ) | 3121 | void LLPieMenuBranch::buildDrawLabel( void ) |
3060 | { | 3122 | { |
@@ -3136,6 +3198,16 @@ LLPieMenu::LLPieMenu(const std::string& name) | |||
3136 | } | 3198 | } |
3137 | 3199 | ||
3138 | 3200 | ||
3201 | // virtual | ||
3202 | LLXMLNodePtr LLPieMenu::getXML(bool save_children) const | ||
3203 | { | ||
3204 | LLXMLNodePtr node = LLMenuGL::getXML(); | ||
3205 | |||
3206 | node->setName(LL_PIE_MENU_TAG); | ||
3207 | |||
3208 | return node; | ||
3209 | } | ||
3210 | |||
3139 | void LLPieMenu::initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory) | 3211 | void LLPieMenu::initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory) |
3140 | { | 3212 | { |
3141 | LLXMLNodePtr child; | 3213 | LLXMLNodePtr child; |
@@ -3837,6 +3909,8 @@ LLXMLNodePtr LLMenuBarGL::getXML(bool save_children) const | |||
3837 | 3909 | ||
3838 | LLXMLNodePtr node = LLMenuGL::getXML(); | 3910 | LLXMLNodePtr node = LLMenuGL::getXML(); |
3839 | 3911 | ||
3912 | node->setName(LL_MENU_BAR_GL_TAG); | ||
3913 | |||
3840 | for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) | 3914 | for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) |
3841 | { | 3915 | { |
3842 | LLMenuItemGL* child = *item_iter; | 3916 | LLMenuItemGL* child = *item_iter; |
diff --git a/linden/indra/llui/llmenugl.h b/linden/indra/llui/llmenugl.h index 030b81b..26fc294 100644 --- a/linden/indra/llui/llmenugl.h +++ b/linden/indra/llui/llmenugl.h | |||
@@ -368,6 +368,9 @@ public: | |||
368 | BOOL* toggle, | 368 | BOOL* toggle, |
369 | KEY key = KEY_NONE, MASK mask = MASK_NONE ); | 369 | KEY key = KEY_NONE, MASK mask = MASK_NONE ); |
370 | 370 | ||
371 | // there is no getXML() because we cannot reference the toggled global variable by XML | ||
372 | // use LLMenuItemCheckGL instead. | ||
373 | |||
371 | virtual std::string getType() const { return "toggle"; } | 374 | virtual std::string getType() const { return "toggle"; } |
372 | 375 | ||
373 | // called to rebuild the draw label | 376 | // called to rebuild the draw label |
@@ -636,6 +639,7 @@ public: | |||
636 | LLPieMenu(const std::string& name); | 639 | LLPieMenu(const std::string& name); |
637 | virtual ~LLPieMenu() {} | 640 | virtual ~LLPieMenu() {} |
638 | 641 | ||
642 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
639 | void initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory); | 643 | void initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *factory); |
640 | 644 | ||
641 | // LLView Functionality | 645 | // LLView Functionality |
@@ -800,6 +804,7 @@ class LLMenuItemTearOffGL : public LLMenuItemGL | |||
800 | public: | 804 | public: |
801 | LLMenuItemTearOffGL( LLHandle<LLFloater> parent_floater_handle = LLHandle<LLFloater>()); | 805 | LLMenuItemTearOffGL( LLHandle<LLFloater> parent_floater_handle = LLHandle<LLFloater>()); |
802 | 806 | ||
807 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
803 | virtual std::string getType() const { return "tearoff_menu"; } | 808 | virtual std::string getType() const { return "tearoff_menu"; } |
804 | 809 | ||
805 | virtual void doIt(void); | 810 | virtual void doIt(void); |
diff --git a/linden/indra/llui/llmultislider.cpp b/linden/indra/llui/llmultislider.cpp index c1487be..a0da4e2 100644 --- a/linden/indra/llui/llmultislider.cpp +++ b/linden/indra/llui/llmultislider.cpp | |||
@@ -571,6 +571,8 @@ LLXMLNodePtr LLMultiSlider::getXML(bool save_children) const | |||
571 | { | 571 | { |
572 | LLXMLNodePtr node = LLUICtrl::getXML(); | 572 | LLXMLNodePtr node = LLUICtrl::getXML(); |
573 | 573 | ||
574 | node->setName(LL_MULTI_SLIDER_TAG); | ||
575 | |||
574 | node->createChild("initial_val", TRUE)->setFloatValue(getInitialValue()); | 576 | node->createChild("initial_val", TRUE)->setFloatValue(getInitialValue()); |
575 | node->createChild("min_val", TRUE)->setFloatValue(getMinValue()); | 577 | node->createChild("min_val", TRUE)->setFloatValue(getMinValue()); |
576 | node->createChild("max_val", TRUE)->setFloatValue(getMaxValue()); | 578 | node->createChild("max_val", TRUE)->setFloatValue(getMaxValue()); |
diff --git a/linden/indra/llui/llmultisliderctrl.cpp b/linden/indra/llui/llmultisliderctrl.cpp index 8bcf9f9..b76c2f6 100644 --- a/linden/indra/llui/llmultisliderctrl.cpp +++ b/linden/indra/llui/llmultisliderctrl.cpp | |||
@@ -132,7 +132,7 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const std::string& name, const LLRect& rect | |||
132 | &LLLineEditor::prevalidateFloat ); | 132 | &LLLineEditor::prevalidateFloat ); |
133 | mEditor->setFollowsLeft(); | 133 | mEditor->setFollowsLeft(); |
134 | mEditor->setFollowsBottom(); | 134 | mEditor->setFollowsBottom(); |
135 | mEditor->setFocusReceivedCallback( &LLMultiSliderCtrl::onEditorGainFocus ); | 135 | mEditor->setFocusReceivedCallback( &LLMultiSliderCtrl::onEditorGainFocus, this ); |
136 | mEditor->setIgnoreTab(TRUE); | 136 | mEditor->setIgnoreTab(TRUE); |
137 | // don't do this, as selecting the entire text is single clicking in some cases | 137 | // don't do this, as selecting the entire text is single clicking in some cases |
138 | // and double clicking in others | 138 | // and double clicking in others |
@@ -501,6 +501,8 @@ LLXMLNodePtr LLMultiSliderCtrl::getXML(bool save_children) const | |||
501 | { | 501 | { |
502 | LLXMLNodePtr node = LLUICtrl::getXML(); | 502 | LLXMLNodePtr node = LLUICtrl::getXML(); |
503 | 503 | ||
504 | node->setName(LL_MULTI_SLIDER_CTRL_TAG); | ||
505 | |||
504 | node->createChild("show_text", TRUE)->setBoolValue(mShowText); | 506 | node->createChild("show_text", TRUE)->setBoolValue(mShowText); |
505 | 507 | ||
506 | node->createChild("can_edit_text", TRUE)->setBoolValue(mCanEditText); | 508 | node->createChild("can_edit_text", TRUE)->setBoolValue(mCanEditText); |
diff --git a/linden/indra/llui/llpanel.cpp b/linden/indra/llui/llpanel.cpp index 28780c7..709342b 100644 --- a/linden/indra/llui/llpanel.cpp +++ b/linden/indra/llui/llpanel.cpp | |||
@@ -402,7 +402,9 @@ void LLPanel::setBorderVisible(BOOL b) | |||
402 | // virtual | 402 | // virtual |
403 | LLXMLNodePtr LLPanel::getXML(bool save_children) const | 403 | LLXMLNodePtr LLPanel::getXML(bool save_children) const |
404 | { | 404 | { |
405 | LLXMLNodePtr node = LLView::getXML(); | 405 | LLXMLNodePtr node = LLUICtrl::getXML(); |
406 | |||
407 | node->setName(LL_PANEL_TAG); | ||
406 | 408 | ||
407 | if (mBorder && mBorder->getVisible()) | 409 | if (mBorder && mBorder->getVisible()) |
408 | { | 410 | { |
@@ -418,6 +420,15 @@ LLXMLNodePtr LLPanel::getXML(bool save_children) const | |||
418 | { | 420 | { |
419 | node->createChild("label", TRUE)->setStringValue(mLabel); | 421 | node->createChild("label", TRUE)->setStringValue(mLabel); |
420 | } | 422 | } |
423 | |||
424 | ui_string_map_t::const_iterator i = mUIStrings.begin(); | ||
425 | ui_string_map_t::const_iterator end = mUIStrings.end(); | ||
426 | for (; i != end; ++i) | ||
427 | { | ||
428 | LLXMLNodePtr child_node = node->createChild("string", FALSE); | ||
429 | child_node->setStringValue(i->second); | ||
430 | child_node->createChild("name", TRUE)->setStringValue(i->first); | ||
431 | } | ||
421 | 432 | ||
422 | if (save_children) | 433 | if (save_children) |
423 | { | 434 | { |
@@ -1171,6 +1182,38 @@ void LLLayoutStack::removeCtrl(LLUICtrl* ctrl) | |||
1171 | LLXMLNodePtr LLLayoutStack::getXML(bool save_children) const | 1182 | LLXMLNodePtr LLLayoutStack::getXML(bool save_children) const |
1172 | { | 1183 | { |
1173 | LLXMLNodePtr node = LLView::getXML(); | 1184 | LLXMLNodePtr node = LLView::getXML(); |
1185 | node->setName(LL_LAYOUT_STACK_TAG); | ||
1186 | |||
1187 | if (mOrientation == HORIZONTAL) | ||
1188 | { | ||
1189 | node->createChild("orientation", TRUE)->setStringValue("horizontal"); | ||
1190 | } | ||
1191 | else | ||
1192 | { | ||
1193 | node->createChild("orientation", TRUE)->setStringValue("vertical"); | ||
1194 | } | ||
1195 | |||
1196 | if (save_children) | ||
1197 | { | ||
1198 | LLView::child_list_const_reverse_iter_t rit; | ||
1199 | for (rit = getChildList()->rbegin(); rit != getChildList()->rend(); ++rit) | ||
1200 | { | ||
1201 | LLView* childp = *rit; | ||
1202 | |||
1203 | if (childp->getSaveToXML()) | ||
1204 | { | ||
1205 | LLXMLNodePtr xml_node = childp->getXML(); | ||
1206 | |||
1207 | if (xml_node->hasName(LL_PANEL_TAG)) | ||
1208 | { | ||
1209 | xml_node->setName(LL_LAYOUT_PANEL_TAG); | ||
1210 | } | ||
1211 | |||
1212 | node->addChild(xml_node); | ||
1213 | } | ||
1214 | } | ||
1215 | } | ||
1216 | |||
1174 | return node; | 1217 | return node; |
1175 | } | 1218 | } |
1176 | 1219 | ||
diff --git a/linden/indra/llui/llprogressbar.cpp b/linden/indra/llui/llprogressbar.cpp index 8833494..d148733 100644 --- a/linden/indra/llui/llprogressbar.cpp +++ b/linden/indra/llui/llprogressbar.cpp | |||
@@ -124,6 +124,16 @@ void LLProgressBar::setColorBackground(const LLColor4 &c) | |||
124 | } | 124 | } |
125 | 125 | ||
126 | 126 | ||
127 | // virtual | ||
128 | LLXMLNodePtr LLProgressBar::getXML(bool save_children) const | ||
129 | { | ||
130 | LLXMLNodePtr node = LLView::getXML(); | ||
131 | |||
132 | node->setName(LL_PROGRESS_BAR_TAG); | ||
133 | |||
134 | return node; | ||
135 | } | ||
136 | |||
127 | // static | 137 | // static |
128 | LLView* LLProgressBar::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 138 | LLView* LLProgressBar::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
129 | { | 139 | { |
diff --git a/linden/indra/llui/llprogressbar.h b/linden/indra/llui/llprogressbar.h index 00ad61d..5e02c3b 100644 --- a/linden/indra/llui/llprogressbar.h +++ b/linden/indra/llui/llprogressbar.h | |||
@@ -53,6 +53,7 @@ public: | |||
53 | void setColorShadow(const LLColor4 &c); | 53 | void setColorShadow(const LLColor4 &c); |
54 | void setColorBackground(const LLColor4 &c); | 54 | void setColorBackground(const LLColor4 &c); |
55 | 55 | ||
56 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
56 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 57 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
57 | 58 | ||
58 | /*virtual*/ void draw(); | 59 | /*virtual*/ void draw(); |
diff --git a/linden/indra/llui/llradiogroup.cpp b/linden/indra/llui/llradiogroup.cpp index 33b9398..ad8922d 100644 --- a/linden/indra/llui/llradiogroup.cpp +++ b/linden/indra/llui/llradiogroup.cpp | |||
@@ -345,6 +345,8 @@ LLXMLNodePtr LLRadioGroup::getXML(bool save_children) const | |||
345 | { | 345 | { |
346 | LLXMLNodePtr node = LLUICtrl::getXML(); | 346 | LLXMLNodePtr node = LLUICtrl::getXML(); |
347 | 347 | ||
348 | node->setName(LL_RADIO_GROUP_TAG); | ||
349 | |||
348 | // Attributes | 350 | // Attributes |
349 | 351 | ||
350 | node->createChild("draw_border", TRUE)->setBoolValue(mHasBorder); | 352 | node->createChild("draw_border", TRUE)->setBoolValue(mHasBorder); |
@@ -356,9 +358,7 @@ LLXMLNodePtr LLRadioGroup::getXML(bool save_children) const | |||
356 | { | 358 | { |
357 | LLRadioCtrl* radio = *iter; | 359 | LLRadioCtrl* radio = *iter; |
358 | 360 | ||
359 | LLXMLNodePtr child_node = radio->LLView::getXML(); | 361 | LLXMLNodePtr child_node = radio->getXML(); |
360 | child_node->setStringValue(radio->getLabel()); | ||
361 | child_node->setName(std::string("radio_item")); | ||
362 | 362 | ||
363 | node->addChild(child_node); | 363 | node->addChild(child_node); |
364 | } | 364 | } |
@@ -515,3 +515,14 @@ void LLRadioCtrl::setValue(const LLSD& value) | |||
515 | mButton->setTabStop(value.asBoolean()); | 515 | mButton->setTabStop(value.asBoolean()); |
516 | } | 516 | } |
517 | 517 | ||
518 | // virtual | ||
519 | LLXMLNodePtr LLRadioCtrl::getXML(bool save_children) const | ||
520 | { | ||
521 | LLXMLNodePtr node = LLCheckBoxCtrl::getXML(); | ||
522 | |||
523 | node->setName(LL_RADIO_ITEM_TAG); | ||
524 | |||
525 | node->setStringValue(getLabel()); | ||
526 | |||
527 | return node; | ||
528 | } | ||
diff --git a/linden/indra/llui/llradiogroup.h b/linden/indra/llui/llradiogroup.h index 3410b74..b4f65e7 100644 --- a/linden/indra/llui/llradiogroup.h +++ b/linden/indra/llui/llradiogroup.h | |||
@@ -52,6 +52,7 @@ public: | |||
52 | } | 52 | } |
53 | /*virtual*/ ~LLRadioCtrl(); | 53 | /*virtual*/ ~LLRadioCtrl(); |
54 | 54 | ||
55 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
55 | /*virtual*/ void setValue(const LLSD& value); | 56 | /*virtual*/ void setValue(const LLSD& value); |
56 | }; | 57 | }; |
57 | 58 | ||
diff --git a/linden/indra/llui/llscrollcontainer.cpp b/linden/indra/llui/llscrollcontainer.cpp index cf03259..6f037e2 100644 --- a/linden/indra/llui/llscrollcontainer.cpp +++ b/linden/indra/llui/llscrollcontainer.cpp | |||
@@ -679,7 +679,9 @@ S32 LLScrollableContainerView::getBorderWidth() const | |||
679 | // virtual | 679 | // virtual |
680 | LLXMLNodePtr LLScrollableContainerView::getXML(bool save_children) const | 680 | LLXMLNodePtr LLScrollableContainerView::getXML(bool save_children) const |
681 | { | 681 | { |
682 | LLXMLNodePtr node = LLView::getXML(); | 682 | LLXMLNodePtr node = LLUICtrl::getXML(); |
683 | |||
684 | node->setName(LL_SCROLLABLE_CONTAINER_VIEW_TAG); | ||
683 | 685 | ||
684 | // Attributes | 686 | // Attributes |
685 | 687 | ||
diff --git a/linden/indra/llui/llscrollingpanellist.cpp b/linden/indra/llui/llscrollingpanellist.cpp index 05d0c6f..c2afb78 100644 --- a/linden/indra/llui/llscrollingpanellist.cpp +++ b/linden/indra/llui/llscrollingpanellist.cpp | |||
@@ -139,6 +139,16 @@ void LLScrollingPanelList::draw() | |||
139 | } | 139 | } |
140 | 140 | ||
141 | 141 | ||
142 | // virtual | ||
143 | LLXMLNodePtr LLScrollingPanelList::getXML(bool save_children) const | ||
144 | { | ||
145 | LLXMLNodePtr node = LLUICtrl::getXML(); | ||
146 | |||
147 | node->setName(LL_SCROLLING_PANEL_LIST_TAG); | ||
148 | |||
149 | return node; | ||
150 | } | ||
151 | |||
142 | // static | 152 | // static |
143 | LLView* LLScrollingPanelList::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 153 | LLView* LLScrollingPanelList::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
144 | { | 154 | { |
diff --git a/linden/indra/llui/llscrollingpanellist.h b/linden/indra/llui/llscrollingpanellist.h index b9d7309..9660427 100644 --- a/linden/indra/llui/llscrollingpanellist.h +++ b/linden/indra/llui/llscrollingpanellist.h | |||
@@ -58,14 +58,13 @@ public: | |||
58 | 58 | ||
59 | virtual void setValue(const LLSD& value) {}; | 59 | virtual void setValue(const LLSD& value) {}; |
60 | 60 | ||
61 | virtual LLXMLNodePtr getXML(bool save_children) const { return LLUICtrl::getXML(); } | ||
62 | |||
63 | virtual void draw(); | 61 | virtual void draw(); |
64 | 62 | ||
65 | void clearPanels(); | 63 | void clearPanels(); |
66 | void addPanel( LLScrollingPanel* panel ); | 64 | void addPanel( LLScrollingPanel* panel ); |
67 | void updatePanels(BOOL allow_modify); | 65 | void updatePanels(BOOL allow_modify); |
68 | 66 | ||
67 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
69 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 68 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
70 | 69 | ||
71 | private: | 70 | private: |
diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp index 460b29f..3c2293f 100644 --- a/linden/indra/llui/llscrolllistctrl.cpp +++ b/linden/indra/llui/llscrolllistctrl.cpp | |||
@@ -2713,6 +2713,8 @@ LLXMLNodePtr LLScrollListCtrl::getXML(bool save_children) const | |||
2713 | { | 2713 | { |
2714 | LLXMLNodePtr node = LLUICtrl::getXML(); | 2714 | LLXMLNodePtr node = LLUICtrl::getXML(); |
2715 | 2715 | ||
2716 | node->setName(LL_SCROLL_LIST_CTRL_TAG); | ||
2717 | |||
2716 | // Attributes | 2718 | // Attributes |
2717 | 2719 | ||
2718 | node->createChild("multi_select", TRUE)->setBoolValue(mAllowMultipleSelection); | 2720 | node->createChild("multi_select", TRUE)->setBoolValue(mAllowMultipleSelection); |
diff --git a/linden/indra/llui/llslider.cpp b/linden/indra/llui/llslider.cpp index 4dfc904..7b4da9b 100644 --- a/linden/indra/llui/llslider.cpp +++ b/linden/indra/llui/llslider.cpp | |||
@@ -291,6 +291,15 @@ LLXMLNodePtr LLSlider::getXML(bool save_children) const | |||
291 | { | 291 | { |
292 | LLXMLNodePtr node = LLUICtrl::getXML(); | 292 | LLXMLNodePtr node = LLUICtrl::getXML(); |
293 | 293 | ||
294 | if (mVolumeSlider) | ||
295 | { | ||
296 | node->setName(LL_VOLUME_SLIDER_CTRL_TAG); | ||
297 | } | ||
298 | else | ||
299 | { | ||
300 | node->setName(LL_SLIDER_TAG); | ||
301 | } | ||
302 | |||
294 | node->createChild("initial_val", TRUE)->setFloatValue(getInitialValue()); | 303 | node->createChild("initial_val", TRUE)->setFloatValue(getInitialValue()); |
295 | node->createChild("min_val", TRUE)->setFloatValue(getMinValue()); | 304 | node->createChild("min_val", TRUE)->setFloatValue(getMinValue()); |
296 | node->createChild("max_val", TRUE)->setFloatValue(getMaxValue()); | 305 | node->createChild("max_val", TRUE)->setFloatValue(getMaxValue()); |
diff --git a/linden/indra/llui/llsliderctrl.cpp b/linden/indra/llui/llsliderctrl.cpp index 31baddd..8a13ed4 100644 --- a/linden/indra/llui/llsliderctrl.cpp +++ b/linden/indra/llui/llsliderctrl.cpp | |||
@@ -419,6 +419,8 @@ LLXMLNodePtr LLSliderCtrl::getXML(bool save_children) const | |||
419 | { | 419 | { |
420 | LLXMLNodePtr node = LLUICtrl::getXML(); | 420 | LLXMLNodePtr node = LLUICtrl::getXML(); |
421 | 421 | ||
422 | node->setName(LL_SLIDER_CTRL_TAG); | ||
423 | |||
422 | node->createChild("show_text", TRUE)->setBoolValue(mShowText); | 424 | node->createChild("show_text", TRUE)->setBoolValue(mShowText); |
423 | 425 | ||
424 | node->createChild("can_edit_text", TRUE)->setBoolValue(mCanEditText); | 426 | node->createChild("can_edit_text", TRUE)->setBoolValue(mCanEditText); |
diff --git a/linden/indra/llui/llspinctrl.cpp b/linden/indra/llui/llspinctrl.cpp index 2f531a2..2992f98 100644 --- a/linden/indra/llui/llspinctrl.cpp +++ b/linden/indra/llui/llspinctrl.cpp | |||
@@ -483,6 +483,8 @@ LLXMLNodePtr LLSpinCtrl::getXML(bool save_children) const | |||
483 | { | 483 | { |
484 | LLXMLNodePtr node = LLUICtrl::getXML(); | 484 | LLXMLNodePtr node = LLUICtrl::getXML(); |
485 | 485 | ||
486 | node->setName(LL_SPIN_CTRL_TAG); | ||
487 | |||
486 | node->createChild("decimal_digits", TRUE)->setIntValue(mPrecision); | 488 | node->createChild("decimal_digits", TRUE)->setIntValue(mPrecision); |
487 | 489 | ||
488 | if (mLabelBox) | 490 | if (mLabelBox) |
diff --git a/linden/indra/llui/lltabcontainer.cpp b/linden/indra/llui/lltabcontainer.cpp index f416948..1f94191 100644 --- a/linden/indra/llui/lltabcontainer.cpp +++ b/linden/indra/llui/lltabcontainer.cpp | |||
@@ -620,6 +620,9 @@ BOOL LLTabContainer::handleKeyHere(KEY key, MASK mask) | |||
620 | LLXMLNodePtr LLTabContainer::getXML(bool save_children) const | 620 | LLXMLNodePtr LLTabContainer::getXML(bool save_children) const |
621 | { | 621 | { |
622 | LLXMLNodePtr node = LLPanel::getXML(); | 622 | LLXMLNodePtr node = LLPanel::getXML(); |
623 | |||
624 | node->setName(LL_TAB_CONTAINER_COMMON_TAG); | ||
625 | |||
623 | node->createChild("tab_position", TRUE)->setStringValue((getTabPosition() == TOP ? "top" : "bottom")); | 626 | node->createChild("tab_position", TRUE)->setStringValue((getTabPosition() == TOP ? "top" : "bottom")); |
624 | return node; | 627 | return node; |
625 | } | 628 | } |
diff --git a/linden/indra/llui/lltextbox.cpp b/linden/indra/llui/lltextbox.cpp index 89893bc..e45716f 100644 --- a/linden/indra/llui/lltextbox.cpp +++ b/linden/indra/llui/lltextbox.cpp | |||
@@ -386,6 +386,8 @@ LLXMLNodePtr LLTextBox::getXML(bool save_children) const | |||
386 | { | 386 | { |
387 | LLXMLNodePtr node = LLUICtrl::getXML(); | 387 | LLXMLNodePtr node = LLUICtrl::getXML(); |
388 | 388 | ||
389 | node->setName(LL_TEXT_BOX_TAG); | ||
390 | |||
389 | // Attributes | 391 | // Attributes |
390 | node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mFontGL)); | 392 | node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mFontGL)); |
391 | node->createChild("halign", TRUE)->setStringValue(LLFontGL::nameFromHAlign(mHAlign)); | 393 | node->createChild("halign", TRUE)->setStringValue(LLFontGL::nameFromHAlign(mHAlign)); |
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp index 32106f1..7c05239 100644 --- a/linden/indra/llui/lltexteditor.cpp +++ b/linden/indra/llui/lltexteditor.cpp | |||
@@ -4296,6 +4296,8 @@ LLXMLNodePtr LLTextEditor::getXML(bool save_children) const | |||
4296 | { | 4296 | { |
4297 | LLXMLNodePtr node = LLUICtrl::getXML(); | 4297 | LLXMLNodePtr node = LLUICtrl::getXML(); |
4298 | 4298 | ||
4299 | node->setName(LL_SIMPLE_TEXT_EDITOR_TAG); | ||
4300 | |||
4299 | // Attributes | 4301 | // Attributes |
4300 | 4302 | ||
4301 | node->createChild("max_length", TRUE)->setIntValue(getMaxLength()); | 4303 | node->createChild("max_length", TRUE)->setIntValue(getMaxLength()); |
diff --git a/linden/indra/llui/lluictrlfactory.cpp b/linden/indra/llui/lluictrlfactory.cpp index 983cc53..07eb39b 100644 --- a/linden/indra/llui/lluictrlfactory.cpp +++ b/linden/indra/llui/lluictrlfactory.cpp | |||
@@ -86,6 +86,15 @@ public: | |||
86 | LLUICtrlLocate() : LLUICtrl(std::string("locate"), LLRect(0,0,0,0), FALSE, NULL, NULL) { setTabStop(FALSE); } | 86 | LLUICtrlLocate() : LLUICtrl(std::string("locate"), LLRect(0,0,0,0), FALSE, NULL, NULL) { setTabStop(FALSE); } |
87 | virtual void draw() { } | 87 | virtual void draw() { } |
88 | 88 | ||
89 | virtual LLXMLNodePtr getXML(bool save_children = true) const | ||
90 | { | ||
91 | LLXMLNodePtr node = LLUICtrl::getXML(); | ||
92 | |||
93 | node->setName(LL_UI_CTRL_LOCATE_TAG); | ||
94 | |||
95 | return node; | ||
96 | } | ||
97 | |||
89 | static LLView *fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 98 | static LLView *fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
90 | { | 99 | { |
91 | std::string name("pad"); | 100 | std::string name("pad"); |
@@ -163,20 +172,24 @@ bool LLUICtrlFactory::getLayeredXMLNode(const std::string &xui_filename, LLXMLNo | |||
163 | std::string full_filename = gDirUtilp->findSkinnedFilename(sXUIPaths.front(), xui_filename); | 172 | std::string full_filename = gDirUtilp->findSkinnedFilename(sXUIPaths.front(), xui_filename); |
164 | if (full_filename.empty()) | 173 | if (full_filename.empty()) |
165 | { | 174 | { |
166 | llwarns << "Couldn't find UI description file: " << sXUIPaths.front() + gDirUtilp->getDirDelimiter() + xui_filename << llendl; | ||
167 | return false; | ||
168 | } | ||
169 | |||
170 | if (!LLXMLNode::parseFile(full_filename, root, NULL)) | ||
171 | { | ||
172 | // try filename as passed in since sometimes we load an xml file from a user-supplied path | 175 | // try filename as passed in since sometimes we load an xml file from a user-supplied path |
173 | if (!LLXMLNode::parseFile(xui_filename, root, NULL)) | 176 | if (gDirUtilp->fileExists(xui_filename)) |
174 | { | 177 | { |
175 | llwarns << "Problem reading UI description file: " << xui_filename << llendl; | 178 | full_filename = xui_filename; |
179 | } | ||
180 | else | ||
181 | { | ||
182 | llwarns << "Couldn't find UI description file: " << sXUIPaths.front() + gDirUtilp->getDirDelimiter() + xui_filename << llendl; | ||
176 | return false; | 183 | return false; |
177 | } | 184 | } |
178 | } | 185 | } |
179 | 186 | ||
187 | if (!LLXMLNode::parseFile(full_filename, root, NULL)) | ||
188 | { | ||
189 | llwarns << "Problem reading UI description file: " << full_filename << llendl; | ||
190 | return false; | ||
191 | } | ||
192 | |||
180 | LLXMLNodePtr updateRoot; | 193 | LLXMLNodePtr updateRoot; |
181 | 194 | ||
182 | std::vector<std::string>::const_iterator itor; | 195 | std::vector<std::string>::const_iterator itor; |
diff --git a/linden/indra/llui/lluixmltags.h b/linden/indra/llui/lluixmltags.h index 0456666..4166131 100644 --- a/linden/indra/llui/lluixmltags.h +++ b/linden/indra/llui/lluixmltags.h | |||
@@ -122,5 +122,10 @@ const std::string | |||
122 | LL_JOYSTICK_TURN("joystick_turn"), | 122 | LL_JOYSTICK_TURN("joystick_turn"), |
123 | LL_GROUP_DROP_TARGET_TAG("group_drop_target"), | 123 | LL_GROUP_DROP_TARGET_TAG("group_drop_target"), |
124 | LL_LAYOUT_STACK_TAG("layout_stack"), | 124 | LL_LAYOUT_STACK_TAG("layout_stack"), |
125 | LL_FLYOUT_BUTTON_TAG("flyout_button"); | 125 | LL_LAYOUT_PANEL_TAG("layout_panel"), |
126 | LL_FLYOUT_BUTTON_TAG("flyout_button"), | ||
127 | LL_FLYOUT_BUTTON_ITEM_TAG("flyout_button_item"), | ||
128 | LL_SIMPLE_TEXT_EDITOR_TAG("simple_text_editor"), | ||
129 | LL_RADIO_ITEM_TAG("radio_item"), | ||
130 | LL_PROGRESS_BAR_TAG("progress_bar"); | ||
126 | #endif | 131 | #endif |
diff --git a/linden/indra/llui/llview.cpp b/linden/indra/llui/llview.cpp index 36bc850..8de376f 100644 --- a/linden/indra/llui/llview.cpp +++ b/linden/indra/llui/llview.cpp | |||
@@ -1943,7 +1943,7 @@ BOOL LLView::localRectToOtherView( const LLRect& local, LLRect* other, LLView* o | |||
1943 | // virtual | 1943 | // virtual |
1944 | LLXMLNodePtr LLView::getXML(bool save_children) const | 1944 | LLXMLNodePtr LLView::getXML(bool save_children) const |
1945 | { | 1945 | { |
1946 | //FIXME: need to provide actual derived type tag, probably outside this method | 1946 | //If called from a derived class, the derived class will override the node name |
1947 | LLXMLNodePtr node = new LLXMLNode("view", FALSE); | 1947 | LLXMLNodePtr node = new LLXMLNode("view", FALSE); |
1948 | 1948 | ||
1949 | node->createChild("name", TRUE)->setStringValue(getName()); | 1949 | node->createChild("name", TRUE)->setStringValue(getName()); |
@@ -2353,6 +2353,8 @@ LLView* LLView::findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESna | |||
2353 | void LLView::registerEventListener(std::string name, LLSimpleListener* function) | 2353 | void LLView::registerEventListener(std::string name, LLSimpleListener* function) |
2354 | { | 2354 | { |
2355 | mDispatchList.insert(std::pair<std::string, LLSimpleListener*>(name, function)); | 2355 | mDispatchList.insert(std::pair<std::string, LLSimpleListener*>(name, function)); |
2356 | lldebugs << getName() << " registered " << name << llendl; | ||
2357 | |||
2356 | } | 2358 | } |
2357 | 2359 | ||
2358 | void LLView::deregisterEventListener(std::string name) | 2360 | void LLView::deregisterEventListener(std::string name) |
diff --git a/linden/indra/llui/llviewborder.cpp b/linden/indra/llui/llviewborder.cpp index d4a9e9d..47323e2 100644 --- a/linden/indra/llui/llviewborder.cpp +++ b/linden/indra/llui/llviewborder.cpp | |||
@@ -303,6 +303,16 @@ BOOL LLViewBorder::getBevelFromAttribute(LLXMLNodePtr node, LLViewBorder::EBevel | |||
303 | } | 303 | } |
304 | 304 | ||
305 | 305 | ||
306 | // virtual | ||
307 | LLXMLNodePtr LLViewBorder::getXML(bool save_children) const | ||
308 | { | ||
309 | LLXMLNodePtr node = LLView::getXML(); | ||
310 | |||
311 | node->setName(LL_VIEW_BORDER_TAG); | ||
312 | |||
313 | return node; | ||
314 | } | ||
315 | |||
306 | // static | 316 | // static |
307 | LLView* LLViewBorder::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 317 | LLView* LLViewBorder::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
308 | { | 318 | { |
diff --git a/linden/indra/llui/llviewborder.h b/linden/indra/llui/llviewborder.h index a40e653..1d80b6b 100644 --- a/linden/indra/llui/llviewborder.h +++ b/linden/indra/llui/llviewborder.h | |||
@@ -51,6 +51,7 @@ public: | |||
51 | // llview functionality | 51 | // llview functionality |
52 | virtual void draw(); | 52 | virtual void draw(); |
53 | 53 | ||
54 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
54 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, class LLUICtrlFactory *factory); | 55 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, class LLUICtrlFactory *factory); |
55 | static BOOL getBevelFromAttribute(LLXMLNodePtr node, LLViewBorder::EBevel& bevel_style); | 56 | static BOOL getBevelFromAttribute(LLXMLNodePtr node, LLViewBorder::EBevel& bevel_style); |
56 | 57 | ||
diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp index 44d1ad1..1146c44 100644 --- a/linden/indra/newview/llchatbar.cpp +++ b/linden/indra/newview/llchatbar.cpp | |||
@@ -154,7 +154,7 @@ BOOL LLChatBar::postBuild() | |||
154 | mInputEditor->setPassDelete(TRUE); | 154 | mInputEditor->setPassDelete(TRUE); |
155 | mInputEditor->setReplaceNewlinesWithSpaces(FALSE); | 155 | mInputEditor->setReplaceNewlinesWithSpaces(FALSE); |
156 | 156 | ||
157 | mInputEditor->setMaxTextLength(1023); | 157 | mInputEditor->setMaxTextLength(DB_CHAT_MSG_STR_LEN); |
158 | mInputEditor->setEnableLineHistory(TRUE); | 158 | mInputEditor->setEnableLineHistory(TRUE); |
159 | } | 159 | } |
160 | 160 | ||
@@ -624,8 +624,12 @@ void LLChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL | |||
624 | 624 | ||
625 | LLWString out_text = stripChannelNumber(wtext, &channel); | 625 | LLWString out_text = stripChannelNumber(wtext, &channel); |
626 | std::string utf8_out_text = wstring_to_utf8str(out_text); | 626 | std::string utf8_out_text = wstring_to_utf8str(out_text); |
627 | std::string utf8_text = wstring_to_utf8str(wtext); | 627 | if (!utf8_out_text.empty()) |
628 | { | ||
629 | utf8_out_text = utf8str_truncate(utf8_out_text, MAX_MSG_STR_LEN); | ||
630 | } | ||
628 | 631 | ||
632 | std::string utf8_text = wstring_to_utf8str(wtext); | ||
629 | utf8_text = utf8str_trim(utf8_text); | 633 | utf8_text = utf8str_trim(utf8_text); |
630 | if (!utf8_text.empty()) | 634 | if (!utf8_text.empty()) |
631 | { | 635 | { |
diff --git a/linden/indra/newview/llcolorswatch.cpp b/linden/indra/newview/llcolorswatch.cpp index 5f8d9ed..5905bb0 100644 --- a/linden/indra/newview/llcolorswatch.cpp +++ b/linden/indra/newview/llcolorswatch.cpp | |||
@@ -219,12 +219,11 @@ void LLColorSwatchCtrl::draw() | |||
219 | gl_rect_2d(interior, mColor, TRUE); | 219 | gl_rect_2d(interior, mColor, TRUE); |
220 | LLColor4 opaque_color = mColor; | 220 | LLColor4 opaque_color = mColor; |
221 | opaque_color.mV[VALPHA] = 1.f; | 221 | opaque_color.mV[VALPHA] = 1.f; |
222 | gGL.color4fv(opaque_color.mV); | ||
223 | if (mAlphaGradientImage.notNull()) | 222 | if (mAlphaGradientImage.notNull()) |
224 | { | 223 | { |
225 | gGL.pushMatrix(); | 224 | gGL.pushMatrix(); |
226 | { | 225 | { |
227 | mAlphaGradientImage->draw(interior, mColor); | 226 | mAlphaGradientImage->draw(interior, opaque_color); |
228 | } | 227 | } |
229 | gGL.popMatrix(); | 228 | gGL.popMatrix(); |
230 | } | 229 | } |
@@ -348,6 +347,8 @@ LLXMLNodePtr LLColorSwatchCtrl::getXML(bool save_children) const | |||
348 | { | 347 | { |
349 | LLXMLNodePtr node = LLUICtrl::getXML(); | 348 | LLXMLNodePtr node = LLUICtrl::getXML(); |
350 | 349 | ||
350 | node->setName(LL_COLOR_SWATCH_CTRL_TAG); | ||
351 | |||
351 | node->createChild("color", TRUE)->setFloatValue(4, mColor.mV); | 352 | node->createChild("color", TRUE)->setFloatValue(4, mColor.mV); |
352 | 353 | ||
353 | node->createChild("border_color", TRUE)->setFloatValue(4, mBorderColor.mV); | 354 | node->createChild("border_color", TRUE)->setFloatValue(4, mBorderColor.mV); |
diff --git a/linden/indra/newview/llhudeffectbeam.cpp b/linden/indra/newview/llhudeffectbeam.cpp index 6cb3bef..a7c1214 100644 --- a/linden/indra/newview/llhudeffectbeam.cpp +++ b/linden/indra/newview/llhudeffectbeam.cpp | |||
@@ -312,6 +312,11 @@ void LLHUDEffectBeam::render() | |||
312 | } | 312 | } |
313 | } | 313 | } |
314 | 314 | ||
315 | void LLHUDEffectBeam::renderForTimer() | ||
316 | { | ||
317 | render(); | ||
318 | } | ||
319 | |||
315 | void LLHUDEffectBeam::setupParticle(const S32 i) | 320 | void LLHUDEffectBeam::setupParticle(const S32 i) |
316 | { | 321 | { |
317 | LLVector3d start_pos_global; | 322 | LLVector3d start_pos_global; |
diff --git a/linden/indra/newview/llhudeffectbeam.h b/linden/indra/newview/llhudeffectbeam.h index 7365894..69e2b51 100644 --- a/linden/indra/newview/llhudeffectbeam.h +++ b/linden/indra/newview/llhudeffectbeam.h | |||
@@ -58,6 +58,7 @@ protected: | |||
58 | ~LLHUDEffectBeam(); | 58 | ~LLHUDEffectBeam(); |
59 | 59 | ||
60 | /*virtual*/ void render(); | 60 | /*virtual*/ void render(); |
61 | /*virtual*/ void renderForTimer(); | ||
61 | /*virtual*/ void packData(LLMessageSystem *mesgsys); | 62 | /*virtual*/ void packData(LLMessageSystem *mesgsys); |
62 | /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); | 63 | /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); |
63 | private: | 64 | private: |
diff --git a/linden/indra/newview/llhudeffecttrail.cpp b/linden/indra/newview/llhudeffecttrail.cpp index 32b52f8..08f4c78 100644 --- a/linden/indra/newview/llhudeffecttrail.cpp +++ b/linden/indra/newview/llhudeffecttrail.cpp | |||
@@ -287,3 +287,8 @@ void LLHUDEffectSpiral::render() | |||
287 | return; | 287 | return; |
288 | } | 288 | } |
289 | } | 289 | } |
290 | |||
291 | void LLHUDEffectSpiral::renderForTimer() | ||
292 | { | ||
293 | render(); | ||
294 | } | ||
diff --git a/linden/indra/newview/llhudeffecttrail.h b/linden/indra/newview/llhudeffecttrail.h index 60836c2..033fbeb 100644 --- a/linden/indra/newview/llhudeffecttrail.h +++ b/linden/indra/newview/llhudeffecttrail.h | |||
@@ -68,6 +68,7 @@ protected: | |||
68 | ~LLHUDEffectSpiral(); | 68 | ~LLHUDEffectSpiral(); |
69 | 69 | ||
70 | /*virtual*/ void render(); | 70 | /*virtual*/ void render(); |
71 | /*virtual*/ void renderForTimer(); | ||
71 | /*virtual*/ void packData(LLMessageSystem *mesgsys); | 72 | /*virtual*/ void packData(LLMessageSystem *mesgsys); |
72 | /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); | 73 | /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); |
73 | private: | 74 | private: |
diff --git a/linden/indra/newview/llhudobject.cpp b/linden/indra/newview/llhudobject.cpp index bdff492..ea6e0bf 100644 --- a/linden/indra/newview/llhudobject.cpp +++ b/linden/indra/newview/llhudobject.cpp | |||
@@ -308,6 +308,27 @@ void LLHUDObject::renderAllForSelect() | |||
308 | } | 308 | } |
309 | 309 | ||
310 | // static | 310 | // static |
311 | void LLHUDObject::renderAllForTimer() | ||
312 | { | ||
313 | LLHUDObject *hud_objp; | ||
314 | |||
315 | hud_object_list_t::iterator object_it; | ||
316 | for (object_it = sHUDObjects.begin(); object_it != sHUDObjects.end(); ) | ||
317 | { | ||
318 | hud_object_list_t::iterator cur_it = object_it++; | ||
319 | hud_objp = (*cur_it); | ||
320 | if (hud_objp->getNumRefs() == 1) | ||
321 | { | ||
322 | sHUDObjects.erase(cur_it); | ||
323 | } | ||
324 | else if (hud_objp->isVisible()) | ||
325 | { | ||
326 | hud_objp->renderForTimer(); | ||
327 | } | ||
328 | } | ||
329 | } | ||
330 | |||
331 | // static | ||
311 | void LLHUDObject::sortObjects() | 332 | void LLHUDObject::sortObjects() |
312 | { | 333 | { |
313 | sHUDObjects.sort(hud_object_further_away()); | 334 | sHUDObjects.sort(hud_object_further_away()); |
diff --git a/linden/indra/newview/llhudobject.h b/linden/indra/newview/llhudobject.h index 2cd8abf..84c2f84 100644 --- a/linden/indra/newview/llhudobject.h +++ b/linden/indra/newview/llhudobject.h | |||
@@ -75,6 +75,7 @@ public: | |||
75 | static void updateAll(); | 75 | static void updateAll(); |
76 | static void renderAll(); | 76 | static void renderAll(); |
77 | static void renderAllForSelect(); | 77 | static void renderAllForSelect(); |
78 | static void renderAllForTimer(); | ||
78 | 79 | ||
79 | static void cleanupHUDObjects(); | 80 | static void cleanupHUDObjects(); |
80 | 81 | ||
@@ -106,6 +107,7 @@ protected: | |||
106 | 107 | ||
107 | virtual void render() = 0; | 108 | virtual void render() = 0; |
108 | virtual void renderForSelect() {}; | 109 | virtual void renderForSelect() {}; |
110 | virtual void renderForTimer() {}; | ||
109 | 111 | ||
110 | protected: | 112 | protected: |
111 | U8 mType; | 113 | U8 mType; |
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp index 243ef49..9a044d7 100644 --- a/linden/indra/newview/llimpanel.cpp +++ b/linden/indra/newview/llimpanel.cpp | |||
@@ -1200,7 +1200,7 @@ void LLFloaterIMPanel::init(const std::string& session_label) | |||
1200 | 1200 | ||
1201 | setTitle(mSessionLabel); | 1201 | setTitle(mSessionLabel); |
1202 | 1202 | ||
1203 | mInputEditor->setMaxTextLength(1023); | 1203 | mInputEditor->setMaxTextLength(DB_IM_MSG_STR_LEN); |
1204 | // enable line history support for instant message bar | 1204 | // enable line history support for instant message bar |
1205 | mInputEditor->setEnableLineHistory(TRUE); | 1205 | mInputEditor->setEnableLineHistory(TRUE); |
1206 | 1206 | ||
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp index f0bfa00..97df7a3 100644 --- a/linden/indra/newview/llinventoryview.cpp +++ b/linden/indra/newview/llinventoryview.cpp | |||
@@ -1654,6 +1654,8 @@ LLXMLNodePtr LLInventoryPanel::getXML(bool save_children) const | |||
1654 | { | 1654 | { |
1655 | LLXMLNodePtr node = LLPanel::getXML(false); // Do not print out children | 1655 | LLXMLNodePtr node = LLPanel::getXML(false); // Do not print out children |
1656 | 1656 | ||
1657 | node->setName(LL_INVENTORY_PANEL_TAG); | ||
1658 | |||
1657 | node->createChild("allow_multi_select", TRUE)->setBoolValue(mFolders->getAllowMultiSelect()); | 1659 | node->createChild("allow_multi_select", TRUE)->setBoolValue(mFolders->getAllowMultiSelect()); |
1658 | 1660 | ||
1659 | return node; | 1661 | return node; |
diff --git a/linden/indra/newview/lljoystickbutton.cpp b/linden/indra/newview/lljoystickbutton.cpp index 326c511..05c5e41 100644 --- a/linden/indra/newview/lljoystickbutton.cpp +++ b/linden/indra/newview/lljoystickbutton.cpp | |||
@@ -248,16 +248,10 @@ EJoystickQuadrant LLJoystick::quadrantFromName(const std::string& sQuadrant) | |||
248 | 248 | ||
249 | LLXMLNodePtr LLJoystick::getXML(bool save_children) const | 249 | LLXMLNodePtr LLJoystick::getXML(bool save_children) const |
250 | { | 250 | { |
251 | LLXMLNodePtr node = LLUICtrl::getXML(); | 251 | LLXMLNodePtr node = LLButton::getXML(); |
252 | 252 | ||
253 | node->createChild("halign", TRUE)->setStringValue(LLFontGL::nameFromHAlign(getHAlign())); | ||
254 | node->createChild("quadrant", TRUE)->setStringValue(nameFromQuadrant(mInitialQuadrant)); | 253 | node->createChild("quadrant", TRUE)->setStringValue(nameFromQuadrant(mInitialQuadrant)); |
255 | |||
256 | addImageAttributeToXML(node,getImageUnselectedName(),getImageUnselectedID(),std::string("image_unselected")); | ||
257 | addImageAttributeToXML(node,getImageSelectedName(),getImageSelectedID(),std::string("image_selected")); | ||
258 | 254 | ||
259 | node->createChild("scale_image", TRUE)->setBoolValue(getScaleImage()); | ||
260 | |||
261 | return node; | 255 | return node; |
262 | } | 256 | } |
263 | 257 | ||
@@ -327,6 +321,15 @@ void LLJoystickAgentTurn::onHeldDown() | |||
327 | } | 321 | } |
328 | } | 322 | } |
329 | 323 | ||
324 | LLXMLNodePtr LLJoystickAgentTurn::getXML(bool save_children) const | ||
325 | { | ||
326 | LLXMLNodePtr node = LLJoystick::getXML(); | ||
327 | |||
328 | node->setName(LL_JOYSTICK_TURN); | ||
329 | |||
330 | return node; | ||
331 | } | ||
332 | |||
330 | LLView* LLJoystickAgentTurn::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 333 | LLView* LLJoystickAgentTurn::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
331 | { | 334 | { |
332 | std::string name("button"); | 335 | std::string name("button"); |
@@ -435,6 +438,15 @@ void LLJoystickAgentSlide::onHeldDown() | |||
435 | } | 438 | } |
436 | 439 | ||
437 | 440 | ||
441 | LLXMLNodePtr LLJoystickAgentSlide::getXML(bool save_children) const | ||
442 | { | ||
443 | LLXMLNodePtr node = LLJoystick::getXML(); | ||
444 | |||
445 | node->setName(LL_JOYSTICK_SLIDE); | ||
446 | |||
447 | return node; | ||
448 | } | ||
449 | |||
438 | // static | 450 | // static |
439 | LLView* LLJoystickAgentSlide::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 451 | LLView* LLJoystickAgentSlide::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
440 | { | 452 | { |
diff --git a/linden/indra/newview/lljoystickbutton.h b/linden/indra/newview/lljoystickbutton.h index 076a506..b26851f 100644 --- a/linden/indra/newview/lljoystickbutton.h +++ b/linden/indra/newview/lljoystickbutton.h | |||
@@ -97,6 +97,7 @@ public: | |||
97 | 97 | ||
98 | virtual void onHeldDown(); | 98 | virtual void onHeldDown(); |
99 | 99 | ||
100 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
100 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 101 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
101 | 102 | ||
102 | }; | 103 | }; |
@@ -114,6 +115,7 @@ public: | |||
114 | virtual void onHeldDown(); | 115 | virtual void onHeldDown(); |
115 | virtual void onMouseUp(); | 116 | virtual void onMouseUp(); |
116 | 117 | ||
118 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
117 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 119 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
118 | }; | 120 | }; |
119 | 121 | ||
diff --git a/linden/indra/newview/llnameeditor.cpp b/linden/indra/newview/llnameeditor.cpp index e4a6573..5997369 100644 --- a/linden/indra/newview/llnameeditor.cpp +++ b/linden/indra/newview/llnameeditor.cpp | |||
@@ -141,6 +141,16 @@ LLSD LLNameEditor::getValue() const | |||
141 | return LLSD(mNameID); | 141 | return LLSD(mNameID); |
142 | } | 142 | } |
143 | 143 | ||
144 | // virtual | ||
145 | LLXMLNodePtr LLNameEditor::getXML(bool save_children) const | ||
146 | { | ||
147 | LLXMLNodePtr node = LLLineEditor::getXML(); | ||
148 | |||
149 | node->setName(LL_NAME_EDITOR_TAG); | ||
150 | |||
151 | return node; | ||
152 | } | ||
153 | |||
144 | LLView* LLNameEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 154 | LLView* LLNameEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
145 | { | 155 | { |
146 | std::string name("name_editor"); | 156 | std::string name("name_editor"); |
diff --git a/linden/indra/newview/llnameeditor.h b/linden/indra/newview/llnameeditor.h index bc5a678..964682c 100644 --- a/linden/indra/newview/llnameeditor.h +++ b/linden/indra/newview/llnameeditor.h | |||
@@ -62,6 +62,7 @@ public: | |||
62 | 62 | ||
63 | virtual ~LLNameEditor(); | 63 | virtual ~LLNameEditor(); |
64 | 64 | ||
65 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
65 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 66 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
66 | 67 | ||
67 | void setNameID(const LLUUID& name_id, BOOL is_group); | 68 | void setNameID(const LLUUID& name_id, BOOL is_group); |
diff --git a/linden/indra/newview/llnamelistctrl.cpp b/linden/indra/newview/llnamelistctrl.cpp index baf0656..453cf7f 100644 --- a/linden/indra/newview/llnamelistctrl.cpp +++ b/linden/indra/newview/llnamelistctrl.cpp | |||
@@ -288,6 +288,8 @@ LLXMLNodePtr LLNameListCtrl::getXML(bool save_children) const | |||
288 | { | 288 | { |
289 | LLXMLNodePtr node = LLScrollListCtrl::getXML(); | 289 | LLXMLNodePtr node = LLScrollListCtrl::getXML(); |
290 | 290 | ||
291 | node->setName(LL_NAME_LIST_CTRL_TAG); | ||
292 | |||
291 | node->createChild("allow_calling_card_drop", TRUE)->setBoolValue(mAllowCallingCardDrop); | 293 | node->createChild("allow_calling_card_drop", TRUE)->setBoolValue(mAllowCallingCardDrop); |
292 | 294 | ||
293 | if (mNameColumnIndex != 0) | 295 | if (mNameColumnIndex != 0) |
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp index c4ea71e..5500973 100644 --- a/linden/indra/newview/lltexturectrl.cpp +++ b/linden/indra/newview/lltexturectrl.cpp | |||
@@ -969,6 +969,8 @@ LLXMLNodePtr LLTextureCtrl::getXML(bool save_children) const | |||
969 | { | 969 | { |
970 | LLXMLNodePtr node = LLUICtrl::getXML(); | 970 | LLXMLNodePtr node = LLUICtrl::getXML(); |
971 | 971 | ||
972 | node->setName(LL_TEXTURE_CTRL_TAG); | ||
973 | |||
972 | node->createChild("label", TRUE)->setStringValue(getLabel()); | 974 | node->createChild("label", TRUE)->setStringValue(getLabel()); |
973 | 975 | ||
974 | node->createChild("default_image_name", TRUE)->setStringValue(getDefaultImageName()); | 976 | node->createChild("default_image_name", TRUE)->setStringValue(getDefaultImageName()); |
diff --git a/linden/indra/newview/llviewertexteditor.cpp b/linden/indra/newview/llviewertexteditor.cpp index 296c540..e5e2cd6 100644 --- a/linden/indra/newview/llviewertexteditor.cpp +++ b/linden/indra/newview/llviewertexteditor.cpp | |||
@@ -1555,6 +1555,16 @@ BOOL LLViewerTextEditor::exportBuffer( std::string& buffer ) | |||
1555 | return TRUE; | 1555 | return TRUE; |
1556 | } | 1556 | } |
1557 | 1557 | ||
1558 | // virtual | ||
1559 | LLXMLNodePtr LLViewerTextEditor::getXML(bool save_children) const | ||
1560 | { | ||
1561 | LLXMLNodePtr node = LLTextEditor::getXML(); | ||
1562 | |||
1563 | node->setName(LL_TEXT_EDITOR_TAG); | ||
1564 | |||
1565 | return node; | ||
1566 | } | ||
1567 | |||
1558 | LLView* LLViewerTextEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 1568 | LLView* LLViewerTextEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
1559 | { | 1569 | { |
1560 | std::string name("text_editor"); | 1570 | std::string name("text_editor"); |
diff --git a/linden/indra/newview/llviewertexteditor.h b/linden/indra/newview/llviewertexteditor.h index f29caee..c69b3f0 100644 --- a/linden/indra/newview/llviewertexteditor.h +++ b/linden/indra/newview/llviewertexteditor.h | |||
@@ -54,6 +54,7 @@ public: | |||
54 | 54 | ||
55 | virtual void makePristine(); | 55 | virtual void makePristine(); |
56 | 56 | ||
57 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
57 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 58 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
58 | 59 | ||
59 | // mousehandler overrides | 60 | // mousehandler overrides |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index a2bfe68..c361f49 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -171,7 +171,7 @@ const F32 TIME_BEFORE_MESH_CLEANUP = 5.f; // seconds | |||
171 | const S32 AVATAR_RELEASE_THRESHOLD = 10; // number of avatar instances before releasing memory | 171 | const S32 AVATAR_RELEASE_THRESHOLD = 10; // number of avatar instances before releasing memory |
172 | const F32 FOOT_GROUND_COLLISION_TOLERANCE = 0.25f; | 172 | const F32 FOOT_GROUND_COLLISION_TOLERANCE = 0.25f; |
173 | const F32 AVATAR_LOD_TWEAK_RANGE = 0.7f; | 173 | const F32 AVATAR_LOD_TWEAK_RANGE = 0.7f; |
174 | const S32 MAX_BUBBLE_CHAT_LENGTH = 1023; | 174 | const S32 MAX_BUBBLE_CHAT_LENGTH = DB_CHAT_MSG_STR_LEN; |
175 | const S32 MAX_BUBBLE_CHAT_UTTERANCES = 12; | 175 | const S32 MAX_BUBBLE_CHAT_UTTERANCES = 12; |
176 | const F32 CHAT_FADE_TIME = 8.0; | 176 | const F32 CHAT_FADE_TIME = 8.0; |
177 | const F32 BUBBLE_CHAT_TIME = CHAT_FADE_TIME * 3.f; | 177 | const F32 BUBBLE_CHAT_TIME = CHAT_FADE_TIME * 3.f; |
diff --git a/linden/indra/newview/llwebbrowserctrl.cpp b/linden/indra/newview/llwebbrowserctrl.cpp index 89cb62b..453b9d2 100644 --- a/linden/indra/newview/llwebbrowserctrl.cpp +++ b/linden/indra/newview/llwebbrowserctrl.cpp | |||
@@ -1012,6 +1012,16 @@ void LLWebBrowserTexture::resize( S32 new_width, S32 new_height ) | |||
1012 | mLastBrowserDepth = media_depth; | 1012 | mLastBrowserDepth = media_depth; |
1013 | } | 1013 | } |
1014 | 1014 | ||
1015 | // virtual | ||
1016 | LLXMLNodePtr LLWebBrowserCtrl::getXML(bool save_children) const | ||
1017 | { | ||
1018 | LLXMLNodePtr node = LLUICtrl::getXML(); | ||
1019 | |||
1020 | node->setName(LL_WEB_BROWSER_CTRL_TAG); | ||
1021 | |||
1022 | return node; | ||
1023 | } | ||
1024 | |||
1015 | LLView* LLWebBrowserCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) | 1025 | LLView* LLWebBrowserCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) |
1016 | { | 1026 | { |
1017 | std::string name("web_browser"); | 1027 | std::string name("web_browser"); |
diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h index 0f46aa1..0100807 100644 --- a/linden/indra/newview/llwebbrowserctrl.h +++ b/linden/indra/newview/llwebbrowserctrl.h | |||
@@ -191,6 +191,7 @@ class LLWebBrowserCtrl : | |||
191 | // Defaults to true. | 191 | // Defaults to true. |
192 | void setTakeFocusOnClick( bool take_focus ); | 192 | void setTakeFocusOnClick( bool take_focus ); |
193 | 193 | ||
194 | virtual LLXMLNodePtr getXML(bool save_children = true) const; | ||
194 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 195 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
195 | 196 | ||
196 | // handle mouse related methods | 197 | // handle mouse related methods |
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index 4ea9e41..d3ee8b6 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -2724,12 +2724,20 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) | |||
2724 | 2724 | ||
2725 | LLVertexBuffer::unbind(); | 2725 | LLVertexBuffer::unbind(); |
2726 | 2726 | ||
2727 | if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) | 2727 | if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred) |
2728 | { | 2728 | { |
2729 | // Render debugging beacons. | 2729 | if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) |
2730 | gObjectList.renderObjectBeacons(); | 2730 | { |
2731 | LLHUDObject::renderAll(); | 2731 | // Render debugging beacons. |
2732 | gObjectList.resetObjectBeacons(); | 2732 | gObjectList.renderObjectBeacons(); |
2733 | LLHUDObject::renderAll(); | ||
2734 | gObjectList.resetObjectBeacons(); | ||
2735 | } | ||
2736 | else | ||
2737 | { | ||
2738 | // Make sure particle effects disappear | ||
2739 | LLHUDObject::renderAllForTimer(); | ||
2740 | } | ||
2733 | } | 2741 | } |
2734 | 2742 | ||
2735 | LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd"); | 2743 | LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd"); |
@@ -2954,6 +2962,11 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera) | |||
2954 | LLHUDObject::renderAll(); | 2962 | LLHUDObject::renderAll(); |
2955 | gObjectList.resetObjectBeacons(); | 2963 | gObjectList.resetObjectBeacons(); |
2956 | } | 2964 | } |
2965 | else | ||
2966 | { | ||
2967 | // Make sure particle effects disappear | ||
2968 | LLHUDObject::renderAllForTimer(); | ||
2969 | } | ||
2957 | 2970 | ||
2958 | if (occlude) | 2971 | if (occlude) |
2959 | { | 2972 | { |