Test merge

master
callum 2010-10-04 17:40:59 -07:00
commit 21c8dea4e4
61 changed files with 508 additions and 227 deletions

View File

@ -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
# ========================================

View File

@ -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

View File

@ -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
)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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 )
{

View File

@ -118,6 +118,8 @@ public:
void unlockFocus();
BOOL focusLocked() const { return mLockedView != NULL; }
bool keyboardFocusHasAccelerators() const;
private:
LLUICtrl* mLockedView;

View File

@ -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())

View File

@ -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;

View File

@ -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.

View File

@ -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

View File

@ -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}

View File

@ -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");
}

View File

@ -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}

View File

@ -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>

View File

@ -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)
{

View File

@ -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);

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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");

View File

@ -103,6 +103,8 @@ protected:
public:
void setCacheLocation(const LLStringExplicit& location);
void onClickSetCache();
void onClickResetCache();
void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata);

View File

@ -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();

View File

@ -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)

View File

@ -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();
/**

View File

@ -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 + "]";

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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();

View File

@ -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;
}

View File

@ -347,6 +347,7 @@ public:
static LLColor4 sContextSilhouetteColor;
LLCachedControl<bool> mHideSelectedObjects;
LLCachedControl<bool> mRenderHighlightSelections;
LLCachedControl<bool> mAllowSelectAvatar;
LLCachedControl<bool> mDebugSelectMgr;

View File

@ -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()

View File

@ -65,6 +65,8 @@ protected:
void performActionOnSelection(const std::string &action);
void updateVerbs();
bool canWearSelected(); // check whether selected items can be worn
//
// UI Elements
//

View File

@ -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
*/

View File

@ -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)));

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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)

View File

@ -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())

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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">

View File

@ -37,7 +37,7 @@
width="620">
<web_browser
trusted_content="true"
bottom="-11"
bottom="-25"
follows="left|right|top|bottom"
layout="topleft"
left="0"

View File

@ -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"

View File

@ -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">

View File

@ -85,6 +85,7 @@
layout="topleft"
left="45"
name="attachment"
parse_urls="false"
text_color="GroupNotifyTextColor"
value="Attachment"
use_ellipses="true"

View File

@ -132,6 +132,7 @@
height="18"
layout="topleft"
name="curr_outfit_name"
parse_urls="false"
text_color="LtGray"
top_pad="2"
value="[Current Outfit]"

View File

@ -52,6 +52,7 @@
layout="topleft"
left="110"
name="picture_name"
parse_urls="false"
text_color="white"
top="9"
use_ellipses="true"

View File

@ -195,7 +195,6 @@
control_name="CacheLocationTopFolder"
border_style="line"
border_thickness="1"
enabled="false"
follows="left|top"
font="SansSerif"
height="23"

View File

@ -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>

View File

@ -77,6 +77,7 @@ width="333">
font="SansSerifLargeBold"
height="20"
left="35"
parse_urls="false"
text_color="White"
top="15"
use_ellipses="true"

View File

@ -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 -->

View File

@ -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>

View File

@ -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>

View File

@ -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)