summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui')
-rw-r--r--[-rwxr-xr-x]indra/llui/CMakeLists.txt13
-rw-r--r--[-rwxr-xr-x]indra/llui/llaccordionctrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llaccordionctrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llaccordionctrltab.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llaccordionctrltab.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbadge.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbadge.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbadgeholder.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbadgeholder.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbadgeowner.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbadgeowner.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbutton.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llbutton.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcallbackmap.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llchat.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llchatentry.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llchatentry.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcheckboxctrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcheckboxctrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llclipboard.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llclipboard.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcombobox.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcombobox.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcommandmanager.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcommandmanager.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llconsole.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llconsole.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcontainerview.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llcontainerview.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llctrlselectioninterface.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llctrlselectioninterface.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lldockablefloater.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lldockablefloater.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lldockcontrol.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lldockcontrol.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lldraghandle.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lldraghandle.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lleditmenuhandler.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lleditmenuhandler.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llf32uictrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llf32uictrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfiltereditor.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfiltereditor.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llflashtimer.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llflashtimer.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llflatlistview.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llflatlistview.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfloater.cpp36
-rw-r--r--[-rwxr-xr-x]indra/llui/llfloater.h4
-rw-r--r--[-rwxr-xr-x]indra/llui/llfloaterreg.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfloaterreg.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfloaterreglistener.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfloaterreglistener.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llflyoutbutton.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llflyoutbutton.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfocusmgr.cpp18
-rw-r--r--[-rwxr-xr-x]indra/llui/llfocusmgr.h9
-rw-r--r--[-rwxr-xr-x]indra/llui/llfolderview.cpp4
-rw-r--r--[-rwxr-xr-x]indra/llui/llfolderview.h3
-rw-r--r--indra/llui/llfolderviewitem.cpp5
-rw-r--r--[-rwxr-xr-x]indra/llui/llfolderviewitem.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfolderviewmodel.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfolderviewmodel.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llfunctorregistry.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llhelp.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lliconctrl.cpp25
-rw-r--r--[-rwxr-xr-x]indra/llui/lliconctrl.h6
-rw-r--r--[-rwxr-xr-x]indra/llui/llkeywords.cpp25
-rw-r--r--[-rwxr-xr-x]indra/llui/llkeywords.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lllayoutstack.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lllayoutstack.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lllazyvalue.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lllineeditor.cpp7
-rw-r--r--[-rwxr-xr-x]indra/llui/lllineeditor.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llloadingindicator.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llloadingindicator.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lllocalcliprect.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lllocalcliprect.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmenubutton.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmenubutton.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmenugl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmenugl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmodaldialog.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmodaldialog.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmultifloater.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmultifloater.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmultislider.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmultislider.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmultisliderctrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llmultisliderctrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotificationptr.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotifications.cpp30
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotifications.h4
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotificationsutil.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotificationsutil.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotificationtemplate.h17
-rw-r--r--[-rwxr-xr-x]indra/llui/llnotificationvisibilityrule.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llpanel.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llpanel.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llprogressbar.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llprogressbar.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llradiogroup.cpp12
-rw-r--r--[-rwxr-xr-x]indra/llui/llradiogroup.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llresizebar.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llresizebar.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llresizehandle.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llresizehandle.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llresmgr.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llresmgr.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llrngwriter.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llrngwriter.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrollbar.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrollbar.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrollcontainer.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrollcontainer.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrollingpanellist.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrollingpanellist.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistcell.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistcell.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistcolumn.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistcolumn.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistctrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistctrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistitem.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llscrolllistitem.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llsearcheditor.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llsearcheditor.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llslider.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llslider.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llsliderctrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llsliderctrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llspellcheck.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llspellcheck.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llspellcheckmenuhandler.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llspinctrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llspinctrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstatbar.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstatbar.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstatgraph.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstatgraph.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstatview.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstatview.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstyle.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llstyle.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltabcontainer.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltabcontainer.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextbase.cpp65
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextbase.h20
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextbox.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextbox.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltexteditor.cpp25
-rw-r--r--[-rwxr-xr-x]indra/llui/lltexteditor.h2
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextparser.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextparser.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextutil.cpp20
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextutil.h6
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextvalidate.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltextvalidate.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltimectrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltimectrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltoggleablemenu.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltoggleablemenu.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltoolbar.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltoolbar.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltooltip.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltooltip.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltrans.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltrans.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltransutil.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lltransutil.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llui.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llui.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluicolor.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluicolor.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluicolortable.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluicolortable.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluiconstants.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluictrl.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluictrl.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluictrlfactory.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluictrlfactory.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluifwd.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluistring.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/lluistring.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llundo.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llundo.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlaction.cpp17
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlaction.h3
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlentry.cpp15
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlentry.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlmatch.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlmatch.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlregistry.cpp7
-rw-r--r--[-rwxr-xr-x]indra/llui/llurlregistry.h1
-rw-r--r--[-rwxr-xr-x]indra/llui/llview.cpp51
-rw-r--r--[-rwxr-xr-x]indra/llui/llview.h3
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewborder.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewborder.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewinject.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewinject.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewmodel.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewmodel.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewquery.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llviewquery.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llwindowshade.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llwindowshade.h0
-rw-r--r--[-rwxr-xr-x]indra/llui/llxuiparser.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llui/llxuiparser.h0
-rwxr-xr-xindra/llui/tests/llurlentry_stub.cpp2
-rw-r--r--[-rwxr-xr-x]indra/llui/tests/llurlentry_test.cpp44
-rw-r--r--[-rwxr-xr-x]indra/llui/tests/llurlmatch_test.cpp0
211 files changed, 396 insertions, 103 deletions
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 52738aeb6f..7fb1db15fb 100755..100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -8,13 +8,16 @@ include(LLImage)
include(LLInventory)
include(LLMath)
include(LLMessage)
+include(LLCoreHttp)
include(LLRender)
include(LLWindow)
+include(LLCoreHttp)
include(LLVFS)
include(LLXML)
include_directories(
${LLCOMMON_INCLUDE_DIRS}
+ ${LLCOREHTTP_INCLUDE_DIRS}
${LLIMAGE_INCLUDE_DIRS}
${LLINVENTORY_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
@@ -268,16 +271,18 @@ add_library (llui ${llui_SOURCE_FILES})
# Libraries on which this library depends, needed for Linux builds
# Sort by high-level to low-level
target_link_libraries(llui
- ${LLMESSAGE_LIBRARIES}
${LLRENDER_LIBRARIES}
${LLWINDOW_LIBRARIES}
${LLIMAGE_LIBRARIES}
${LLINVENTORY_LIBRARIES}
+ ${LLMESSAGE_LIBRARIES}
+ ${LLCOREHTTP_LIBRARIES}
${LLVFS_LIBRARIES} # ugh, just for LLDir
${LLXUIXML_LIBRARIES}
${LLXML_LIBRARIES}
${LLMATH_LIBRARIES}
${HUNSPELL_LIBRARY}
+ ${LLMESSAGE_LIBRARIES}
${LLCOMMON_LIBRARIES} # must be after llimage, llwindow, llrender
)
@@ -289,6 +294,8 @@ if(LL_TESTS)
)
LL_ADD_PROJECT_UNIT_TESTS(llui "${llui_TEST_SOURCE_FILES}")
# INTEGRATION TESTS
- set(test_libs llui llmessage llcommon ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES})
- LL_ADD_INTEGRATION_TEST(llurlentry llurlentry.cpp "${test_libs}")
+ set(test_libs llui llmessage llcorehttp llcommon ${LLCOMMON_LIBRARIES} ${BOOST_COROUTINE_LIBRARY} ${BOOST_CONTEXT_LIBRARY} ${BOOST_SYSTEM_LIBRARY} ${WINDOWS_LIBRARIES})
+ if(NOT LINUX)
+ LL_ADD_INTEGRATION_TEST(llurlentry llurlentry.cpp "${test_libs}")
+ endif(NOT LINUX)
endif(LL_TESTS)
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 623f570cef..623f570cef 100755..100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index 1fe64c472e..1fe64c472e 100755..100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 53720a6044..53720a6044 100755..100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 7a78700e0f..7a78700e0f 100755..100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
diff --git a/indra/llui/llbadge.cpp b/indra/llui/llbadge.cpp
index 42726de0ad..42726de0ad 100755..100644
--- a/indra/llui/llbadge.cpp
+++ b/indra/llui/llbadge.cpp
diff --git a/indra/llui/llbadge.h b/indra/llui/llbadge.h
index 4b21a71aaa..4b21a71aaa 100755..100644
--- a/indra/llui/llbadge.h
+++ b/indra/llui/llbadge.h
diff --git a/indra/llui/llbadgeholder.cpp b/indra/llui/llbadgeholder.cpp
index 1f786f36ae..1f786f36ae 100755..100644
--- a/indra/llui/llbadgeholder.cpp
+++ b/indra/llui/llbadgeholder.cpp
diff --git a/indra/llui/llbadgeholder.h b/indra/llui/llbadgeholder.h
index 2538eaae91..2538eaae91 100755..100644
--- a/indra/llui/llbadgeholder.h
+++ b/indra/llui/llbadgeholder.h
diff --git a/indra/llui/llbadgeowner.cpp b/indra/llui/llbadgeowner.cpp
index 55e64bb940..55e64bb940 100755..100644
--- a/indra/llui/llbadgeowner.cpp
+++ b/indra/llui/llbadgeowner.cpp
diff --git a/indra/llui/llbadgeowner.h b/indra/llui/llbadgeowner.h
index 53c2de95c8..53c2de95c8 100755..100644
--- a/indra/llui/llbadgeowner.h
+++ b/indra/llui/llbadgeowner.h
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 8c7df45884..8c7df45884 100755..100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 7b4719866d..7b4719866d 100755..100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
diff --git a/indra/llui/llcallbackmap.h b/indra/llui/llcallbackmap.h
index 0a10877c09..0a10877c09 100755..100644
--- a/indra/llui/llcallbackmap.h
+++ b/indra/llui/llcallbackmap.h
diff --git a/indra/llui/llchat.h b/indra/llui/llchat.h
index f5b242fdfc..f5b242fdfc 100755..100644
--- a/indra/llui/llchat.h
+++ b/indra/llui/llchat.h
diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp
index dac001afab..dac001afab 100755..100644
--- a/indra/llui/llchatentry.cpp
+++ b/indra/llui/llchatentry.cpp
diff --git a/indra/llui/llchatentry.h b/indra/llui/llchatentry.h
index 3f13691a30..3f13691a30 100755..100644
--- a/indra/llui/llchatentry.h
+++ b/indra/llui/llchatentry.h
diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp
index eee6339caf..eee6339caf 100755..100644
--- a/indra/llui/llcheckboxctrl.cpp
+++ b/indra/llui/llcheckboxctrl.cpp
diff --git a/indra/llui/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h
index 5ce45b2135..5ce45b2135 100755..100644
--- a/indra/llui/llcheckboxctrl.h
+++ b/indra/llui/llcheckboxctrl.h
diff --git a/indra/llui/llclipboard.cpp b/indra/llui/llclipboard.cpp
index 1d18cb2bb0..1d18cb2bb0 100755..100644
--- a/indra/llui/llclipboard.cpp
+++ b/indra/llui/llclipboard.cpp
diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h
index 58d80e2687..58d80e2687 100755..100644
--- a/indra/llui/llclipboard.h
+++ b/indra/llui/llclipboard.h
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 559895da1a..559895da1a 100755..100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index c9b1212b70..c9b1212b70 100755..100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 3e159365e5..3e159365e5 100755..100644
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index f2f2145953..f2f2145953 100755..100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 26ae31cac6..26ae31cac6 100755..100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h
index 5ff05698b0..5ff05698b0 100755..100644
--- a/indra/llui/llconsole.h
+++ b/indra/llui/llconsole.h
diff --git a/indra/llui/llcontainerview.cpp b/indra/llui/llcontainerview.cpp
index 727fbe850e..727fbe850e 100755..100644
--- a/indra/llui/llcontainerview.cpp
+++ b/indra/llui/llcontainerview.cpp
diff --git a/indra/llui/llcontainerview.h b/indra/llui/llcontainerview.h
index ac92b19977..ac92b19977 100755..100644
--- a/indra/llui/llcontainerview.h
+++ b/indra/llui/llcontainerview.h
diff --git a/indra/llui/llctrlselectioninterface.cpp b/indra/llui/llctrlselectioninterface.cpp
index 7e886aff48..7e886aff48 100755..100644
--- a/indra/llui/llctrlselectioninterface.cpp
+++ b/indra/llui/llctrlselectioninterface.cpp
diff --git a/indra/llui/llctrlselectioninterface.h b/indra/llui/llctrlselectioninterface.h
index a7b089c8f9..a7b089c8f9 100755..100644
--- a/indra/llui/llctrlselectioninterface.h
+++ b/indra/llui/llctrlselectioninterface.h
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index c937d190c6..c937d190c6 100755..100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index 89c9852f4a..89c9852f4a 100755..100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index bd42497cb6..bd42497cb6 100755..100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h
index 98a9c7236d..98a9c7236d 100755..100644
--- a/indra/llui/lldockcontrol.h
+++ b/indra/llui/lldockcontrol.h
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index 48bf5bb80f..48bf5bb80f 100755..100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h
index e095e577b1..e095e577b1 100755..100644
--- a/indra/llui/lldraghandle.h
+++ b/indra/llui/lldraghandle.h
diff --git a/indra/llui/lleditmenuhandler.cpp b/indra/llui/lleditmenuhandler.cpp
index d48237e377..d48237e377 100755..100644
--- a/indra/llui/lleditmenuhandler.cpp
+++ b/indra/llui/lleditmenuhandler.cpp
diff --git a/indra/llui/lleditmenuhandler.h b/indra/llui/lleditmenuhandler.h
index 0932f094ef..0932f094ef 100755..100644
--- a/indra/llui/lleditmenuhandler.h
+++ b/indra/llui/lleditmenuhandler.h
diff --git a/indra/llui/llf32uictrl.cpp b/indra/llui/llf32uictrl.cpp
index d186f085b4..d186f085b4 100755..100644
--- a/indra/llui/llf32uictrl.cpp
+++ b/indra/llui/llf32uictrl.cpp
diff --git a/indra/llui/llf32uictrl.h b/indra/llui/llf32uictrl.h
index 6e648f9102..6e648f9102 100755..100644
--- a/indra/llui/llf32uictrl.h
+++ b/indra/llui/llf32uictrl.h
diff --git a/indra/llui/llfiltereditor.cpp b/indra/llui/llfiltereditor.cpp
index d62874d793..d62874d793 100755..100644
--- a/indra/llui/llfiltereditor.cpp
+++ b/indra/llui/llfiltereditor.cpp
diff --git a/indra/llui/llfiltereditor.h b/indra/llui/llfiltereditor.h
index 3a05bc05a1..3a05bc05a1 100755..100644
--- a/indra/llui/llfiltereditor.h
+++ b/indra/llui/llfiltereditor.h
diff --git a/indra/llui/llflashtimer.cpp b/indra/llui/llflashtimer.cpp
index 6d9c429b08..6d9c429b08 100755..100644
--- a/indra/llui/llflashtimer.cpp
+++ b/indra/llui/llflashtimer.cpp
diff --git a/indra/llui/llflashtimer.h b/indra/llui/llflashtimer.h
index db8d49f009..db8d49f009 100755..100644
--- a/indra/llui/llflashtimer.h
+++ b/indra/llui/llflashtimer.h
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 299f5e42d4..299f5e42d4 100755..100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 92bf429031..92bf429031 100755..100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 14f75a2352..1f9869fadc 100755..100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1326,7 +1326,7 @@ void LLFloater::setMinimized(BOOL minimize)
}
mMinimized = FALSE;
-
+ setFrontmost();
// Reshape *after* setting mMinimized
reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE );
}
@@ -1575,6 +1575,7 @@ BOOL LLFloater::handleMouseDown(S32 x, S32 y, MASK mask)
if(offerClickToButton(x, y, mask, BUTTON_TEAR_OFF)) return TRUE;
if(offerClickToButton(x, y, mask, BUTTON_DOCK)) return TRUE;
+ setFrontmost(TRUE, FALSE);
// Otherwise pass to drag handle for movement
return mDragHandle->handleMouseDown(x, y, mask);
}
@@ -1649,7 +1650,7 @@ void LLFloater::setVisibleAndFrontmost(BOOL take_focus,const LLSD& key)
}
}
-void LLFloater::setFrontmost(BOOL take_focus)
+void LLFloater::setFrontmost(BOOL take_focus, BOOL restore)
{
LLMultiFloater* hostp = getHost();
if (hostp)
@@ -1665,7 +1666,7 @@ void LLFloater::setFrontmost(BOOL take_focus)
LLFloaterView * parent = dynamic_cast<LLFloaterView*>( getParent() );
if (parent)
{
- parent->bringToFront(this, take_focus);
+ parent->bringToFront(this, take_focus, restore);
}
// Make sure to set the appropriate transparency type (STORM-732).
@@ -2262,7 +2263,7 @@ void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent)
for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
{
LLView* viewp = *child_it;
- LLFloater* floaterp = (LLFloater*)viewp;
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(viewp);
if (floaterp->isDependent())
{
// dependents are moved with their "dependee"
@@ -2319,8 +2320,11 @@ void LLFloaterView::restoreAll()
// make sure all subwindows aren't minimized
for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
{
- LLFloater* floaterp = (LLFloater*)*child_it;
- floaterp->setMinimized(FALSE);
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(*child_it);
+ if (floaterp)
+ {
+ floaterp->setMinimized(FALSE);
+ }
}
// *FIX: make sure dependents are restored
@@ -2394,7 +2398,7 @@ LLRect LLFloaterView::findNeighboringPosition( LLFloater* reference_floater, LLF
}
-void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus)
+void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus, BOOL restore)
{
if (!child)
return;
@@ -2478,7 +2482,12 @@ void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus)
{
sendChildToFront(child);
}
- child->setMinimized(FALSE);
+
+ if(restore)
+ {
+ child->setMinimized(FALSE);
+ }
+
if (give_focus && !gFocusMgr.childHasKeyboardFocus(child))
{
child->setFocus(TRUE);
@@ -2591,7 +2600,7 @@ void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom)
++child_it) //loop floaters
{
// Examine minimized children.
- LLFloater* floater = (LLFloater*)((LLView*)*child_it);
+ LLFloater* floater = dynamic_cast<LLFloater*>(*child_it);
if(floater->isMinimized())
{
LLRect r = floater->getRect();
@@ -2644,7 +2653,7 @@ void LLFloaterView::closeAllChildren(bool app_quitting)
continue;
}
- LLFloater* floaterp = (LLFloater*)viewp;
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(viewp);
// Attempt to close floater. This will cause the "do you want to save"
// dialogs to appear.
@@ -2710,8 +2719,7 @@ BOOL LLFloaterView::allChildrenClosed()
// by setting themselves invisible)
for (child_list_const_iter_t it = getChildList()->begin(); it != getChildList()->end(); ++it)
{
- LLView* viewp = *it;
- LLFloater* floaterp = (LLFloater*)viewp;
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
if (floaterp->getVisible() && !floaterp->isDead() && floaterp->isCloseable())
{
@@ -2947,7 +2955,7 @@ void LLFloaterView::syncFloaterTabOrder()
// otherwise, make sure the focused floater is in the front of the child list
for ( child_list_const_reverse_iter_t child_it = getChildList()->rbegin(); child_it != getChildList()->rend(); ++child_it)
{
- LLFloater* floaterp = (LLFloater*)*child_it;
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(*child_it);
if (gFocusMgr.childHasKeyboardFocus(floaterp))
{
bringToFront(floaterp, FALSE);
@@ -2969,7 +2977,7 @@ LLFloater* LLFloaterView::getParentFloater(LLView* viewp) const
if (parentp == this)
{
- return (LLFloater*)viewp;
+ return dynamic_cast<LLFloater*>(viewp);
}
return NULL;
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index ef7c6180d2..165f67499b 100755..100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -310,7 +310,7 @@ public:
/*virtual*/ void setVisible(BOOL visible); // do not override
/*virtual*/ void onVisibilityChange ( BOOL new_visibility ); // do not override
- void setFrontmost(BOOL take_focus = TRUE);
+ void setFrontmost(BOOL take_focus = TRUE, BOOL restore = TRUE);
virtual void setVisibleAndFrontmost(BOOL take_focus=TRUE, const LLSD& key = LLSD());
// Defaults to false.
@@ -547,7 +547,7 @@ public:
void setCycleMode(BOOL mode) { mFocusCycleMode = mode; }
BOOL getCycleMode() const { return mFocusCycleMode; }
- void bringToFront( LLFloater* child, BOOL give_focus = TRUE );
+ void bringToFront( LLFloater* child, BOOL give_focus = TRUE, BOOL restore = TRUE );
void highlightFocusedFloater();
void unhighlightFocusedFloater();
void focusFrontFloater();
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index 9ef290abc0..9ef290abc0 100755..100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index e3b17dcb4f..e3b17dcb4f 100755..100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
diff --git a/indra/llui/llfloaterreglistener.cpp b/indra/llui/llfloaterreglistener.cpp
index 7525b8cab3..7525b8cab3 100755..100644
--- a/indra/llui/llfloaterreglistener.cpp
+++ b/indra/llui/llfloaterreglistener.cpp
diff --git a/indra/llui/llfloaterreglistener.h b/indra/llui/llfloaterreglistener.h
index 24311a2dfa..24311a2dfa 100755..100644
--- a/indra/llui/llfloaterreglistener.h
+++ b/indra/llui/llfloaterreglistener.h
diff --git a/indra/llui/llflyoutbutton.cpp b/indra/llui/llflyoutbutton.cpp
index 4b3a0a5d21..4b3a0a5d21 100755..100644
--- a/indra/llui/llflyoutbutton.cpp
+++ b/indra/llui/llflyoutbutton.cpp
diff --git a/indra/llui/llflyoutbutton.h b/indra/llui/llflyoutbutton.h
index 36998eba2e..36998eba2e 100755..100644
--- a/indra/llui/llflyoutbutton.h
+++ b/indra/llui/llflyoutbutton.h
diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp
index 547f0bd398..1a51b96fdf 100755..100644
--- a/indra/llui/llfocusmgr.cpp
+++ b/indra/llui/llfocusmgr.cpp
@@ -47,11 +47,29 @@ BOOL LLFocusableElement::handleKey(KEY key, MASK mask, BOOL called_from_parent)
}
// virtual
+BOOL LLFocusableElement::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent)
+{
+ return FALSE;
+}
+
+// virtual
BOOL LLFocusableElement::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent)
{
return FALSE;
}
+// virtual
+bool LLFocusableElement::wantsKeyUpKeyDown() const
+{
+ return false;
+}
+
+//virtual
+bool LLFocusableElement::wantsReturnKey() const
+{
+ return false;
+}
+
// virtual
LLFocusableElement::~LLFocusableElement()
{
diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h
index afd2a8ce06..0e3d7d8e59 100755..100644
--- a/indra/llui/llfocusmgr.h
+++ b/indra/llui/llfocusmgr.h
@@ -57,8 +57,17 @@ public:
// These were brought up the hierarchy from LLView so that we don't have to use dynamic_cast when dealing with keyboard focus.
virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
+ virtual BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent);
virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
+ /**
+ * If true this LLFocusableElement wants to receive KEYUP and KEYDOWN messages
+ * even for normal character strokes.
+ * Default implementation returns false.
+ */
+ virtual bool wantsKeyUpKeyDown() const;
+ virtual bool wantsReturnKey() const;
+
virtual void onTopLost(); // called when registered as top ctrl and user clicks elsewhere
protected:
virtual void onFocusReceived();
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp
index 3282c5f726..8166ef6a07 100755..100644
--- a/indra/llui/llfolderview.cpp
+++ b/indra/llui/llfolderview.cpp
@@ -1629,9 +1629,9 @@ void LLFolderView::update()
if (mNeedsAutoSelect)
{
LL_RECORD_BLOCK_TIME(FTM_AUTO_SELECT);
- // select new item only if a filtered item not currently selected
+ // select new item only if a filtered item not currently selected and there was a selection
LLFolderViewItem* selected_itemp = mSelectedItems.empty() ? NULL : mSelectedItems.back();
- if (!mAutoSelectOverride && (!selected_itemp || !selected_itemp->getViewModelItem()->potentiallyVisible()))
+ if (!mAutoSelectOverride && selected_itemp && !selected_itemp->getViewModelItem()->potentiallyVisible())
{
// these are named variables to get around gcc not binding non-const references to rvalues
// and functor application is inherently non-const to allow for stateful functors
diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h
index 114dd7bd2f..b5deefd653 100755..100644
--- a/indra/llui/llfolderview.h
+++ b/indra/llui/llfolderview.h
@@ -242,6 +242,8 @@ public:
bool useLabelSuffix() { return mUseLabelSuffix; }
virtual void updateMenu();
+ void finishRenamingItem( void );
+
// Note: We may eventually have to move that method up the hierarchy to LLFolderViewItem.
LLHandle<LLFolderView> getHandle() const { return getDerivedHandle<LLFolderView>(); }
@@ -255,7 +257,6 @@ protected:
void commitRename( const LLSD& data );
void onRenamerLost();
- void finishRenamingItem( void );
void closeRenamer( void );
bool selectFirstItem();
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index 3def0386e1..5eb5ca4f82 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -972,6 +972,11 @@ void LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder)
mIndentation = (getParentFolder())
? getParentFolder()->getIndentation() + mLocalIndentation
: 0;
+
+ if(isOpen() && folder->isOpen())
+ {
+ requestArrange();
+ }
}
static LLTrace::BlockTimerStatHandle FTM_ARRANGE("Arrange");
diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h
index 0322c8836d..0322c8836d 100755..100644
--- a/indra/llui/llfolderviewitem.h
+++ b/indra/llui/llfolderviewitem.h
diff --git a/indra/llui/llfolderviewmodel.cpp b/indra/llui/llfolderviewmodel.cpp
index 3363dc5316..3363dc5316 100755..100644
--- a/indra/llui/llfolderviewmodel.cpp
+++ b/indra/llui/llfolderviewmodel.cpp
diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h
index a395af537a..a395af537a 100755..100644
--- a/indra/llui/llfolderviewmodel.h
+++ b/indra/llui/llfolderviewmodel.h
diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h
index f5364f4863..f5364f4863 100755..100644
--- a/indra/llui/llfunctorregistry.h
+++ b/indra/llui/llfunctorregistry.h
diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h
index 1726347a78..1726347a78 100755..100644
--- a/indra/llui/llhelp.h
+++ b/indra/llui/llhelp.h
diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp
index 58b66f60ca..82b01e705d 100755..100644
--- a/indra/llui/lliconctrl.cpp
+++ b/indra/llui/lliconctrl.cpp
@@ -54,7 +54,9 @@ LLIconCtrl::LLIconCtrl(const LLIconCtrl::Params& p)
mUseDrawContextAlpha(p.use_draw_context_alpha),
mPriority(0),
mMinWidth(p.min_width),
- mMinHeight(p.min_height)
+ mMinHeight(p.min_height),
+ mMaxWidth(0),
+ mMaxHeight(0)
{
if (mImagep.notNull())
{
@@ -81,7 +83,12 @@ void LLIconCtrl::draw()
// virtual
// value might be a string or a UUID
-void LLIconCtrl::setValue(const LLSD& value )
+void LLIconCtrl::setValue(const LLSD& value)
+{
+ setValue(value, mPriority);
+}
+
+void LLIconCtrl::setValue(const LLSD& value, S32 priority)
{
LLSD tvalue(value);
if (value.isString() && LLUUID::validate(value.asString()))
@@ -92,11 +99,11 @@ void LLIconCtrl::setValue(const LLSD& value )
LLUICtrl::setValue(tvalue);
if (tvalue.isUUID())
{
- mImagep = LLUI::getUIImageByID(tvalue.asUUID(), mPriority);
+ mImagep = LLUI::getUIImageByID(tvalue.asUUID(), priority);
}
else
{
- mImagep = LLUI::getUIImage(tvalue.asString(), mPriority);
+ mImagep = LLUI::getUIImage(tvalue.asString(), priority);
}
if(mImagep.notNull()
@@ -104,7 +111,15 @@ void LLIconCtrl::setValue(const LLSD& value )
&& mMinWidth
&& mMinHeight)
{
- mImagep->getImage()->setKnownDrawSize(llmax(mMinWidth, mImagep->getWidth()), llmax(mMinHeight, mImagep->getHeight()));
+ S32 desired_draw_width = llmax(mMinWidth, mImagep->getWidth());
+ S32 desired_draw_height = llmax(mMinHeight, mImagep->getHeight());
+ if (mMaxWidth && mMaxHeight)
+ {
+ desired_draw_width = llmin(desired_draw_width, mMaxWidth);
+ desired_draw_height = llmin(desired_draw_height, mMaxHeight);
+ }
+
+ mImagep->getImage()->setKnownDrawSize(desired_draw_width, desired_draw_height);
}
}
diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h
index 8b1092df46..dd83e78fd3 100755..100644
--- a/indra/llui/lliconctrl.h
+++ b/indra/llui/lliconctrl.h
@@ -59,6 +59,8 @@ protected:
LLIconCtrl(const Params&);
friend class LLUICtrlFactory;
+ void setValue(const LLSD& value, S32 priority);
+
public:
virtual ~LLIconCtrl();
@@ -79,7 +81,9 @@ protected:
//the output size of the icon image if set.
S32 mMinWidth,
- mMinHeight;
+ mMinHeight,
+ mMaxWidth,
+ mMaxHeight;
// If set to true (default), use the draw context transparency.
// If false, will use transparency returned by getCurrentTransparency(). See STORM-698.
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index 6750ee482a..69e338ddb9 100755..100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -296,7 +296,7 @@ void LLKeywords::processTokensGroup(const LLSD& tokens, const std::string& group
}
color_group = getColorGroup(group);
- LL_INFOS("SyntaxLSL") << "Group: '" << group << "', using color: '" << color_group << "'" << LL_ENDL;
+ LL_DEBUGS("SyntaxLSL") << "Group: '" << group << "', using color: '" << color_group << "'" << LL_ENDL;
if (tokens.isMap())
{
@@ -331,7 +331,14 @@ void LLKeywords::processTokensGroup(const LLSD& tokens, const std::string& group
switch (token_type)
{
case LLKeywordToken::TT_CONSTANT:
- color_group = getColorGroup(group + "-" + getAttribute("type"));
+ if (getAttribute("type").length() > 0)
+ {
+ color_group = getColorGroup(group + "-" + getAttribute("type"));
+ }
+ else
+ {
+ color_group = getColorGroup(group);
+ }
tooltip = "Type: " + getAttribute("type") + ", Value: " + getAttribute("value");
break;
case LLKeywordToken::TT_EVENT:
@@ -673,7 +680,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
S32 seg_start = cur - base;
S32 seg_end = seg_start + seg_len;
- // llinfos << "Seg: [" << word.c_str() << "]" << llendl;
+ // LL_INFOS("SyntaxLSL") << "Seg: [" << word.c_str() << "]" << LL_ENDL;
insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, defaultColor, editor);
}
@@ -740,10 +747,10 @@ void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSe
#ifdef _DEBUG
void LLKeywords::dump()
{
- llinfos << "LLKeywords" << llendl;
+ LL_INFOS() << "LLKeywords" << LL_ENDL;
- llinfos << "LLKeywords::sWordTokenMap" << llendl;
+ LL_INFOS() << "LLKeywords::sWordTokenMap" << LL_ENDL;
word_token_map_t::iterator word_token_iter = mWordTokenMap.begin();
while( word_token_iter != mWordTokenMap.end() )
{
@@ -752,7 +759,7 @@ void LLKeywords::dump()
++word_token_iter;
}
- llinfos << "LLKeywords::sLineTokenList" << llendl;
+ LL_INFOS() << "LLKeywords::sLineTokenList" << LL_ENDL;
for (token_list_t::iterator iter = mLineTokenList.begin();
iter != mLineTokenList.end(); ++iter)
{
@@ -761,7 +768,7 @@ void LLKeywords::dump()
}
- llinfos << "LLKeywords::sDelimiterTokenList" << llendl;
+ LL_INFOS() << "LLKeywords::sDelimiterTokenList" << LL_ENDL;
for (token_list_t::iterator iter = mDelimiterTokenList.begin();
iter != mDelimiterTokenList.end(); ++iter)
{
@@ -772,12 +779,12 @@ void LLKeywords::dump()
void LLKeywordToken::dump()
{
- llinfos << "[" <<
+ LL_INFOS() << "[" <<
mColor.mV[VX] << ", " <<
mColor.mV[VY] << ", " <<
mColor.mV[VZ] << "] [" <<
wstring_to_utf8str(mToken) << "]" <<
- llendl;
+ LL_ENDL;
}
#endif // DEBUG
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index 18e2ed06c5..18e2ed06c5 100755..100644
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 69246a2f57..69246a2f57 100755..100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index a245ebe1b9..a245ebe1b9 100755..100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
diff --git a/indra/llui/lllazyvalue.h b/indra/llui/lllazyvalue.h
index 0fc95d9efa..0fc95d9efa 100755..100644
--- a/indra/llui/lllazyvalue.h
+++ b/indra/llui/lllazyvalue.h
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index a08cf91a69..492c9315d1 100755..100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -400,12 +400,7 @@ void LLLineEditor::setText(const LLStringExplicit &new_text)
if (mMaxLengthChars)
{
- LLWString truncated_wstring = utf8str_to_wstring(truncated_utf8);
- if (truncated_wstring.size() > (U32)mMaxLengthChars)
- {
- truncated_wstring = truncated_wstring.substr(0, mMaxLengthChars);
- }
- mText.assign(wstring_to_utf8str(truncated_wstring));
+ mText.assign(utf8str_symbol_truncate(truncated_utf8, mMaxLengthChars));
}
if (all_selected)
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index c6d472f59b..c6d472f59b 100755..100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
diff --git a/indra/llui/llloadingindicator.cpp b/indra/llui/llloadingindicator.cpp
index 1ede5b706f..1ede5b706f 100755..100644
--- a/indra/llui/llloadingindicator.cpp
+++ b/indra/llui/llloadingindicator.cpp
diff --git a/indra/llui/llloadingindicator.h b/indra/llui/llloadingindicator.h
index ffcb329f42..ffcb329f42 100755..100644
--- a/indra/llui/llloadingindicator.h
+++ b/indra/llui/llloadingindicator.h
diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp
index f3a526faeb..f3a526faeb 100755..100644
--- a/indra/llui/lllocalcliprect.cpp
+++ b/indra/llui/lllocalcliprect.cpp
diff --git a/indra/llui/lllocalcliprect.h b/indra/llui/lllocalcliprect.h
index eeeaf2adb6..eeeaf2adb6 100755..100644
--- a/indra/llui/lllocalcliprect.h
+++ b/indra/llui/lllocalcliprect.h
diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp
index 303afcda15..303afcda15 100755..100644
--- a/indra/llui/llmenubutton.cpp
+++ b/indra/llui/llmenubutton.cpp
diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h
index 67ec1983b3..67ec1983b3 100755..100644
--- a/indra/llui/llmenubutton.h
+++ b/indra/llui/llmenubutton.h
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 848367f8a8..848367f8a8 100755..100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 628dedb906..628dedb906 100755..100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp
index 8cf88ad5eb..8cf88ad5eb 100755..100644
--- a/indra/llui/llmodaldialog.cpp
+++ b/indra/llui/llmodaldialog.cpp
diff --git a/indra/llui/llmodaldialog.h b/indra/llui/llmodaldialog.h
index f81273b96a..f81273b96a 100755..100644
--- a/indra/llui/llmodaldialog.h
+++ b/indra/llui/llmodaldialog.h
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
index d1a597511e..d1a597511e 100755..100644
--- a/indra/llui/llmultifloater.cpp
+++ b/indra/llui/llmultifloater.cpp
diff --git a/indra/llui/llmultifloater.h b/indra/llui/llmultifloater.h
index c106a62527..c106a62527 100755..100644
--- a/indra/llui/llmultifloater.h
+++ b/indra/llui/llmultifloater.h
diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp
index 0aa3e17075..0aa3e17075 100755..100644
--- a/indra/llui/llmultislider.cpp
+++ b/indra/llui/llmultislider.cpp
diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h
index 2b422e89c9..2b422e89c9 100755..100644
--- a/indra/llui/llmultislider.h
+++ b/indra/llui/llmultislider.h
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index c460a08afc..c460a08afc 100755..100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h
index b6a3542376..b6a3542376 100755..100644
--- a/indra/llui/llmultisliderctrl.h
+++ b/indra/llui/llmultisliderctrl.h
diff --git a/indra/llui/llnotificationptr.h b/indra/llui/llnotificationptr.h
index acc047527f..acc047527f 100755..100644
--- a/indra/llui/llnotificationptr.h
+++ b/indra/llui/llnotificationptr.h
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 7e235997d8..0cb959a315 100755..100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -417,6 +417,7 @@ LLNotificationTemplate::LLNotificationTemplate(const LLNotificationTemplate::Par
mExpireOption(p.expire_option),
mURLOption(p.url.option),
mURLTarget(p.url.target),
+ mForceUrlsExternal(p.force_urls_external),
mUnique(p.unique.isProvided()),
mCombineBehavior(p.unique.combine),
mPriority(p.priority),
@@ -748,6 +749,11 @@ S32 LLNotification::getURLOpenExternally() const
return(mTemplatep? mTemplatep->mURLTarget == "_external": -1);
}
+bool LLNotification::getForceUrlsExternal() const
+{
+ return (mTemplatep ? mTemplatep->mForceUrlsExternal : false);
+}
+
bool LLNotification::hasUniquenessConstraints() const
{
return (mTemplatep ? mTemplatep->mUnique : false);
@@ -1715,6 +1721,30 @@ void LLNotifications::cancelByName(const std::string& name)
}
}
+void LLNotifications::cancelByOwner(const LLUUID ownerId)
+{
+ std::vector<LLNotificationPtr> notifs_to_cancel;
+ for (LLNotificationSet::iterator it = mItems.begin(), end_it = mItems.end();
+ it != end_it;
+ ++it)
+ {
+ LLNotificationPtr pNotif = *it;
+ if (pNotif && pNotif->getPayload().get("owner_id").asUUID() == ownerId)
+ {
+ notifs_to_cancel.push_back(pNotif);
+ }
+ }
+
+ for (std::vector<LLNotificationPtr>::iterator it = notifs_to_cancel.begin(), end_it = notifs_to_cancel.end();
+ it != end_it;
+ ++it)
+ {
+ LLNotificationPtr pNotif = *it;
+ pNotif->cancel();
+ updateItem(LLSD().with("sigtype", "delete").with("id", pNotif->id()), pNotif);
+ }
+}
+
void LLNotifications::update(const LLNotificationPtr pNotif)
{
LLNotificationSet::iterator it=mItems.find(pNotif);
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 0d673d178b..354add0b82 100755..100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -553,7 +553,8 @@ public:
std::string getLabel() const;
std::string getURL() const;
S32 getURLOption() const;
- S32 getURLOpenExternally() const;
+ S32 getURLOpenExternally() const; //for url responce option
+ bool getForceUrlsExternal() const;
bool canLogToChat() const;
bool canLogToIM() const;
bool canShowToast() const;
@@ -924,6 +925,7 @@ public:
void add(const LLNotificationPtr pNotif);
void cancel(LLNotificationPtr pNotif);
void cancelByName(const std::string& name);
+ void cancelByOwner(const LLUUID ownerId);
void update(const LLNotificationPtr pNotif);
LLNotificationPtr find(LLUUID uuid);
diff --git a/indra/llui/llnotificationsutil.cpp b/indra/llui/llnotificationsutil.cpp
index cc791c26d1..cc791c26d1 100755..100644
--- a/indra/llui/llnotificationsutil.cpp
+++ b/indra/llui/llnotificationsutil.cpp
diff --git a/indra/llui/llnotificationsutil.h b/indra/llui/llnotificationsutil.h
index 9f29087b4a..9f29087b4a 100755..100644
--- a/indra/llui/llnotificationsutil.h
+++ b/indra/llui/llnotificationsutil.h
diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h
index c23fc53763..bed29254d8 100755..100644
--- a/indra/llui/llnotificationtemplate.h
+++ b/indra/llui/llnotificationtemplate.h
@@ -177,7 +177,8 @@ struct LLNotificationTemplate
Optional<bool> persist,
log_to_im,
show_toast,
- log_to_chat;
+ log_to_chat,
+ force_urls_external;
Optional<std::string> functor,
icon,
label,
@@ -201,6 +202,7 @@ struct LLNotificationTemplate
log_to_im("log_to_im", false),
show_toast("show_toast", true),
log_to_chat("log_to_chat", true),
+ force_urls_external("force_urls_external", false),
functor("functor"),
icon("icon"),
label("label"),
@@ -284,11 +286,16 @@ struct LLNotificationTemplate
// that URL. Obsolete this and eliminate the buttons for affected
// messages when we allow clickable URLs in the UI
U32 mURLOption;
-
- std::string mURLTarget;
- //This is a flag that tells if the url needs to open externally dispite
+
+ //This is a flag that tells if option url needs to open externally dispite
//what the user setting is.
-
+ std::string mURLTarget;
+
+ // All links clicked inside notification will be opened in external browser
+ // Note: Some notifications block and exit viewer, yet they provide a link
+ // to click, we should be able to open such links in external browser.
+ bool mForceUrlsExternal;
+
// does this notification persist across sessions? if so, it will be
// serialized to disk on first receipt and read on startup
bool mPersist;
diff --git a/indra/llui/llnotificationvisibilityrule.h b/indra/llui/llnotificationvisibilityrule.h
index 78788a275c..78788a275c 100755..100644
--- a/indra/llui/llnotificationvisibilityrule.h
+++ b/indra/llui/llnotificationvisibilityrule.h
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index ee90574161..ee90574161 100755..100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index c2185f24de..c2185f24de 100755..100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
diff --git a/indra/llui/llprogressbar.cpp b/indra/llui/llprogressbar.cpp
index 209796565c..209796565c 100755..100644
--- a/indra/llui/llprogressbar.cpp
+++ b/indra/llui/llprogressbar.cpp
diff --git a/indra/llui/llprogressbar.h b/indra/llui/llprogressbar.h
index a8ec83ea00..a8ec83ea00 100755..100644
--- a/indra/llui/llprogressbar.h
+++ b/indra/llui/llprogressbar.h
diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
index b53bb16d97..8cf72928ff 100755..100644
--- a/indra/llui/llradiogroup.cpp
+++ b/indra/llui/llradiogroup.cpp
@@ -179,6 +179,18 @@ BOOL LLRadioGroup::setSelectedIndex(S32 index, BOOL from_event)
return FALSE;
}
+ if (index < -1)
+ {
+ // less then minimum value
+ return FALSE;
+ }
+
+ if (index < 0 && mSelectedIndex >= 0 && !mAllowDeselect)
+ {
+ // -1 is "nothing selected"
+ return FALSE;
+ }
+
if (mSelectedIndex >= 0)
{
LLRadioCtrl* old_radio_item = mRadioButtons[mSelectedIndex];
diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h
index 8bd5698538..8bd5698538 100755..100644
--- a/indra/llui/llradiogroup.h
+++ b/indra/llui/llradiogroup.h
diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp
index 115c4e23be..115c4e23be 100755..100644
--- a/indra/llui/llresizebar.cpp
+++ b/indra/llui/llresizebar.cpp
diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h
index 20a2406484..20a2406484 100755..100644
--- a/indra/llui/llresizebar.h
+++ b/indra/llui/llresizebar.h
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 24794305ac..24794305ac 100755..100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
index 7541b9e6c0..7541b9e6c0 100755..100644
--- a/indra/llui/llresizehandle.h
+++ b/indra/llui/llresizehandle.h
diff --git a/indra/llui/llresmgr.cpp b/indra/llui/llresmgr.cpp
index 6e924c1f19..6e924c1f19 100755..100644
--- a/indra/llui/llresmgr.cpp
+++ b/indra/llui/llresmgr.cpp
diff --git a/indra/llui/llresmgr.h b/indra/llui/llresmgr.h
index a652dcd2c0..a652dcd2c0 100755..100644
--- a/indra/llui/llresmgr.h
+++ b/indra/llui/llresmgr.h
diff --git a/indra/llui/llrngwriter.cpp b/indra/llui/llrngwriter.cpp
index e4a31d6a79..e4a31d6a79 100755..100644
--- a/indra/llui/llrngwriter.cpp
+++ b/indra/llui/llrngwriter.cpp
diff --git a/indra/llui/llrngwriter.h b/indra/llui/llrngwriter.h
index c33aa28613..c33aa28613 100755..100644
--- a/indra/llui/llrngwriter.h
+++ b/indra/llui/llrngwriter.h
diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp
index 76134144a0..76134144a0 100755..100644
--- a/indra/llui/llscrollbar.cpp
+++ b/indra/llui/llscrollbar.cpp
diff --git a/indra/llui/llscrollbar.h b/indra/llui/llscrollbar.h
index e2bf52c14b..e2bf52c14b 100755..100644
--- a/indra/llui/llscrollbar.h
+++ b/indra/llui/llscrollbar.h
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
index f70eebc594..f70eebc594 100755..100644
--- a/indra/llui/llscrollcontainer.cpp
+++ b/indra/llui/llscrollcontainer.cpp
diff --git a/indra/llui/llscrollcontainer.h b/indra/llui/llscrollcontainer.h
index f64cf43a8e..f64cf43a8e 100755..100644
--- a/indra/llui/llscrollcontainer.h
+++ b/indra/llui/llscrollcontainer.h
diff --git a/indra/llui/llscrollingpanellist.cpp b/indra/llui/llscrollingpanellist.cpp
index b6f2eb8ba2..b6f2eb8ba2 100755..100644
--- a/indra/llui/llscrollingpanellist.cpp
+++ b/indra/llui/llscrollingpanellist.cpp
diff --git a/indra/llui/llscrollingpanellist.h b/indra/llui/llscrollingpanellist.h
index e8df176ec3..e8df176ec3 100755..100644
--- a/indra/llui/llscrollingpanellist.h
+++ b/indra/llui/llscrollingpanellist.h
diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp
index 8000efad0e..8000efad0e 100755..100644
--- a/indra/llui/llscrolllistcell.cpp
+++ b/indra/llui/llscrolllistcell.cpp
diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h
index d625ebddcc..d625ebddcc 100755..100644
--- a/indra/llui/llscrolllistcell.h
+++ b/indra/llui/llscrolllistcell.h
diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp
index cc9ff7a487..cc9ff7a487 100755..100644
--- a/indra/llui/llscrolllistcolumn.cpp
+++ b/indra/llui/llscrolllistcolumn.cpp
diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h
index b4d4a6d05e..b4d4a6d05e 100755..100644
--- a/indra/llui/llscrolllistcolumn.h
+++ b/indra/llui/llscrolllistcolumn.h
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index db8fdc46b7..db8fdc46b7 100755..100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 6325a79cd5..6325a79cd5 100755..100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp
index df22c88afb..df22c88afb 100755..100644
--- a/indra/llui/llscrolllistitem.cpp
+++ b/indra/llui/llscrolllistitem.cpp
diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h
index 13655b5873..13655b5873 100755..100644
--- a/indra/llui/llscrolllistitem.h
+++ b/indra/llui/llscrolllistitem.h
diff --git a/indra/llui/llsearcheditor.cpp b/indra/llui/llsearcheditor.cpp
index 1fdd05a11c..1fdd05a11c 100755..100644
--- a/indra/llui/llsearcheditor.cpp
+++ b/indra/llui/llsearcheditor.cpp
diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h
index 3b12868225..3b12868225 100755..100644
--- a/indra/llui/llsearcheditor.h
+++ b/indra/llui/llsearcheditor.h
diff --git a/indra/llui/llslider.cpp b/indra/llui/llslider.cpp
index ebbb951ee6..ebbb951ee6 100755..100644
--- a/indra/llui/llslider.cpp
+++ b/indra/llui/llslider.cpp
diff --git a/indra/llui/llslider.h b/indra/llui/llslider.h
index 3b492d8182..3b492d8182 100755..100644
--- a/indra/llui/llslider.h
+++ b/indra/llui/llslider.h
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index 0056cb6dc4..0056cb6dc4 100755..100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
diff --git a/indra/llui/llsliderctrl.h b/indra/llui/llsliderctrl.h
index 67cca9ef04..67cca9ef04 100755..100644
--- a/indra/llui/llsliderctrl.h
+++ b/indra/llui/llsliderctrl.h
diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp
index 0db4281059..0db4281059 100755..100644
--- a/indra/llui/llspellcheck.cpp
+++ b/indra/llui/llspellcheck.cpp
diff --git a/indra/llui/llspellcheck.h b/indra/llui/llspellcheck.h
index 5ecc9aa110..5ecc9aa110 100755..100644
--- a/indra/llui/llspellcheck.h
+++ b/indra/llui/llspellcheck.h
diff --git a/indra/llui/llspellcheckmenuhandler.h b/indra/llui/llspellcheckmenuhandler.h
index d5c95bad39..d5c95bad39 100755..100644
--- a/indra/llui/llspellcheckmenuhandler.h
+++ b/indra/llui/llspellcheckmenuhandler.h
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index 8b1ba406c8..8b1ba406c8 100755..100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
index e34add879d..e34add879d 100755..100644
--- a/indra/llui/llspinctrl.h
+++ b/indra/llui/llspinctrl.h
diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp
index 35f5330a3f..35f5330a3f 100755..100644
--- a/indra/llui/llstatbar.cpp
+++ b/indra/llui/llstatbar.cpp
diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h
index 1ff4c67fc5..1ff4c67fc5 100755..100644
--- a/indra/llui/llstatbar.h
+++ b/indra/llui/llstatbar.h
diff --git a/indra/llui/llstatgraph.cpp b/indra/llui/llstatgraph.cpp
index 3fe314e77a..3fe314e77a 100755..100644
--- a/indra/llui/llstatgraph.cpp
+++ b/indra/llui/llstatgraph.cpp
diff --git a/indra/llui/llstatgraph.h b/indra/llui/llstatgraph.h
index f381e92a4d..f381e92a4d 100755..100644
--- a/indra/llui/llstatgraph.h
+++ b/indra/llui/llstatgraph.h
diff --git a/indra/llui/llstatview.cpp b/indra/llui/llstatview.cpp
index eda2d6047f..eda2d6047f 100755..100644
--- a/indra/llui/llstatview.cpp
+++ b/indra/llui/llstatview.cpp
diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h
index bc78d3b5fd..bc78d3b5fd 100755..100644
--- a/indra/llui/llstatview.h
+++ b/indra/llui/llstatview.h
diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp
index bb731f4f7e..bb731f4f7e 100755..100644
--- a/indra/llui/llstyle.cpp
+++ b/indra/llui/llstyle.cpp
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
index 9f1eba79d8..9f1eba79d8 100755..100644
--- a/indra/llui/llstyle.h
+++ b/indra/llui/llstyle.h
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 701a06a085..701a06a085 100755..100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 057809dc42..057809dc42 100755..100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index bf660849c4..c7d7535f87 100755..100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -164,6 +164,7 @@ LLTextBase::Params::Params()
trusted_content("trusted_content", true),
use_ellipses("use_ellipses", false),
parse_urls("parse_urls", false),
+ force_urls_external("force_urls_external", false),
parse_highlights("parse_highlights", false)
{
addSynonym(track_end, "track_bottom");
@@ -176,6 +177,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
: LLUICtrl(p, LLTextViewModelPtr(new LLTextViewModel)),
mURLClickSignal(NULL),
mIsFriendSignal(NULL),
+ mIsObjectBlockedSignal(NULL),
mMaxTextByteLength( p.max_text_length ),
mFont(p.font),
mFontShadow(p.font_shadow),
@@ -216,6 +218,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
mWordWrap(p.wrap),
mUseEllipses( p.use_ellipses ),
mParseHTML(p.parse_urls),
+ mForceUrlsExternal(p.force_urls_external),
mParseHighlights(p.parse_highlights),
mBGVisible(p.bg_visible),
mScroller(NULL),
@@ -266,6 +269,8 @@ LLTextBase::~LLTextBase()
{
mSegments.clear();
delete mURLClickSignal;
+ delete mIsFriendSignal;
+ delete mIsObjectBlockedSignal;
}
void LLTextBase::initFromParams(const LLTextBase::Params& p)
@@ -673,7 +678,7 @@ void LLTextBase::drawText()
line_end = next_start;
}
- LLRect text_rect(line.mRect);
+ LLRectf text_rect(line.mRect.mLeft, line.mRect.mTop, line.mRect.mRight, line.mRect.mBottom);
text_rect.mRight = mDocumentView->getRect().getWidth(); // clamp right edge to document extents
text_rect.translate(mDocumentView->getRect().mLeft, mDocumentView->getRect().mBottom); // adjust by scroll position
@@ -746,7 +751,7 @@ void LLTextBase::drawText()
++misspell_it;
}
- text_rect.mLeft = (S32)(cur_segment->draw(seg_start - cur_segment->getStart(), clipped_end, selection_left, selection_right, text_rect));
+ text_rect.mLeft = cur_segment->draw(seg_start - cur_segment->getStart(), clipped_end, selection_left, selection_right, text_rect);
seg_start = clipped_end + cur_segment->getStart();
}
@@ -1317,6 +1322,7 @@ void LLTextBase::replaceWithSuggestion(U32 index)
setCursorPos(it->first + (S32)suggestion.length());
+ onSpellCheckPerformed();
break;
}
@@ -1937,8 +1943,9 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url)
registrar.add("Url.Open", boost::bind(&LLUrlAction::openURL, url));
registrar.add("Url.OpenInternal", boost::bind(&LLUrlAction::openURLInternal, url));
registrar.add("Url.OpenExternal", boost::bind(&LLUrlAction::openURLExternal, url));
- registrar.add("Url.Execute", boost::bind(&LLUrlAction::executeSLURL, url));
+ registrar.add("Url.Execute", boost::bind(&LLUrlAction::executeSLURL, url, true));
registrar.add("Url.Block", boost::bind(&LLUrlAction::blockObject, url));
+ registrar.add("Url.Unblock", boost::bind(&LLUrlAction::unblockObject, url));
registrar.add("Url.Teleport", boost::bind(&LLUrlAction::teleportToLocation, url));
registrar.add("Url.ShowProfile", boost::bind(&LLUrlAction::showProfile, url));
registrar.add("Url.AddFriend", boost::bind(&LLUrlAction::addFriend, url));
@@ -1965,6 +1972,19 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url)
removeFriendButton->setEnabled(isFriend);
}
}
+
+ if (mIsObjectBlockedSignal)
+ {
+ bool is_blocked = *(*mIsObjectBlockedSignal)(LLUUID(LLUrlAction::getObjectId(url)), LLUrlAction::getObjectName(url));
+ LLView* blockButton = mPopupMenu->getChild<LLView>("block_object");
+ LLView* unblockButton = mPopupMenu->getChild<LLView>("unblock_object");
+
+ if (blockButton && unblockButton)
+ {
+ blockButton->setVisible(!is_blocked);
+ unblockButton->setVisible(is_blocked);
+ }
+ }
if (mPopupMenu)
{
@@ -3019,6 +3039,15 @@ boost::signals2::connection LLTextBase::setIsFriendCallback(const is_friend_sign
return mIsFriendSignal->connect(cb);
}
+boost::signals2::connection LLTextBase::setIsObjectBlockedCallback(const is_blocked_signal_t::slot_type& cb)
+{
+ if (!mIsObjectBlockedSignal)
+ {
+ mIsObjectBlockedSignal = new is_blocked_signal_t();
+ }
+ return mIsObjectBlockedSignal->connect(cb);
+}
+
//
// LLTextSegment
//
@@ -3030,7 +3059,7 @@ bool LLTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32
S32 LLTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const { return 0; }
S32 LLTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const { return 0; }
void LLTextSegment::updateLayout(const LLTextBase& editor) {}
-F32 LLTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect) { return draw_rect.mLeft; }
+F32 LLTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect) { return draw_rect.mLeft; }
bool LLTextSegment::canEdit() const { return false; }
void LLTextSegment::unlinkFromDocument(LLTextBase*) {}
void LLTextSegment::linkToDocument(LLTextBase*) {}
@@ -3096,7 +3125,7 @@ LLNormalTextSegment::~LLNormalTextSegment()
}
-F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
+F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
{
if( end - start > 0 )
{
@@ -3106,7 +3135,7 @@ F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selec
}
// Draws a single text segment, reversing the color for selection if needed.
-F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 selection_start, S32 selection_end, LLRect rect)
+F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 selection_start, S32 selection_end, LLRectf rect)
{
F32 alpha = LLViewDrawContext::getCurrentContext().mAlpha;
@@ -3138,7 +3167,7 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
&right_x,
mEditor.getUseEllipses());
}
- rect.mLeft = (S32)ceil(right_x);
+ rect.mLeft = right_x;
if( (selection_start < seg_end) && (selection_end > seg_start) )
{
@@ -3157,7 +3186,7 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
&right_x,
mEditor.getUseEllipses());
}
- rect.mLeft = (S32)ceil(right_x);
+ rect.mLeft = right_x;
if( selection_end < seg_end )
{
// Draw normally
@@ -3174,7 +3203,7 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
&right_x,
mEditor.getUseEllipses());
}
- return right_x;
+ return right_x;
}
BOOL LLNormalTextSegment::handleHover(S32 x, S32 y, MASK mask)
@@ -3227,7 +3256,15 @@ BOOL LLNormalTextSegment::handleMouseUp(S32 x, S32 y, MASK mask)
// Only process the click if it's actually in this segment, not to the right of the end-of-line.
if(mEditor.getSegmentAtLocalPos(x, y, false) == this)
{
- LLUrlAction::clickAction(getStyle()->getLinkHREF(), mEditor.isContentTrusted());
+ std::string url = getStyle()->getLinkHREF();
+ if (!mEditor.mForceUrlsExternal)
+ {
+ LLUrlAction::clickAction(url, mEditor.isContentTrusted());
+ }
+ else if (!LLUrlAction::executeSLURL(url, mEditor.isContentTrusted()))
+ {
+ LLUrlAction::openURLExternal(url);
+ }
return TRUE;
}
}
@@ -3405,7 +3442,7 @@ LLOnHoverChangeableTextSegment::LLOnHoverChangeableTextSegment( LLStyleConstSP s
mNormalStyle(normal_style){}
/*virtual*/
-F32 LLOnHoverChangeableTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
+F32 LLOnHoverChangeableTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
{
F32 result = LLNormalTextSegment::draw(start, end, selection_start, selection_end, draw_rect);
if (end == mEnd - mStart)
@@ -3483,7 +3520,7 @@ void LLInlineViewSegment::updateLayout(const LLTextBase& editor)
mView->setOrigin(start_rect.mLeft + mLeftPad, start_rect.mBottom + mBottomPad);
}
-F32 LLInlineViewSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
+F32 LLInlineViewSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
{
// return padded width of widget
// widget is actually drawn during mDocumentView's draw()
@@ -3524,7 +3561,7 @@ S32 LLLineBreakTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32
{
return 1;
}
-F32 LLLineBreakTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
+F32 LLLineBreakTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
{
return draw_rect.mLeft;
}
@@ -3590,7 +3627,7 @@ void LLImageTextSegment::setToolTip(const std::string& tooltip)
mTooltip = tooltip;
}
-F32 LLImageTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
+F32 LLImageTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
{
if ( (start >= 0) && (end <= mEnd - mStart))
{
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 87809aa8fb..85641fd899 100755..100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -66,7 +66,7 @@ public:
virtual S32 getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;
virtual S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;
virtual void updateLayout(const class LLTextBase& editor);
- virtual F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
+ virtual F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
virtual bool canEdit() const;
virtual void unlinkFromDocument(class LLTextBase* editor);
virtual void linkToDocument(class LLTextBase* editor);
@@ -117,7 +117,7 @@ public:
/*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
/*virtual*/ S32 getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;
/*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;
- /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
+ /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
/*virtual*/ bool canEdit() const { return true; }
/*virtual*/ const LLColor4& getColor() const { return mStyle->getColor(); }
/*virtual*/ LLStyleConstSP getStyle() const { return mStyle; }
@@ -135,7 +135,7 @@ public:
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
protected:
- F32 drawClippedSegment(S32 seg_start, S32 seg_end, S32 selection_start, S32 selection_end, LLRect rect);
+ F32 drawClippedSegment(S32 seg_start, S32 seg_end, S32 selection_start, S32 selection_end, LLRectf rect);
virtual const LLWString& getWText() const;
virtual const S32 getLength() const;
@@ -169,7 +169,7 @@ class LLOnHoverChangeableTextSegment : public LLNormalTextSegment
{
public:
LLOnHoverChangeableTextSegment( LLStyleConstSP style, LLStyleConstSP normal_style, S32 start, S32 end, LLTextBase& editor );
- /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
+ /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
protected:
// Style used for text when mouse pointer is over segment
@@ -203,7 +203,7 @@ public:
/*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
/*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;
/*virtual*/ void updateLayout(const class LLTextBase& editor);
- /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
+ /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
/*virtual*/ bool canEdit() const { return false; }
/*virtual*/ void unlinkFromDocument(class LLTextBase* editor);
/*virtual*/ void linkToDocument(class LLTextBase* editor);
@@ -226,7 +226,7 @@ public:
~LLLineBreakTextSegment();
bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;
- F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
+ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
private:
S32 mFontHeight;
@@ -239,7 +239,7 @@ public:
~LLImageTextSegment();
bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;
- F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
+ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
/*virtual*/ void setToolTip(const std::string& tooltip);
@@ -270,6 +270,7 @@ public:
friend class LLUICtrlFactory;
typedef boost::signals2::signal<bool (const LLUUID& user_id)> is_friend_signal_t;
+ typedef boost::signals2::signal<bool (const LLUUID& blocked_id, const std::string from)> is_blocked_signal_t;
struct LineSpacingParams : public LLInitParam::ChoiceBlock<LineSpacingParams>
{
@@ -300,6 +301,7 @@ public:
wrap,
use_ellipses,
parse_urls,
+ force_urls_external,
parse_highlights,
clip,
clip_partial,
@@ -368,6 +370,7 @@ public:
std::string getMisspelledWord(U32 pos) const;
bool isMisspelledWord(U32 pos) const;
void onSpellCheckSettingsChange();
+ virtual void onSpellCheckPerformed(){}
// used by LLTextSegment layout code
bool getWordWrap() { return mWordWrap; }
@@ -454,6 +457,7 @@ public:
virtual void appendWidget(const LLInlineViewSegment::Params& params, const std::string& text, bool allow_undo);
boost::signals2::connection setURLClickedCallback(const commit_signal_t::slot_type& cb);
boost::signals2::connection setIsFriendCallback(const is_friend_signal_t::slot_type& cb);
+ boost::signals2::connection setIsObjectBlockedCallback(const is_blocked_signal_t::slot_type& cb);
void setWordWrap(bool wrap);
LLScrollContainer* getScrollContainer() const { return mScroller; }
@@ -654,6 +658,7 @@ protected:
S32 mLineSpacingPixels; // padding between lines
bool mBorderVisible;
bool mParseHTML; // make URLs interactive
+ bool mForceUrlsExternal; // URLs from this textbox will be opened in external browser
bool mParseHighlights; // highlight user-defined keywords
bool mWordWrap;
bool mUseEllipses;
@@ -682,6 +687,7 @@ protected:
// Used to check if user with given ID is avatar's friend
is_friend_signal_t* mIsFriendSignal;
+ is_blocked_signal_t* mIsObjectBlockedSignal;
LLUIString mLabel; // text label that is visible when no user text provided
};
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
index d175204e6d..d175204e6d 100755..100644
--- a/indra/llui/lltextbox.cpp
+++ b/indra/llui/lltextbox.cpp
diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h
index 071e18c638..071e18c638 100755..100644
--- a/indra/llui/lltextbox.h
+++ b/indra/llui/lltextbox.h
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 926326aaff..73f961b36b 100755..100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -1716,7 +1716,20 @@ void LLTextEditor::unindentLineBeforeCloseBrace()
LLWString text = getWText();
if( ' ' == text[ mCursorPos - 1 ] )
{
- removeCharOrTab();
+ S32 line = getLineNumFromDocIndex(mCursorPos, false);
+ S32 line_start = getLineStart(line);
+
+ // Jump over spaces in the current line
+ while ((' ' == text[line_start]) && (line_start < mCursorPos))
+ {
+ line_start++;
+ }
+
+ // Make sure there is nothing but ' ' before the Brace we are unindenting
+ if (line_start == mCursorPos)
+ {
+ removeCharOrTab();
+ }
}
}
}
@@ -1800,7 +1813,7 @@ BOOL LLTextEditor::handleUnicodeCharHere(llwchar uni_char)
// Handle most keys only if the text editor is writeable.
if( !mReadOnly )
{
- if( '}' == uni_char )
+ if( mAutoIndent && '}' == uni_char )
{
unindentLineBeforeCloseBrace();
}
@@ -2380,6 +2393,14 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars)
//----------------------------------------------------------------------------
+void LLTextEditor::onSpellCheckPerformed()
+{
+ if (isPristine())
+ {
+ mBaseDocIsPristine = FALSE;
+ }
+}
+
void LLTextEditor::makePristine()
{
mPristineCmd = mLastCmd;
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index f6bdf917b4..26702b2412 100755..100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -160,6 +160,8 @@ public:
autoreplace_callback_t mAutoreplaceCallback;
void setAutoreplaceCallback(autoreplace_callback_t cb) { mAutoreplaceCallback = cb; }
+ /*virtual*/ void onSpellCheckPerformed();
+
//
// Text manipulation
//
diff --git a/indra/llui/lltextparser.cpp b/indra/llui/lltextparser.cpp
index 0b36241da0..0b36241da0 100755..100644
--- a/indra/llui/lltextparser.cpp
+++ b/indra/llui/lltextparser.cpp
diff --git a/indra/llui/lltextparser.h b/indra/llui/lltextparser.h
index 400aeeb8be..400aeeb8be 100755..100644
--- a/indra/llui/lltextparser.h
+++ b/indra/llui/lltextparser.h
diff --git a/indra/llui/lltextutil.cpp b/indra/llui/lltextutil.cpp
index fff04b34f2..f6b2ee1dc0 100755..100644
--- a/indra/llui/lltextutil.cpp
+++ b/indra/llui/lltextutil.cpp
@@ -56,6 +56,26 @@ void LLTextUtil::textboxSetHighlightedVal(LLTextBox *txtbox, const LLStyle::Para
txtbox->appendText(text.substr(hl_begin + hl_len), false, normal_style);
}
+void LLTextUtil::textboxSetGreyedVal(LLTextBox *txtbox, const LLStyle::Params& normal_style, const std::string& text, const std::string& greyed)
+{
+ static LLUIColor sGreyedTextColor = LLUIColorTable::instance().getColor("Gray", LLColor4::grey);
+
+ size_t greyed_begin = 0, greyed_len = greyed.size();
+
+ if (greyed_len == 0 || (greyed_begin = text.find(greyed)) == std::string::npos)
+ {
+ txtbox->setText(text, normal_style);
+ return;
+ }
+
+ LLStyle::Params greyed_style = normal_style;
+ greyed_style.color = sGreyedTextColor;
+ txtbox->setText(LLStringUtil::null); // clear text
+ txtbox->appendText(text.substr(0, greyed_begin), false, normal_style);
+ txtbox->appendText(text.substr(greyed_begin, greyed_len), false, greyed_style);
+ txtbox->appendText(text.substr(greyed_begin + greyed_len), false, normal_style);
+}
+
const std::string& LLTextUtil::formatPhoneNumber(const std::string& phone_str)
{
static const std::string PHONE_SEPARATOR = LLUI::sSettingGroups["config"]->getString("AvalinePhoneSeparator");
diff --git a/indra/llui/lltextutil.h b/indra/llui/lltextutil.h
index 1be81ffd62..a9c143e445 100755..100644
--- a/indra/llui/lltextutil.h
+++ b/indra/llui/lltextutil.h
@@ -52,6 +52,12 @@ namespace LLTextUtil
const std::string& text,
const std::string& hl);
+ void textboxSetGreyedVal(
+ LLTextBox *txtbox,
+ const LLStyle::Params& normal_style,
+ const std::string& text,
+ const std::string& greyed);
+
/**
* Formats passed phone number to be more human readable.
*
diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp
index 324ceb7fba..324ceb7fba 100755..100644
--- a/indra/llui/lltextvalidate.cpp
+++ b/indra/llui/lltextvalidate.cpp
diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h
index 5c830d7db3..5c830d7db3 100755..100644
--- a/indra/llui/lltextvalidate.h
+++ b/indra/llui/lltextvalidate.h
diff --git a/indra/llui/lltimectrl.cpp b/indra/llui/lltimectrl.cpp
index 516057f8fd..516057f8fd 100755..100644
--- a/indra/llui/lltimectrl.cpp
+++ b/indra/llui/lltimectrl.cpp
diff --git a/indra/llui/lltimectrl.h b/indra/llui/lltimectrl.h
index b5f268c76a..b5f268c76a 100755..100644
--- a/indra/llui/lltimectrl.h
+++ b/indra/llui/lltimectrl.h
diff --git a/indra/llui/lltoggleablemenu.cpp b/indra/llui/lltoggleablemenu.cpp
index ccb92ffbb2..ccb92ffbb2 100755..100644
--- a/indra/llui/lltoggleablemenu.cpp
+++ b/indra/llui/lltoggleablemenu.cpp
diff --git a/indra/llui/lltoggleablemenu.h b/indra/llui/lltoggleablemenu.h
index 55a6483021..55a6483021 100755..100644
--- a/indra/llui/lltoggleablemenu.h
+++ b/indra/llui/lltoggleablemenu.h
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index abc2b6e9ca..abc2b6e9ca 100755..100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 370941c787..370941c787 100755..100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index 7f2224870d..7f2224870d 100755..100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index fad127fc4c..fad127fc4c 100755..100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
diff --git a/indra/llui/lltrans.cpp b/indra/llui/lltrans.cpp
index 4d4ff4236d..4d4ff4236d 100755..100644
--- a/indra/llui/lltrans.cpp
+++ b/indra/llui/lltrans.cpp
diff --git a/indra/llui/lltrans.h b/indra/llui/lltrans.h
index a47ce94f08..a47ce94f08 100755..100644
--- a/indra/llui/lltrans.h
+++ b/indra/llui/lltrans.h
diff --git a/indra/llui/lltransutil.cpp b/indra/llui/lltransutil.cpp
index 220cee4c90..220cee4c90 100755..100644
--- a/indra/llui/lltransutil.cpp
+++ b/indra/llui/lltransutil.cpp
diff --git a/indra/llui/lltransutil.h b/indra/llui/lltransutil.h
index 9c7cee3f6f..9c7cee3f6f 100755..100644
--- a/indra/llui/lltransutil.h
+++ b/indra/llui/lltransutil.h
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index cc186f4997..cc186f4997 100755..100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index d7151dbee9..d7151dbee9 100755..100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
diff --git a/indra/llui/lluicolor.cpp b/indra/llui/lluicolor.cpp
index f9bb80f8c5..f9bb80f8c5 100755..100644
--- a/indra/llui/lluicolor.cpp
+++ b/indra/llui/lluicolor.cpp
diff --git a/indra/llui/lluicolor.h b/indra/llui/lluicolor.h
index 97ebea854a..97ebea854a 100755..100644
--- a/indra/llui/lluicolor.h
+++ b/indra/llui/lluicolor.h
diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp
index 244f0c6f00..244f0c6f00 100755..100644
--- a/indra/llui/lluicolortable.cpp
+++ b/indra/llui/lluicolortable.cpp
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 6a7a681d57..6a7a681d57 100755..100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
diff --git a/indra/llui/lluiconstants.h b/indra/llui/lluiconstants.h
index 1479e58c43..1479e58c43 100755..100644
--- a/indra/llui/lluiconstants.h
+++ b/indra/llui/lluiconstants.h
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index df74e113e9..df74e113e9 100755..100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 99553ee0d2..99553ee0d2 100755..100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 4cc7da1267..4cc7da1267 100755..100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 3ce39c947f..3ce39c947f 100755..100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
diff --git a/indra/llui/lluifwd.h b/indra/llui/lluifwd.h
index a68629a091..a68629a091 100755..100644
--- a/indra/llui/lluifwd.h
+++ b/indra/llui/lluifwd.h
diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp
index 98d0c215e6..98d0c215e6 100755..100644
--- a/indra/llui/lluistring.cpp
+++ b/indra/llui/lluistring.cpp
diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h
index 07e02de6d8..07e02de6d8 100755..100644
--- a/indra/llui/lluistring.h
+++ b/indra/llui/lluistring.h
diff --git a/indra/llui/llundo.cpp b/indra/llui/llundo.cpp
index 7c4c183a30..7c4c183a30 100755..100644
--- a/indra/llui/llundo.cpp
+++ b/indra/llui/llundo.cpp
diff --git a/indra/llui/llundo.h b/indra/llui/llundo.h
index a6da550126..a6da550126 100755..100644
--- a/indra/llui/llundo.h
+++ b/indra/llui/llundo.h
diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp
index 12537d9dd1..84ea770a8d 100755..100644
--- a/indra/llui/llurlaction.cpp
+++ b/indra/llui/llurlaction.cpp
@@ -83,12 +83,13 @@ void LLUrlAction::openURLExternal(std::string url)
}
}
-void LLUrlAction::executeSLURL(std::string url)
+bool LLUrlAction::executeSLURL(std::string url, bool trusted_content)
{
if (sExecuteSLURLCallback)
{
- sExecuteSLURLCallback(url ,true);
+ return sExecuteSLURLCallback(url, trusted_content);
}
+ return false;
}
void LLUrlAction::clickAction(std::string url, bool trusted_content)
@@ -227,6 +228,16 @@ void LLUrlAction::blockObject(std::string url)
std::string object_name = getObjectName(url);
if (LLUUID::validate(object_id))
{
- executeSLURL("secondlife:///app/agent/" + object_id + "/block/" + object_name);
+ executeSLURL("secondlife:///app/agent/" + object_id + "/block/" + LLURI::escape(object_name));
}
}
+
+void LLUrlAction::unblockObject(std::string url)
+{
+ std::string object_id = getObjectId(url);
+ std::string object_name = getObjectName(url);
+ if (LLUUID::validate(object_id))
+ {
+ executeSLURL("secondlife:///app/agent/" + object_id + "/unblock/" + object_name);
+ }
+}
diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h
index 5f3626490c..2d2a8dfef1 100755..100644
--- a/indra/llui/llurlaction.h
+++ b/indra/llui/llurlaction.h
@@ -57,7 +57,7 @@ public:
static void openURLExternal(std::string url);
/// execute the given secondlife: SLURL
- static void executeSLURL(std::string url);
+ static bool executeSLURL(std::string url, bool trusted_content = true);
/// if the Url specifies an SL location, teleport there
static void teleportToLocation(std::string url);
@@ -83,6 +83,7 @@ public:
static void addFriend(std::string url);
static void removeFriend(std::string url);
static void blockObject(std::string url);
+ static void unblockObject(std::string url);
/// specify the callbacks to enable this class's functionality
typedef boost::function<void (const std::string&)> url_callback_t;
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 7f6cc22e90..e4848362a7 100755..100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -229,7 +229,7 @@ static std::string getStringAfterToken(const std::string str, const std::string
LLUrlEntryHTTP::LLUrlEntryHTTP()
: LLUrlEntryBase()
{
- mPattern = boost::regex("https?://([-\\w\\.]+)+(:\\d+)?(:\\w+)?(@\\d+)?(@\\w+)?\\.[a-z](:\\d+)?(:\\w+)?(@\\d+)?(@\\w+)?/?\\S*",
+ mPattern = boost::regex("https?://([^\\s/?\\.#]+\\.?)+\\.\\w+(:\\d+)?(/\\S*)?",
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_http.xml";
mTooltip = LLTrans::getString("TooltipHttpUrl");
@@ -449,7 +449,10 @@ std::string LLUrlEntrySLURL::getLocation(const std::string &url) const
//
LLUrlEntrySecondlifeURL::LLUrlEntrySecondlifeURL()
{
- mPattern = boost::regex("https?://([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com(:\\d{1,5})?\\/\\S*",
+ mPattern = boost::regex("((http://([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com)"
+ "|"
+ "(https://([-\\w\\.]*\\.)?(secondlife|lindenlab)\\.com(:\\d{1,5})?))"
+ "\\/\\S*",
boost::regex::perl|boost::regex::icase);
mIcon = "Hand";
@@ -917,7 +920,7 @@ std::string LLUrlEntryObjectIM::getLocation(const std::string &url) const
// LLUrlEntryParcel statics.
LLUUID LLUrlEntryParcel::sAgentID(LLUUID::null);
LLUUID LLUrlEntryParcel::sSessionID(LLUUID::null);
-LLHost LLUrlEntryParcel::sRegionHost(LLHost::invalid);
+LLHost LLUrlEntryParcel::sRegionHost;
bool LLUrlEntryParcel::sDisconnected(false);
std::set<LLUrlEntryParcel*> LLUrlEntryParcel::sParcelInfoObservers;
@@ -966,7 +969,7 @@ std::string LLUrlEntryParcel::getLabel(const std::string &url, const LLUrlLabelC
void LLUrlEntryParcel::sendParcelInfoRequest(const LLUUID& parcel_id)
{
- if (sRegionHost == LLHost::invalid || sDisconnected) return;
+ if (sRegionHost.isInvalid() || sDisconnected) return;
LLMessageSystem *msg = gMessageSystem;
msg->newMessage("ParcelInfoRequest");
@@ -1424,7 +1427,7 @@ std::string LLUrlEntryExperienceProfile::getLabel( const std::string &url, const
return LLTrans::getString("ExperienceNameNull");
}
- const LLSD& experience_details = LLExperienceCache::get(experience_id);
+ const LLSD& experience_details = LLExperienceCache::instance().get(experience_id);
if(!experience_details.isUndefined())
{
std::string experience_name_string = experience_details[LLExperienceCache::NAME].asString();
@@ -1432,7 +1435,7 @@ std::string LLUrlEntryExperienceProfile::getLabel( const std::string &url, const
}
addObserver(experience_id_string, url, cb);
- LLExperienceCache::get(experience_id, boost::bind(&LLUrlEntryExperienceProfile::onExperienceDetails, this, _1));
+ LLExperienceCache::instance().get(experience_id, boost::bind(&LLUrlEntryExperienceProfile::onExperienceDetails, this, _1));
return LLTrans::getString("LoadingData");
}
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 413c20a657..413c20a657 100755..100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp
index 2f2ac969e1..2f2ac969e1 100755..100644
--- a/indra/llui/llurlmatch.cpp
+++ b/indra/llui/llurlmatch.cpp
diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h
index ff699902ca..ff699902ca 100755..100644
--- a/indra/llui/llurlmatch.h
+++ b/indra/llui/llurlmatch.h
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index 69eefa736c..23c6d5a954 100755..100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -41,7 +41,8 @@ LLUrlRegistry::LLUrlRegistry()
mUrlEntry.reserve(20);
// Urls are matched in the order that they were registered
- registerUrl(new LLUrlEntryNoLink());
+ mUrlEntryNoLink = new LLUrlEntryNoLink();
+ registerUrl(mUrlEntryNoLink);
mUrlEntryIcon = new LLUrlEntryIcon();
registerUrl(mUrlEntryIcon);
mLLUrlEntryInvalidSLURL = new LLUrlEntryInvalidSLURL();
@@ -214,7 +215,6 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
// did we find a match? if so, return its details in the match object
if (match_entry)
{
-
// Skip if link is an email with an empty username (starting with @). See MAINT-5371.
if (match_start > 0 && text.substr(match_start - 1, 1) == "@")
return false;
@@ -223,7 +223,8 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
std::string url = text.substr(match_start, match_end - match_start + 1);
LLUrlEntryBase *stripped_entry = NULL;
- if(LLStringUtil::containsNonprintable(url))
+ if((match_entry != mUrlEntryNoLink) && (match_entry != mUrlEntryHTTPLabel) && (match_entry !=mUrlEntrySLLabel)
+ && LLStringUtil::containsNonprintable(url))
{
LLStringUtil::stripNonprintable(url);
diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h
index 5ce4048d5d..24c3a2b513 100755..100644
--- a/indra/llui/llurlregistry.h
+++ b/indra/llui/llurlregistry.h
@@ -98,6 +98,7 @@ private:
LLUrlEntryBase* mLLUrlEntryInvalidSLURL;
LLUrlEntryBase* mUrlEntryHTTPLabel;
LLUrlEntryBase* mUrlEntrySLLabel;
+ LLUrlEntryBase* mUrlEntryNoLink;
};
#endif
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index a8beb9cfc9..62c3f401bf 100755..100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -588,6 +588,11 @@ void LLView::onVisibilityChange ( BOOL new_visibility )
BOOL log_visibility_change = LLViewerEventRecorder::instance().getLoggingStatus();
BOOST_FOREACH(LLView* viewp, mChildList)
{
+ if (!viewp)
+ {
+ continue;
+ }
+
// only views that are themselves visible will have their overall visibility affected by their ancestors
old_visibility=viewp->getVisible();
@@ -866,6 +871,7 @@ BOOL LLView::handleToolTip(S32 x, S32 y, MASK mask)
return handled;
}
+
BOOL LLView::handleKey(KEY key, MASK mask, BOOL called_from_parent)
{
BOOL handled = FALSE;
@@ -898,6 +904,38 @@ BOOL LLView::handleKey(KEY key, MASK mask, BOOL called_from_parent)
return handled;
}
+BOOL LLView::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent)
+{
+ BOOL handled = FALSE;
+
+ if (getVisible() && getEnabled())
+ {
+ if (called_from_parent)
+ {
+ // Downward traversal
+ handled = childrenHandleKeyUp(key, mask) != NULL;
+ }
+
+ if (!handled)
+ {
+ // For event logging we don't care which widget handles it
+ // So we capture the key at the end of this function once we know if it was handled
+ handled = handleKeyUpHere(key, mask);
+ if (handled)
+ {
+ LL_DEBUGS() << "Key handled by " << getName() << LL_ENDL;
+ }
+ }
+ }
+
+ if (!handled && !called_from_parent && mParentView)
+ {
+ // Upward traversal
+ handled = mParentView->handleKeyUp(key, mask, FALSE);
+ }
+ return handled;
+}
+
// Called from handleKey()
// Handles key in this object. Checking parents and children happens in handleKey()
BOOL LLView::handleKeyHere(KEY key, MASK mask)
@@ -905,6 +943,13 @@ BOOL LLView::handleKeyHere(KEY key, MASK mask)
return FALSE;
}
+// Called from handleKey()
+// Handles key in this object. Checking parents and children happens in handleKey()
+BOOL LLView::handleKeyUpHere(KEY key, MASK mask)
+{
+ return FALSE;
+}
+
BOOL LLView::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent)
{
BOOL handled = FALSE;
@@ -1021,6 +1066,12 @@ LLView* LLView::childrenHandleKey(KEY key, MASK mask)
}
// Called during downward traversal
+LLView* LLView::childrenHandleKeyUp(KEY key, MASK mask)
+{
+ return childrenHandleCharEvent("Key Up", &LLView::handleKeyUp, key, mask);
+}
+
+// Called during downward traversal
LLView* LLView::childrenHandleUnicodeChar(llwchar uni_char)
{
return childrenHandleCharEvent("Unicode character", &LLView::handleUnicodeCharWithDummyMask,
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index 7861c8f729..8494bb338a 100755..100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -378,6 +378,7 @@ public:
// inherited from LLFocusableElement
/* virtual */ BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
+ /* virtual */ BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent);
/* virtual */ BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
@@ -509,6 +510,7 @@ public:
//virtual BOOL addChildFromParam(const LLInitParam::BaseBlock& params) { return TRUE; }
virtual BOOL handleKeyHere(KEY key, MASK mask);
+ virtual BOOL handleKeyUpHere(KEY key, MASK mask);
virtual BOOL handleUnicodeCharHere(llwchar uni_char);
virtual void handleReshape(const LLRect& rect, bool by_user);
@@ -538,6 +540,7 @@ protected:
void logMouseEvent();
LLView* childrenHandleKey(KEY key, MASK mask);
+ LLView* childrenHandleKeyUp(KEY key, MASK mask);
LLView* childrenHandleUnicodeChar(llwchar uni_char);
LLView* childrenHandleDragAndDrop(S32 x, S32 y, MASK mask,
BOOL drop,
diff --git a/indra/llui/llviewborder.cpp b/indra/llui/llviewborder.cpp
index 919267dcc6..919267dcc6 100755..100644
--- a/indra/llui/llviewborder.cpp
+++ b/indra/llui/llviewborder.cpp
diff --git a/indra/llui/llviewborder.h b/indra/llui/llviewborder.h
index 413ce39744..413ce39744 100755..100644
--- a/indra/llui/llviewborder.h
+++ b/indra/llui/llviewborder.h
diff --git a/indra/llui/llviewinject.cpp b/indra/llui/llviewinject.cpp
index 46c5839f8e..46c5839f8e 100755..100644
--- a/indra/llui/llviewinject.cpp
+++ b/indra/llui/llviewinject.cpp
diff --git a/indra/llui/llviewinject.h b/indra/llui/llviewinject.h
index 0de3d155c4..0de3d155c4 100755..100644
--- a/indra/llui/llviewinject.h
+++ b/indra/llui/llviewinject.h
diff --git a/indra/llui/llviewmodel.cpp b/indra/llui/llviewmodel.cpp
index 282addf692..282addf692 100755..100644
--- a/indra/llui/llviewmodel.cpp
+++ b/indra/llui/llviewmodel.cpp
diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h
index 49d7c322a3..49d7c322a3 100755..100644
--- a/indra/llui/llviewmodel.h
+++ b/indra/llui/llviewmodel.h
diff --git a/indra/llui/llviewquery.cpp b/indra/llui/llviewquery.cpp
index 66262609ae..66262609ae 100755..100644
--- a/indra/llui/llviewquery.cpp
+++ b/indra/llui/llviewquery.cpp
diff --git a/indra/llui/llviewquery.h b/indra/llui/llviewquery.h
index 9044c4ff29..9044c4ff29 100755..100644
--- a/indra/llui/llviewquery.h
+++ b/indra/llui/llviewquery.h
diff --git a/indra/llui/llwindowshade.cpp b/indra/llui/llwindowshade.cpp
index f5c463c961..f5c463c961 100755..100644
--- a/indra/llui/llwindowshade.cpp
+++ b/indra/llui/llwindowshade.cpp
diff --git a/indra/llui/llwindowshade.h b/indra/llui/llwindowshade.h
index 6d753d1161..6d753d1161 100755..100644
--- a/indra/llui/llwindowshade.h
+++ b/indra/llui/llwindowshade.h
diff --git a/indra/llui/llxuiparser.cpp b/indra/llui/llxuiparser.cpp
index 99a0869ce3..99a0869ce3 100755..100644
--- a/indra/llui/llxuiparser.cpp
+++ b/indra/llui/llxuiparser.cpp
diff --git a/indra/llui/llxuiparser.h b/indra/llui/llxuiparser.h
index ad2a39cab7..ad2a39cab7 100755..100644
--- a/indra/llui/llxuiparser.h
+++ b/indra/llui/llxuiparser.h
diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp
index d28f601009..338be1808d 100755
--- a/indra/llui/tests/llurlentry_stub.cpp
+++ b/indra/llui/tests/llurlentry_stub.cpp
@@ -166,8 +166,6 @@ LLFontGL* LLFontGL::getFontDefault()
char const* const _PREHASH_AgentData = (char *)"AgentData";
char const* const _PREHASH_AgentID = (char *)"AgentID";
-LLHost LLHost::invalid(INVALID_PORT,INVALID_HOST_IP_ADDRESS);
-
LLPounceable<LLMessageSystem*, LLPounceableStatic> gMessageSystem;
//
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 96e94c0f80..233fb6da23 100755..100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -37,17 +37,17 @@
#include <boost/regex.hpp>
-namespace LLExperienceCache
-{
- const LLSD& get( const LLUUID& key)
- {
- static LLSD boo;
- return boo;
- }
-
- void get( const LLUUID& key, callback_slot_t slot ){}
-
-}
+// namespace LLExperienceCache
+// {
+// const LLSD& get( const LLUUID& key)
+// {
+// static LLSD boo;
+// return boo;
+// }
+//
+// void get( const LLUUID& key, callback_slot_t slot ){}
+//
+// }
typedef std::map<std::string, LLControlGroup*> settings_map_t;
settings_map_t LLUI::sSettingGroups;
@@ -232,6 +232,14 @@ namespace tut
testRegex("http url with newlines", url,
"XX\nhttp://www.secondlife.com/\nXX",
"http://www.secondlife.com/");
+
+ testRegex("http url without tld shouldn't be decorated (1)", url,
+ "http://test",
+ "");
+
+ testRegex("http url without tld shouldn't be decorated (2)", url,
+ "http://test .com",
+ "");
}
template<> template<>
@@ -838,17 +846,21 @@ namespace tut
"search something https://marketplace.secondlife.com/products/search on marketplace and test the https",
"https://marketplace.secondlife.com/products/search");
- testRegex("match urls with port", url,
- "let's specify some port http://secondlife.com:888/status",
- "http://secondlife.com:888/status");
+ testRegex("match HTTPS urls with port", url,
+ "let's specify some port https://secondlife.com:888/status",
+ "https://secondlife.com:888/status");
+
+ testRegex("don't match HTTP urls with port", url,
+ "let's specify some port for HTTP http://secondlife.com:888/status",
+ "");
testRegex("don't match urls w/o protocol", url,
"looks like an url something www.marketplace.secondlife.com/products but no https prefix",
"");
testRegex("but with a protocol www is fine", url,
- "so let's add a protocol http://www.marketplace.secondlife.com:8888/products",
- "http://www.marketplace.secondlife.com:8888/products");
+ "so let's add a protocol https://www.marketplace.secondlife.com:8888/products",
+ "https://www.marketplace.secondlife.com:8888/products");
testRegex("don't match urls w/o protocol", url,
"and even no www something secondlife.com/status",
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index 843886eb69..843886eb69 100755..100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp