Test merge
commit
21c8dea4e4
|
|
@ -39,8 +39,9 @@ snowstorm_viewer-development.email = viewer-development-builds@lists.secondlife.
|
|||
# ========================================
|
||||
# Viewer Beta
|
||||
# ========================================
|
||||
viewer-beta.viewer_channel = "Second Life Beta"
|
||||
viewer-beta.login_channel = "Second Life Beta"
|
||||
viewer-beta.viewer_channel = "Second Life Beta Viewer"
|
||||
viewer-beta.login_channel = "Second Life Beta Viewer"
|
||||
viewer-beta.build_debug_release_separately = true
|
||||
viewer-beta.build_viewer_update_version_manager = true
|
||||
|
||||
# ========================================
|
||||
|
|
@ -48,6 +49,7 @@ viewer-beta.build_viewer_update_version_manager = true
|
|||
# ========================================
|
||||
viewer-release.viewer_channel = "Second Life Release"
|
||||
viewer-release.login_channel = "Second Life Release"
|
||||
viewer-release.build_debug_release_separately = true
|
||||
viewer-release.build_viewer_update_version_manager = true
|
||||
|
||||
# ========================================
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ Aimee Trescothick
|
|||
SNOW-227
|
||||
SNOW-570
|
||||
SNOW-572
|
||||
SNOW-575
|
||||
VWR-3321
|
||||
VWR-3336
|
||||
VWR-3903
|
||||
|
|
@ -33,6 +34,7 @@ Aimee Trescothick
|
|||
VWR-6550
|
||||
VWR-6583
|
||||
VWR-6482
|
||||
VWR-6918
|
||||
VWR-7109
|
||||
VWR-7383
|
||||
VWR-7800
|
||||
|
|
@ -59,6 +61,8 @@ Aimee Trescothick
|
|||
Alejandro Rosenthal
|
||||
VWR-1184
|
||||
Aleric Inglewood
|
||||
SNOW-522
|
||||
SNOW-764
|
||||
VWR-10001
|
||||
VWR-10759
|
||||
VWR-10837
|
||||
|
|
@ -167,6 +171,7 @@ Boroondas Gupte
|
|||
SNOW-737
|
||||
VWR-233
|
||||
VWR-20583
|
||||
VWR-20891
|
||||
WEB-262
|
||||
Bulli Schumann
|
||||
CT-218
|
||||
|
|
@ -383,6 +388,7 @@ Matthew Dowd
|
|||
VWR-1761
|
||||
VWR-2681
|
||||
McCabe Maxsted
|
||||
SNOW-387
|
||||
VWR-1318
|
||||
VWR-4065
|
||||
VWR-4826
|
||||
|
|
@ -551,6 +557,8 @@ Robin Cornelius
|
|||
SNOW-514
|
||||
SNOW-520
|
||||
SNOW-585
|
||||
SNOW-599
|
||||
SNOW-747
|
||||
VWR-2488
|
||||
VWR-9557
|
||||
VWR-11128
|
||||
|
|
@ -559,6 +567,7 @@ Robin Cornelius
|
|||
VWR-12758
|
||||
VWR-12763
|
||||
VWR-12995
|
||||
VWR-20911
|
||||
Ryozu Kojima
|
||||
VWR-53
|
||||
VWR-287
|
||||
|
|
@ -648,11 +657,15 @@ Teardrops Fall
|
|||
VWR-5366
|
||||
Techwolf Lupindo
|
||||
SNOW-92
|
||||
SNOW-592
|
||||
SNOW-649
|
||||
SNOW-650
|
||||
SNOW-687
|
||||
SNOW-680
|
||||
SNOW-681
|
||||
SNOW-685
|
||||
SNOW-690
|
||||
SNOW-746
|
||||
VWR-12385
|
||||
tenebrous pau
|
||||
VWR-247
|
||||
|
|
@ -663,8 +676,9 @@ Thickbrick Sleaford
|
|||
SNOW-390
|
||||
SNOW-421
|
||||
SNOW-462
|
||||
SNOW-635
|
||||
SNOW-586
|
||||
SNOW-592
|
||||
SNOW-635
|
||||
SNOW-743
|
||||
VWR-7109
|
||||
VWR-9287
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
# -*- cmake -*-
|
||||
|
||||
# - Find Google BreakPad
|
||||
# Find the Google BreakPad includes and library
|
||||
# This module defines
|
||||
# BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR, where to find exception_handler.h, etc.
|
||||
# BREAKPAD_EXCEPTION_HANDLER_LIBRARIES, the libraries needed to use Google BreakPad.
|
||||
# BREAKPAD_EXCEPTION_HANDLER_FOUND, If false, do not try to use Google BreakPad.
|
||||
# also defined, but not for general use are
|
||||
# BREAKPAD_EXCEPTION_HANDLER_LIBRARY, where to find the Google BreakPad library.
|
||||
|
||||
FIND_PATH(BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR google_breakpad/exception_handler.h)
|
||||
|
||||
SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client)
|
||||
FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY
|
||||
NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES}
|
||||
)
|
||||
|
||||
IF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
|
||||
SET(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES ${BREAKPAD_EXCEPTION_HANDLER_LIBRARY})
|
||||
SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "YES")
|
||||
ELSE (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
|
||||
SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "NO")
|
||||
ENDIF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
|
||||
|
||||
|
||||
IF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
|
||||
IF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found Google BreakPad: ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}")
|
||||
ENDIF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
|
||||
ELSE (BREAKPAD_EXCEPTION_HANDLER_FOUND)
|
||||
IF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "Could not find Google BreakPad library")
|
||||
ENDIF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
|
||||
ENDIF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
BREAKPAD_EXCEPTION_HANDLER_LIBRARY
|
||||
BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR
|
||||
)
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
include(Prebuilt)
|
||||
|
||||
if (STANDALONE)
|
||||
MESSAGE(FATAL_ERROR "*TODO standalone support for google breakad is unimplemented")
|
||||
# *TODO - implement this include(FindGoogleBreakpad)
|
||||
set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON)
|
||||
include(FindGoogleBreakpad)
|
||||
else (STANDALONE)
|
||||
use_prebuilt_binary(google_breakpad)
|
||||
if (DARWIN)
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
# -*- cmake -*-
|
||||
include(Prebuilt)
|
||||
|
||||
if (STANDALONE)
|
||||
include(FindPkgConfig)
|
||||
|
||||
pkg_check_modules(PULSEAUDIO REQUIRED libpulse-mainloop-glib)
|
||||
|
||||
elseif (LINUX)
|
||||
use_prebuilt_binary(pulseaudio)
|
||||
set(PULSEAUDIO_FOUND ON FORCE BOOL)
|
||||
set(PULSEAUDIO_INCLUDE_DIRS
|
||||
${LIBS_PREBUILT_DIR}/include
|
||||
)
|
||||
# We don't need to explicitly link against pulseaudio itself, because
|
||||
# the viewer probes for the system's copy at runtime.
|
||||
set(PULSEAUDIO_LIBRARIES
|
||||
# none needed!
|
||||
)
|
||||
endif (STANDALONE)
|
||||
|
||||
if (PULSEAUDIO_FOUND)
|
||||
set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.")
|
||||
endif (PULSEAUDIO_FOUND)
|
||||
set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.")
|
||||
|
||||
if (PULSEAUDIO)
|
||||
add_definitions(-DLL_PULSEAUDIO_ENABLED=1)
|
||||
if (STANDALONE)
|
||||
include(FindPkgConfig)
|
||||
|
||||
pkg_check_modules(PULSEAUDIO libpulse)
|
||||
|
||||
elseif (LINUX)
|
||||
use_prebuilt_binary(pulseaudio)
|
||||
set(PULSEAUDIO_FOUND ON FORCE BOOL)
|
||||
set(PULSEAUDIO_INCLUDE_DIRS
|
||||
${LIBS_PREBUILT_DIR}/include
|
||||
)
|
||||
# We don't need to explicitly link against pulseaudio itself, because
|
||||
# the viewer probes for the system's copy at runtime.
|
||||
set(PULSEAUDIO_LIBRARIES
|
||||
# none needed!
|
||||
)
|
||||
endif (STANDALONE)
|
||||
endif (PULSEAUDIO)
|
||||
|
||||
if (PULSEAUDIO_FOUND)
|
||||
add_definitions(-DLL_PULSEAUDIO_ENABLED=1)
|
||||
endif (PULSEAUDIO_FOUND)
|
||||
|
|
|
|||
|
|
@ -54,19 +54,20 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|||
set(LINUX ON BOOl FORCE)
|
||||
|
||||
# If someone has specified a word size, use that to determine the
|
||||
# architecture. Otherwise, let the architecture specify the word size.
|
||||
# architecture. Otherwise, let the compiler specify the word size.
|
||||
# Using uname will break under chroots and other cross arch compiles. RC
|
||||
if (WORD_SIZE EQUAL 32)
|
||||
set(ARCH i686)
|
||||
elseif (WORD_SIZE EQUAL 64)
|
||||
set(ARCH x86_64)
|
||||
else (WORD_SIZE EQUAL 32)
|
||||
execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
|
||||
OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if (ARCH STREQUAL x86_64)
|
||||
set(WORD_SIZE 64)
|
||||
else (ARCH STREQUAL x86_64)
|
||||
if(CMAKE_SIZEOF_VOID_P MATCHES 4)
|
||||
set(ARCH i686)
|
||||
set(WORD_SIZE 32)
|
||||
endif (ARCH STREQUAL x86_64)
|
||||
else(CMAKE_SIZEOF_VOID_P MATCHES 4)
|
||||
set(ARCH x86_64)
|
||||
set(WORD_SIZE 64)
|
||||
endif(CMAKE_SIZEOF_VOID_P MATCHES 4)
|
||||
endif (WORD_SIZE EQUAL 32)
|
||||
|
||||
set(LL_ARCH ${ARCH}_linux)
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ int main(int argc, char **argv)
|
|||
}
|
||||
|
||||
// Check for a change in this process's frontmost window.
|
||||
if(FrontWindow() != front_window)
|
||||
if(GetFrontWindowOfClass(kAllWindowClasses, true) != front_window)
|
||||
{
|
||||
ProcessSerialNumber self = { 0, kCurrentProcess };
|
||||
ProcessSerialNumber parent = { 0, kNoProcess };
|
||||
|
|
@ -307,7 +307,7 @@ int main(int argc, char **argv)
|
|||
}
|
||||
}
|
||||
|
||||
if((FrontWindow() != NULL) && (front_window == NULL))
|
||||
if((GetFrontWindowOfClass(kAllWindowClasses, true) != NULL) && (front_window == NULL))
|
||||
{
|
||||
// Opening the first window
|
||||
|
||||
|
|
@ -319,7 +319,7 @@ int main(int argc, char **argv)
|
|||
|
||||
if(layer_group)
|
||||
{
|
||||
SetWindowGroup(FrontWindow(), layer_group);
|
||||
SetWindowGroup(GetFrontWindowOfClass(kAllWindowClasses, true), layer_group);
|
||||
}
|
||||
|
||||
if(parent_is_front_process)
|
||||
|
|
@ -328,9 +328,9 @@ int main(int argc, char **argv)
|
|||
(void) SetFrontProcess( &self );
|
||||
}
|
||||
|
||||
ActivateWindow(FrontWindow(), true);
|
||||
ActivateWindow(GetFrontWindowOfClass(kAllWindowClasses, true), true);
|
||||
}
|
||||
else if((FrontWindow() == NULL) && (front_window != NULL))
|
||||
else if((GetFrontWindowOfClass(kAllWindowClasses, true) == NULL) && (front_window != NULL))
|
||||
{
|
||||
// Closing the last window
|
||||
|
||||
|
|
@ -350,7 +350,7 @@ int main(int argc, char **argv)
|
|||
window_hack_state = 2;
|
||||
}
|
||||
|
||||
front_window = FrontWindow();
|
||||
front_window = GetFrontWindowOfClass(kAllWindowClasses, true);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ LLAccordionCtrlTab::LLAccordionCtrlTabHeader::LLAccordionCtrlTabHeader(
|
|||
textboxParams.use_ellipses = true;
|
||||
textboxParams.bg_visible = false;
|
||||
textboxParams.mouse_opaque = false;
|
||||
textboxParams.parse_urls = false;
|
||||
mHeaderTextbox = LLUICtrlFactory::create<LLTextBox>(textboxParams);
|
||||
addChild(mHeaderTextbox);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -315,6 +315,20 @@ void LLFocusMgr::removeKeyboardFocusWithoutCallback( const LLFocusableElement* f
|
|||
}
|
||||
}
|
||||
|
||||
bool LLFocusMgr::keyboardFocusHasAccelerators() const
|
||||
{
|
||||
LLView* focus_view = dynamic_cast<LLView*>(mKeyboardFocus);
|
||||
while( focus_view )
|
||||
{
|
||||
if(focus_view->hasAccelerators())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
focus_view = focus_view->getParent();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void LLFocusMgr::setMouseCapture( LLMouseHandler* new_captor )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -118,6 +118,8 @@ public:
|
|||
void unlockFocus();
|
||||
BOOL focusLocked() const { return mLockedView != NULL; }
|
||||
|
||||
bool keyboardFocusHasAccelerators() const;
|
||||
|
||||
private:
|
||||
LLUICtrl* mLockedView;
|
||||
|
||||
|
|
|
|||
|
|
@ -1404,7 +1404,7 @@ bool LLNotifications::loadTemplates()
|
|||
LLNotificationTemplate::Notifications params;
|
||||
LLXUIParser parser;
|
||||
parser.readXUI(root, params, full_filename);
|
||||
|
||||
|
||||
if(!params.validateBlock())
|
||||
{
|
||||
llerrs << "Problem reading UI Notifications file: " << full_filename << llendl;
|
||||
|
|
@ -1645,7 +1645,7 @@ bool LLNotifications::getIgnoreAllNotifications()
|
|||
{
|
||||
return mIgnoreAllNotifications;
|
||||
}
|
||||
|
||||
|
||||
bool LLNotifications::isVisibleByRules(LLNotificationPtr n)
|
||||
{
|
||||
if(n->isRespondedTo())
|
||||
|
|
|
|||
|
|
@ -580,7 +580,7 @@ public:
|
|||
std::string summarize() const;
|
||||
|
||||
bool hasUniquenessConstraints() const;
|
||||
|
||||
|
||||
bool matchesTag(const std::string& tag);
|
||||
|
||||
virtual ~LLNotification() {}
|
||||
|
|
@ -863,7 +863,7 @@ public:
|
|||
// load notification descriptions from file;
|
||||
// OK to call more than once because it will reload
|
||||
bool loadTemplates();
|
||||
|
||||
|
||||
// load visibility rules from file;
|
||||
// OK to call more than once because it will reload
|
||||
bool loadVisibilityRules();
|
||||
|
|
@ -929,7 +929,7 @@ public:
|
|||
|
||||
void setIgnoreAllNotifications(bool ignore);
|
||||
bool getIgnoreAllNotifications();
|
||||
|
||||
|
||||
bool isVisibleByRules(LLNotificationPtr pNotification);
|
||||
|
||||
private:
|
||||
|
|
@ -950,7 +950,7 @@ private:
|
|||
// put your template in
|
||||
bool addTemplate(const std::string& name, LLNotificationTemplatePtr theTemplate);
|
||||
TemplateMap mTemplates;
|
||||
|
||||
|
||||
VisibilityRuleList mVisibilityRules;
|
||||
|
||||
std::string mFileName;
|
||||
|
|
|
|||
|
|
@ -274,6 +274,11 @@ public:
|
|||
BOOL focusNextRoot();
|
||||
BOOL focusPrevRoot();
|
||||
|
||||
// Normally we want the app menus to get priority on accelerated keys
|
||||
// However, sometimes we want to give specific views a first chance
|
||||
// iat handling them. (eg. the script editor)
|
||||
virtual bool hasAccelerators() const { return false; };
|
||||
|
||||
// delete all children. Override this function if you need to
|
||||
// perform any extra clean up such as cached pointers to selected
|
||||
// children, etc.
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ LLDir_Linux::LLDir_Linux()
|
|||
#else
|
||||
mAppRODataDir = tmp_str;
|
||||
#endif
|
||||
U32 indra_pos = mExecutableDir.find("/indra");
|
||||
std::string::size_type indra_pos = mExecutableDir.find("/indra");
|
||||
if (indra_pos != std::string::npos)
|
||||
{
|
||||
// ...we're in a dev checkout
|
||||
|
|
|
|||
|
|
@ -42,13 +42,6 @@ set(media_plugin_gstreamer010_HEADER_FILES
|
|||
llmediaimplgstreamertriviallogging.h
|
||||
)
|
||||
|
||||
if (${CXX_VERSION_NUMBER} MATCHES "4[23456789].")
|
||||
# Work around a bad interaction between broken gstreamer headers and
|
||||
# g++ >= 4.2's increased strictness.
|
||||
set_source_files_properties(llmediaimplgstreamervidplug.cpp PROPERTIES
|
||||
COMPILE_FLAGS -Wno-write-strings)
|
||||
endif (${CXX_VERSION_NUMBER} MATCHES "4[23456789].")
|
||||
|
||||
add_library(media_plugin_gstreamer010
|
||||
SHARED
|
||||
${media_plugin_gstreamer010_SOURCE_FILES}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_slvideo_debug);
|
|||
#define SLV_ALLCAPS GST_VIDEO_CAPS_RGBx SLV_SIZECAPS
|
||||
|
||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE (
|
||||
"sink",
|
||||
(gchar*)"sink",
|
||||
GST_PAD_SINK,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (SLV_ALLCAPS)
|
||||
|
|
@ -508,18 +508,18 @@ plugin_init (GstPlugin * plugin)
|
|||
some g++ versions buggily avoid __attribute__((constructor)) functions -
|
||||
so we provide an explicit plugin init function.
|
||||
*/
|
||||
#define PACKAGE (gchar*)"packagehack"
|
||||
// this macro quietly refers to PACKAGE internally
|
||||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||
GST_VERSION_MINOR,
|
||||
(gchar*)"private-slvideoplugin",
|
||||
(gchar*)"SL Video sink plugin",
|
||||
plugin_init, (gchar*)"1.0", (gchar*)"LGPL",
|
||||
(gchar*)"Second Life",
|
||||
(gchar*)"http://www.secondlife.com/");
|
||||
#undef PACKAGE
|
||||
void gst_slvideo_init_class (void)
|
||||
{
|
||||
#define PACKAGE "packagehack"
|
||||
// this macro quietly refers to PACKAGE internally
|
||||
static GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||
GST_VERSION_MINOR,
|
||||
"private-slvideoplugin",
|
||||
"SL Video sink plugin",
|
||||
plugin_init, "0.1", GST_LICENSE_UNKNOWN,
|
||||
"Second Life",
|
||||
"http://www.secondlife.com/");
|
||||
#undef PACKAGE
|
||||
ll_gst_plugin_register_static (&gst_plugin_desc);
|
||||
DEBUGMSG("CLASS INIT");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,9 +51,11 @@ set(media_plugin_webkit_LINK_LIBRARIES
|
|||
|
||||
# Select which VolumeCatcher implementation to use
|
||||
if (LINUX)
|
||||
if (PULSEAUDIO)
|
||||
if (PULSEAUDIO_FOUND)
|
||||
list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp)
|
||||
endif (PULSEAUDIO)
|
||||
else (PULSEAUDIO_FOUND)
|
||||
list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp)
|
||||
endif (PULSEAUDIO_FOUND)
|
||||
list(APPEND media_plugin_webkit_LINK_LIBRARIES
|
||||
${UI_LIBRARIES} # for glib/GTK
|
||||
)
|
||||
|
|
@ -67,9 +69,6 @@ elseif (DARWIN)
|
|||
)
|
||||
elseif (WINDOWS)
|
||||
list(APPEND media_plugin_webkit_SOURCE_FILES windows_volume_catcher.cpp)
|
||||
else (LINUX)
|
||||
# All other platforms use the dummy volume catcher for now.
|
||||
list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp)
|
||||
endif (LINUX)
|
||||
|
||||
set_source_files_properties(${media_plugin_webkit_HEADER_FILES}
|
||||
|
|
|
|||
|
|
@ -7976,6 +7976,17 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>RenderHighlightSelections</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show selection outlines on objects</string>
|
||||
<key>Persist</key>
|
||||
<integer>0</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>RenderHiddenSelections</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@
|
|||
#include "llfloaterpay.h"
|
||||
#include "llfloaterworldmap.h"
|
||||
#include "llgiveinventory.h"
|
||||
#include "llinventorybridge.h"
|
||||
#include "llinventorymodel.h" // for gInventory.findCategoryUUIDForType
|
||||
#include "llinventorypanel.h"
|
||||
#include "llimview.h" // for gIMMgr
|
||||
|
|
@ -443,17 +444,27 @@ namespace action_give_inventory
|
|||
}
|
||||
|
||||
/**
|
||||
* Checks My Inventory visibility.
|
||||
* @return active inventory panel, or NULL if there's no such panel
|
||||
*/
|
||||
static bool is_give_inventory_acceptable()
|
||||
static LLInventoryPanel* get_active_inventory_panel()
|
||||
{
|
||||
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
|
||||
if (!active_panel)
|
||||
{
|
||||
active_panel = get_outfit_editor_inventory_panel();
|
||||
if (!active_panel) return false;
|
||||
}
|
||||
|
||||
return active_panel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks My Inventory visibility.
|
||||
*/
|
||||
static bool is_give_inventory_acceptable()
|
||||
{
|
||||
LLInventoryPanel* active_panel = get_active_inventory_panel();
|
||||
if (!active_panel) return false;
|
||||
|
||||
// check selection in the panel
|
||||
const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
|
||||
if (inventory_selected_uuids.empty()) return false; // nothing selected
|
||||
|
|
@ -543,12 +554,8 @@ namespace action_give_inventory
|
|||
return;
|
||||
}
|
||||
|
||||
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
|
||||
if (!active_panel)
|
||||
{
|
||||
active_panel = get_outfit_editor_inventory_panel();
|
||||
if (!active_panel) return;
|
||||
}
|
||||
LLInventoryPanel* active_panel = get_active_inventory_panel();
|
||||
if (!active_panel) return;
|
||||
|
||||
const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
|
||||
if (inventory_selected_uuids.empty())
|
||||
|
|
@ -632,12 +639,8 @@ namespace action_give_inventory
|
|||
llassert(avatar_names.size() == avatar_uuids.size());
|
||||
|
||||
|
||||
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
|
||||
if (!active_panel)
|
||||
{
|
||||
active_panel = get_outfit_editor_inventory_panel();
|
||||
if (!active_panel) return;
|
||||
}
|
||||
LLInventoryPanel* active_panel = get_active_inventory_panel();
|
||||
if (!active_panel) return;
|
||||
|
||||
const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
|
||||
if (inventory_selected_uuids.empty())
|
||||
|
|
@ -672,6 +675,53 @@ void LLAvatarActions::shareWithAvatars()
|
|||
LLNotificationsUtil::add("ShareNotification");
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
bool LLAvatarActions::canShareSelectedItems(LLInventoryPanel* inv_panel /* = NULL*/)
|
||||
{
|
||||
using namespace action_give_inventory;
|
||||
|
||||
if (!inv_panel)
|
||||
{
|
||||
LLInventoryPanel* active_panel = get_active_inventory_panel();
|
||||
if (!active_panel) return false;
|
||||
inv_panel = active_panel;
|
||||
}
|
||||
|
||||
// check selection in the panel
|
||||
LLFolderView* root_folder = inv_panel->getRootFolder();
|
||||
const uuid_set_t inventory_selected_uuids = root_folder->getSelectionList();
|
||||
if (inventory_selected_uuids.empty()) return false; // nothing selected
|
||||
|
||||
bool can_share = true;
|
||||
uuid_set_t::const_iterator it = inventory_selected_uuids.begin();
|
||||
const uuid_set_t::const_iterator it_end = inventory_selected_uuids.end();
|
||||
for (; it != it_end; ++it)
|
||||
{
|
||||
LLViewerInventoryCategory* inv_cat = gInventory.getCategory(*it);
|
||||
// any category can be offered.
|
||||
if (inv_cat)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// check if inventory item can be given
|
||||
LLFolderViewItem* item = root_folder->getItemByID(*it);
|
||||
if (!item) return false;
|
||||
LLInvFVBridge* bridge = dynamic_cast<LLInvFVBridge*>(item->getListener());
|
||||
if (bridge && bridge->canShare())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// there are neither item nor category in inventory
|
||||
can_share = false;
|
||||
break;
|
||||
}
|
||||
|
||||
return can_share;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLAvatarActions::toggleBlock(const LLUUID& id)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class LLInventoryPanel;
|
||||
|
||||
/**
|
||||
* Friend-related actions (add, remove, offer teleport, etc)
|
||||
*/
|
||||
|
|
@ -183,6 +185,15 @@ public:
|
|||
*/
|
||||
static bool canOfferTeleport(const uuid_vec_t& ids);
|
||||
|
||||
/**
|
||||
* Checks whether all items selected in the given inventory panel can be shared
|
||||
*
|
||||
* @param inv_panel Inventory panel to get selection from. If NULL, the active inventory panel is used.
|
||||
*
|
||||
* @return false if the selected items cannot be shared or the active inventory panel cannot be obtained
|
||||
*/
|
||||
static bool canShareSelectedItems(LLInventoryPanel* inv_panel = NULL);
|
||||
|
||||
private:
|
||||
static bool callbackAddFriend(const LLSD& notification, const LLSD& response);
|
||||
static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ BOOL LLBottomtrayButton::handleHover(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
if (mCanDrag)
|
||||
{
|
||||
S32 screenX, screenY;
|
||||
localPointToScreen(x, y, &screenX, &screenY);
|
||||
// pass hover to bottomtray
|
||||
LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
|
||||
S32 screenX, screenY;
|
||||
localPointToScreen(x, y, &screenX, &screenY);
|
||||
// pass hover to bottomtray
|
||||
LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
|
|
@ -83,10 +83,10 @@ BOOL LLBottomtrayButton::handleMouseUp(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
if (mCanDrag)
|
||||
{
|
||||
S32 screenX, screenY;
|
||||
localPointToScreen(x, y, &screenX, &screenY);
|
||||
// pass mouse up to bottomtray
|
||||
LLBottomTray::getInstance()->onDraggableButtonMouseUp(this, screenX, screenY);
|
||||
S32 screenX, screenY;
|
||||
localPointToScreen(x, y, &screenX, &screenY);
|
||||
// pass mouse up to bottomtray
|
||||
LLBottomTray::getInstance()->onDraggableButtonMouseUp(this, screenX, screenY);
|
||||
}
|
||||
return LLButton::handleMouseUp(x, y, mask);
|
||||
}
|
||||
|
|
@ -95,10 +95,10 @@ BOOL LLBottomtrayButton::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
if (mCanDrag)
|
||||
{
|
||||
S32 screenX, screenY;
|
||||
localPointToScreen(x, y, &screenX, &screenY);
|
||||
// pass mouse up to bottomtray
|
||||
LLBottomTray::getInstance()->onDraggableButtonMouseDown(this, screenX, screenY);
|
||||
S32 screenX, screenY;
|
||||
localPointToScreen(x, y, &screenX, &screenY);
|
||||
// pass mouse up to bottomtray
|
||||
LLBottomTray::getInstance()->onDraggableButtonMouseDown(this, screenX, screenY);
|
||||
}
|
||||
return LLButton::handleMouseDown(x, y, mask);
|
||||
}
|
||||
|
|
@ -774,7 +774,7 @@ void LLBottomTray::loadButtonsOrder()
|
|||
}
|
||||
// Nearbychat is not stored in order settings file, but it must be the first of the panels, so moving it
|
||||
// manually here
|
||||
mToolbarStack->movePanel(mNearbyChatBar, NULL, true);
|
||||
mToolbarStack->movePanel(mChatBarContainer, NULL, true);
|
||||
}
|
||||
|
||||
void LLBottomTray::onDraggableButtonMouseUp(LLUICtrl* ctrl, S32 x, S32 y)
|
||||
|
|
|
|||
|
|
@ -290,20 +290,6 @@ public:
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void setVisible(BOOL b)
|
||||
{
|
||||
// Overflow menu shouldn't hide when it still has focus. See EXT-4217.
|
||||
if (!b && hasFocus())
|
||||
return;
|
||||
LLToggleableMenu::setVisible(b);
|
||||
setFocus(b);
|
||||
}
|
||||
|
||||
void onFocusLost()
|
||||
{
|
||||
setVisible(FALSE);
|
||||
}
|
||||
|
||||
protected:
|
||||
LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p):
|
||||
LLToggleableMenu(p)
|
||||
|
|
@ -790,7 +776,6 @@ void LLFavoritesBarCtrl::updateButtons()
|
|||
LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mPopupMenuHandle.get());
|
||||
if (overflow_menu && overflow_menu->getVisible())
|
||||
{
|
||||
overflow_menu->setFocus(FALSE);
|
||||
overflow_menu->setVisible(FALSE);
|
||||
if (mUpdateDropDownItems)
|
||||
showDropDownMenu();
|
||||
|
|
@ -911,8 +896,6 @@ void LLFavoritesBarCtrl::showDropDownMenu()
|
|||
|
||||
if (menu)
|
||||
{
|
||||
// Release focus to allow changing of visibility.
|
||||
menu->setFocus(FALSE);
|
||||
if (!menu->toggleVisibility())
|
||||
return;
|
||||
|
||||
|
|
@ -1093,6 +1076,14 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
|
|||
{
|
||||
gInventory.removeItem(mSelectedItemID);
|
||||
}
|
||||
|
||||
// Pop-up the overflow menu again (it gets hidden whenever the user clicks a context menu item).
|
||||
// See EXT-4217 and STORM-207.
|
||||
LLToggleableMenu* menu = (LLToggleableMenu*) mPopupMenuHandle.get();
|
||||
if (menu && !menu->getVisible())
|
||||
{
|
||||
showDropDownMenu();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLFavoritesBarCtrl::isClipboardPasteable() const
|
||||
|
|
|
|||
|
|
@ -565,7 +565,10 @@ void LLPanelLandGeneral::refresh()
|
|||
if (regionp)
|
||||
{
|
||||
insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY);
|
||||
mLandType->setText(LLTrans::getString(regionp->getSimProductName()));
|
||||
|
||||
std::string land_type;
|
||||
bool is_land_type_localized = LLTrans::findString(land_type, regionp->getSimProductName());
|
||||
mLandType->setText(is_land_type_localized ? land_type : regionp->getSimProductName());
|
||||
}
|
||||
|
||||
// estate owner/manager cannot edit other parts of the parcel
|
||||
|
|
|
|||
|
|
@ -323,8 +323,9 @@ BOOL LLFloaterPreference::postBuild()
|
|||
if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
|
||||
tabcontainer->selectFirstTab();
|
||||
|
||||
getChild<LLUICtrl>("cache_location")->setEnabled(FALSE); // make it read-only but selectable (STORM-227)
|
||||
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
|
||||
getChild<LLUICtrl>("cache_location")->setValue(cache_location);
|
||||
setCacheLocation(cache_location);
|
||||
|
||||
// if floater is opened before login set default localized busy message
|
||||
if (LLStartUp::getStartupState() < STATE_STARTED)
|
||||
|
|
@ -414,7 +415,7 @@ void LLFloaterPreference::apply()
|
|||
fov_slider->setMaxValue(LLViewerCamera::getInstance()->getMaxView());
|
||||
|
||||
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
|
||||
getChild<LLUICtrl>("cache_location")->setValue(cache_location);
|
||||
setCacheLocation(cache_location);
|
||||
|
||||
LLViewerMedia::setCookiesEnabled(getChild<LLUICtrl>("cookies_enabled")->getValue());
|
||||
|
||||
|
|
@ -1310,6 +1311,12 @@ void LLFloaterPreference::getUIColor(LLUICtrl* ctrl, const LLSD& param)
|
|||
color_swatch->setOriginal(LLUIColorTable::instance().getColor(param.asString()));
|
||||
}
|
||||
|
||||
void LLFloaterPreference::setCacheLocation(const LLStringExplicit& location)
|
||||
{
|
||||
LLUICtrl* cache_location_editor = getChild<LLUICtrl>("cache_location");
|
||||
cache_location_editor->setValue(location);
|
||||
cache_location_editor->setToolTip(location);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static LLRegisterPanelClassWrapper<LLPanelPreference> t_places("panel_preference");
|
||||
|
|
|
|||
|
|
@ -103,6 +103,8 @@ protected:
|
|||
|
||||
public:
|
||||
|
||||
void setCacheLocation(const LLStringExplicit& location);
|
||||
|
||||
void onClickSetCache();
|
||||
void onClickResetCache();
|
||||
void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata);
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ static bool isGroupUIVisible()
|
|||
{
|
||||
static LLPanel* panel = 0;
|
||||
if(!panel)
|
||||
panel = LLSideTray::getInstance()->findChild<LLPanel>("panel_group_info_sidetray");
|
||||
panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
|
||||
if(!panel)
|
||||
return false;
|
||||
return panel->isInVisibleChain();
|
||||
|
|
|
|||
|
|
@ -495,6 +495,11 @@ LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const uuid_vec_t& ids)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
bool LLIMModel::LLIMSession::isOutgoingAdHoc()
|
||||
{
|
||||
return IM_SESSION_CONFERENCE_START == mType;
|
||||
}
|
||||
|
||||
bool LLIMModel::LLIMSession::isAdHoc()
|
||||
{
|
||||
return IM_SESSION_CONFERENCE_START == mType || (IM_SESSION_INVITE == mType && !gAgent.isInGroup(mSessionID));
|
||||
|
|
@ -1032,24 +1037,25 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
|
|||
// to Recent People to prevent showing of an item with (???)(???). See EXT-8246.
|
||||
// Concrete participants will be added into this list once they sent message in chat.
|
||||
if (IM_SESSION_INVITE == dialog) return;
|
||||
|
||||
// Add only online members to recent (EXT-8658)
|
||||
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
|
||||
LLSpeakerMgr::speaker_list_t speaker_list;
|
||||
if(speaker_mgr != NULL)
|
||||
{
|
||||
speaker_mgr->getSpeakerList(&speaker_list, true);
|
||||
}
|
||||
for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
|
||||
{
|
||||
const LLPointer<LLSpeaker>& speakerp = *it;
|
||||
|
||||
LLRecentPeople::instance().add(speakerp->mID);
|
||||
}
|
||||
addSpeakersToRecent(im_session_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLIMModel::addSpeakersToRecent(const LLUUID& im_session_id)
|
||||
{
|
||||
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
|
||||
LLSpeakerMgr::speaker_list_t speaker_list;
|
||||
if(speaker_mgr != NULL)
|
||||
{
|
||||
speaker_mgr->getSpeakerList(&speaker_list, true);
|
||||
}
|
||||
for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
|
||||
{
|
||||
const LLPointer<LLSpeaker>& speakerp = *it;
|
||||
LLRecentPeople::instance().add(speakerp->mID);
|
||||
}
|
||||
}
|
||||
|
||||
void session_starter_helper(
|
||||
|
|
@ -2280,9 +2286,6 @@ void LLIMMgr::addMessage(
|
|||
if (new_session)
|
||||
{
|
||||
LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id);
|
||||
// When addidng messages further here, name of session is used instead of "name", because they may not be the
|
||||
// same if it is an adhoc session (in this case name is localized in LLIMSession constructor).
|
||||
fixed_session_name = LLIMModel::getInstance()->getName(new_session_id);
|
||||
|
||||
// When we get a new IM, and if you are a god, display a bit
|
||||
// of information about the source. This is to help liaisons
|
||||
|
|
@ -2302,13 +2305,13 @@ void LLIMMgr::addMessage(
|
|||
//<< "*** region_id: " << region_id << std::endl
|
||||
//<< "*** position: " << position << std::endl;
|
||||
|
||||
LLIMModel::instance().addMessage(new_session_id, fixed_session_name, other_participant_id, bonus_info.str());
|
||||
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
|
||||
}
|
||||
|
||||
make_ui_sound("UISndNewIncomingIMSession");
|
||||
}
|
||||
|
||||
LLIMModel::instance().addMessage(new_session_id, fixed_session_name, other_participant_id, msg);
|
||||
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
|
||||
}
|
||||
|
||||
void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ public:
|
|||
/** @deprecated */
|
||||
static void chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata);
|
||||
|
||||
bool isOutgoingAdHoc();
|
||||
bool isAdHoc();
|
||||
bool isP2P();
|
||||
bool isOtherParticipantAvaline();
|
||||
|
|
@ -273,6 +274,9 @@ public:
|
|||
static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id,
|
||||
const LLUUID& other_participant_id, EInstantMessage dialog);
|
||||
|
||||
// Adds people from speakers list (people with whom you are currently speaking) to the Recent People List
|
||||
static void addSpeakersToRecent(const LLUUID& im_session_id);
|
||||
|
||||
void testMessages();
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ LLNameBox::LLNameBox(const Params& p)
|
|||
{
|
||||
mNameID = LLUUID::null;
|
||||
mLink = p.link;
|
||||
mParseHTML = mLink; // STORM-215
|
||||
mInitialValue = p.initial_value().asString();
|
||||
LLNameBox::sInstances.insert(this);
|
||||
setText(LLStringUtil::null);
|
||||
|
|
@ -119,7 +120,7 @@ void LLNameBox::setName(const std::string& name, BOOL is_group)
|
|||
std::string url;
|
||||
|
||||
if (is_group)
|
||||
url = "[secondlife:///app/group/" + LLURI::escape(name) + "/about " + name + "]";
|
||||
url = "[secondlife:///app/group/" + mNameID.asString() + "/about " + name + "]";
|
||||
else
|
||||
url = "[secondlife:///app/agent/" + mNameID.asString() + "/about " + name + "]";
|
||||
|
||||
|
|
|
|||
|
|
@ -597,7 +597,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
|
|||
//static
|
||||
void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id)
|
||||
{
|
||||
LLPanelGroup* panel = LLSideTray::getInstance()->findChild<LLPanelGroup>("panel_group_info_sidetray");
|
||||
LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
|
||||
if(!panel)
|
||||
return;
|
||||
panel->setGroupID(group_id);
|
||||
|
|
@ -612,7 +612,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
|
|||
const std::string& inventory_name,
|
||||
LLOfferInfo* inventory_offer)
|
||||
{
|
||||
LLPanelGroup* panel = LLSideTray::getInstance()->findChild<LLPanelGroup>("panel_group_info_sidetray");
|
||||
LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
|
||||
if(!panel)
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -1245,7 +1245,12 @@ void LLLandmarksPanel::doProcessParcelInfo(LLLandmark* landmark,
|
|||
landmark->getGlobalPos(landmark_global_pos);
|
||||
|
||||
// let's toggle pick panel into panel places
|
||||
LLPanel* panel_places = LLSideTray::getInstance()->getChild<LLPanel>("panel_places");//-> sidebar_places
|
||||
LLPanel* panel_places = LLSideTray::getInstance()->getPanel("panel_places");//-> sidebar_places
|
||||
if (!panel_places)
|
||||
{
|
||||
llassert(NULL != panel_places);
|
||||
return;
|
||||
}
|
||||
panel_places->addChild(panel_pick);
|
||||
LLRect paren_rect(panel_places->getRect());
|
||||
panel_pick->reshape(paren_rect.getWidth(),paren_rect.getHeight(), TRUE);
|
||||
|
|
|
|||
|
|
@ -138,6 +138,9 @@ public:
|
|||
LLScriptEdCore* getEditorCore() { return mEditorCore; }
|
||||
static LLFloaterScriptSearch* getInstance() { return sInstance; }
|
||||
|
||||
virtual bool hasAccelerators() const;
|
||||
virtual BOOL handleKeyHere(KEY key, MASK mask);
|
||||
|
||||
private:
|
||||
|
||||
LLScriptEdCore* mEditorCore;
|
||||
|
|
@ -242,7 +245,24 @@ void LLFloaterScriptSearch::handleBtnReplaceAll()
|
|||
mEditorCore->mEditor->replaceTextAll(getChild<LLUICtrl>("search_text")->getValue().asString(), getChild<LLUICtrl>("replace_text")->getValue().asString(), caseChk->get());
|
||||
}
|
||||
|
||||
bool LLFloaterScriptSearch::hasAccelerators() const
|
||||
{
|
||||
if (mEditorCore)
|
||||
{
|
||||
return mEditorCore->hasAccelerators();
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LLFloaterScriptSearch::handleKeyHere(KEY key, MASK mask)
|
||||
{
|
||||
if (mEditorCore)
|
||||
{
|
||||
return mEditorCore->handleKeyHere(key, mask);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/// ---------------------------------------------------------------------------
|
||||
/// LLScriptEdCore
|
||||
|
|
|
|||
|
|
@ -87,6 +87,8 @@ public:
|
|||
static void onBtnInsertSample(void*);
|
||||
static void onBtnInsertFunction(LLUICtrl*, void*);
|
||||
|
||||
virtual bool hasAccelerators() const { return true; }
|
||||
|
||||
private:
|
||||
void onBtnHelp();
|
||||
void onBtnDynamicHelp();
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@ template class LLSelectMgr* LLSingleton<class LLSelectMgr>::getInstance();
|
|||
//-----------------------------------------------------------------------------
|
||||
LLSelectMgr::LLSelectMgr()
|
||||
: mHideSelectedObjects(LLCachedControl<bool>(gSavedSettings, "HideSelectedObjects", FALSE)),
|
||||
mRenderHighlightSelections(LLCachedControl<bool>(gSavedSettings, "RenderHighlightSelections", TRUE)),
|
||||
mAllowSelectAvatar( LLCachedControl<bool>(gSavedSettings, "AllowSelectAvatar", FALSE)),
|
||||
mDebugSelectMgr(LLCachedControl<bool>(gSavedSettings, "DebugSelectMgr", FALSE))
|
||||
{
|
||||
|
|
@ -4898,7 +4899,7 @@ void LLSelectMgr::updateSelectionSilhouette(LLObjectSelectionHandle object_handl
|
|||
}
|
||||
void LLSelectMgr::renderSilhouettes(BOOL for_hud)
|
||||
{
|
||||
if (!mRenderSilhouettes)
|
||||
if (!mRenderSilhouettes || !mRenderHighlightSelections)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -347,6 +347,7 @@ public:
|
|||
static LLColor4 sContextSilhouetteColor;
|
||||
|
||||
LLCachedControl<bool> mHideSelectedObjects;
|
||||
LLCachedControl<bool> mRenderHighlightSelections;
|
||||
LLCachedControl<bool> mAllowSelectAvatar;
|
||||
LLCachedControl<bool> mDebugSelectMgr;
|
||||
|
||||
|
|
|
|||
|
|
@ -182,8 +182,26 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action)
|
|||
|
||||
void LLSidepanelInventory::onWearButtonClicked()
|
||||
{
|
||||
performActionOnSelection("wear");
|
||||
performActionOnSelection("attach");
|
||||
LLPanelMainInventory *panel_main_inventory = mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
if (!panel_main_inventory)
|
||||
{
|
||||
llassert(panel_main_inventory != NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get selected items set.
|
||||
const std::set<LLUUID> selected_uuids_set = panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList();
|
||||
if (selected_uuids_set.empty()) return; // nothing selected
|
||||
|
||||
// Convert the set to a vector.
|
||||
uuid_vec_t selected_uuids_vec;
|
||||
for (std::set<LLUUID>::const_iterator it = selected_uuids_set.begin(); it != selected_uuids_set.end(); ++it)
|
||||
{
|
||||
selected_uuids_vec.push_back(*it);
|
||||
}
|
||||
|
||||
// Wear all selected items.
|
||||
wear_multiple(selected_uuids_vec, true);
|
||||
}
|
||||
|
||||
void LLSidepanelInventory::onPlayButtonClicked()
|
||||
|
|
@ -286,7 +304,7 @@ void LLSidepanelInventory::updateVerbs()
|
|||
case LLInventoryType::IT_OBJECT:
|
||||
case LLInventoryType::IT_ATTACHMENT:
|
||||
mWearBtn->setVisible(TRUE);
|
||||
mWearBtn->setEnabled(get_can_item_be_worn(item->getLinkedUUID()));
|
||||
mWearBtn->setEnabled(canWearSelected());
|
||||
mShopBtn->setVisible(FALSE);
|
||||
break;
|
||||
case LLInventoryType::IT_SOUND:
|
||||
|
|
@ -311,18 +329,39 @@ bool LLSidepanelInventory::canShare()
|
|||
LLPanelMainInventory* panel_main_inventory =
|
||||
mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
|
||||
LLFolderView* root_folder =
|
||||
panel_main_inventory->getActivePanel()->getRootFolder();
|
||||
if (!panel_main_inventory)
|
||||
{
|
||||
llwarns << "Failed to get the main inventory panel" << llendl;
|
||||
return false;
|
||||
}
|
||||
|
||||
LLFolderViewItem* current_item = root_folder->hasVisibleChildren()
|
||||
? root_folder->getCurSelectedItem()
|
||||
: NULL;
|
||||
LLInventoryPanel* active_panel = panel_main_inventory->getActivePanel();
|
||||
// Avoid flicker in the Recent tab while inventory is being loaded.
|
||||
if (!active_panel->getRootFolder()->hasVisibleChildren()) return false;
|
||||
|
||||
LLInvFVBridge* bridge = current_item
|
||||
? dynamic_cast <LLInvFVBridge*> (current_item->getListener())
|
||||
: NULL;
|
||||
return LLAvatarActions::canShareSelectedItems(active_panel);
|
||||
}
|
||||
|
||||
return bridge ? bridge->canShare() : false;
|
||||
bool LLSidepanelInventory::canWearSelected()
|
||||
{
|
||||
LLPanelMainInventory* panel_main_inventory =
|
||||
mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
|
||||
if (!panel_main_inventory)
|
||||
{
|
||||
llassert(panel_main_inventory != NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
std::set<LLUUID> selected_uuids = panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList();
|
||||
for (std::set<LLUUID>::const_iterator it = selected_uuids.begin();
|
||||
it != selected_uuids.end();
|
||||
++it)
|
||||
{
|
||||
if (!get_can_item_be_worn(*it)) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
LLInventoryItem *LLSidepanelInventory::getSelectedItem()
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ protected:
|
|||
void performActionOnSelection(const std::string &action);
|
||||
void updateVerbs();
|
||||
|
||||
bool canWearSelected(); // check whether selected items can be worn
|
||||
|
||||
//
|
||||
// UI Elements
|
||||
//
|
||||
|
|
|
|||
|
|
@ -109,6 +109,22 @@ public:
|
|||
LLPanel* getPanel (const std::string& panel_name);
|
||||
LLPanel* getActivePanel ();
|
||||
bool isPanelActive (const std::string& panel_name);
|
||||
|
||||
/*
|
||||
* get the panel of given type T (don't show it or do anything else with it)
|
||||
*/
|
||||
template <typename T>
|
||||
T* getPanel(const std::string& panel_name)
|
||||
{
|
||||
T* panel = dynamic_cast<T*>(getPanel(panel_name));
|
||||
if (!panel)
|
||||
{
|
||||
llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
|
||||
return NULL;
|
||||
}
|
||||
return panel;
|
||||
}
|
||||
|
||||
/*
|
||||
* get currently active tab
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -217,8 +217,6 @@ BOOL LLStatusBar::postBuild()
|
|||
mSGPacketLoss->mPerSec = FALSE;
|
||||
addChild(mSGPacketLoss);
|
||||
|
||||
getChild<LLTextBox>("stat_btn")->setClickedCallback(onClickStatGraph);
|
||||
|
||||
mPanelVolumePulldown = new LLPanelVolumePulldown();
|
||||
addChild(mPanelVolumePulldown);
|
||||
mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
|
||||
|
|
@ -516,12 +514,6 @@ void LLStatusBar::onClickMediaToggle(void* data)
|
|||
LLViewerMedia::setAllMediaEnabled(enable);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLStatusBar::onClickStatGraph(void* data)
|
||||
{
|
||||
LLFloaterReg::showInstance("lagmeter");
|
||||
}
|
||||
|
||||
BOOL can_afford_transaction(S32 cost)
|
||||
{
|
||||
return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost)));
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ private:
|
|||
void onMouseEnterVolume();
|
||||
void onMouseEnterNearbyMedia();
|
||||
void onClickScreen(S32 x, S32 y);
|
||||
static void onClickStatGraph(void* data);
|
||||
|
||||
static void onClickMediaToggle(void* data);
|
||||
|
||||
|
|
|
|||
|
|
@ -847,10 +847,16 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
if(mCanUseHTTP)
|
||||
{
|
||||
//NOTE:
|
||||
//it seems ok to let sim control the UDP traffic
|
||||
//so there is no throttle for http here.
|
||||
//control the number of the http requests issued for:
|
||||
//1, not openning too many file descriptors at the same time;
|
||||
//2, control the traffic of http so udp gets bandwidth.
|
||||
//
|
||||
|
||||
static const S32 MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE = 32 ;
|
||||
if(mFetcher->getNumHTTPRequests() > MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE)
|
||||
{
|
||||
return false ; //wait.
|
||||
}
|
||||
|
||||
mFetcher->removeFromNetworkQueue(this, false);
|
||||
|
||||
S32 cur_size = 0;
|
||||
|
|
|
|||
|
|
@ -6453,7 +6453,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
|
|||
LLPanelLandCovenant::updateEstateOwnerName(owner_name);
|
||||
LLFloaterBuyLand::updateEstateOwnerName(owner_name);
|
||||
|
||||
LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile");
|
||||
LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
|
||||
if (panel)
|
||||
{
|
||||
panel->updateEstateName(estate_name);
|
||||
|
|
@ -6587,7 +6587,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
|
|||
LLPanelLandCovenant::updateCovenantText(covenant_text);
|
||||
LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
|
||||
|
||||
LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile");
|
||||
LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
|
||||
if (panel)
|
||||
{
|
||||
panel->updateCovenantText(covenant_text);
|
||||
|
|
|
|||
|
|
@ -1349,8 +1349,8 @@ LLViewerWindow::LLViewerWindow(
|
|||
if (!LLAppViewer::instance()->restoreErrorTrap())
|
||||
{
|
||||
LL_WARNS("Window") << " Someone took over my signal/exception handler (post createWindow)!" << LL_ENDL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LLCoordScreen scr;
|
||||
mWindow->getSize(&scr);
|
||||
|
||||
|
|
@ -2146,10 +2146,20 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus();
|
||||
|
||||
// give menus a chance to handle modified (Ctrl, Alt) shortcut keys before current focus
|
||||
// as long as focus isn't locked
|
||||
if (mask & (MASK_CONTROL | MASK_ALT) && !gFocusMgr.focusLocked())
|
||||
{
|
||||
// Check the current floater's menu first, if it has one.
|
||||
if (gFocusMgr.keyboardFocusHasAccelerators()
|
||||
&& keyboard_focus
|
||||
&& keyboard_focus->handleKey(key,mask,FALSE))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
|
||||
||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask)))
|
||||
{
|
||||
|
|
@ -2185,7 +2195,6 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
|
|||
}
|
||||
|
||||
// Traverses up the hierarchy
|
||||
LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus();
|
||||
if( keyboard_focus )
|
||||
{
|
||||
LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
|
||||
|
|
|
|||
|
|
@ -6089,9 +6089,9 @@ void LLVOAvatar::updateMeshTextures()
|
|||
// use the last-known good baked texture until it finish the first
|
||||
// render of the new layerset.
|
||||
|
||||
const BOOL layerset_invalid = !mBakedTextureDatas[i].mTexLayerSet
|
||||
|| !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()
|
||||
|| !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable();
|
||||
const BOOL layerset_invalid = mBakedTextureDatas[i].mTexLayerSet
|
||||
&& ( !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()
|
||||
|| !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable() );
|
||||
|
||||
use_lkg_baked_layer[i] = (!is_layer_baked[i]
|
||||
&& (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR)
|
||||
|
|
|
|||
|
|
@ -497,14 +497,28 @@ void LLVoiceChannelGroup::activate()
|
|||
mURI,
|
||||
mCredentials);
|
||||
|
||||
#if 0 // *TODO
|
||||
if (!gAgent.isInGroup(mSessionID)) // ad-hoc channel
|
||||
{
|
||||
// Add the party to the list of people with which we've recently interacted.
|
||||
for (/*people in the chat*/)
|
||||
LLRecentPeople::instance().add(buddy_id);
|
||||
LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionID);
|
||||
// Adding ad-hoc call participants to Recent People List.
|
||||
// If it's an outgoing ad-hoc, we can use mInitialTargetIDs that holds IDs of people we
|
||||
// called(both online and offline) as source to get people for recent (STORM-210).
|
||||
if (session->isOutgoingAdHoc())
|
||||
{
|
||||
for (uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
|
||||
it!=session->mInitialTargetIDs.end();++it)
|
||||
{
|
||||
const LLUUID id = *it;
|
||||
LLRecentPeople::instance().add(id);
|
||||
}
|
||||
}
|
||||
// If this ad-hoc is incoming then trying to get ids of people from mInitialTargetIDs
|
||||
// would lead to EXT-8246. So in this case we get them from speakers list.
|
||||
else
|
||||
{
|
||||
LLIMModel::addSpeakersToRecent(mSessionID);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//Mic default state is OFF on initiating/joining Ad-Hoc/Group calls
|
||||
if (LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle())
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
Jeder:
|
||||
</text>
|
||||
<check_box label="Kopieren" name="everyone_copy"/>
|
||||
<text name="NextOwnerLabel" top="160" left="10" width="200">
|
||||
<text name="NextOwnerLabel">
|
||||
Nächster Eigentümer:
|
||||
</text>
|
||||
<check_box label="Bearbeiten" name="next_owner_modify"/>
|
||||
|
|
|
|||
|
|
@ -71,8 +71,8 @@
|
|||
<text label="Beide Seiten dehnen" name="checkbox uniform label">
|
||||
Beide Seiten dehnen
|
||||
</text>
|
||||
<check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures"/>
|
||||
<check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid" top_pad="10"/>
|
||||
<check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures" top_pad="-5"/>
|
||||
<check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid" top_pad="15"/>
|
||||
<combo_box name="combobox grid mode" tool_tip="Wählen Sie ein Rasterlineal zum Positionieren des Objekts aus.">
|
||||
<combo_box.item label="Globales Raster" name="World"/>
|
||||
<combo_box.item label="Lokales Raster" name="Local"/>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
name="floaterbulkperms"
|
||||
help_topic="floaterbulkperms"
|
||||
title="EDIT CONTENT PERMISSIONS"
|
||||
width="270">
|
||||
width="300">
|
||||
<floater.string
|
||||
name="nothing_to_modify_text">
|
||||
Selection contains no editable contents.
|
||||
|
|
@ -164,7 +164,7 @@
|
|||
label="√ All"
|
||||
left="180"
|
||||
top="26"
|
||||
width="70">
|
||||
width="115">
|
||||
<button.commit_callback
|
||||
function="BulkPermission.CheckAll" />
|
||||
</button>
|
||||
|
|
@ -176,7 +176,7 @@
|
|||
layout="topleft"
|
||||
top_pad="8"
|
||||
name="check_none"
|
||||
width="70" >
|
||||
width="115" >
|
||||
<button.commit_callback
|
||||
function="BulkPermission.UncheckAll"/>
|
||||
</button>
|
||||
|
|
@ -199,10 +199,11 @@
|
|||
length="1"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="16"
|
||||
height="28"
|
||||
left="10"
|
||||
name="GroupLabel"
|
||||
width="88">
|
||||
width="92"
|
||||
word_wrap="true">
|
||||
Group:
|
||||
</text>
|
||||
<check_box
|
||||
|
|
@ -212,17 +213,18 @@
|
|||
layout="topleft"
|
||||
top_pad="0"
|
||||
name="share_with_group"
|
||||
width="88" />
|
||||
width="92" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
name="AnyoneLabel"
|
||||
left="100"
|
||||
left="104"
|
||||
top="110"
|
||||
width="88">
|
||||
width="92"
|
||||
word_wrap="true">
|
||||
Anyone:
|
||||
</text>
|
||||
<check_box
|
||||
|
|
@ -232,17 +234,18 @@
|
|||
layout="topleft"
|
||||
top_pad="0"
|
||||
name="everyone_copy"
|
||||
width="88" />
|
||||
width="92" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
name="NextOwnerLabel"
|
||||
top="110"
|
||||
left="185"
|
||||
width="88">
|
||||
left="189"
|
||||
width="92"
|
||||
word_wrap="true">
|
||||
Next owner:
|
||||
</text>
|
||||
<check_box
|
||||
|
|
@ -252,7 +255,7 @@
|
|||
layout="topleft"
|
||||
name="next_owner_modify"
|
||||
top_pad="0"
|
||||
width="83" />
|
||||
width="92" />
|
||||
<check_box
|
||||
control_name="BulkChangeNextOwnerCopy"
|
||||
height="16"
|
||||
|
|
@ -260,7 +263,7 @@
|
|||
layout="topleft"
|
||||
top_pad="0"
|
||||
name="next_owner_copy"
|
||||
width="88">
|
||||
width="92">
|
||||
<check_box.commit_callback
|
||||
function="BulkPermission.CommitCopy"/>
|
||||
</check_box>
|
||||
|
|
@ -274,7 +277,7 @@
|
|||
layout="topleft"
|
||||
name="next_owner_transfer"
|
||||
tool_tip="Next owner can give away or resell this object"
|
||||
width="106" />
|
||||
width="92" />
|
||||
<scroll_list
|
||||
enabled="false"
|
||||
follows="all"
|
||||
|
|
@ -289,7 +292,7 @@
|
|||
height="23"
|
||||
label="OK"
|
||||
layout="topleft"
|
||||
left="65"
|
||||
left="95"
|
||||
name="apply"
|
||||
top_pad="10"
|
||||
width="90">
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
width="620">
|
||||
<web_browser
|
||||
trusted_content="true"
|
||||
bottom="-11"
|
||||
bottom="-25"
|
||||
follows="left|right|top|bottom"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@
|
|||
label="Edit linked"
|
||||
layout="topleft"
|
||||
name="checkbox edit linked parts"
|
||||
top_pad="0">
|
||||
top_pad="2">
|
||||
<check_box.commit_callback
|
||||
function="BuildTool.selectComponent"/>
|
||||
</check_box>
|
||||
|
|
@ -267,7 +267,7 @@
|
|||
left="13"
|
||||
name="RenderingCost"
|
||||
tool_tip="Shows the rendering cost calculated for this object"
|
||||
top_pad="2"
|
||||
top_pad="0"
|
||||
type="string"
|
||||
width="100">
|
||||
þ: [COUNT]
|
||||
|
|
@ -732,7 +732,7 @@
|
|||
layout="topleft"
|
||||
right="-10"
|
||||
name="obj_count"
|
||||
top_pad="5"
|
||||
top_pad="7"
|
||||
width="143">
|
||||
Objects: [COUNT]
|
||||
</text>
|
||||
|
|
@ -758,7 +758,7 @@
|
|||
tab_min_width="40"
|
||||
tab_position="top"
|
||||
tab_height="25"
|
||||
top="170"
|
||||
top="173"
|
||||
width="295">
|
||||
<panel
|
||||
border="false"
|
||||
|
|
|
|||
|
|
@ -669,6 +669,14 @@
|
|||
function="Tools.SaveToObjectInventory" />
|
||||
<menu_item_call.on_enable
|
||||
function="Tools.EnableSaveToObjectInventory" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Return Object"
|
||||
name="Return Object back to Owner">
|
||||
<menu_item_call.on_click
|
||||
function="Object.Return" />
|
||||
<menu_item_call.on_enable
|
||||
function="Object.EnableReturn" />
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
<menu
|
||||
|
|
@ -772,6 +780,16 @@
|
|||
|
||||
<menu_item_separator/>
|
||||
|
||||
<menu_item_check
|
||||
label="Show Selection Outlines"
|
||||
name="Show Selection Outlines">
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="RenderHighlightSelections" />
|
||||
<menu_item_check.on_click
|
||||
function="ToggleControl"
|
||||
parameter="RenderHighlightSelections" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Show Hidden Selection"
|
||||
name="Show Hidden Selection">
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@
|
|||
layout="topleft"
|
||||
left="45"
|
||||
name="attachment"
|
||||
parse_urls="false"
|
||||
text_color="GroupNotifyTextColor"
|
||||
value="Attachment"
|
||||
use_ellipses="true"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
height="18"
|
||||
layout="topleft"
|
||||
name="curr_outfit_name"
|
||||
parse_urls="false"
|
||||
text_color="LtGray"
|
||||
top_pad="2"
|
||||
value="[Current Outfit]"
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
layout="topleft"
|
||||
left="110"
|
||||
name="picture_name"
|
||||
parse_urls="false"
|
||||
text_color="white"
|
||||
top="9"
|
||||
use_ellipses="true"
|
||||
|
|
|
|||
|
|
@ -195,7 +195,6 @@
|
|||
control_name="CacheLocationTopFolder"
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
enabled="false"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="23"
|
||||
|
|
|
|||
|
|
@ -118,13 +118,4 @@
|
|||
name="volume_btn"
|
||||
tool_tip="Global Volume Control"
|
||||
width="16" />
|
||||
<text
|
||||
follows="right|top"
|
||||
halign="center"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="stat_btn"
|
||||
top_delta="0"
|
||||
width="20"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ width="333">
|
|||
font="SansSerifLargeBold"
|
||||
height="20"
|
||||
left="35"
|
||||
parse_urls="false"
|
||||
text_color="White"
|
||||
top="15"
|
||||
use_ellipses="true"
|
||||
|
|
|
|||
|
|
@ -321,6 +321,8 @@
|
|||
|
||||
<!-- For land type back from the simulator -->
|
||||
<string name="Estate / Full Region">Estate / Full Region</string>
|
||||
<string name="Estate / Homestead">Estate / Homestead</string>
|
||||
<string name="Mainland / Homestead">Mainland / Homestead</string>
|
||||
<string name="Mainland / Full Region">Mainland / Full Region</string>
|
||||
|
||||
<!-- File load/save dialogs -->
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="toolbox floater" short_title="HERRAMIENTAS DE CONSTRUCCIÓN" title="" width="288">
|
||||
<floater name="toolbox floater" short_title="HERRAMIENTAS DE CONSTRUCCIÓN" title="">
|
||||
<floater.string name="status_rotate">
|
||||
Arrastra las bandas de color para girar el objeto.
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@
|
|||
<icon name="icon_sound" tool_tip="Dźwięki"/>
|
||||
<check_box label="Tekstury" name="check_texture"/>
|
||||
<icon name="icon_texture" tool_tip="Tekstury"/>
|
||||
<button font="SansSerifSmall" label="√ Wszystkie" label_selected="Wszystkie" name="check_all" width="115"/>
|
||||
<button font="SansSerifSmall" label="Żadne" label_selected="Żadne" name="check_none" width="115"/>
|
||||
<button font="SansSerifSmall" label="√ Wszystkie" label_selected="Wszystkie" name="check_all"/>
|
||||
<button font="SansSerifSmall" label="Żadne" label_selected="Żadne" name="check_none"/>
|
||||
<text name="newperms">
|
||||
Nowe prawa zawartości
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
project(login)
|
||||
|
||||
include(00-Common)
|
||||
include(LLAddBuildTest)
|
||||
if(LL_TESTS)
|
||||
include(LLAddBuildTest)
|
||||
endif(LL_TESTS)
|
||||
include(LLCommon)
|
||||
include(LLMath)
|
||||
include(LLXML)
|
||||
|
|
@ -43,14 +45,16 @@ target_link_libraries(lllogin
|
|||
${PTH_LIBRARIES}
|
||||
)
|
||||
|
||||
SET(lllogin_TEST_SOURCE_FILES
|
||||
if(LL_TESTS)
|
||||
SET(lllogin_TEST_SOURCE_FILES
|
||||
lllogin.cpp
|
||||
)
|
||||
|
||||
set_source_files_properties(
|
||||
lllogin.cpp
|
||||
PROPERTIES
|
||||
LL_TEST_ADDITIONAL_LIBRARIES "${PTH_LIBRARIES}"
|
||||
)
|
||||
|
||||
set_source_files_properties(
|
||||
lllogin.cpp
|
||||
PROPERTIES
|
||||
LL_TEST_ADDITIONAL_LIBRARIES "${PTH_LIBRARIES}"
|
||||
)
|
||||
|
||||
LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}")
|
||||
LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}")
|
||||
endif(LL_TESTS)
|
||||
|
|
|
|||
Loading…
Reference in New Issue