aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llui/lltexteditor.cpp
diff options
context:
space:
mode:
authorthickbrick2010-10-04 00:11:18 +0200
committerthickbrick2010-10-04 00:11:18 +0200
commit6be58f1de21c276018aac9575fad81aa17a63ed2 (patch)
treed77b69a8de7840c4a37c0ce394e45c8c089475eb /linden/indra/llui/lltexteditor.cpp
parentFixed #157: Group lists get merged after logging into multiple grids (diff)
downloadmeta-impy-6be58f1de21c276018aac9575fad81aa17a63ed2.zip
meta-impy-6be58f1de21c276018aac9575fad81aa17a63ed2.tar.gz
meta-impy-6be58f1de21c276018aac9575fad81aa17a63ed2.tar.bz2
meta-impy-6be58f1de21c276018aac9575fad81aa17a63ed2.tar.xz
Don't leak SpellMenuBind structs when destroying LLLineEditor/LLTextEditor objects.
Diffstat (limited to 'linden/indra/llui/lltexteditor.cpp')
-rw-r--r--linden/indra/llui/lltexteditor.cpp67
1 files changed, 28 insertions, 39 deletions
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index 8dcb014..369eb1e 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -398,38 +398,22 @@ LLTextEditor::LLTextEditor(
398 menu->appendSeparator("Transep"); 398 menu->appendSeparator("Transep");
399 LLMenuGL* translatemenu = new LLMenuGL("Translate To"); 399 LLMenuGL* translatemenu = new LLMenuGL("Translate To");
400 translatemenu->setCanTearOff(FALSE); 400 translatemenu->setCanTearOff(FALSE);
401 SpellMenuBind* t=new SpellMenuBind;t->origin=this;t->word="en"; 401 translatemenu->append(new LLMenuItemCallGL("en", "English", context_translate, context_enable_translate, this));
402 translatemenu->append(new LLMenuItemCallGL("English", context_translate, context_enable_translate, t)); 402 translatemenu->append(new LLMenuItemCallGL("da", "Danish", context_translate, context_enable_translate, this));
403 t=new SpellMenuBind;t->origin=this;t->word="da"; 403 translatemenu->append(new LLMenuItemCallGL("de", "Deutsch(German)", context_translate, context_enable_translate, this));
404 translatemenu->append(new LLMenuItemCallGL("Danish", context_translate, context_enable_translate, t)); 404 translatemenu->append(new LLMenuItemCallGL("es", "Spanish", context_translate, context_enable_translate, this));
405 t=new SpellMenuBind;t->origin=this;t->word="de"; 405 translatemenu->append(new LLMenuItemCallGL("fr", "French", context_translate, context_enable_translate, this));
406 translatemenu->append(new LLMenuItemCallGL("Deutsch(German)", context_translate, context_enable_translate, t)); 406 translatemenu->append(new LLMenuItemCallGL("it", "Italian", context_translate, context_enable_translate, this));
407 t=new SpellMenuBind;t->origin=this;t->word="es"; 407 translatemenu->append(new LLMenuItemCallGL("hu", "Hungarian", context_translate, context_enable_translate, this));
408 translatemenu->append(new LLMenuItemCallGL("Spanish", context_translate, context_enable_translate, t)); 408 translatemenu->append(new LLMenuItemCallGL("nl", "Dutch", context_translate, context_enable_translate, this));
409 t=new SpellMenuBind;t->origin=this;t->word="fr"; 409 translatemenu->append(new LLMenuItemCallGL("pl", "Polish", context_translate, context_enable_translate, this));
410 translatemenu->append(new LLMenuItemCallGL("French", context_translate, context_enable_translate, t)); 410 translatemenu->append(new LLMenuItemCallGL("pt", "Portugese", context_translate, context_enable_translate, this));
411 t=new SpellMenuBind;t->origin=this;t->word="it"; 411 translatemenu->append(new LLMenuItemCallGL("ru", "Russian", context_translate, context_enable_translate, this));
412 translatemenu->append(new LLMenuItemCallGL("Italian", context_translate, context_enable_translate, t)); 412 translatemenu->append(new LLMenuItemCallGL("tr", "Turkish", context_translate, context_enable_translate, this));
413 t=new SpellMenuBind;t->origin=this;t->word="hu"; 413 translatemenu->append(new LLMenuItemCallGL("uk", "Ukrainian", context_translate, context_enable_translate, this));
414 translatemenu->append(new LLMenuItemCallGL("Hungarian", context_translate, context_enable_translate, t)); 414 translatemenu->append(new LLMenuItemCallGL("zh", "Chinese", context_translate, context_enable_translate, this));
415 t=new SpellMenuBind;t->origin=this;t->word="nl"; 415 translatemenu->append(new LLMenuItemCallGL("ja", "Japanese", context_translate, context_enable_translate, this));
416 translatemenu->append(new LLMenuItemCallGL("Dutch", context_translate, context_enable_translate, t)); 416 translatemenu->append(new LLMenuItemCallGL("ko", "Korean", context_translate, context_enable_translate, this));
417 t=new SpellMenuBind;t->origin=this;t->word="pl";
418 translatemenu->append(new LLMenuItemCallGL("Polish", context_translate, context_enable_translate, t));
419 t=new SpellMenuBind;t->origin=this;t->word="pt";
420 translatemenu->append(new LLMenuItemCallGL("Portugese", context_translate, context_enable_translate, t));
421 t=new SpellMenuBind;t->origin=this;t->word="ru";
422 translatemenu->append(new LLMenuItemCallGL("Russian", context_translate, context_enable_translate, t));
423 t=new SpellMenuBind;t->origin=this;t->word="tr";
424 translatemenu->append(new LLMenuItemCallGL("Turkish", context_translate, context_enable_translate, t));
425 t=new SpellMenuBind;t->origin=this;t->word="uk";
426 translatemenu->append(new LLMenuItemCallGL("Ukrainian", context_translate, context_enable_translate, t));
427 t=new SpellMenuBind;t->origin=this;t->word="zh";
428 translatemenu->append(new LLMenuItemCallGL("Chinese", context_translate, context_enable_translate, t));
429 t=new SpellMenuBind;t->origin=this;t->word="ja";
430 translatemenu->append(new LLMenuItemCallGL("Japanese", context_translate, context_enable_translate, t));
431 t=new SpellMenuBind;t->origin=this;t->word="ko";
432 translatemenu->append(new LLMenuItemCallGL("Korean", context_translate, context_enable_translate, t));
433 417
434 menu->appendMenu(translatemenu); 418 menu->appendMenu(translatemenu);
435 menu->appendSeparator("Spelsep"); 419 menu->appendSeparator("Spelsep");
@@ -483,15 +467,20 @@ void LLTextEditor::context_copy(void* data)
483 467
484BOOL LLTextEditor::context_enable_translate(void * data) 468BOOL LLTextEditor::context_enable_translate(void * data)
485{ 469{
486 SpellMenuBind* t = (SpellMenuBind*)data; 470 LLTextEditor* editor = (LLTextEditor*)data;
487 return (t && t->origin && t->origin->canTranslate()); 471 return editor && editor->canTranslate();
488} 472}
489 473
490void LLTextEditor::context_translate(void * data) 474void LLTextEditor::context_translate(void * data)
491{ 475{
492 SpellMenuBind* t = (SpellMenuBind*)data; 476 LLTextEditor* line = (LLTextEditor*)data;
493 LLTextEditor* line = t->origin; 477 LLMenuGL* menu = line ? (LLMenuGL*)(line->mPopupMenuHandle.get()) : NULL;
494 const std::string &toLang = t->word;//LLTranslate::getTranslateLanguage(); 478 LLMenuGL* translate_menu = menu ? menu->getChildMenuByName("Translate To", TRUE) : NULL;
479 if (!translate_menu)
480 {
481 return;
482 }
483 const std::string to_lang = translate_menu->getHighlightedItem()->getName();
495 484
496 bool has_text = false; 485 bool has_text = false;
497 S32 start, length; 486 S32 start, length;
@@ -512,8 +501,8 @@ void LLTextEditor::context_translate(void * data)
512 if (has_text) 501 if (has_text)
513 { 502 {
514 const std::string to_translate = wstring_to_utf8str(line->getWText().substr(start, length)); 503 const std::string to_translate = wstring_to_utf8str(line->getWText().substr(start, length));
515 LLHTTPClient::ResponderPtr result = TextChatTranslationReceiver::build(toLang, line, start, length); 504 LLHTTPClient::ResponderPtr result = TextChatTranslationReceiver::build(to_lang, line, start, length);
516 LLTranslate::translateMessage(result,"", toLang, to_translate); 505 LLTranslate::translateMessage(result,"", to_lang, to_translate);
517 } 506 }
518} 507}
519 508