aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llui
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/llui')
-rw-r--r--linden/indra/llui/llalertdialog.cpp26
-rw-r--r--linden/indra/llui/llalertdialog.h3
-rw-r--r--linden/indra/llui/llbutton.cpp2
-rw-r--r--linden/indra/llui/llcallbackmap.h4
-rw-r--r--linden/indra/llui/llhtmlhelp.h2
-rw-r--r--linden/indra/llui/lllineeditor.cpp8
-rw-r--r--linden/indra/llui/llmenugl.cpp18
-rw-r--r--linden/indra/llui/llmenugl.h13
-rw-r--r--linden/indra/llui/llresmgr.cpp9
-rw-r--r--linden/indra/llui/llresmgr.h2
-rw-r--r--linden/indra/llui/lltexteditor.cpp39
-rw-r--r--linden/indra/llui/llui.h1
-rw-r--r--linden/indra/llui/lluixmltags.h4
13 files changed, 90 insertions, 41 deletions
diff --git a/linden/indra/llui/llalertdialog.cpp b/linden/indra/llui/llalertdialog.cpp
index 0fa3585..258b523 100644
--- a/linden/indra/llui/llalertdialog.cpp
+++ b/linden/indra/llui/llalertdialog.cpp
@@ -56,6 +56,8 @@ const S32 MSG_PAD = 8;
56/*static*/ LLControlGroup* LLAlertDialog::sSettings = NULL; 56/*static*/ LLControlGroup* LLAlertDialog::sSettings = NULL;
57/*static*/ std::map<LLString,LLAlertDialog*> LLAlertDialog::sUniqueActiveMap; 57/*static*/ std::map<LLString,LLAlertDialog*> LLAlertDialog::sUniqueActiveMap;
58/*static*/ LLAlertDialog::display_callback_t LLAlertDialog::sDisplayCallback; 58/*static*/ LLAlertDialog::display_callback_t LLAlertDialog::sDisplayCallback;
59/*static*/ LLString LLAlertDialog::sStringSkipNextTime("Skip this dialog next time");
60/*static*/ LLString LLAlertDialog::sStringAlwaysChoose("Always choose this option");
59 61
60//static 62//static
61LLAlertDialog* LLAlertDialog::createXml( const LLString& xml_desc, 63LLAlertDialog* LLAlertDialog::createXml( const LLString& xml_desc,
@@ -153,17 +155,14 @@ LLAlertDialog::LLAlertDialog( const LLAlertDialogTemplate* xml_template,
153 setTitle(xml_template->mTitle); 155 setTitle(xml_template->mTitle);
154 if (xml_template->mIgnorable) 156 if (xml_template->mIgnorable)
155 { 157 {
156 //XUI:translate!
157 LLString msg;
158 if (xml_template->mIgnorable == IGNORE_USE_DEFAULT) 158 if (xml_template->mIgnorable == IGNORE_USE_DEFAULT)
159 { 159 {
160 msg = "Skip this dialog next time"; 160 setCheckBox(sStringSkipNextTime, xml_template->mIgnoreLabel);
161 } 161 }
162 else // xml_template->mIgnorable == IGNORE_USE_SAVED 162 else // xml_template->mIgnorable == IGNORE_USE_SAVED
163 { 163 {
164 msg = "Always choose this option"; 164 setCheckBox(sStringAlwaysChoose, xml_template->mIgnoreLabel);
165 } 165 }
166 setCheckBox(msg, xml_template->mIgnoreLabel);
167 } 166 }
168} 167}
169 168
@@ -618,6 +617,23 @@ bool LLAlertDialog::parseAlerts(const LLString& xml_filename, LLControlGroup* se
618 for (LLXMLNode* alert = root->getFirstChild(); 617 for (LLXMLNode* alert = root->getFirstChild();
619 alert != NULL; alert = alert->getNextSibling()) 618 alert != NULL; alert = alert->getNextSibling())
620 { 619 {
620 if (alert->hasName("global"))
621 {
622 LLString global_name;
623 if (alert->getAttributeString("name", global_name))
624 {
625 if (global_name == "skipnexttime")
626 {
627 sStringSkipNextTime = alert->getTextContents();
628 }
629 else if (global_name == "alwayschoose")
630 {
631 sStringAlwaysChoose = alert->getTextContents();
632 }
633 }
634 continue;
635 }
636
621 if (!alert->hasName("alert")) 637 if (!alert->hasName("alert"))
622 { 638 {
623 continue; 639 continue;
diff --git a/linden/indra/llui/llalertdialog.h b/linden/indra/llui/llalertdialog.h
index acd0b7f..ddf4112 100644
--- a/linden/indra/llui/llalertdialog.h
+++ b/linden/indra/llui/llalertdialog.h
@@ -135,6 +135,9 @@ public:
135 static LLControlGroup* sSettings; 135 static LLControlGroup* sSettings;
136 static std::map<LLString, LLAlertDialog*> sUniqueActiveMap; 136 static std::map<LLString, LLAlertDialog*> sUniqueActiveMap;
137 static display_callback_t sDisplayCallback; 137 static display_callback_t sDisplayCallback;
138
139 static LLString sStringSkipNextTime;
140 static LLString sStringAlwaysChoose;
138}; 141};
139 142
140//============================================================================ 143//============================================================================
diff --git a/linden/indra/llui/llbutton.cpp b/linden/indra/llui/llbutton.cpp
index 65cbcf3..36ccc32 100644
--- a/linden/indra/llui/llbutton.cpp
+++ b/linden/indra/llui/llbutton.cpp
@@ -1037,7 +1037,7 @@ void clicked_help(void* data)
1037 return; 1037 return;
1038 } 1038 }
1039 1039
1040 LLUI::sHtmlHelp->show(self->getHelpURL()); 1040 LLUI::sHtmlHelp->show(self->getHelpURL(), "");
1041} 1041}
1042 1042
1043// static 1043// static
diff --git a/linden/indra/llui/llcallbackmap.h b/linden/indra/llui/llcallbackmap.h
index 0efda5d..496d722 100644
--- a/linden/indra/llui/llcallbackmap.h
+++ b/linden/indra/llui/llcallbackmap.h
@@ -29,10 +29,6 @@
29 * $/LicenseInfo$ 29 * $/LicenseInfo$
30 */ 30 */
31 31
32// llcallbackmap.h
33//
34// Copyright 2006, Linden Research, Inc.
35
36#ifndef LL_CALLBACK_MAP_H 32#ifndef LL_CALLBACK_MAP_H
37#define LL_CALLBACK_MAP_H 33#define LL_CALLBACK_MAP_H
38 34
diff --git a/linden/indra/llui/llhtmlhelp.h b/linden/indra/llui/llhtmlhelp.h
index 816d0dd..9658f8f 100644
--- a/linden/indra/llui/llhtmlhelp.h
+++ b/linden/indra/llui/llhtmlhelp.h
@@ -36,7 +36,7 @@ class LLHtmlHelp
36{ 36{
37public: 37public:
38 virtual ~LLHtmlHelp() {} 38 virtual ~LLHtmlHelp() {}
39 virtual void show(std::string start_url = "")=0; 39 virtual void show(std::string start_url, std::string title) = 0;
40 virtual BOOL getFloaterOpened()=0; 40 virtual BOOL getFloaterOpened()=0;
41}; 41};
42 42
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp
index 9671065..78fe29c 100644
--- a/linden/indra/llui/lllineeditor.cpp
+++ b/linden/indra/llui/lllineeditor.cpp
@@ -1642,6 +1642,9 @@ void LLLineEditor::draw()
1642 { 1642 {
1643 mLastIMEPosition.mX = ime_pos.mX; 1643 mLastIMEPosition.mX = ime_pos.mX;
1644 mLastIMEPosition.mY = ime_pos.mY; 1644 mLastIMEPosition.mY = ime_pos.mY;
1645
1646 ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
1647 ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
1645 getWindow()->setLanguageTextInput( ime_pos ); 1648 getWindow()->setLanguageTextInput( ime_pos );
1646 } 1649 }
1647 } 1650 }
@@ -2219,6 +2222,11 @@ LLView* LLLineEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory
2219 { 2222 {
2220 line_editor->setHandleEditKeysDirectly(handle_edit_keys_directly); 2223 line_editor->setHandleEditKeysDirectly(handle_edit_keys_directly);
2221 } 2224 }
2225 BOOL commit_on_focus_lost = TRUE;
2226 if (node->getAttributeBOOL("commit_on_focus_lost", commit_on_focus_lost))
2227 {
2228 line_editor->setCommitOnFocusLost(commit_on_focus_lost);
2229 }
2222 2230
2223 line_editor->setColorParameters(node); 2231 line_editor->setColorParameters(node);
2224 2232
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp
index 5d2a052..8ec5656 100644
--- a/linden/indra/llui/llmenugl.cpp
+++ b/linden/indra/llui/llmenugl.cpp
@@ -2495,6 +2495,9 @@ void LLMenuGL::cleanupSpilloverBranch()
2495 mItems.erase(found_iter); 2495 mItems.erase(found_iter);
2496 } 2496 }
2497 2497
2498 delete mSpilloverBranch;
2499 mSpilloverBranch = NULL;
2500
2498 // pop off spillover items 2501 // pop off spillover items
2499 while (mSpilloverMenu->getItemCount()) 2502 while (mSpilloverMenu->getItemCount())
2500 { 2503 {
@@ -2607,6 +2610,8 @@ void LLMenuGL::createJumpKeys()
2607// remove all items on the menu 2610// remove all items on the menu
2608void LLMenuGL::empty( void ) 2611void LLMenuGL::empty( void )
2609{ 2612{
2613 cleanupSpilloverBranch();
2614
2610 mItems.clear(); 2615 mItems.clear();
2611 2616
2612 deleteAllChildren(); 2617 deleteAllChildren();
@@ -4245,11 +4250,14 @@ void LLMenuBarGL::arrange( void )
4245 for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) 4250 for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter)
4246 { 4251 {
4247 LLMenuItemGL* item = *item_iter; 4252 LLMenuItemGL* item = *item_iter;
4248 rect.mLeft = pos; 4253 if (item->getVisible())
4249 pos += item->getNominalWidth(); 4254 {
4250 rect.mRight = pos; 4255 rect.mLeft = pos;
4251 item->setRect( rect ); 4256 pos += item->getNominalWidth();
4252 item->buildDrawLabel(); 4257 rect.mRight = pos;
4258 item->setRect( rect );
4259 item->buildDrawLabel();
4260 }
4253 } 4261 }
4254 reshape(rect.mRight, rect.getHeight()); 4262 reshape(rect.mRight, rect.getHeight());
4255} 4263}
diff --git a/linden/indra/llui/llmenugl.h b/linden/indra/llui/llmenugl.h
index 6dc9282..ce33f8a 100644
--- a/linden/indra/llui/llmenugl.h
+++ b/linden/indra/llui/llmenugl.h
@@ -238,11 +238,6 @@ protected:
238 on_disabled_callback mOnDisabledCallback; 238 on_disabled_callback mOnDisabledCallback;
239 239
240public: 240public:
241
242
243 void setMenuCallback(menu_callback callback, void* data) { mCallback = callback; mUserData = data; };
244 void setEnabledCallback(enabled_callback callback) { mEnabledCallback = callback; };
245
246 // normal constructor 241 // normal constructor
247 LLMenuItemCallGL( const LLString& name, 242 LLMenuItemCallGL( const LLString& name,
248 menu_callback clicked_cb, 243 menu_callback clicked_cb,
@@ -288,7 +283,13 @@ public:
288 void setEnabledControl(LLString enabled_control, LLView *context); 283 void setEnabledControl(LLString enabled_control, LLView *context);
289 void setVisibleControl(LLString enabled_control, LLView *context); 284 void setVisibleControl(LLString enabled_control, LLView *context);
290 285
291 virtual void setUserData(void *userdata) { mUserData = userdata; } 286 void setMenuCallback(menu_callback callback, void* data) { mCallback = callback; mUserData = data; };
287 menu_callback getMenuCallback() const { return mCallback; }
288
289 void setEnabledCallback(enabled_callback callback) { mEnabledCallback = callback; };
290
291 void setUserData(void *userdata) { mUserData = userdata; }
292 void* getUserData() const { return mUserData; }
292 293
293 // called to rebuild the draw label 294 // called to rebuild the draw label
294 virtual void buildDrawLabel( void ); 295 virtual void buildDrawLabel( void );
diff --git a/linden/indra/llui/llresmgr.cpp b/linden/indra/llui/llresmgr.cpp
index e77faa9..0e1b9bf 100644
--- a/linden/indra/llui/llresmgr.cpp
+++ b/linden/indra/llui/llresmgr.cpp
@@ -247,8 +247,10 @@ char LLResMgr::getMonetaryThousandsSeparator() const
247 247
248 248
249// Sets output to a string of integers with monetary separators inserted according to the locale. 249// Sets output to a string of integers with monetary separators inserted according to the locale.
250void LLResMgr::getMonetaryString( LLString& output, S32 input ) const 250std::string LLResMgr::getMonetaryString( S32 input ) const
251{ 251{
252 std::string output;
253
252 LLLocale locale(LLLocale::USER_LOCALE); 254 LLLocale locale(LLLocale::USER_LOCALE);
253 struct lconv *conv = localeconv(); 255 struct lconv *conv = localeconv();
254 256
@@ -295,7 +297,6 @@ void LLResMgr::getMonetaryString( LLString& output, S32 input ) const
295 LLString digits = llformat("%u", abs(input)); 297 LLString digits = llformat("%u", abs(input));
296 if( !grouping || !grouping[0] ) 298 if( !grouping || !grouping[0] )
297 { 299 {
298 output.assign("L$");
299 if( negative_before ) 300 if( negative_before )
300 { 301 {
301 output.append( negative_sign ); 302 output.append( negative_sign );
@@ -305,7 +306,7 @@ void LLResMgr::getMonetaryString( LLString& output, S32 input ) const
305 { 306 {
306 output.append( negative_sign ); 307 output.append( negative_sign );
307 } 308 }
308 return; 309 return output;
309 } 310 }
310 311
311 S32 groupings[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 312 S32 groupings[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
@@ -367,7 +368,6 @@ void LLResMgr::getMonetaryString( LLString& output, S32 input ) const
367 forward_output[ output_pos - 1 - i ] = reversed_output[ i ]; 368 forward_output[ output_pos - 1 - i ] = reversed_output[ i ];
368 } 369 }
369 370
370 output.assign("L$");
371 if( negative_before ) 371 if( negative_before )
372 { 372 {
373 output.append( negative_sign ); 373 output.append( negative_sign );
@@ -377,6 +377,7 @@ void LLResMgr::getMonetaryString( LLString& output, S32 input ) const
377 { 377 {
378 output.append( negative_sign ); 378 output.append( negative_sign );
379 } 379 }
380 return output;
380} 381}
381 382
382void LLResMgr::getIntegerString( LLString& output, S32 input ) const 383void LLResMgr::getIntegerString( LLString& output, S32 input ) const
diff --git a/linden/indra/llui/llresmgr.h b/linden/indra/llui/llresmgr.h
index d9e58bc..be2a355 100644
--- a/linden/indra/llui/llresmgr.h
+++ b/linden/indra/llui/llresmgr.h
@@ -132,7 +132,7 @@ public:
132 132
133 char getMonetaryDecimalPoint() const; 133 char getMonetaryDecimalPoint() const;
134 char getMonetaryThousandsSeparator() const; 134 char getMonetaryThousandsSeparator() const;
135 void getMonetaryString( LLString& output, S32 input ) const; 135 std::string getMonetaryString( S32 input ) const;
136 void getIntegerString( LLString& output, S32 input ) const; 136 void getIntegerString( LLString& output, S32 input ) const;
137 137
138// const char* getRes( LLSTR_ID string_id ) const { return mStrings[ string_id ]; } 138// const char* getRes( LLSTR_ID string_id ) const { return mStrings[ string_id ]; }
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index 12ad339..1f13bbb 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -967,17 +967,6 @@ void LLTextEditor::endSelection()
967 mIsSelecting = FALSE; 967 mIsSelecting = FALSE;
968 mSelectionEnd = mCursorPos; 968 mSelectionEnd = mCursorPos;
969 } 969 }
970 if (mParseHTML && mHTML.length() > 0)
971 {
972 //Special handling for slurls
973 if ( (mSecondlifeURLcallback!=NULL) && !(*mSecondlifeURLcallback)(mHTML) )
974 {
975 if (mURLcallback!=NULL) (*mURLcallback)(mHTML.c_str());
976
977 //load_url(url.c_str());
978 }
979 mHTML="";
980 }
981} 970}
982 971
983BOOL LLTextEditor::selectionContainsLineBreaks() 972BOOL LLTextEditor::selectionContainsLineBreaks()
@@ -1408,6 +1397,7 @@ BOOL LLTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)
1408 if( hasMouseCapture() ) 1397 if( hasMouseCapture() )
1409 { 1398 {
1410 gFocusMgr.setMouseCapture( NULL ); 1399 gFocusMgr.setMouseCapture( NULL );
1400
1411 handled = TRUE; 1401 handled = TRUE;
1412 } 1402 }
1413 1403
@@ -2831,7 +2821,10 @@ void LLTextEditor::drawCursor()
2831 { 2821 {
2832 mLastIMEPosition.mX = ime_pos.mX; 2822 mLastIMEPosition.mX = ime_pos.mX;
2833 mLastIMEPosition.mY = ime_pos.mY; 2823 mLastIMEPosition.mY = ime_pos.mY;
2834 getWindow()->setLanguageTextInput( ime_pos ); 2824
2825 ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
2826 ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
2827 getWindow()->setLanguageTextInput( ime_pos );
2835 } 2828 }
2836 } 2829 }
2837 } 2830 }
@@ -3814,6 +3807,22 @@ void LLTextEditor::findEmbeddedItemSegments()
3814 3807
3815BOOL LLTextEditor::handleMouseUpOverSegment(S32 x, S32 y, MASK mask) 3808BOOL LLTextEditor::handleMouseUpOverSegment(S32 x, S32 y, MASK mask)
3816{ 3809{
3810 if ( hasMouseCapture() )
3811 {
3812 // This mouse up was part of a click.
3813 // Regardless of where the cursor is, see if we recently touched a link
3814 // and launch it if we did.
3815 if (mParseHTML && mHTML.length() > 0)
3816 {
3817 //Special handling for slurls
3818 if ( (mSecondlifeURLcallback!=NULL) && !(*mSecondlifeURLcallback)(mHTML) )
3819 {
3820 if (mURLcallback!=NULL) (*mURLcallback)(mHTML.c_str());
3821 }
3822 mHTML="";
3823 }
3824 }
3825
3817 return FALSE; 3826 return FALSE;
3818} 3827}
3819 3828
@@ -4245,6 +4254,12 @@ BOOL LLTextEditor::findHTML(const LLString &line, S32 *begin, S32 *end)
4245 strpos = url.find(slurlID); 4254 strpos = url.find(slurlID);
4246 } 4255 }
4247 4256
4257 if (strpos < 0)
4258 {
4259 slurlID="sl://";
4260 strpos = url.find(slurlID);
4261 }
4262
4248 if (strpos >= 0) 4263 if (strpos >= 0)
4249 { 4264 {
4250 strpos+=slurlID.length(); 4265 strpos+=slurlID.length();
diff --git a/linden/indra/llui/llui.h b/linden/indra/llui/llui.h
index b806f7a..b78b046 100644
--- a/linden/indra/llui/llui.h
+++ b/linden/indra/llui/llui.h
@@ -222,6 +222,7 @@ typedef enum e_widget_type
222 WIDGET_TYPE_PAD, // used in XML for positioning, not a real widget 222 WIDGET_TYPE_PAD, // used in XML for positioning, not a real widget
223 WIDGET_TYPE_RADIO_GROUP, 223 WIDGET_TYPE_RADIO_GROUP,
224 WIDGET_TYPE_ICON, 224 WIDGET_TYPE_ICON,
225 WIDGET_TYPE_LANDMARK_PICKER,
225 WIDGET_TYPE_LOCATE, // used in XML for positioning, not a real widget 226 WIDGET_TYPE_LOCATE, // used in XML for positioning, not a real widget
226 WIDGET_TYPE_VIEW_BORDER, // decorative border 227 WIDGET_TYPE_VIEW_BORDER, // decorative border
227 WIDGET_TYPE_PANEL, 228 WIDGET_TYPE_PANEL,
diff --git a/linden/indra/llui/lluixmltags.h b/linden/indra/llui/lluixmltags.h
index 305223d..93e9fe0 100644
--- a/linden/indra/llui/lluixmltags.h
+++ b/linden/indra/llui/lluixmltags.h
@@ -116,8 +116,8 @@
116#define LL_FOLDER_VIEW_ITEM_TAG LLString("folder_item") 116#define LL_FOLDER_VIEW_ITEM_TAG LLString("folder_item")
117#define LL_FOLDER_VIEW_FOLDER_TAG LLString("folder") 117#define LL_FOLDER_VIEW_FOLDER_TAG LLString("folder")
118#define LL_TEXTURE_BAR_TAG LLString("texture_bar") 118#define LL_TEXTURE_BAR_TAG LLString("texture_bar")
119#define LL_JOYSTICK_SLIDE "joystick_slide" 119#define LL_JOYSTICK_SLIDE LLString("joystick_slide")
120#define LL_JOYSTICK_TURN "joystick_turn" 120#define LL_JOYSTICK_TURN LLString("joystick_turn")
121#define LL_GROUP_DROP_TARGET_TAG LLString("group_drop_target") 121#define LL_GROUP_DROP_TARGET_TAG LLString("group_drop_target")
122#define LL_LAYOUT_STACK_TAG LLString("layout_stack") 122#define LL_LAYOUT_STACK_TAG LLString("layout_stack")
123#endif 123#endif