diff options
101 files changed, 1119 insertions, 545 deletions
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index ed06c85e1a..b92ccd1d77 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -592,7 +592,7 @@ LLAudioBuffer * LLAudioEngine::getFreeBuffer() if (buffer_id >= 0) { - llinfos << "Taking over unused buffer " << buffer_id << llendl; + lldebugs << "Taking over unused buffer " << buffer_id << llendl; //llinfos << "Flushing unused buffer!" << llendl; mBuffers[buffer_id]->mAudioDatap->mBufferp = NULL; delete mBuffers[buffer_id]; diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp index 1b0e03cb2a..411977474b 100644 --- a/indra/llcommon/llworkerthread.cpp +++ b/indra/llcommon/llworkerthread.cpp @@ -65,6 +65,27 @@ LLWorkerThread::~LLWorkerThread() // ~LLQueuedThread() will be called here } +//called only in destructor. +void LLWorkerThread::clearDeleteList() +{ + // Delete any workers in the delete queue (should be safe - had better be!) + if (!mDeleteList.empty()) + { + llwarns << "Worker Thread: " << mName << " destroyed with " << mDeleteList.size() + << " entries in delete list." << llendl; + + mDeleteMutex->lock(); + for (delete_list_t::iterator iter = mDeleteList.begin(); iter != mDeleteList.end(); ++iter) + { + (*iter)->mRequestHandle = LLWorkerThread::nullHandle(); + (*iter)->clearFlags(LLWorkerClass::WCF_HAVE_WORK); + delete *iter ; + } + mDeleteList.clear() ; + mDeleteMutex->unlock() ; + } +} + // virtual S32 LLWorkerThread::update(U32 max_time_ms) { @@ -320,7 +341,20 @@ bool LLWorkerClass::checkWork(bool aborting) if (mRequestHandle != LLWorkerThread::nullHandle()) { LLWorkerThread::WorkRequest* workreq = (LLWorkerThread::WorkRequest*)mWorkerThread->getRequest(mRequestHandle); - llassert_always(workreq); + if(!workreq) + { + if(mWorkerThread->isQuitting() || mWorkerThread->isStopped()) //the mWorkerThread is not running + { + mRequestHandle = LLWorkerThread::nullHandle(); + clearFlags(WCF_HAVE_WORK); + return true ; + } + else + { + llassert_always(workreq); + } + } + LLQueuedThread::status_t status = workreq->getStatus(); if (status == LLWorkerThread::STATUS_ABORTED) { diff --git a/indra/llcommon/llworkerthread.h b/indra/llcommon/llworkerthread.h index a1e85d2ecc..1756ebab6b 100644 --- a/indra/llcommon/llworkerthread.h +++ b/indra/llcommon/llworkerthread.h @@ -80,6 +80,9 @@ public: S32 mParam; }; +protected: + void clearDeleteList() ; + private: typedef std::list<LLWorkerClass*> delete_list_t; delete_list_t mDeleteList; diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index e223e1c0bf..c1d512e148 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -160,7 +160,7 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p) createLineEditor(p); - setTopLostCallback(boost::bind(&LLComboBox::hideList, this)); + mTopLostSignalConnection = setTopLostCallback(boost::bind(&LLComboBox::hideList, this)); } void LLComboBox::initFromParams(const LLComboBox::Params& p) @@ -187,6 +187,9 @@ BOOL LLComboBox::postBuild() LLComboBox::~LLComboBox() { // children automatically deleted, including mMenu, mButton + + // explicitly disconect this signal, since base class destructor might fire top lost + mTopLostSignalConnection.disconnect(); } @@ -616,16 +619,14 @@ void LLComboBox::showList() mList->setFocus(TRUE); - // register ourselves as a "top" control - // effectively putting us into a special draw layer - // and not affecting the bounding rectangle calculation - gFocusMgr.setTopCtrl(this); - // Show the list and push the button down mButton->setToggleState(TRUE); mList->setVisible(TRUE); + LLUI::addPopup(this); + setUseBoundingRect(TRUE); +// updateBoundingRect(); } void LLComboBox::hideList() @@ -648,10 +649,8 @@ void LLComboBox::hideList() mList->mouseOverHighlightNthItem(-1); setUseBoundingRect(FALSE); - if( gFocusMgr.getTopCtrl() == this ) - { - gFocusMgr.setTopCtrl(NULL); - } + LLUI::removePopup(this); +// updateBoundingRect(); } } diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index 62aab92abc..965061ead2 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -231,6 +231,7 @@ private: commit_callback_t mPrearrangeCallback; commit_callback_t mTextEntryCallback; commit_callback_t mSelectionCallback; + boost::signals2::connection mTopLostSignalConnection; }; // A combo box with icons for the list of items. diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index e91d753a39..4cb336f7ea 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -527,10 +527,7 @@ void LLFloater::setVisible( BOOL visible ) if( !visible ) { - if( gFocusMgr.childIsTopCtrl( this ) ) - { - gFocusMgr.setTopCtrl(NULL); - } + LLUI::removePopup(this); if( gFocusMgr.childHasMouseCapture( this ) ) { @@ -704,10 +701,7 @@ void LLFloater::reshape(S32 width, S32 height, BOOL called_from_parent) void LLFloater::releaseFocus() { - if( gFocusMgr.childIsTopCtrl( this ) ) - { - gFocusMgr.setTopCtrl(NULL); - } + LLUI::removePopup(this); setFocus(FALSE); @@ -1360,7 +1354,7 @@ void LLFloater::bringToFront( S32 x, S32 y ) // virtual void LLFloater::setVisibleAndFrontmost(BOOL take_focus) { - gFocusMgr.setTopCtrl(NULL); + LLUI::clearPopups(); setVisible(TRUE); setFrontmost(take_focus); } @@ -2508,10 +2502,7 @@ void LLFloaterView::syncFloaterTabOrder() if (modal_dialog) { // If we have a visible modal dialog, make sure that it has focus - if( gFocusMgr.getTopCtrl() != modal_dialog ) - { - gFocusMgr.setTopCtrl( modal_dialog ); - } + LLUI::addPopup(modal_dialog); if( !gFocusMgr.childHasKeyboardFocus( modal_dialog ) ) { diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp index 35fbc7b0a8..b3af258456 100644 --- a/indra/llui/llfocusmgr.cpp +++ b/indra/llui/llfocusmgr.cpp @@ -38,8 +38,6 @@ const F32 FOCUS_FADE_TIME = 0.3f; -// NOTE: the LLFocusableElement implementation has been moved here from lluictrl.cpp. - LLFocusableElement::LLFocusableElement() : mFocusLostCallback(NULL), mFocusReceivedCallback(NULL), @@ -124,8 +122,7 @@ boost::signals2::connection LLFocusableElement::setTopLostCallback(const focus_s LLFocusMgr gFocusMgr; LLFocusMgr::LLFocusMgr() - : - mLockedView( NULL ), +: mLockedView( NULL ), mMouseCaptor( NULL ), mKeyboardFocus( NULL ), mLastKeyboardFocus( NULL ), @@ -133,16 +130,11 @@ LLFocusMgr::LLFocusMgr() mKeystrokesOnly(FALSE), mTopCtrl( NULL ), mAppHasFocus(TRUE) // Macs don't seem to notify us that we've gotten focus, so default to true - #ifdef _DEBUG - , mMouseCaptorName("none") - , mKeyboardFocusName("none") - , mTopCtrlName("none") - #endif { } -void LLFocusMgr::releaseFocusIfNeeded( const LLView* view ) +void LLFocusMgr::releaseFocusIfNeeded( LLView* view ) { if( childHasMouseCapture( view ) ) { @@ -162,10 +154,7 @@ void LLFocusMgr::releaseFocusIfNeeded( const LLView* view ) } } - if( childIsTopCtrl( view ) ) - { - setTopCtrl( NULL ); - } + LLUI::removePopup(view); } @@ -248,11 +237,6 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL return; } - #ifdef _DEBUG - LLUICtrl* focus_ctrl = dynamic_cast<LLUICtrl*>(new_focus); - mKeyboardFocusName = focus_ctrl ? focus_ctrl->getName() : std::string("none"); - #endif - // If we've got a default keyboard focus, and the caller is // releasing keyboard focus, move to the default. if (mDefaultKeyboardFocus != NULL && mKeyboardFocus == NULL) @@ -334,20 +318,12 @@ void LLFocusMgr::removeKeyboardFocusWithoutCallback( const LLFocusableElement* f if( mKeyboardFocus == focus ) { mKeyboardFocus = NULL; - #ifdef _DEBUG - mKeyboardFocusName = std::string("none"); - #endif } } void LLFocusMgr::setMouseCapture( LLMouseHandler* new_captor ) { - //if (mFocusLocked) - //{ - // return; - //} - if( new_captor != mMouseCaptor ) { LLMouseHandler* old_captor = mMouseCaptor; @@ -370,24 +346,14 @@ void LLFocusMgr::setMouseCapture( LLMouseHandler* new_captor ) old_captor->onMouseCaptureLost(); } - #ifdef _DEBUG - mMouseCaptorName = new_captor ? new_captor->getName() : std::string("none"); - #endif } } void LLFocusMgr::removeMouseCaptureWithoutCallback( const LLMouseHandler* captor ) { - //if (mFocusLocked) - //{ - // return; - //} if( mMouseCaptor == captor ) { mMouseCaptor = NULL; - #ifdef _DEBUG - mMouseCaptorName = std::string("none"); - #endif } } @@ -416,10 +382,6 @@ void LLFocusMgr::setTopCtrl( LLUICtrl* new_top ) { mTopCtrl = new_top; - #ifdef _DEBUG - mTopCtrlName = new_top ? new_top->getName() : std::string("none"); - #endif - if (old_top) { old_top->onTopLost(); @@ -432,9 +394,6 @@ void LLFocusMgr::removeTopCtrlWithoutCallback( const LLUICtrl* top_view ) if( mTopCtrl == top_view ) { mTopCtrl = NULL; - #ifdef _DEBUG - mTopCtrlName = std::string("none"); - #endif } } @@ -478,9 +437,9 @@ void LLFocusMgr::setAppHasFocus(BOOL focus) } // release focus from "top ctrl"s, which generally hides them - if (!focus && mTopCtrl) + if (!focus) { - setTopCtrl(NULL); + LLUI::clearPopups(); } mAppHasFocus = focus; } diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h index 83ecd1d301..86d3ccf111 100644 --- a/indra/llui/llfocusmgr.h +++ b/indra/llui/llfocusmgr.h @@ -65,10 +65,10 @@ public: virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent); + virtual void onTopLost(); // called when registered as top ctrl and user clicks elsewhere protected: virtual void onFocusReceived(); virtual void onFocusLost(); - virtual void onTopLost(); // called when registered as top ctrl and user clicks elsewhere focus_signal_t* mFocusLostCallback; focus_signal_t* mFocusReceivedCallback; focus_signal_t* mFocusChangedCallback; @@ -119,7 +119,7 @@ public: BOOL childIsTopCtrl( const LLView* parent ) const; // All Three - void releaseFocusIfNeeded( const LLView* top_view ); + void releaseFocusIfNeeded( LLView* top_view ); void lockFocus(); void unlockFocus(); BOOL focusLocked() const { return mLockedView != NULL; } @@ -149,12 +149,6 @@ private: typedef std::map<LLHandle<LLView>, LLHandle<LLView> > focus_history_map_t; focus_history_map_t mFocusHistory; - - #ifdef _DEBUG - std::string mMouseCaptorName; - std::string mKeyboardFocusName; - std::string mTopCtrlName; - #endif }; extern LLFocusMgr gFocusMgr; diff --git a/indra/llui/llhandle.h b/indra/llui/llhandle.h index 899f6b9326..8ade327044 100644 --- a/indra/llui/llhandle.h +++ b/indra/llui/llhandle.h @@ -67,6 +67,13 @@ public: return *this; } + template<typename Subclass> + LLHandle<T>& operator =(const LLHandle<Subclass>& other) + { + mTombStone = other.mTombStone; + return *this; + } + bool isDead() const { return mTombStone->getTarget() == NULL; diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp index 387af05935..6cff68c20b 100644 --- a/indra/llui/llmodaldialog.cpp +++ b/indra/llui/llmodaldialog.cpp @@ -111,7 +111,7 @@ void LLModalDialog::onOpen(const LLSD& key) // This is a modal dialog. It sucks up all mouse and keyboard operations. gFocusMgr.setMouseCapture( this ); - gFocusMgr.setTopCtrl( this ); + LLUI::addPopup(this); setFocus(TRUE); sModalStack.push_front( this ); @@ -153,7 +153,7 @@ void LLModalDialog::setVisible( BOOL visible ) gFocusMgr.setMouseCapture( this ); // The dialog view is a root view - gFocusMgr.setTopCtrl( this ); + LLUI::addPopup(this); setFocus( TRUE ); } else @@ -291,7 +291,7 @@ void LLModalDialog::onAppFocusGained() // This is a modal dialog. It sucks up all mouse and keyboard operations. gFocusMgr.setMouseCapture( instance ); instance->setFocus(TRUE); - gFocusMgr.setTopCtrl( instance ); + LLUI::addPopup(instance); instance->centerOnScreen(); } diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index b348ec2d29..5121ef5351 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -86,6 +86,9 @@ std::list<std::string> gUntranslated; /*static*/ LLHelp* LLUI::sHelpImpl = NULL; /*static*/ std::vector<std::string> LLUI::sXUIPaths; /*static*/ LLFrameTimer LLUI::sMouseIdleTimer; +/*static*/ LLUI::add_popup_t LLUI::sAddPopupFunc; +/*static*/ LLUI::remove_popup_t LLUI::sRemovePopupFunc; +/*static*/ LLUI::clear_popups_t LLUI::sClearPopupsFunc; // register filtereditor here static LLDefaultChildRegistry::Register<LLFilterEditor> register_filter_editor("filter_editor"); @@ -1607,6 +1610,13 @@ void LLUI::cleanupClass() sImageProvider->cleanUp(); } +void LLUI::setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t& remove_popup, const clear_popups_t& clear_popups) +{ + sAddPopupFunc = add_popup; + sRemovePopupFunc = remove_popup; + sClearPopupsFunc = clear_popups; +} + //static void LLUI::dirtyRect(LLRect rect) { @@ -1877,6 +1887,34 @@ LLControlGroup& LLUI::getControlControlGroup (const std::string& controlname) return *sSettingGroups["config"]; // default group } +//static +void LLUI::addPopup(LLView* viewp) +{ + if (sAddPopupFunc) + { + sAddPopupFunc(viewp); + } +} + +//static +void LLUI::removePopup(LLView* viewp) +{ + if (sRemovePopupFunc) + { + sRemovePopupFunc(viewp); + } +} + +//static +void LLUI::clearPopups() +{ + if (sClearPopupsFunc) + { + sClearPopupsFunc(); + } +} + + //static // spawn_x and spawn_y are top left corner of view in screen GL coordinates void LLUI::positionViewNearMouse(LLView* view, S32 spawn_x, S32 spawn_y) diff --git a/indra/llui/llui.h b/indra/llui/llui.h index af8d4ea03b..30f3623ded 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -160,12 +160,17 @@ public: // Methods // typedef std::map<std::string, LLControlGroup*> settings_map_t; + typedef boost::function<void(LLView*)> add_popup_t; + typedef boost::function<void(LLView*)> remove_popup_t; + typedef boost::function<void(void)> clear_popups_t; + static void initClass(const settings_map_t& settings, LLImageProviderInterface* image_provider, LLUIAudioCallback audio_callback = NULL, const LLVector2 *scale_factor = NULL, const std::string& language = LLStringUtil::null); static void cleanupClass(); + static void setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t&, const clear_popups_t& ); static void pushMatrix(); static void popMatrix(); @@ -208,6 +213,10 @@ public: static void resetMouseIdleTimer() { sMouseIdleTimer.reset(); } static LLWindow* getWindow() { return sWindow; } + static void addPopup(LLView*); + static void removePopup(LLView*); + static void clearPopups(); + // Ensures view does not overlap mouse cursor, but is inside // the view's parent rectangle. Used for tooltips, inspectors. // Optionally override the view's default X/Y, which are relative to the @@ -227,6 +236,9 @@ private: static LLImageProviderInterface* sImageProvider; static std::vector<std::string> sXUIPaths; static LLFrameTimer sMouseIdleTimer; + static add_popup_t sAddPopupFunc; + static remove_popup_t sRemovePopupFunc; + static clear_popups_t sClearPopupsFunc; }; diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 63e627ceb5..d34083a384 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -73,9 +73,9 @@ S32 LLView::sLastBottomXML = S32_MIN; std::vector<LLViewDrawContext*> LLViewDrawContext::sDrawContextStack; -#if LL_DEBUG +//#if LL_DEBUG BOOL LLView::sIsDrawing = FALSE; -#endif +//#endif // Compiler optimization, generate extern template template class LLView* LLView::getChild<class LLView>( @@ -150,6 +150,10 @@ LLView::~LLView() { dirtyRect(); //llinfos << "Deleting view " << mName << ":" << (void*) this << llendl; + if (LLView::sIsDrawing) + { + llwarns << "Deleting view " << mName << " during UI draw() phase" << llendl; + } // llassert(LLView::sIsDrawing == FALSE); // llassert_always(sDepth == 0); // avoid deleting views while drawing! It can subtly break list iterators @@ -592,11 +596,6 @@ void LLView::setVisible(BOOL visible) { if ( mVisible != visible ) { - if( !visible && (gFocusMgr.getTopCtrl() == this) ) - { - gFocusMgr.setTopCtrl( NULL ); - } - mVisible = visible; // notify children of visibility change if root, or part of visible hierarchy diff --git a/indra/llui/llview.h b/indra/llui/llview.h index c4d7313743..efae00f0e5 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -171,9 +171,9 @@ private: // widgets in general are not copyable LLView(const LLView& other) {}; public: -#if LL_DEBUG +//#if LL_DEBUG static BOOL sIsDrawing; -#endif +//#endif enum ESoundFlags { SILENT = 0, diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 14eb75e457..8ad3b2085d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -347,6 +347,7 @@ set(viewer_SOURCE_FILES llpatchvertexarray.cpp llplacesinventorybridge.cpp llplacesinventorypanel.cpp + llpopupview.cpp llpolymesh.cpp llpolymorph.cpp llpreview.cpp @@ -844,6 +845,7 @@ set(viewer_HEADER_FILES llplacesinventorypanel.h llpolymesh.h llpolymorph.h + llpopupview.h llpreview.h llpreviewanim.h llpreviewgesture.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index a64a1a395f..8edf766132 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4334,7 +4334,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>home</string> + <string>last</string> </map> <key>LoginPage</key> <map> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 1da7d450c9..c5d7f6f118 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -5845,15 +5845,22 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void * mesgsys->getUUIDFast(_PREHASH_WearableData, _PREHASH_TextureID, texture_id, texture_block); mesgsys->getU8Fast(_PREHASH_WearableData, _PREHASH_TextureIndex, texture_index, texture_block); - if (texture_id.notNull() - && (S32)texture_index < BAKED_NUM_INDICES + if ((S32)texture_index < BAKED_NUM_INDICES && gAgentQueryManager.mActiveCacheQueries[texture_index] == query_id) { - //llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl; - avatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); - //avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id ); - gAgentQueryManager.mActiveCacheQueries[texture_index] = 0; - num_results++; + if (texture_id.notNull()) + { + //llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl; + avatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); + //avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id ); + gAgentQueryManager.mActiveCacheQueries[texture_index] = 0; + num_results++; + } + else + { + // no cache of this bake. request upload. + avatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index); + } } } diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index f08d8decfe..f686eccf37 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -494,11 +494,12 @@ bool LLWearableHoldingPattern::pollFetchCompletion() bool completed = isFetchCompleted(); bool timed_out = isTimedOut(); bool done = completed || timed_out; - - llinfos << "polling, done status: " << completed << " timed out " << timed_out << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl; if (done) { + llinfos << "polling, done status: " << completed << " timed out " << timed_out + << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl; + mFired = true; if (timed_out) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 8b3f3aa28e..bdfe0d9142 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -703,9 +703,9 @@ bool LLAppViewer::init() settings_map["account"] = &gSavedPerAccountSettings; LLUI::initClass(settings_map, - LLUIImageList::getInstance(), - ui_audio_callback, - &LLUI::sGLScaleFactor); + LLUIImageList::getInstance(), + ui_audio_callback, + &LLUI::sGLScaleFactor); // Setup paths and LLTrans after LLUI::initClass has been called LLUI::setupPaths(); @@ -1516,7 +1516,7 @@ bool LLAppViewer::cleanup() LLAvatarIconIDCache::getInstance()->save(); llinfos << "Shutting down Threads" << llendflush; - + // Let threads finish LLTimer idleTimer; idleTimer.reset(); @@ -1530,19 +1530,26 @@ bool LLAppViewer::cleanup() pending += LLVFSThread::updateClass(0); pending += LLLFSThread::updateClass(0); F64 idle_time = idleTimer.getElapsedTimeF64(); - if (!pending || idle_time >= max_idle_time) + if(!pending) + { + break ; //done + } + else if(idle_time >= max_idle_time) { llwarns << "Quitting with pending background tasks." << llendl; break; } } - + // Delete workers first // shotdown all worker threads before deleting them in case of co-dependencies sTextureCache->shutdown(); sTextureFetch->shutdown(); sImageDecodeThread->shutdown(); + sTextureFetch->shutDownTextureCacheThread() ; + sTextureFetch->shutDownImageDecodeThread() ; + delete sTextureCache; sTextureCache = NULL; delete sTextureFetch; diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index f8f8f50cd6..80d9b14345 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -392,7 +392,12 @@ void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze) _exit(1); } - // TODO:palmer REMOVE THIS VERY SOON. THIS WILL NOT BE IN VIEWER 2.0 + // TODO from palmer: Find a better way to handle managing old crash logs + // when this is a separate imbedable module. Ideally just sort crash stack + // logs based on date, and grab the latest one as opposed to deleting them + // for thoughts on what the module would look like. + // See: https://wiki.lindenlab.com/wiki/Viewer_Crash_Reporter_Round_4 + // Remove the crash stack log from previous executions. // Since we've started logging a new instance of the app, we can assume // The old crash stack is invalid for the next crash report. diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 3818ee6f78..362010d65a 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -35,6 +35,7 @@ #include "llscrollcontainer.h" #include "llwindow.h" +#include "llviewerwindow.h" static LLDefaultChildRegistry::Register<LLExpandableTextBox> t1("expandable_text"); @@ -382,7 +383,7 @@ void LLExpandableTextBox::expandTextBox() setFocus(TRUE); // this lets us receive top_lost event(needed to collapse text box) // it also draws text box above all other ui elements - gFocusMgr.setTopCtrl(this); + gViewerWindow->addPopup(this); mExpanded = true; } @@ -401,10 +402,7 @@ void LLExpandableTextBox::collapseTextBox() updateTextBoxRect(); - if(gFocusMgr.getTopCtrl() == this) - { - gFocusMgr.setTopCtrl(NULL); - } + gViewerWindow->removePopup(this); } void LLExpandableTextBox::onFocusLost() diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index 58316ddb98..9d4a8aef76 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -144,6 +144,7 @@ public: */ /*virtual*/ void onTopLost(); + /** * Draws text box, collapses text box if its expanded and its parent's position changed */ diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index f7fd7bb472..cc807c2370 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -285,10 +285,7 @@ LLFolderView::~LLFolderView( void ) LLView::deleteViewByHandle(mPopupMenuHandle); - if(mRenamer == gFocusMgr.getTopCtrl()) - { - gFocusMgr.setTopCtrl(NULL); - } + gViewerWindow->removePopup(mRenamer); mAutoOpenItems.removeAllNodes(); clearSelection(); @@ -972,7 +969,7 @@ void LLFolderView::finishRenamingItem( void ) mRenameItem->rename( mRenamer->getText() ); } - gFocusMgr.setTopCtrl( NULL ); + gViewerWindow->removePopup(mRenamer); if( mRenameItem ) { @@ -989,7 +986,7 @@ void LLFolderView::closeRenamer( void ) // will commit current name (which could be same as original name) mRenamer->setFocus( FALSE ); mRenamer->setVisible( FALSE ); - gFocusMgr.setTopCtrl( NULL ); + gViewerWindow->removePopup(mRenamer); if( mRenameItem ) { @@ -1421,7 +1418,7 @@ void LLFolderView::startRenamingSelectedItem( void ) mRenamer->setFocus( TRUE ); mRenamer->setTopLostCallback(boost::bind(onRenamerLost, _1)); mRenamer->setFocusLostCallback(boost::bind(onRenamerLost, _1)); - gFocusMgr.setTopCtrl( mRenamer ); + gViewerWindow->addPopup(mRenamer); } } @@ -1902,7 +1899,7 @@ void LLFolderView::deleteAllChildren() { if(mRenamer == gFocusMgr.getTopCtrl()) { - gFocusMgr.setTopCtrl(NULL); + gViewerWindow->removePopup(mRenamer); } LLView::deleteViewByHandle(mPopupMenuHandle); mPopupMenuHandle = LLHandle<LLView>(); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index bf33d8527e..05cb6ddc4a 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -80,8 +80,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) : mForceUpdate( false ), mOpenLinksInExternalBrowser( false ), mOpenLinksInInternalBrowser( false ), - mTrusted( false ), mHomePageUrl( "" ), + mTrusted(false), mIgnoreUIScale( true ), mAlwaysRefresh( false ), mMediaSource( 0 ), @@ -183,6 +183,10 @@ void LLMediaCtrl::setOpenInInternalBrowser( bool valIn ) //////////////////////////////////////////////////////////////////////////////// void LLMediaCtrl::setTrusted( bool valIn ) { + if(mMediaSource) + { + mMediaSource->setTrustedBrowser(valIn); + } mTrusted = valIn; } @@ -632,6 +636,7 @@ bool LLMediaCtrl::ensureMediaSourceExists() mMediaSource->setVisible( getVisible() ); mMediaSource->addObserver( this ); mMediaSource->setBackgroundColor( getBackgroundColor() ); + mMediaSource->setTrustedBrowser(mTrusted); if(mClearCache) { mMediaSource->clearCache(); @@ -946,7 +951,6 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) case MEDIA_EVENT_CLICK_LINK_NOFOLLOW: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << LL_ENDL; - onClickLinkNoFollow(self); }; break; @@ -1064,15 +1068,6 @@ void LLMediaCtrl::clickLinkWithTarget(const std::string& url, const S32& target_ //////////////////////////////////////////////////////////////////////////////// // -void LLMediaCtrl::onClickLinkNoFollow( LLPluginClassMedia* self ) -{ - // let the dispatcher handle blocking/throttling of SLURLs - std::string url = self->getClickURL(); - LLURLDispatcher::dispatch(url, this, mTrusted); -} - -//////////////////////////////////////////////////////////////////////////////// -// std::string LLMediaCtrl::getCurrentNavUrl() { return mCurrentNavUrl; diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 60e0c4073b..e55d2f7cd0 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -164,7 +164,6 @@ public: // handlers for individual events (could be done inside the switch in handleMediaEvent, they're just individual functions for clarity) void onClickLinkHref( LLPluginClassMedia* self ); - void onClickLinkNoFollow( LLPluginClassMedia* self ); protected: void convertInputCoords(S32& x, S32& y); diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp index a73c25a979..4f2d6374ca 100644 --- a/indra/newview/llpanelnearbymedia.cpp +++ b/indra/newview/llpanelnearbymedia.cpp @@ -82,6 +82,8 @@ LLPanelNearByMedia::LLPanelNearByMedia() mParcelMediaItem(NULL), mParcelAudioItem(NULL) { + mHoverTimer.stop(); + mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) && gSavedSettings.getBOOL("MediaTentativeAutoPlay"); @@ -188,33 +190,25 @@ void LLPanelNearByMedia::onMouseLeave(S32 x, S32 y, MASK mask) } /*virtual*/ +void LLPanelNearByMedia::onTopLost() +{ + setVisible(FALSE); +} + + +/*virtual*/ void LLPanelNearByMedia::handleVisibilityChange ( BOOL new_visibility ) { if (new_visibility) { mHoverTimer.start(); // timer will be stopped when mouse hovers over panel - //gFocusMgr.setTopCtrl(this); } else { mHoverTimer.stop(); - //if (gFocusMgr.getTopCtrl() == this) - //{ - // gFocusMgr.setTopCtrl(NULL); - //} } } -/*virtual*/ -void LLPanelNearByMedia::onTopLost () -{ - //LLUICtrl* new_top = gFocusMgr.getTopCtrl(); - //if (!new_top || !new_top->hasAncestor(this)) - //{ - // setVisible(FALSE); - //} -} - /*virtual*/ void LLPanelNearByMedia::reshape(S32 width, S32 height, BOOL called_from_parent) { @@ -234,13 +228,6 @@ const F32 AUTO_CLOSE_FADE_TIME_END = 5.0f; /*virtual*/ void LLPanelNearByMedia::draw() { - //LLUICtrl* new_top = gFocusMgr.getTopCtrl(); - //if (new_top != this) - //{ - // // reassert top ctrl - // gFocusMgr.setTopCtrl(this); - //} - // keep bottom of panel on screen LLRect screen_rect = calcScreenRect(); if (screen_rect.mBottom < 0) diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h index 4f864519f5..af4659365f 100644 --- a/indra/newview/llpanelnearbymedia.h +++ b/indra/newview/llpanelnearbymedia.h @@ -53,8 +53,8 @@ public: /*virtual*/ void draw(); /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); + /*virtual*/ void onTopLost(); /*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); - /*virtual*/ void onTopLost (); /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 5ddbdf7f01..6fcba80845 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -770,8 +770,8 @@ BOOL LLTaskCategoryBridge::startDrag(EDragAndDropType* type, LLUUID* id) const LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID()); if(object) { - LLInventoryItem* inv = NULL; - if((inv = (LLInventoryItem*)object->getInventoryObject(mUUID))) + const LLInventoryItem *inv = dynamic_cast<LLInventoryItem*>(object->getInventoryObject(mUUID)); + if (inv) { const LLPermissions& perm = inv->getPermissions(); bool can_copy = gAgent.allowOperation(PERM_COPY, perm, diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp index 559997254e..ae52bd3703 100644 --- a/indra/newview/llpanelvolumepulldown.cpp +++ b/indra/newview/llpanelvolumepulldown.cpp @@ -56,6 +56,8 @@ // Default constructor LLPanelVolumePulldown::LLPanelVolumePulldown() { + mHoverTimer.stop(); + mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2)); mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2)); LLUICtrlFactory::instance().buildPanel(this, "panel_volume_pulldown.xml"); @@ -77,6 +79,11 @@ void LLPanelVolumePulldown::onMouseEnter(S32 x, S32 y, MASK mask) LLPanel::onMouseEnter(x,y,mask); } +/*virtual*/ +void LLPanelVolumePulldown::onTopLost() +{ + setVisible(FALSE); +} /*virtual*/ void LLPanelVolumePulldown::onMouseLeave(S32 x, S32 y, MASK mask) @@ -95,13 +102,8 @@ void LLPanelVolumePulldown::handleVisibilityChange ( BOOL new_visibility ) else { mHoverTimer.stop(); - } -} -/*virtual*/ -void LLPanelVolumePulldown::onTopLost() -{ - setVisible(FALSE); + } } void LLPanelVolumePulldown::onAdvancedButtonClick(const LLSD& user_data) diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h index 9f20caa1a8..7fb025f329 100644 --- a/indra/newview/llpanelvolumepulldown.h +++ b/indra/newview/llpanelvolumepulldown.h @@ -47,8 +47,8 @@ class LLPanelVolumePulldown : public LLPanel /*virtual*/ void draw(); /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); - /*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); /*virtual*/ void onTopLost(); + /*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); /*virtual*/ BOOL postBuild(); private: diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp new file mode 100644 index 0000000000..1668a91eed --- /dev/null +++ b/indra/newview/llpopupview.cpp @@ -0,0 +1,250 @@ +/** + * @file llpopupview.cpp + * @brief Holds transient popups + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2010, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "llviewerprecompiledheaders.h" + +#include "llpopupview.h" + +static LLRegisterPanelClassWrapper<LLPopupView> r("popup_holder"); + +bool view_visible_and_enabled(LLView* viewp) +{ + return viewp->getVisible() && viewp->getEnabled(); +} + +bool view_visible(LLView* viewp) +{ + return viewp->getVisible(); +} + + +LLPopupView::LLPopupView() +{ + // register ourself as handler of UI popups + LLUI::setPopupFuncs(boost::bind(&LLPopupView::addPopup, this, _1), boost::bind(&LLPopupView::removePopup, this, _1), boost::bind(&LLPopupView::clearPopups, this)); +} + +LLPopupView::~LLPopupView() +{ + // set empty callback function so we can't handle popups anymore + LLUI::setPopupFuncs(LLUI::add_popup_t(), LLUI::remove_popup_t(), LLUI::clear_popups_t()); +} + +void LLPopupView::draw() +{ + S32 screen_x, screen_y; + + // remove dead popups + for (popup_list_t::iterator popup_it = mPopups.begin(); + popup_it != mPopups.end();) + { + if (!popup_it->get()) + { + mPopups.erase(popup_it++); + } + else + { + popup_it++; + } + } + + // draw in reverse order (most recent is on top) + for (popup_list_t::reverse_iterator popup_it = mPopups.rbegin(); + popup_it != mPopups.rend();) + { + LLView* popup = popup_it->get(); + + if (popup->getVisible()) + { + popup->localPointToScreen(0, 0, &screen_x, &screen_y); + + LLUI::pushMatrix(); + { + LLUI::translate( (F32) screen_x, (F32) screen_y, 0.f); + popup->draw(); + } + LLUI::popMatrix(); + } + ++popup_it; + } + + LLPanel::draw(); +} + +BOOL LLPopupView::handleMouseEvent(boost::function<BOOL(LLView*, S32, S32)> func, + boost::function<bool(LLView*)> predicate, + S32 x, S32 y, + bool close_popups) +{ + for (popup_list_t::iterator popup_it = mPopups.begin(); + popup_it != mPopups.end();) + { + LLView* popup = popup_it->get(); + if (!popup + || !predicate(popup)) + { + ++popup_it; + continue; + } + + S32 popup_x, popup_y; + if (localPointToOtherView(x, y, &popup_x, &popup_y, popup) + && popup->pointInView(popup_x, popup_y)) + { + if (func(popup, popup_x, popup_y)) + { + return TRUE; + } + } + + if (close_popups) + { + popup_list_t::iterator cur_popup_it = popup_it++; + mPopups.erase(cur_popup_it); + popup->onTopLost(); + } + else + { + ++popup_it; + } + } + + return FALSE; +} + + +BOOL LLPopupView::handleMouseDown(S32 x, S32 y, MASK mask) +{ + if (!handleMouseEvent(boost::bind(&LLMouseHandler::handleMouseDown, _1, _2, _3, mask), view_visible_and_enabled, x, y, true)) + { + return FALSE; + } + return TRUE; +} + +BOOL LLPopupView::handleMouseUp(S32 x, S32 y, MASK mask) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleMouseUp, _1, _2, _3, mask), view_visible_and_enabled, x, y, false); +} + +BOOL LLPopupView::handleMiddleMouseDown(S32 x, S32 y, MASK mask) +{ + if (!handleMouseEvent(boost::bind(&LLMouseHandler::handleMiddleMouseDown, _1, _2, _3, mask), view_visible_and_enabled, x, y, true)) + { + return FALSE; + } + return TRUE; +} + +BOOL LLPopupView::handleMiddleMouseUp(S32 x, S32 y, MASK mask) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleMiddleMouseUp, _1, _2, _3, mask), view_visible_and_enabled, x, y, false); +} + +BOOL LLPopupView::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + if (!handleMouseEvent(boost::bind(&LLMouseHandler::handleRightMouseDown, _1, _2, _3, mask), view_visible_and_enabled, x, y, true)) + { + return FALSE; + } + return TRUE; +} + +BOOL LLPopupView::handleRightMouseUp(S32 x, S32 y, MASK mask) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleRightMouseUp, _1, _2, _3, mask), view_visible_and_enabled, x, y, false); +} + +BOOL LLPopupView::handleDoubleClick(S32 x, S32 y, MASK mask) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleDoubleClick, _1, _2, _3, mask), view_visible_and_enabled, x, y, false); +} + +BOOL LLPopupView::handleHover(S32 x, S32 y, MASK mask) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleHover, _1, _2, _3, mask), view_visible_and_enabled, x, y, false); +} + +BOOL LLPopupView::handleScrollWheel(S32 x, S32 y, S32 clicks) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleScrollWheel, _1, _2, _3, clicks), view_visible_and_enabled, x, y, false); +} + +BOOL LLPopupView::handleToolTip(S32 x, S32 y, MASK mask) +{ + return handleMouseEvent(boost::bind(&LLMouseHandler::handleToolTip, _1, _2, _3, mask), view_visible, x, y, false); +} + +void LLPopupView::addPopup(LLView* popup) +{ + if (popup) + { + popup_list_t::iterator iter = std::find(mPopups.begin(), mPopups.end(), popup->getHandle()); + if(iter != mPopups.end()) + { + mPopups.erase(iter); + } + mPopups.push_front(popup->getHandle()); + } +} + +void LLPopupView::removePopup(LLView* popup) +{ + if (popup) + { + if (gFocusMgr.childHasKeyboardFocus(popup)) + { + gFocusMgr.setKeyboardFocus(NULL); + } + popup_list_t::iterator iter = std::find(mPopups.begin(), mPopups.end(), popup->getHandle()); + if(iter != mPopups.end()) + { + mPopups.erase(iter); + } + popup->onTopLost(); + } +} + +void LLPopupView::clearPopups() +{ + for (popup_list_t::iterator popup_it = mPopups.begin(); + popup_it != mPopups.end();) + { + LLView* popup = popup_it->get(); + + popup_list_t::iterator cur_popup_it = popup_it; + ++popup_it; + + mPopups.erase(cur_popup_it); + popup->onTopLost(); + } +} + diff --git a/indra/newview/llpopupview.h b/indra/newview/llpopupview.h new file mode 100644 index 0000000000..1ec61d5450 --- /dev/null +++ b/indra/newview/llpopupview.h @@ -0,0 +1,67 @@ +/** + * @file llpopupview.h + * @brief Holds transient popups + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPOPUPVIEW_H +#define LL_LLPOPUPVIEW_H + +#include "llpanel.h" + +class LLPopupView : public LLPanel +{ +public: + LLPopupView(); + ~LLPopupView(); + + /*virtual*/ void draw(); + /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); + + void addPopup(LLView* popup); + void removePopup(LLView* popup); + void clearPopups(); + + typedef std::list<LLHandle<LLView> > popup_list_t; + popup_list_t getCurrentPopups() { return mPopups; } + +private: + BOOL handleMouseEvent(boost::function<BOOL(LLView*, S32, S32)>, boost::function<bool(LLView*)>, S32 x, S32 y, bool close_popups); + popup_list_t mPopups; +}; +#endif //LL_LLROOTVIEW_H diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 0476e785a5..120b584cd9 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -128,11 +128,13 @@ void LLProgressView::setVisible(BOOL visible) { if (getVisible() && !visible) { + mFadeTimer.start(); } else if (!getVisible() && visible) { - gFocusMgr.setTopCtrl(this); + gViewerWindow->addPopup(this); + setFocus(TRUE); mFadeTimer.stop(); mProgressTimer.start(); @@ -187,6 +189,8 @@ void LLProgressView::draw() // Fade is complete, release focus gFocusMgr.releaseFocusIfNeeded( this ); LLPanel::setVisible(FALSE); + gViewerWindow->removePopup(this); + gStartTexture = NULL; } return; diff --git a/indra/newview/llsplitbutton.cpp b/indra/newview/llsplitbutton.cpp index ffd9bc7624..e5323db466 100644 --- a/indra/newview/llsplitbutton.cpp +++ b/indra/newview/llsplitbutton.cpp @@ -165,7 +165,7 @@ void LLSplitButton::showButtons() // register ourselves as a "top" control // effectively putting us into a special draw layer - gFocusMgr.setTopCtrl(this); + gViewerWindow->addPopup(this); mItemsPanel->setFocus(TRUE); @@ -182,10 +182,7 @@ void LLSplitButton::hideButtons() mArrowBtn->setToggleState(FALSE); setUseBoundingRect(FALSE); - if(gFocusMgr.getTopCtrl() == this) - { - gFocusMgr.setTopCtrl(NULL); - } + gViewerWindow->removePopup(this); } diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 9fb496c214..9206b4a43a 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -239,20 +239,16 @@ BOOL LLStatusBar::postBuild() childSetActionTextbox("stat_btn", onClickStatGraph); - LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder"); - mPanelVolumePulldown = new LLPanelVolumePulldown(); - popup_holder->addChild(mPanelVolumePulldown); + addChild(mPanelVolumePulldown); + mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); + mPanelVolumePulldown->setVisible(FALSE); mPanelNearByMedia = new LLPanelNearByMedia(); - popup_holder->addChild(mPanelNearByMedia); - gViewerWindow->getRootView()->addMouseDownCallback(boost::bind(&LLStatusBar::onClickScreen, this, _1, _2)); + addChild(mPanelNearByMedia); mPanelNearByMedia->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); mPanelNearByMedia->setVisible(FALSE); - mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); - mPanelVolumePulldown->setVisible(FALSE); - return TRUE; } @@ -528,11 +524,11 @@ static void onClickScriptDebug(void*) void LLStatusBar::onMouseEnterVolume() { LLButton* volbtn = getChild<LLButton>( "volume_btn" ); - LLRect vol_btn_screen_rect = volbtn->calcScreenRect(); + LLRect vol_btn_rect = volbtn->getRect(); LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect(); - volume_pulldown_rect.setLeftTopAndSize(vol_btn_screen_rect.mLeft - - (volume_pulldown_rect.getWidth() - vol_btn_screen_rect.getWidth())/2, - vol_btn_screen_rect.mBottom, + volume_pulldown_rect.setLeftTopAndSize(vol_btn_rect.mLeft - + (volume_pulldown_rect.getWidth() - vol_btn_rect.getWidth())/2, + vol_btn_rect.mBottom, volume_pulldown_rect.getWidth(), volume_pulldown_rect.getHeight()); @@ -540,8 +536,10 @@ void LLStatusBar::onMouseEnterVolume() // show the master volume pull-down - mPanelVolumePulldown->setVisible(TRUE); + LLUI::clearPopups(); + LLUI::addPopup(mPanelVolumePulldown); mPanelNearByMedia->setVisible(FALSE); + mPanelVolumePulldown->setVisible(TRUE); } void LLStatusBar::onMouseEnterNearbyMedia() @@ -549,7 +547,7 @@ void LLStatusBar::onMouseEnterNearbyMedia() LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder"); LLRect nearby_media_rect = mPanelNearByMedia->getRect(); LLButton* nearby_media_btn = getChild<LLButton>( "media_toggle_btn" ); - LLRect nearby_media_btn_rect = nearby_media_btn->calcScreenRect(); + LLRect nearby_media_btn_rect = nearby_media_btn->getRect(); nearby_media_rect.setLeftTopAndSize(nearby_media_btn_rect.mLeft - (nearby_media_rect.getWidth() - nearby_media_btn_rect.getWidth())/2, nearby_media_btn_rect.mBottom, @@ -560,8 +558,11 @@ void LLStatusBar::onMouseEnterNearbyMedia() // show the master volume pull-down mPanelNearByMedia->setShape(nearby_media_rect); - mPanelNearByMedia->setVisible(TRUE); + LLUI::clearPopups(); + LLUI::addPopup(mPanelNearByMedia); + mPanelVolumePulldown->setVisible(FALSE); + mPanelNearByMedia->setVisible(TRUE); } @@ -650,18 +651,6 @@ void LLStatusBar::onClickStatGraph(void* data) LLFloaterReg::showInstance("lagmeter"); } -void LLStatusBar::onClickScreen(S32 x, S32 y) -{ - if (mPanelNearByMedia->getVisible()) - { - LLRect screen_rect = mPanelNearByMedia->calcScreenRect(); - if (!screen_rect.pointInRect(x, y)) - { - mPanelNearByMedia->setVisible(FALSE); - } - } -} - BOOL can_afford_transaction(S32 cost) { return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost))); diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 91c303c79e..4649b9cbef 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -750,6 +750,8 @@ LLTextureCache::LLTextureCache(bool threaded) LLTextureCache::~LLTextureCache() { + clearDeleteList() ; + writeUpdatedEntries() ; } ////////////////////////////////////////////////////////////////////////////// @@ -757,6 +759,9 @@ LLTextureCache::~LLTextureCache() //virtual S32 LLTextureCache::update(U32 max_time_ms) { + static LLFrameTimer timer ; + static const F32 MAX_TIME_INTERVAL = 300.f ; //seconds. + S32 res; res = LLWorkerThread::update(max_time_ms); @@ -792,6 +797,12 @@ S32 LLTextureCache::update(U32 max_time_ms) responder->completed(success); } + if(!res && timer.getElapsedTimeF32() > MAX_TIME_INTERVAL) + { + timer.reset() ; + writeUpdatedEntries() ; + } + return res; } @@ -1082,6 +1093,8 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create entry.init(id, time(NULL)); // Update Header writeEntriesHeader(); + + //the new entry, write immediately. // Write Entry S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry); LLAPRFile* aprfile = openHeaderEntriesFile(false, offset); @@ -1097,12 +1110,20 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create // Remove this entry from the LRU if it exists mLRU.erase(id); // Read the entry - S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry); - LLAPRFile* aprfile = openHeaderEntriesFile(true, offset); - S32 bytes_read = aprfile->read((void*)&entry, (S32)sizeof(Entry)); - llassert_always(bytes_read == sizeof(Entry)); + idx_entry_map_t::iterator iter = mUpdatedEntryMap.find(idx) ; + if(iter != mUpdatedEntryMap.end()) + { + entry = iter->second ; + } + else + { + S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry); + LLAPRFile* aprfile = openHeaderEntriesFile(true, offset); + S32 bytes_read = aprfile->read((void*)&entry, (S32)sizeof(Entry)); + llassert_always(bytes_read == sizeof(Entry)); + closeHeaderEntriesFile(); + } llassert_always(entry.mImageSize == 0 || entry.mImageSize == -1 || entry.mImageSize > entry.mBodySize); - closeHeaderEntriesFile(); } return idx; } @@ -1120,12 +1141,8 @@ void LLTextureCache::writeEntryAndClose(S32 idx, Entry& entry) mTexturesSizeMap[entry.mID] = entry.mBodySize; } // llinfos << "Updating TE: " << idx << ": " << id << " Size: " << entry.mBodySize << " Time: " << entry.mTime << llendl; - S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry); - LLAPRFile* aprfile = openHeaderEntriesFile(false, offset); - S32 bytes_written = aprfile->write((void*)&entry, (S32)sizeof(Entry)); - llassert_always(bytes_written == sizeof(Entry)); mHeaderEntriesMaxWriteIdx = llmax(mHeaderEntriesMaxWriteIdx, idx); - closeHeaderEntriesFile(); + mUpdatedEntryMap[idx] = entry ; } } } @@ -1140,6 +1157,7 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries) mTexturesSizeTotal = 0; LLAPRFile* aprfile = openHeaderEntriesFile(false, (S32)sizeof(EntriesInfo)); + updatedHeaderEntriesFile() ; for (U32 idx=0; idx<num_entries; idx++) { Entry entry; @@ -1190,6 +1208,47 @@ void LLTextureCache::writeEntriesAndClose(const std::vector<Entry>& entries) } } +void LLTextureCache::writeUpdatedEntries() +{ + lockHeaders() ; + if (!mReadOnly && !mUpdatedEntryMap.empty()) + { + openHeaderEntriesFile(false, 0); + updatedHeaderEntriesFile() ; + closeHeaderEntriesFile(); + } + unlockHeaders() ; +} + +//mHeaderMutex is locked and mHeaderAPRFile is created before calling this. +void LLTextureCache::updatedHeaderEntriesFile() +{ + if (!mReadOnly && !mUpdatedEntryMap.empty() && mHeaderAPRFile) + { + //entriesInfo + mHeaderAPRFile->seek(APR_SET, 0); + S32 bytes_written = mHeaderAPRFile->write((U8*)&mHeaderEntriesInfo, sizeof(EntriesInfo)) ; + llassert_always(bytes_written == sizeof(EntriesInfo)); + + //write each updated entry + S32 entry_size = (S32)sizeof(Entry) ; + S32 prev_idx = -1 ; + S32 delta_idx ; + for (idx_entry_map_t::iterator iter = mUpdatedEntryMap.begin(); iter != mUpdatedEntryMap.end(); ++iter) + { + delta_idx = iter->first - prev_idx - 1; + prev_idx = iter->first ; + if(delta_idx) + { + mHeaderAPRFile->seek(APR_CUR, delta_idx * entry_size); + } + + bytes_written = mHeaderAPRFile->write((void*)(&iter->second), entry_size); + llassert_always(bytes_written == entry_size); + } + mUpdatedEntryMap.clear() ; + } +} //---------------------------------------------------------------------------- // Called from either the main thread or the worker thread @@ -1574,6 +1633,11 @@ bool LLTextureCache::readComplete(handle_t handle, bool abort) { worker = iter->second; complete = worker->complete(); + + if(!complete && abort) + { + abortRequest(handle, true) ; + } } if (worker && (complete || abort)) { diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index 64ec881fc3..b840619c1f 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -68,6 +68,7 @@ private: Entry(const LLUUID& id, S32 imagesize, S32 bodysize, U32 time) : mID(id), mImageSize(imagesize), mBodySize(bodysize), mTime(time) {} void init(const LLUUID& id, U32 time) { mID = id, mImageSize = 0; mBodySize = 0; mTime = time; } + Entry& operator=(const Entry& entry) {mID = entry.mID, mImageSize = entry.mImageSize; mBodySize = entry.mBodySize; mTime = entry.mTime; return *this;} LLUUID mID; // 16 bytes S32 mImageSize; // total size of image if known S32 mBodySize; // size of body file in body cache @@ -166,6 +167,8 @@ private: S32 getHeaderCacheEntry(const LLUUID& id, S32& imagesize); S32 setHeaderCacheEntry(const LLUUID& id, S32 imagesize); bool removeHeaderCacheEntry(const LLUUID& id); + void writeUpdatedEntries() ; + void updatedHeaderEntriesFile() ; void lockHeaders() { mHeaderMutex.lock(); } void unlockHeaders() { mHeaderMutex.unlock(); } @@ -204,6 +207,9 @@ private: S64 mTexturesSizeTotal; LLAtomic32<BOOL> mDoPurge; + typedef std::map<S32, Entry> idx_entry_map_t; + idx_entry_map_t mUpdatedEntryMap; + // Statics static F32 sHeaderCacheVersion; static U32 sCacheMaxEntries; diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 0053ce8df8..b1b3ae473c 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -431,11 +431,11 @@ LLTextureFetchWorker::~LLTextureFetchWorker() // << " Desired=" << mDesiredDiscard << llendl; llassert_always(!haveWork()); lockWorkMutex(); - if (mCacheReadHandle != LLTextureCache::nullHandle()) + if (mCacheReadHandle != LLTextureCache::nullHandle() && mFetcher->mTextureCache) { mFetcher->mTextureCache->readComplete(mCacheReadHandle, true); } - if (mCacheWriteHandle != LLTextureCache::nullHandle()) + if (mCacheWriteHandle != LLTextureCache::nullHandle() && mFetcher->mTextureCache) { mFetcher->mTextureCache->writeComplete(mCacheWriteHandle, true); } @@ -1429,6 +1429,8 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image LLTextureFetch::~LLTextureFetch() { + clearDeleteList() ; + // ~LLQueuedThread() called here } @@ -1737,6 +1739,26 @@ S32 LLTextureFetch::update(U32 max_time_ms) return res; } +//called in the MAIN thread after the TextureCacheThread shuts down. +void LLTextureFetch::shutDownTextureCacheThread() +{ + if(mTextureCache) + { + llassert_always(mTextureCache->isQuitting() || mTextureCache->isStopped()) ; + mTextureCache = NULL ; + } +} + +//called in the MAIN thread after the ImageDecodeThread shuts down. +void LLTextureFetch::shutDownImageDecodeThread() +{ + if(mImageDecodeThread) + { + llassert_always(mImageDecodeThread->isQuitting() || mImageDecodeThread->isStopped()) ; + mImageDecodeThread = NULL ; + } +} + // WORKER THREAD void LLTextureFetch::startThread() { diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 5213c4f488..ef2ec520bf 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -58,6 +58,8 @@ public: ~LLTextureFetch(); /*virtual*/ S32 update(U32 max_time_ms); + void shutDownTextureCacheThread() ; //called in the main thread after the TextureCacheThread shuts down. + void shutDownImageDecodeThread() ; //called in the main thread after the ImageDecodeThread shuts down. bool createRequest(const std::string& url, const LLUUID& id, const LLHost& host, F32 priority, S32 w, S32 h, S32 c, S32 discard, bool needs_aux); diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 98731f90f4..6cd8a78b25 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -658,6 +658,14 @@ struct compare_decode_pair } }; +struct KillView +{ + void operator()(LLView* viewp) const + { + viewp->die(); + } +}; + void LLTextureView::draw() { if (!mFreezeView) @@ -665,12 +673,12 @@ void LLTextureView::draw() // LLViewerObject *objectp; // S32 te; - for_each(mTextureBars.begin(), mTextureBars.end(), DeletePointer()); + for_each(mTextureBars.begin(), mTextureBars.end(), KillView()); mTextureBars.clear(); - - delete mGLTexMemBar; + + delete mGLTexMemBar; mGLTexMemBar = 0; - + typedef std::multiset<decode_pair_t, compare_decode_pair > display_list_t; display_list_t display_image_list; @@ -683,6 +691,10 @@ void LLTextureView::draw() iter != gTextureList.mImageList.end(); ) { LLPointer<LLViewerFetchedTexture> imagep = *iter++; + if(!imagep->hasFetcher()) + { + continue ; + } S32 cur_discard = imagep->getDiscardLevel(); S32 desired_discard = imagep->mDesiredDiscardLevel; diff --git a/indra/newview/lluploaddialog.cpp b/indra/newview/lluploaddialog.cpp index 577b5952e5..22c7d670f8 100644 --- a/indra/newview/lluploaddialog.cpp +++ b/indra/newview/lluploaddialog.cpp @@ -91,7 +91,7 @@ LLUploadDialog::LLUploadDialog( const std::string& msg) setMessage(msg); // The dialog view is a root view - gFocusMgr.setTopCtrl( this ); + gViewerWindow->addPopup(this); } void LLUploadDialog::setMessage( const std::string& msg) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 8acd343cf5..85efe2724e 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -50,6 +50,7 @@ #include "llcallbacklist.h" #include "llparcel.h" #include "llaudioengine.h" // for gAudiop +#include "llurldispatcher.h" #include "llvoavatar.h" #include "llvoavatarself.h" #include "llviewerregion.h" @@ -1090,7 +1091,8 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mBackgroundColor(LLColor4::white), mNavigateSuspended(false), mNavigateSuspendedDeferred(false), - mIsUpdated(false) + mIsUpdated(false), + mTrustedBrowser(false) { // Set up the mute list observer if it hasn't been set up already. @@ -2353,6 +2355,14 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla { switch(event) { + case MEDIA_EVENT_CLICK_LINK_NOFOLLOW: + { + LL_DEBUGS("Media") << "MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is: " << plugin->getClickURL() << LL_ENDL; + std::string url = plugin->getClickURL(); + LLURLDispatcher::dispatch(url, NULL, mTrustedBrowser); + + } + break; case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH: { // The plugin failed to load properly. Make sure the timer doesn't retry. diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 9dbffa78b3..bc51e713a1 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -322,6 +322,9 @@ public: void setLowPrioritySizeLimit(int size); void setTextureID(LLUUID id = LLUUID::null); + + bool isTrustedBrowser() { return mTrustedBrowser; } + void setTrustedBrowser(bool trusted) { mTrustedBrowser = trusted; } typedef enum { @@ -405,6 +408,7 @@ private: LLColor4 mBackgroundColor; bool mNavigateSuspended; bool mNavigateSuspendedDeferred; + bool mTrustedBrowser; private: BOOL mIsUpdated ; diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 84377198eb..6dc18085e0 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -455,6 +455,7 @@ public: F32 getElapsedLastReferencedSavedRawImageTime() const ; BOOL isFullyLoaded() const; + BOOL hasFetcher() const { return mHasFetcher;} protected: /*virtual*/ void switchToCachedImage(); S32 getCurrentDiscardLevelForFetching() ; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 30f2d2c41b..d0a1a31ebd 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -131,6 +131,7 @@ #include "llmorphview.h" #include "llmoveview.h" #include "llnavigationbar.h" +#include "llpopupview.h" #include "llpreviewtexture.h" #include "llprogressview.h" #include "llresmgr.h" @@ -690,23 +691,23 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK } // Topmost view gets a chance before the hierarchy - LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl(); - if (top_ctrl) - { - S32 local_x, local_y; - top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); - if (top_ctrl->pointInView(local_x, local_y)) - { - return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down) ; - } - else - { - if (down) - { - gFocusMgr.setTopCtrl(NULL); - } - } - } + //LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl(); + //if (top_ctrl) + //{ + // S32 local_x, local_y; + // top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); + // if (top_ctrl->pointInView(local_x, local_y)) + // { + // return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down) ; + // } + // else + // { + // if (down) + // { + // gFocusMgr.setTopCtrl(NULL); + // } + // } + //} // Give the UI views a chance to process the click if( mRootView->handleAnyMouseClick(x, y, mask, clicktype, down) ) @@ -1552,11 +1553,13 @@ void LLViewerWindow::initBase() mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle(); mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle(); mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle(); + mPopupView = main_view->getChild<LLPopupView>("popup_holder"); // Constrain floaters to inside the menu and status bar regions. gFloaterView = main_view->getChild<LLFloaterView>("Floater View"); gSnapshotFloaterView = main_view->getChild<LLSnapshotFloaterView>("Snapshot Floater View"); + // Console llassert( !gConsole ); LLConsole::Params cp; @@ -2018,9 +2021,9 @@ void LLViewerWindow::drawDebugText() void LLViewerWindow::draw() { -#if LL_DEBUG +//#if LL_DEBUG LLView::sIsDrawing = TRUE; -#endif +//#endif stop_glerror(); LLUI::setLineWidth(1.f); @@ -2132,9 +2135,9 @@ void LLViewerWindow::draw() LLUI::popMatrix(); gGL.popMatrix(); -#if LL_DEBUG +//#if LL_DEBUG LLView::sIsDrawing = FALSE; -#endif +//#endif } // Takes a single keydown event, usually when UI is visible @@ -2426,6 +2429,30 @@ void LLViewerWindow::handleScrollWheel(S32 clicks) return; } +void LLViewerWindow::addPopup(LLView* popup) +{ + if (mPopupView) + { + mPopupView->addPopup(popup); + } +} + +void LLViewerWindow::removePopup(LLView* popup) +{ + if (mPopupView) + { + mPopupView->removePopup(popup); + } +} + +void LLViewerWindow::clearPopups() +{ + if (mPopupView) + { + mPopupView->clearPopups(); + } +} + void LLViewerWindow::moveCursorToCenter() { if (! gSavedSettings.getBOOL("DisableMouseWarp")) @@ -2554,6 +2581,33 @@ void LLViewerWindow::updateUI() } // aggregate visible views that contain mouse cursor in display order + LLPopupView::popup_list_t popups = mPopupView->getCurrentPopups(); + + for(LLPopupView::popup_list_t::iterator popup_it = popups.begin(); popup_it != popups.end(); ++popup_it) + { + LLView* popup = popup_it->get(); + if (popup && popup->calcScreenBoundingRect().pointInRect(x, y)) + { + // iterator over contents of top_ctrl, and throw into mouse_hover_set + for (LLView::tree_iterator_t it = popup->beginTreeDFS(); + it != popup->endTreeDFS(); + ++it) + { + LLView* viewp = *it; + if (viewp->getVisible() + && viewp->calcScreenBoundingRect().pointInRect(x, y)) + { + // we have a view that contains the mouse, add it to the set + mouse_hover_set.insert(viewp->getHandle()); + } + else + { + // skip this view and all of its children + it.skipDescendants(); + } + } + } + } // while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events if (top_ctrl && top_ctrl->calcScreenBoundingRect().pointInRect(x, y)) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index bfce65f2ba..410445d97f 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -69,6 +69,7 @@ class LLHUDIcon; class LLWindow; class LLRootView; class LLViewerWindowListener; +class LLPopupView; #define PICK_HALF_WIDTH 5 #define PICK_DIAMETER (2 * PICK_HALF_WIDTH + 1) @@ -300,6 +301,11 @@ public: BOOL handleKey(KEY key, MASK mask); void handleScrollWheel (S32 clicks); + // add and remove views from "popup" layer + void addPopup(LLView* popup); + void removePopup(LLView* popup); + void clearPopups(); + // Hide normal UI when a logon fails, re-show everything when logon is attempted again void setNormalControlsVisible( BOOL visible ); void setMenuBackgroundColor(bool god_mode = false, bool dev_grid = false); @@ -458,6 +464,7 @@ protected: LLHandle<LLView> mWorldViewPlaceholder; // widget that spans the portion of screen dedicated to rendering the 3d world LLHandle<LLView> mNonSideTrayView; // parent of world view + bottom bar, etc...everything but the side tray LLHandle<LLView> mFloaterViewHolder; // container for floater_view + LLPopupView* mPopupView; // container for transient popups class LLDebugText* mDebugText; // Internal class for debug text @@ -477,7 +484,7 @@ protected: private: // Object temporarily hovered over while dragging LLPointer<LLViewerObject> mDragHoveredObject; -}; +}; void toggle_flying(void*); void toggle_first_person(); diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index acd12099cd..7dc8772753 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -1292,19 +1292,23 @@ BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 } //----------------------------------------------------------------------------- -// virtual // requestLayerSetUploads() //----------------------------------------------------------------------------- void LLVOAvatarSelf::requestLayerSetUploads() { for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex; - BOOL layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index)); - if (!layer_baked && mBakedTextureDatas[i].mTexLayerSet) - { - mBakedTextureDatas[i].mTexLayerSet->requestUpload(); - } + requestLayerSetUpload((EBakedTextureIndex)i); + } +} + +void LLVOAvatarSelf::requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i) +{ + ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex; + bool layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index)); + if (!layer_baked && mBakedTextureDatas[i].mTexLayerSet) + { + mBakedTextureDatas[i].mTexLayerSet->requestUpload(); } } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index dc70996f0b..df3493c434 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -222,6 +222,7 @@ protected: //-------------------------------------------------------------------- public: void requestLayerSetUploads(); + void requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i); void requestLayerSetUpdate(LLVOAvatarDefines::ETextureIndex i); LLTexLayerSet* getLayerSet(LLVOAvatarDefines::ETextureIndex index) const; diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 77459aca67..2e35811133 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -212,8 +212,8 @@ Næste ejer: </text> <check_box label="Redigére" name="checkbox next owner can modify"/> - <check_box label="Kopiére" left_delta="80" name="checkbox next owner can copy"/> - <check_box label="Sælge/give væk" left_delta="67" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/> + <check_box label="Kopiére" name="checkbox next owner can copy"/> + <check_box label="Sælge/give væk" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/> <text name="B:"> B: </text> diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml index 4bf4692e36..d0d3628448 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml @@ -18,13 +18,13 @@ <text name="balance_amount"> [AMT] L$ </text> - <text name="currency_action" width="90"> + <text name="currency_action"> Ich möchte kaufen </text> <text name="currency_label"> L$ </text> - <line_editor label="L$" left_delta="55" name="currency_amt"> + <line_editor label="L$" name="currency_amt"> 1234 </line_editor> <text name="buying_label"> diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml index f45ae53e99..f284d7cd6b 100644 --- a/indra/newview/skins/default/xui/de/floater_customize.xml +++ b/indra/newview/skins/default/xui/de/floater_customize.xml @@ -311,8 +311,8 @@ <text name="Item Action Label" right="100"> Jacke: </text> - <texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> - <texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <texture_picker label="Stoff: oben" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <texture_picker label="Stoff: unten" name="Lower Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml index d20ab8d1c3..8944c79c7d 100644 --- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="AUSWÄHLEN: TEXTUR"> +<floater name="texture picker" title="TEXTUR AUSWÄHLEN"> <string name="choose_picture"> Zum Auswählen eines Bildes hier klicken </string> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 4efe0dd7f3..303ca2b883 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -364,14 +364,14 @@ Objekteigenschaften bearbeiten: </text> <check_box label="Flexibler Pfad" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/> - <spinner label="Weichheit" name="FlexNumSections" width="140"/> - <spinner label="Schwerkraft" name="FlexGravity" width="140"/> - <spinner label="Ziehen" name="FlexFriction" width="140"/> - <spinner label="Wind" name="FlexWind" width="140"/> - <spinner label="Spannung" name="FlexTension" width="140"/> - <spinner label="Erzwingen X" name="FlexForceX" width="140"/> - <spinner label="Erzwingen Y" name="FlexForceY" width="140"/> - <spinner label="Erzwingen Z" name="FlexForceZ" width="140"/> + <spinner label="Weichheit" name="FlexNumSections"/> + <spinner label="Schwerkraft" name="FlexGravity"/> + <spinner label="Ziehen" name="FlexFriction"/> + <spinner label="Wind" name="FlexWind"/> + <spinner label="Spannung" name="FlexTension"/> + <spinner label="Erzwingen X" name="FlexForceX"/> + <spinner label="Erzwingen Y" name="FlexForceY"/> + <spinner label="Erzwingen Z" name="FlexForceZ"/> <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/> <color_swatch label="" name="colorswatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <texture_picker label="" name="light texture control" tool_tip="Klicken, um eine Bild auszuwählen (dieser Effekt funktioniert nur, wenn zeitversetzte Wiedergabe aktiviert ist)"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml index 3752faf48a..950c9023fe 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_jacket_panel"> <panel name="avatar_jacket_color_panel"> - <texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Stoff: oben" name="Upper Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Stoff: unten" name="Lower Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> </panel> <accordion name="wearable_accordion"> diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index dfc1e26750..4e3a304609 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -9,18 +9,18 @@ <panel.string name="already_in_group"> Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten. </panel.string> - <text name="help_text" top="10"> + <text name="help_text"> Sie können mehrere Einwohner Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“. </text> - <button label="Einwohnerliste öffnen" name="add_button" tool_tip="" top_delta="62"/> + <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/> <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/> <button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/> <text name="role_text"> Wählen Sie eine Rolle aus: </text> <combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/> - <button label="Einladungen versenden" name="ok_button" width="136"/> - <button label="Abbrechen" name="cancel_button" width="66"/> + <button label="Einladungen versenden" name="ok_button"/> + <button label="Abbrechen" name="cancel_button"/> <string name="GroupInvitation"> Gruppeneinladung </string> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 8d45bdd4aa..2b0cb66f61 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -407,7 +407,7 @@ Leyla Linden </text> name="Cancel Land Sale" left_pad="5" top_pad="-25" - width="145" /> + width="155" /> <text type="string" length="1" @@ -1516,7 +1516,7 @@ Only large parcels can be listed in search. name="Clear" tool_tip="Clear the landing point" right="-10" - width="50" /> + width="55" /> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml index fd10938539..6f2b0fc3ea 100644 --- a/indra/newview/skins/default/xui/en/floater_customize.xml +++ b/indra/newview/skins/default/xui/en/floater_customize.xml @@ -307,7 +307,7 @@ label_selected="Save" layout="topleft" name="Save" - right="190" + right="186" top="477" width="82" /> <button @@ -319,7 +319,7 @@ name="Save As" top="477" right="304" - width="110" /> + width="115" /> </panel> <panel border="false" @@ -489,7 +489,7 @@ height="23" layout="topleft" name="Item Action Label" - right="132" + right="90" width="100"> Skin: </text> @@ -548,7 +548,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -561,7 +561,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -739,7 +739,7 @@ height="23" layout="topleft" name="Item Action Label" - right="132" + right="90" width="100"> Hair: </text> @@ -771,7 +771,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -784,7 +784,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -924,7 +924,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Eyes: </text> @@ -955,7 +955,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -968,7 +968,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -1069,7 +1069,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -1082,7 +1082,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -1193,7 +1193,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Shirt: </text> @@ -1272,7 +1272,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -1285,7 +1285,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -1396,7 +1396,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Pants: </text> @@ -1538,7 +1538,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Shoes: </text> @@ -1579,7 +1579,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -1592,7 +1592,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -1741,7 +1741,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Socks: </text> @@ -1782,7 +1782,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -1795,7 +1795,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -1944,7 +1944,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Jacket: </text> @@ -1996,7 +1996,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -2009,7 +2009,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -2158,7 +2158,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Gloves: </text> @@ -2199,7 +2199,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -2212,7 +2212,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -2361,7 +2361,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Undershirt: </text> @@ -2402,7 +2402,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -2415,7 +2415,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -2564,7 +2564,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Underpants: </text> @@ -2605,7 +2605,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -2618,7 +2618,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -2767,7 +2767,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Skirt: </text> @@ -2808,7 +2808,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -2821,7 +2821,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -2970,7 +2970,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Tattoo: </text> @@ -3024,7 +3024,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -3037,7 +3037,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" @@ -3186,7 +3186,7 @@ height="23" layout="bottomleft" name="Item Action Label" - right="132" + right="90" width="100"> Alpha: </text> @@ -3305,7 +3305,7 @@ label="Save" label_selected="Save" layout="topleft" - right="218" + right="186" name="Save" top="477" width="82" /> @@ -3318,7 +3318,7 @@ right="304" name="Save As" top="477" - width="82" /> + width="115" /> <button follows="right|bottom" height="23" diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml index 990be55847..1f192f9b28 100644 --- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml @@ -45,9 +45,9 @@ layout="topleft" name="Reset" left="10" - width="61" /> + width="85" /> <check_box - left_delta="71" + left_delta="90" top_delta="3" enabled="false" follows="left|bottom" @@ -57,9 +57,9 @@ label="Running" layout="topleft" name="running" - width="100" /> + width="205" /> <check_box - left_delta="75" + left_delta="140" enabled="true" follows="left|bottom" font="SansSerif" diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 01548dd820..dda14f02ff 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -45,7 +45,7 @@ </radio_group> <ui_ctrl height="90" - width="90" + width="125" layout="topleft" name="thumbnail_placeholder" top_pad="6" @@ -149,7 +149,7 @@ left="10" name="type_label2" top_pad="5" - width="120"> + width="127"> Size </text> <text @@ -199,7 +199,7 @@ left_delta="0" name="texture_size_combo" top_delta="0" - width="120"> + width="127"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -228,7 +228,7 @@ left_delta="0" name="local_size_combo" top_delta="0" - width="120"> + width="127"> <combo_box.item label="Current Window" name="CurrentWindow" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index affe74d148..3b1ecb4c20 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -990,11 +990,11 @@ label="For Sale:" layout="topleft" name="checkbox for sale" - left="10" - width="90" /> + left="7" + width="93" /> <!-- NEW SALE TYPE COMBO BOX --> <combo_box - left_pad="0" + left_pad="3" layout="topleft" follows="left|top" allow_text_entry="false" @@ -1104,9 +1104,9 @@ even though the user gets a free copy. follows="left|top|right" label="Modify" layout="topleft" - left="15" + left="5" name="checkbox next owner can modify" - width="85" /> + width="80" /> <check_box follows="left|top|right" height="19" @@ -1114,7 +1114,7 @@ even though the user gets a free copy. layout="topleft" left_pad="0" name="checkbox next owner can copy" - width="90" /> + width="80" /> <check_box follows="left|top|right" height="19" @@ -1124,7 +1124,7 @@ even though the user gets a free copy. left_pad="0" top_delta="0" tool_tip="Next owner can give away or resell this object" - width="90" /> + width="100" /> <text type="string" text_color="EmphasisColor" @@ -2051,7 +2051,7 @@ even though the user gets a free copy. increment="1" initial_value="2" label="Softness" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="3" @@ -2064,7 +2064,7 @@ even though the user gets a free copy. increment="0.5" initial_value="0.3" label="Gravity" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" @@ -2078,7 +2078,7 @@ even though the user gets a free copy. increment="0.5" initial_value="2" label="Drag" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" @@ -2091,7 +2091,7 @@ even though the user gets a free copy. increment="0.5" initial_value="0" label="Wind" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" @@ -2104,7 +2104,7 @@ even though the user gets a free copy. increment="0.5" initial_value="1" label="Tension" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" @@ -2117,7 +2117,7 @@ even though the user gets a free copy. increment="0.01" initial_value="0" label="Force X" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" @@ -2131,7 +2131,7 @@ even though the user gets a free copy. increment="0.01" initial_value="0" label="Force Y" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" @@ -2145,7 +2145,7 @@ even though the user gets a free copy. increment="0.01" initial_value="0" label="Force Z" - label_width="65" + label_width="70" layout="topleft" left_delta="0" max_val="10" diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 7b6081d7be..85853f39bb 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -156,18 +156,19 @@ name="notify_container" tab_group="-2" width="1024"/> - <menu_holder top="0" - follows="all" - height="768" - mouse_opaque="false" - name="Menu Holder" - width="1024"/> <panel top="0" follows="all" height="768" mouse_opaque="false" name="popup_holder" + class="popup_holder" width="1024"/> + <menu_holder top="0" + follows="all" + height="768" + mouse_opaque="false" + name="Menu Holder" + width="1024"/> <snapshot_floater_view enabled="false" follows="all" height="768" diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml index 48083b7677..15a3191bdf 100644 --- a/indra/newview/skins/default/xui/en/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml @@ -86,7 +86,7 @@ left="4" name="ok_button" top="356" - width="130" /> + width="135" /> <button height="20" label="Cancel" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index f20526b491..c74de043e9 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -635,7 +635,7 @@ left_delta="-230" name="LightingDetailText" top_pad="8" - width="128"> + width="140"> Lighting detail: </text> <radio_group @@ -672,10 +672,10 @@ follows="left|top" height="12" layout="topleft" - left="360" + left="358" name="TerrainDetailText" top="465" - width="128"> + width="155"> Terrain detail: </text> <radio_group diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml index 3913b6d709..c5b2512fba 100644 --- a/indra/newview/skins/default/xui/en/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml @@ -20,7 +20,7 @@ name="estate_help_text" top="14" word_wrap="true" - width="275"> + width="250"> Changes to settings on this tab will affect all regions in the estate. </text> <text diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml index d14355b9f4..d444420550 100644 --- a/indra/newview/skins/default/xui/en/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml @@ -178,5 +178,5 @@ top_pad="-35" right="487" name="Save_btn" - width="61" /> + width="81" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 8a1f74c46c..0c870e155b 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -51,7 +51,7 @@ image_unselected="spacer35.tga" image_pressed="spacer35.tga" height="16" - right="-220" + right="-230" label_shadow="false" name="buycurrency" tool_tip="My Balance" diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index 86739b24c8..433b7691fa 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -77,7 +77,7 @@ top="0" use_ellipses="true" value="Object Profile" - width="275" /> + width="290" /> <text follows="top|left" height="13" diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index d7f7fc4987..f99bb277cb 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -144,7 +144,7 @@ Asegúrate de que tu conexión a internet está funcionando adecuadamente. Va a añadir miembros al rol de [ROLE_NAME]. No podrá removérseles de ese rol, sino que deberán renunciar a él por sà mismos. ¿Está seguro de que quiere seguir? - <usetemplate ignoretext="Confirma que vas a añadir un nuevo Propietario al grupo" name="okcancelignore" notext="No" yestext="SÃ"/> + <usetemplate ignoretext="Confirmar que vas a añadir un nuevo propietario al grupo" name="okcancelignore" notext="No" yestext="SÃ"/> </notification> <notification name="AssignDangerousActionWarning"> Va a añadir la capacidad '[ACTION_NAME]' al rol '[ROLE_NAME]'. @@ -1526,7 +1526,7 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es </url> - <usetemplate ignoretext="No puedo reclamar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> + <usetemplate ignoretext="No puedo reclamar este terreno dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> </notification> <notification name="LandClaimAccessBlocked_Notify"> Por su nivel de calificación, usted no puede reclamar este terreno. @@ -1550,7 +1550,7 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es </url> - <usetemplate ignoretext="No puedo comprar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> + <usetemplate ignoretext="No puedo comprar este terreno dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> </notification> <notification name="LandBuyAccessBlocked_Notify"> No puede comprar este terreno por su nivel de calificación. @@ -1731,7 +1731,7 @@ Dado que estos objetos tienen scripts, moverlos a su inventario puede provocar u <usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> </notification> <notification name="ConfirmQuit"> - ¿Está seguro de que quiere salir? + ¿Estás seguro de que quieres salir? <usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/> </notification> <notification name="HelpReportAbuseEmailLL"> diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml index 8313306cf9..c5494d8199 100644 --- a/indra/newview/skins/default/xui/es/panel_login.xml +++ b/indra/newview/skins/default/xui/es/panel_login.xml @@ -24,7 +24,7 @@ </layout_panel> <layout_panel name="links"> <text name="create_new_account_text"> - Registrarse + Registrarme </text> <text name="login_help"> ¿Necesitas ayuda para conectarte? diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml index ed24ccacd7..8993fa139f 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml @@ -20,7 +20,7 @@ (requiere reiniciar) </text> <text name="maturity_desired_prompt"> - Quiero acceder a contenido calificado: + Quiero acceder a contenido: </text> <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> @@ -62,6 +62,6 @@ <combo_box.item label="nunca" name="item4"/> </combo_box> <text name="text_box3"> - Respuesta cuando estoy en el modo ocupado: + Respuesta cuando estoy en modo ocupado: </text> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml index c5ecffc026..6ec3a04a02 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -6,11 +6,11 @@ <text name="QualitySpeed"> Calidad y velocidad: </text> - <text left="95" name="FasterText"> - El más rápido + <text name="FasterText"> + Más rápido </text> <text name="BetterText"> - Mejor + Más calidad </text> <text name="ShadersPrefText"> Bajo @@ -83,24 +83,23 @@ <text name="SkyMeshDetailText"> Bajo </text> - <text name="LightingDetailText" width="135"> - Detalles de la iluminación: + <text name="LightingDetailText"> + Detalles de iluminación: </text> <radio_group name="LightingDetailRadio"> - <radio_item label="Sólo el Sol y la Luna" name="SunMoon" value="0"/> - <radio_item label="Puntos de luz cercanos" name="LocalLights" value="1"/> + <radio_item label="Sólo el Sol y la Luna" name="SunMoon"/> + <radio_item label="Puntos de luz cercanos" name="LocalLights"/> </radio_group> <text name="TerrainDetailText"> - Nivel de detalle del - terreno: + Detalle del terreno: </text> - <radio_group left_delta="60" name="TerrainDetailRadio"> + <radio_group name="TerrainDetailRadio"> <radio_item label="Bajo" name="0"/> <radio_item label="Alto" name="2"/> </radio_group> </panel> <button label="Aplicar" label_selected="Aplicar" name="Apply"/> - <button label="Por defecto" left="110" name="Defaults" width="195"/> + <button label="Por defecto" name="Defaults"/> <button label="Avanzado" name="Advanced"/> <button label="Hardware" label_selected="Hardware" left="315" name="GraphicsHardwareButton"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index 9e6cf49247..1e8b0c736c 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -7,10 +7,10 @@ <slider label="Efectos de sonido" name="SFX Volume"/> <slider label="Música en streaming" name="Music Volume"/> <check_box label="Activada" name="music_enabled"/> - <slider label="Medios de comunicación" name="Media Volume"/> - <check_box label="Activados" name="enable_media"/> + <slider label="Multimedia" name="Media Volume"/> + <check_box label="Activada" name="enable_media"/> <slider label="Chat de voz" name="Voice Volume"/> - <check_box label="Activada" name="enable_voice_check"/> + <check_box label="Activado" name="enable_voice_check"/> <check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="SÃ"/> <check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos" value="SÃ"/> <text name="voice_chat_settings"> diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml index e7e2d8a0ee..d0e96583f0 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -109,7 +109,7 @@ <text name="Selling with no objects in parcel."> Objets non inclus dans la vente </text> - <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" left="275" name="Cancel Land Sale" width="165"/> + <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" name="Cancel Land Sale"/> <text name="Claimed:"> Acquis : </text> @@ -312,17 +312,17 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. </text> <check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n'importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/> <check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n'est pas cochée, ils ne pourront voler que lorsqu'ils arrivent et passent au dessus de votre terrain."/> - <text left="152" name="allow_label2"> + <text name="allow_label2"> Construire : </text> <check_box label="Tous" left="285" name="edit objects check"/> <check_box label="Groupe" left="395" name="edit group objects check"/> - <text left="152" name="allow_label3" width="150"> + <text name="allow_label3"> Laisser entrer des objets : </text> <check_box label="Tous" left="285" name="all object entry check"/> <check_box label="Groupe" left="395" name="group object entry check"/> - <text left="152" name="allow_label4"> + <text name="allow_label4"> Exécuter des scripts : </text> <check_box label="Tous" left="285" name="check other scripts"/> @@ -367,11 +367,11 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. Photo : </text> <texture_picker bottom="-319" label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/> - <text bottom="-323" name="landing_point"> + <text name="landing_point"> Lieu d'arrivée : [LANDING] </text> - <button bottom="-323" label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d'arrivée des visiteurs. Définit l'emplacement de votre avatar sur ce terrain."/> - <button bottom="-323" label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Effacer le lieu d'arrivée"/> + <button label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d'arrivée des visiteurs. Définit l'emplacement de votre avatar sur ce terrain."/> + <button label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Effacer le lieu d'arrivée"/> <text bottom="-343" name="Teleport Routing: "> Règles de téléportation : </text> @@ -380,7 +380,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. <combo_box.item label="Lieu d'arrivée fixe" name="LandingPoint"/> <combo_box.item label="Lieu d'arrivée libre" name="Anywhere"/> </combo_box> - </panel> + </panel> <panel label="MÉDIA" name="land_media_panel"> <text name="with media:" width="85"> Type : diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml index feb2fe1027..7647452e91 100644 --- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml @@ -9,7 +9,7 @@ <floater.string name="Title"> SCRIPT : [NAME] </floater.string> - <button label="Réinitialiser" label_selected="Réinitialiser" left="390" name="Reset" width="100"/> - <check_box initial_value="true" label="Exécution en cours" left="4" name="running"/> - <check_box initial_value="true" label="Mono" left_delta="160" name="mono"/> + <button label="Réinitialiser" label_selected="Réinitialiser" name="Reset"/> + <check_box initial_value="true" label="Exécution en cours" name="running"/> + <check_box initial_value="true" label="Mono" name="mono"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml index aa004d2c84..450ad64ae4 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -17,7 +17,7 @@ <text name="QualitySpeed"> Qualité et vitesse : </text> - <text left="35" name="FasterText"> + <text name="FasterText"> Plus rapide </text> <text name="BetterText"> diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml index b9bc1dd9d8..657bf792cf 100644 --- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml @@ -21,7 +21,7 @@ <panel.string name="buycurrencylabel"> [AMT] L$ </panel.string> - <button label="" label_selected="" name="buycurrency" right="-250" tool_tip="Mon solde"/> + <button label="" label_selected="" name="buycurrency" tool_tip="Mon solde"/> <button label="Acheter" name="buyL" tool_tip="Cliquez pour acheter plus de L$"/> <text name="TimeText" tool_tip="Heure actuelle (Pacifique)"> 00h00 PST diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index a16348529b..ceda48109e 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floaterland" title="åœŸåœ°æƒ…å ±"> + <floater.string name="maturity_icon_general"> + "Parcel_PG_Dark" + </floater.string> + <floater.string name="maturity_icon_moderate"> + "Parcel_M_Dark" + </floater.string> + <floater.string name="maturity_icon_adult"> + "Parcel_R_Dark" + </floater.string> <floater.string name="Minutes"> [MINUTES] 分 </floater.string> @@ -15,7 +24,7 @@ <tab_container name="landtab"> <panel label="一般" name="land_general_panel"> <panel.string name="new users only"> - æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿ + æ–°è¦ä½äººå°‚用 </panel.string> <panel.string name="anyone"> 誰ã§ã‚‚ @@ -387,10 +396,6 @@ ホームページ: </text> <button label="è¨å®š" label_selected="è¨å®š..." name="set_media_url"/> - <text name="CurrentURL:"> - ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ï¼š - </text> - <button label="リセット..." label_selected="リセット..." name="reset_media_url" tool_tip="URL ã‚’æ›´æ–°"/> <check_box label="URL ã‚’éžè¡¨ç¤º" name="hide_media_url" tool_tip="ã“ã®ã‚ªãƒ—ションをオンã«ã™ã‚‹ã¨ã€è¨±å¯ãªã—ã§ã“ã®åŒºç”»æƒ…å ±ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„るユーザーã«ã¯ãƒ¡ãƒ‡ã‚£ã‚¢ URL ãŒè¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。 ã“れ㯠HTML タイプã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ã®ã§ã”注æ„ãã ã•ã„。"/> <text name="Description:"> 説明: diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml index a50f36b6f3..a274e25326 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml @@ -41,8 +41,8 @@ é¸æŠžã•ã‚ŒãŸåœ°åŸŸã«ã€å…¬å…±ã®åœŸåœ°ã¯ã‚ã‚Šã¾ã›ã‚“ </floater.string> <floater.string name="not_owned_by_you"> - ä»–ã®ä½¿ç”¨è€…ã«æ‰€æœ‰ã•ã‚ŒãŸåœŸåœ°ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã™ã€‚ -ã“れよりå°ã•ãªç¯„囲をé¸æŠžã—ã¦ãã ã•ã„。 + ä»–ã®ä½äººãŒæ‰€æœ‰ã™ã‚‹åœŸåœ°ã‚’é¸æŠžã—ã¦ã„ã¾ã™ã€‚ +ã‚‚ã£ã¨ç‹ã„範囲をé¸æŠžã—ã¦ã¿ã¦ãã ã•ã„。 </floater.string> <floater.string name="processing"> 購入処ç†ä¸... diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml index 075cde8dec..6ccd6b9293 100644 --- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml @@ -2,7 +2,7 @@ <floater name="godtools floater" title="ゴッド・ツール"> <tab_container name="GodTools Tabs"> <panel label="グリッド" name="grid"> - <button label="ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã™" label_selected="ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã™" name="Kick all users" width="160"/> + <button label="ä½äººå…¨å“¡ã‚’追ã„出ã™" label_selected="ä½äººå…¨å“¡ã‚’追ã„出ã™" name="Kick all users" width="160"/> <button label="ã“ã®åœ°åŸŸã®åœ°å›³ã®è¡¨ç¤ºã‚ャッシュを消去" label_selected="ã“ã®åœ°åŸŸã®åœ°å›³ã®è¡¨ç¤ºã‚ャッシュを消去" name="Flush This Region's Map Visibility Caches"/> </panel> <panel label="地域" name="region"> diff --git a/indra/newview/skins/default/xui/ja/floater_im.xml b/indra/newview/skins/default/xui/ja/floater_im.xml index 9c323f25e6..2e8993ec21 100644 --- a/indra/newview/skins/default/xui/ja/floater_im.xml +++ b/indra/newview/skins/default/xui/ja/floater_im.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <multi_floater name="im_floater" title="インスタント・メッセージ"> <string name="only_user_message"> - ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã„るユーザーã¯ã‚ãªãŸã ã‘ã§ã™ã€‚ + ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã¯ã€ã‚ãªãŸã—ã‹ã„ã¾ã›ã‚“。 </string> <string name="offline_message"> [FIRST] [LAST]ã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™ã€‚ @@ -32,7 +32,7 @@ </string> <!-- ALL of the event strings should have [RECIPIENT] in them --> <string name="add_session_event"> - [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ + [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ä½äººã‚’è¿½åŠ ã§ãã¾ã›ã‚“。 </string> <string name="message_session_event"> [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml index c437e8c02a..64c577b879 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml @@ -62,7 +62,7 @@ <text name="help_label"> 待機ステップを入れãªã„é™ã‚Šã¯ã€ã™ã¹ã¦ã®ã‚¹ãƒ†ãƒƒãƒ—ãŒåŒæ™‚ã«èµ·ã“ã‚Šã¾ã™ã€‚ </text> - <check_box label="アクティブ" left="120" name="active_check" tool_tip="アクティブãªã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã¯ã€ãƒˆãƒªã‚¬ãƒ¼ãƒ•ãƒ¬ãƒ¼ã‚ºã‚’使ã†ã‹ã€ãƒ›ãƒƒãƒˆã‚ーを押ã™ã¨åˆ‡ã‚Šæ›¿ã‚ã‚Šã¾ã™ã€‚ 1ã¤ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚ーã«2ã¤ä»¥ä¸Šã®ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå ´åˆã€ãã®ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã¯ä¸¡æ–¹ã¨ã‚‚アクティブã§ã¯ãªããªã‚Šã¾ã™ã€‚"/> + <check_box label="アクティブ" name="active_check" tool_tip="アクティブãªã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã¯ã€ãƒˆãƒªã‚¬ãƒ¼ãƒ•ãƒ¬ãƒ¼ã‚ºã‚’使ã†ã‹ã€ãƒ›ãƒƒãƒˆã‚ーを押ã™ã¨åˆ‡ã‚Šæ›¿ã‚ã‚Šã¾ã™ã€‚ 1ã¤ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚ーã«2ã¤ä»¥ä¸Šã®ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå ´åˆã€ãã®ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã¯ä¸¡æ–¹ã¨ã‚‚アクティブã§ã¯ãªããªã‚Šã¾ã™ã€‚"/> <button label="プレビュー" name="preview_btn"/> <button label="ä¿å˜" name="save_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_publish_classified.xml b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml new file mode 100644 index 0000000000..ca6204424e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="publish_classified" title="クラシファイド広告掲載"> + <text name="explanation_text"> + ã‚ãªãŸã®ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã¯ã€æŽ²è¼‰ã•ã‚ŒãŸæ—¥ã‹ã‚‰1週間有効ã§ã™ã€‚ + +クラシファイド広告ã¯è¿”金ã§ãã¾ã›ã‚“ã®ã§ã”了承ãã ã•ã„。 + </text> + <spinner label="広告費:" name="price_for_listing" tool_tip="æŽ²è¼‰ä¾¡æ ¼" value="50"/> + <text name="l$_text" value="L$"/> + <text name="more_info_text"> + 詳ã—ã„æƒ…å ±ï¼ˆã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰ãƒ˜ãƒ«ãƒ—ã¸ã®ãƒªãƒ³ã‚¯ï¼‰ + </text> + <button label="掲載" name="publish_btn"/> + <button label="ã‚ャンセル" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index e51e63999a..153b4068ad 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -16,7 +16,7 @@ <button label="ä¿å˜ï¼ˆL$[AMOUNT])" name="upload_btn"/> <flyout_button label="ä¿å˜" name="save_btn" tool_tip="ç”»åƒã‚’ファイルã«ä¿å˜"> <flyout_button.item label="ä¿å˜" name="save_item"/> - <flyout_button.item label="åå‰ã‚’付ã‘ã¦ä¿å˜" name="saveas_item"/> + <flyout_button.item label="別åã§ä¿å˜..." name="saveas_item"/> </flyout_button> <button label="ã‚ャンセル" name="discard_btn"/> <button label="全表示" name="more_btn" tool_tip="詳ã—ã„è¨å®š"/> diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml index 04120b4bea..0e489be9a8 100644 --- a/indra/newview/skins/default/xui/ja/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml @@ -5,8 +5,7 @@ è¡¨è¨˜ãƒ»è¨˜å· </text> </panel> - <panel - name="layout_panel_2"> + <panel name="layout_panel_2"> <button label="ç¾åœ¨åœ°ã‚’表示" label_selected="ç¾åœ¨åœ°ã‚’表示" name="Show My Location" tool_tip="ã‚¢ãƒã‚¿ãƒ¼ã®ä½ç½®ã‚’地図ã®ä¸å¿ƒã«è¡¨ç¤ºã—ã¾ã™"/> <text name="me_label"> 自分 @@ -24,7 +23,7 @@ 土地販売 </text> <text name="by_owner_label"> - 所有者ã®è²©å£² + 所有者ã«ã¦ </text> <text name="auction_label"> 土地オークション @@ -49,39 +48,35 @@ Adult </text> </panel> - <panel - name="layout_panel_3"> + <panel name="layout_panel_3"> <text name="find_on_map_label"> - 地図上ã§æŽ¢ã™ + 地図上ã§è¦‹ã¤ã‘ã‚‹ </text> </panel> - <panel - name="layout_panel_4"> - <combo_box label="オンラインã®ãƒ•ãƒ¬ãƒ³ãƒ‰" name="friend combo" tool_tip="フレンドを地図上ã«è¡¨ç¤ºã—ã¾ã™"> + <panel name="layout_panel_4"> + <combo_box label="オンラインã®ãƒ•ãƒ¬ãƒ³ãƒ‰" name="friend combo" tool_tip="フレンドを地図ã«è¡¨ç¤º"> <combo_box.item label="オンラインã®ãƒ•ãƒ¬ãƒ³ãƒ‰" name="item1"/> </combo_box> <combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図上ã«è¡¨ç¤ºã™ã‚‹ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯"> <combo_box.item label="マイ ランドマーク" name="item1"/> </combo_box> - <search_editor label="リージョンå" name="location" tool_tip="地域åを入力ã—ã¦ãã ã•ã„。"/> - <button label="検索" name="DoSearch" tool_tip="地域検索"/> + <search_editor label="リージョンå" name="location" tool_tip="リージョンåを入力ã—ã¾ã™"/> + <button label="検索" name="DoSearch" tool_tip="リージョン検索"/> <button name="Clear" tool_tip="追跡ラインをクリアã—ã¦åœ°å›³ã‚’リセットã—ã¾ã™"/> <scroll_list name="search_results"> <scroll_list.columns label="" name="icon"/> <scroll_list.columns label="" name="sim_name"/> </scroll_list> <button label="テレãƒãƒ¼ãƒˆ" label_selected="テレãƒãƒ¼ãƒˆ" name="Teleport" tool_tip="é¸æŠžã—ãŸå ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™"/> - <button label="SLurl をコピー" name="copy_slurl" tool_tip="ç¾åœ¨åœ°ã‚’ SLurl ã§ã‚³ãƒ”ーã—㦠Web ã§ä½¿ç”¨ã—ã¾ã™ã€‚"/> - <button label="é¸æŠžã‚’を表示ã™ã‚‹" label_selected="目的地を表示" name="Show Destination" tool_tip="é¸æŠžã—ãŸå ´æ‰€ã‚’地図ã®ä¸å¿ƒã«è¡¨ç¤ºã—ã¾ã™"/> + <button label="SLurl をコピー" name="copy_slurl" tool_tip="ç¾åœ¨åœ°ã® SLurl をコピーã—㦠Web ã§ä½¿ç”¨ã—ã¾ã™ã€‚"/> + <button label="é¸æŠžã‚’表示ã™ã‚‹" label_selected="目的地を表示" name="Show Destination" tool_tip="é¸æŠžã—ãŸå ´æ‰€ã‚’地図ã®ä¸å¿ƒã«è¡¨ç¤ºã—ã¾ã™"/> </panel> - <panel - name="layout_panel_5"> + <panel name="layout_panel_5"> <text name="zoom_label"> ズーム</text> </panel> - <panel - name="layout_panel_6"> + <panel name="layout_panel_6"> <slider label="ズーム" name="zoom slider"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index e6fb07f120..bcad812457 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -241,7 +241,7 @@ <menu label="レンダーテスト" name="Render Tests"> <menu_item_check label="カメラオフセット" name="Camera Offset"/> <menu_item_check label="フレームレートをランダム化" name="Randomize Framerate"/> - <menu_item_check label="Periodic Slow Frame" name="Periodic Slow Frame"/> + <menu_item_check label="定期的ã«é…ã„フレームを挿入ã™ã‚‹" name="Periodic Slow Frame"/> <menu_item_check label="フレームテスト" name="Frame Test"/> </menu> <menu label="メタデータã®ãƒ¬ãƒ³ãƒ€ãƒ¼" name="Render Metadata"> @@ -344,7 +344,7 @@ <menu_item_call label="PG ã®ãƒˆã‚°ãƒ«" name="Toggle PG"/> <menu_item_check label="é¸æŠžã‚¢ãƒã‚¿ãƒ¼è¨±å¯" name="Allow Select Avatar"/> </menu> - <menu_item_call label="Params をデフォルトã§å®Ÿè¡Œã™ã‚‹" name="Force Params to Default"/> + <menu_item_call label="パラメータを強制的ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«ã™ã‚‹" name="Force Params to Default"/> <menu_item_check label="ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³æƒ…å ±" name="Animation Info"/> <menu_item_check label="スãƒãƒ¼ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³" name="Slow Motion Animations"/> <menu_item_check label="見ã¦ã„ã‚‹ã‚‚ã®ã‚’表示ã™ã‚‹" name="Show Look At"/> @@ -361,7 +361,7 @@ </menu> <menu_item_check label="HTTP Texture" name="HTTP Textures"/> <menu_item_call label="圧縮画åƒ" name="Compress Images"/> - <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> + <menu_item_check label="デãƒãƒƒã‚°ç”¨ã®ãƒŸãƒ‹ãƒ€ãƒ³ãƒ—を出力ã™ã‚‹" name="Output Debug Minidump"/> <menu_item_check label="次回ã®èµ·å‹•æ™‚ã«ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’表示ã™ã‚‹" name="Console Window"/> <menu_item_check label="管ç†è€…メニューを表示ã™ã‚‹" name="View Admin Options"/> <menu_item_call label="管ç†è€…ステータスã®å‘¼ã³å‡ºã—" name="Request Admin Options"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 4fc3f1d46f..ddb2ae49f7 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -111,7 +111,7 @@ </notification> <notification name="FriendsAndGroupsOnly"> フレンド以外ã‹ã‚‰ã®ã‚³ãƒ¼ãƒ«ã‚„インスタントメッセージを無視ã™ã‚‹è¨å®šã«ã—ãŸã“ã¨ã‚’ã€ç›¸æ‰‹ã«çŸ¥ã‚‰ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 - <usetemplate name="okbutton" yestext="ã¯ã„"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="GrantModifyRights"> 他人ã«ä¿®æ£æ¨©é™ã‚’与ãˆã‚‹ã¨ã€æ¨©é™ã‚’与ãˆã‚‰ã‚ŒãŸäººã¯ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ–ジェクトを変更ã€å‰Šé™¤ã€æŒã¡å¸°ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ¨©é™ã‚’与ãˆã‚‹éš›ã«ã¯å分ã«æ³¨æ„ã—ã¦ãã ã•ã„。 @@ -1343,8 +1343,8 @@ F1 ã‚ーを押ã—ã¦ãã ã•ã„。 <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> </notification> <notification name="ConfirmKick"> - ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’グリッドã®å¤–ã«ã‚ックã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã™"/> + 本当ã«ä½äººå…¨å“¡ã‚’グリッドã‹ã‚‰è¿½ã„出ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="ä½äººå…¨å“¡ã‚’追ã„出ã™"/> </notification> <notification name="MuteLinden"> リンデンをブãƒãƒƒã‚¯ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 @@ -1385,7 +1385,7 @@ F1 ã‚ーを押ã—ã¦ãã ã•ã„。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="KickUser"> - ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ã¤ã‘ã¦ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã—ã¾ã™ã‹ï¼Ÿ + ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã“ã®ä½äººã‚’追ã„出ã—ã¾ã™ã‹ï¼Ÿ <form name="form"> <input name="message"> ã‚ãªãŸã¯ç®¡ç†è€…ã«ã‚ˆã‚Šãƒã‚°ã‚ªãƒ•ã•ã‚Œã¾ã—ãŸã€‚ @@ -1405,7 +1405,7 @@ F1 ã‚ーを押ã—ã¦ãã ã•ã„。 </form> </notification> <notification name="FreezeUser"> - ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ã¤ã‘ã¦ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ + ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã“ã®ä½äººã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ <form name="form"> <input name="message"> ã‚ãªãŸã¯ãƒ•ãƒªãƒ¼ã‚ºã•ã‚Œã¦ã„ã¾ã™ã€‚ å‹•ãã“ã¨ã‚‚ãƒãƒ£ãƒƒãƒˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã›ã‚“。 管ç†è€…㌠IM ã§ã‚ãªãŸã«é€£çµ¡ã—ã¾ã™ã€‚ @@ -1415,7 +1415,7 @@ F1 ã‚ーを押ã—ã¦ãã ã•ã„。 </form> </notification> <notification name="UnFreezeUser"> - ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ã¤ã‘ã¦ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ•ãƒªãƒ¼ã‚ºã‚’解除ã—ã¾ã™ã‹ï¼Ÿ + ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã“ã®ä½äººã®ãƒ•ãƒªãƒ¼ã‚ºã‚’解除ã—ã¾ã™ã‹ï¼Ÿ <form name="form"> <input name="message"> ã‚‚ã†ãƒ•ãƒªãƒ¼ã‚ºã•ã‚Œã¦ã„ã¾ã›ã‚“。 @@ -1435,7 +1435,7 @@ F1 ã‚ーを押ã—ã¦ãã ã•ã„。 </form> </notification> <notification name="OfferTeleportFromGod"> - ユーザーをゴッドサモンã§å‘¼ã³å¯„ã›ã¾ã™ã‹ï¼Ÿ + ç¾åœ¨åœ°ã«ä½äººã‚’ゴッドサモンã—ã¾ã™ã‹ï¼Ÿ <form name="form"> <input name="message"> [REGION] ã«æ¥ã¾ã›ã‚“ã‹ï¼Ÿ @@ -1465,11 +1465,11 @@ F1 ã‚ーを押ã—ã¦ãã ã•ã„。 </form> </notification> <notification label="Lindenã®ä¸å‹•ç”£ã‚’変更" name="ChangeLindenEstate"> - ã‚ãªãŸã¯ãƒªãƒ³ãƒ‡ãƒ³æ‰€æœ‰ã®ä¸å‹•ç”£ï¼ˆãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + リンデンãŒæ‰€æœ‰ã™ã‚‹ã‚¨ã‚¹ãƒ†ãƒ¼ãƒˆï¼ˆãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -ã“ã‚Œã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®çµŒé¨“ã‚’æ ¹æœ¬ã‹ã‚‰æºã‚‹ãŒã—ã‹ããªã„「éžå¸¸ã«å±é™ºãªè¡Œç‚ºã€ã§ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã§å¤šæ•°ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ãŒå¤‰æ›´ã•ã‚Œã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚ +ä½äººã®ä½“験ã«æ ¹æœ¬çš„ã«å½±éŸ¿ã‚’与ãˆã‚‹ãŸã‚ã€éžå¸¸ã«å±é™ºãªè¡Œç‚ºã§ã™ã€‚ メインランドã§ã¯ã€ä½•åƒã¨ã„ã†ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤‰æ›´ã«ã‚ˆã‚‹å½±éŸ¿ã‚’å—ã‘ã€ãã®ãŸã‚スペースサーãƒãƒ¼ã«è² æ‹…ã‚’ã‹ã‘ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ +ãã‚Œã§ã‚‚続ã‘ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> </notification> <notification label="Lindenã®ä¸å‹•ç”£ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’変更" name="ChangeLindenAccess"> @@ -2477,7 +2477,7 @@ Web ページã«ãƒªãƒ³ã‚¯ã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã«ã‚¢ã‚¯ã‚»ã </form> </notification> <notification name="ScriptToast"> - [FIRST] [LAST] ã®ã€Œ [TITLE] ã€ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¤ãƒ³ãƒ—ットをリクエストã—ã¦ã„ã¾ã™ã€‚ + [FIRST] [LAST] ã®ã€Œ [TITLE] ã€ã¯ã€ä½äººã‚¤ãƒ³ãƒ—ットをリクエストã—ã¦ã„ã¾ã™ã€‚ <form name="form"> <button name="Open" text="ダイアãƒã‚°ã‚’é–‹ã"/> <button name="Ignore" text="無視"/> diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml index f3c68c9f59..0aa0e8a8a9 100644 --- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml @@ -9,16 +9,46 @@ <panel.string name="l$_price"> L$ [PRICE] </panel.string> + <panel.string name="click_through_text_fmt"> + [TELEPORT] テレãƒãƒ¼ãƒˆã€ [MAP] 地図〠[PROFILE] プãƒãƒ•ã‚£ãƒ¼ãƒ« + </panel.string> + <panel.string name="date_fmt"> + [year,datetime,slt]/[mthnum,datetime,slt]/[day,datetime,slt] + </panel.string> + <panel.string name="auto_renew_on"> + 有効 + </panel.string> + <panel.string name="auto_renew_off"> + 無効 + </panel.string> <text name="title" value="ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šæƒ…å ±"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <text_editor name="classified_name" value="[name]"/> + <text name="classified_location_label" value="å ´æ‰€ï¼š"/> <text_editor name="classified_location" value="[loading...]"/> + <text name="content_type_label" value="内容ã®ç¨®é¡žï¼š"/> <text_editor name="content_type" value="[content type]"/> + <text name="category_label" value="カテゴリ:"/> <text_editor name="category" value="[category]"/> - <check_box label="毎週自動更新" name="auto_renew"/> - <text_editor name="price_for_listing" tool_tip="æŽ²è¼‰ä¾¡æ ¼"/> - <text_editor name="classified_desc" value="[description]"/> + <text name="creation_date_label" value="制作日:"/> + <text_editor name="creation_date" tool_tip="制作日" value="[date]"/> + <text name="price_for_listing_label" value="æŽ²è¼‰ä¾¡æ ¼ï¼š"/> + <text_editor name="price_for_listing" tool_tip="æŽ²è¼‰ä¾¡æ ¼" value="[price]"/> + <layout_stack name="descr_stack"> + <layout_panel name="clickthrough_layout_panel"> + <text name="click_through_label" value="クリック数:"/> + <text_editor name="click_through_text" tool_tip="Click through data" value="[clicks]"/> + </layout_panel> + <layout_panel name="price_layout_panel"> + <text name="auto_renew_label" value="自動更新:"/> + <text name="auto_renew" value="有効"/> + </layout_panel> + <layout_panel name="descr_layout_panel"> + <text name="classified_desc_label" value="説明:"/> + <text_editor name="classified_desc" value="[description]"/> + </layout_panel> + </layout_stack> </panel> </scroll_container> <panel name="buttons"> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml index fa46e6d35a..5e90076a74 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml @@ -3,12 +3,20 @@ <panel.string name="location_notice"> (掲載後更新) </panel.string> + <string name="publish_label"> + 掲載 + </string> + <string name="save_label"> + ä¿å˜ + </string> <text name="title"> クラシファイド広告ã®ç·¨é›† </text> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <icon label="" name="edit_icon" tool_tip="クリックã—ã¦ç”»åƒã‚’é¸æŠž"/> + <panel name="snapshot_panel"> + <icon label="" name="edit_icon" tool_tip="クリックã—ã¦ç”»åƒã‚’é¸æŠž"/> + </panel> <text name="Name:"> タイトル: </text> @@ -22,20 +30,19 @@ ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... </text> <button label="ç¾åœ¨åœ°ã«è¨å®š" name="set_to_curr_location_btn"/> - <combo_box name="content_type"> - <combo_item name="mature_ci"> - 「Moderateã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ - </combo_item> - <combo_item name="pg_ci"> - 「Generalã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ - </combo_item> - </combo_box> + <text name="category_label" value="カテゴリ:"/> + <text name="content_type_label" value="内容ã®ç¨®é¡žï¼š"/> + <icons_combo_box label="「Generalã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„" name="content_type"> + <icons_combo_box.item label="「Moderateã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„" name="mature_ci" value="Mature"/> + <icons_combo_box.item label="「Generalã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„" name="pg_ci" value="PG"/> + </icons_combo_box> + <text name="price_for_listing_label" value="æŽ²è¼‰ä¾¡æ ¼ï¼š"/> <spinner label="L$" name="price_for_listing" tool_tip="æŽ²è¼‰ä¾¡æ ¼" value="50"/> <check_box label="毎週自動更新" name="auto_renew"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="ä¿å˜" name="save_changes_btn"/> + <button label="[LABEL]" name="save_changes_btn"/> <button label="ã‚ャンセル" name="cancel_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index 5097a352e5..488a8c7a9b 100644 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -7,6 +7,8 @@ <string name="no_friends" value="フレンドã¯ã„ã¾ã›ã‚“"/> <string name="people_filter_label" value="人をフィルター"/> <string name="groups_filter_label" value="グループをフィルター"/> + <string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups 検索ã§ã‚°ãƒ«ãƒ¼ãƒ—を探ã—ã¦ã¿ã¾ã™ã‹ï¼Ÿ]"/> + <string name="no_groups_msg" value="[secondlife:///app/search/groups 入会ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—を探ã—ã¾ã™ã€‚]"/> <filter_editor label="フィルター" name="filter_input"/> <tab_container name="tabs"> <panel label="è¿‘ã" name="nearby_panel"> @@ -20,15 +22,15 @@ <accordion_tab name="tab_online" title="オンライン"/> <accordion_tab name="tab_all" title="全員"/> </accordion> - <text name="no_friends_msg"> - ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã«ã¯ã€[secondlife:///app/search/people ã‚°ãƒãƒ¼ãƒãƒ«æ¤œç´¢] ã‚’ã™ã‚‹ã‹ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。 -誰ã‹ä¸€ç·’ã«è¡Œå‹•ã‚’ã™ã‚‹äººã‚’ãŠæŽ¢ã—ã®æ™‚ã¯ã€[secondlife:///app/worldmap 地図をãŠè©¦ã—ã ã•ã„]。 - </text> <panel label="bottom_panel" name="bottom_panel"> <button name="friends_viewsort_btn" tool_tip="オプション"/> <button name="add_btn" tool_tip="フレンド登録を申ã—出ã¾ã™"/> <button name="del_btn" tool_tip="é¸æŠžã—ãŸäººã‚’フレンドリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™"/> </panel> + <text name="no_friends_msg"> + フレンドを登録ã™ã‚‹ã«ã¯ã€[secondlife:///app/search/people ã‚°ãƒãƒ¼ãƒãƒ«æ¤œç´¢] ã‚’ã™ã‚‹ã‹ã€ä½äººã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。 +誰ã‹ä¸€ç·’ã«è¡Œå‹•ã‚’ã™ã‚‹äººã‚’ãŠæŽ¢ã—ã®æ™‚ã¯ã€[secondlife:///app/worldmap 地図をãŠè©¦ã—ã ã•ã„]。 + </text> </panel> <panel label="マイ グループ" name="groups_panel"> <panel label="bottom_panel" name="bottom_panel"> diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml index 132fb95fe7..433ed0ad93 100644 --- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml @@ -88,7 +88,7 @@ </accordion_tab> <accordion_tab name="region_information_tab" title="リージョン(地域) "> <panel name="region_information_panel"> - <text name="region_name_label" value="地域:"/> + <text name="region_name_label" value="リージョン(地域):"/> <text name="region_name" value="Mooseland"/> <text name="region_type_label" value="種類:"/> <text name="region_type" value="Moose"/> @@ -105,7 +105,7 @@ </accordion_tab> <accordion_tab name="estate_information_tab" title="エステート(ä¸å‹•ç”£ï¼‰"> <panel name="estate_information_panel"> - <text name="estate_name_label" value="ä¸å‹•ç”£ï¼š"/> + <text name="estate_name_label" value="エステート(ä¸å‹•ç”£ï¼‰ï¼š"/> <text name="estate_rating_label" value="レーティング区分:"/> <text name="estate_owner_label" value="所有者:"/> <text name="covenant_label" value="約款:"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml index b0572804cb..a521556c79 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ãƒãƒ£ãƒƒãƒˆ" name="chat"> <text name="font_size"> - Font size: + æ–‡å—ã®å¤§ãã•ï¼š </text> <radio_group name="chat_font_size"> <radio_item label="å°" name="radio" value="0"/> @@ -9,7 +9,7 @@ <radio_item label="大" name="radio3" value="2"/> </radio_group> <text name="font_colors"> - Font colors: + æ–‡å—ã®è‰²ï¼š </text> <color_swatch label="自分" name="user"/> <text name="text_box1"> diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml index 71551c7680..3113a68505 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ä¸å‹•ç”£" name="Estate"> - <text name="estate_help_text" width="400"> + <text name="estate_help_text"> ã“ã®ã‚¿ãƒ–内ã®è¨å®šå¤‰æ›´ã¯ã€ä¸å‹•ç”£å†…ã®ã™ã¹ã¦ã®åœ°åŸŸã«å½±éŸ¿ã—ã¾ã™ã€‚ </text> <text name="estate_text"> @@ -70,5 +70,5 @@ <button label="è¿½åŠ ..." name="add_banned_avatar_btn"/> <button label="削除..." name="remove_banned_avatar_btn"/> <button label="メッセージをä¸å‹•ç”£ã«é€ä¿¡..." name="message_estate_btn"/> - <button label="土地ã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã™..." name="kick_user_from_estate_btn"/> + <button label="ä¸å‹•ç”£ã‹ã‚‰ä½äººã‚’追ã„出ã™..." name="kick_user_from_estate_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index be92c24663..b72fac1a7c 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -15,39 +15,29 @@ <text name="region_type_lbl"> 種類: </text> - <text name="region_type" left_delta="70"> + <text left_delta="70" name="region_type"> ä¸æ˜Ž </text> <check_box label="土地整備をブãƒãƒƒã‚¯" name="block_terraform_check"/> - <button label="?" name="terraform_help"/> <check_box label="飛行をブãƒãƒƒã‚¯" name="block_fly_check"/> - <button label="?" name="fly_help"/> <check_box label="ダメージを許å¯" name="allow_damage_check"/> - <button label="?" name="damage_help"/> <check_box label="プッシュを制é™" name="restrict_pushobject"/> - <button label="?" name="restrict_pushobject_help"/> <check_box label="土地ã®å†è²©ã‚’許å¯" name="allow_land_resell_check"/> - <button label="?" name="land_resell_help"/> <check_box label="土地ã®çµ±åˆãƒ»åˆ†å‰²ã‚’許å¯" name="allow_parcel_changes_check"/> - <button label="?" name="parcel_changes_help"/> <check_box label="土地ã®æ¤œç´¢è¡¨ç¤ºã‚’ブãƒãƒƒã‚¯" name="block_parcel_search_check" tool_tip="検索çµæžœã§ã€ã“ã®åœ°åŸŸã¨åŒºç”»ã‚’表示ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã§ã™"/> - <button label="?" name="parcel_search_help"/> <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" name="agent_limit_spin"/> - <button label="?" name="agent_limit_help"/> <spinner label="物体ボーナス" name="object_bonus_spin"/> - <button label="?" name="object_bonus_help"/> <text label="æˆäººæŒ‡å®š" name="access_text"> 区分: </text> - <combo_box label="Moderate" name="access_combo"> - <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Moderate" name="Mature"/> - <combo_box.item label="General" name="PG"/> - </combo_box> - <button label="?" name="access_help"/> + <icons_combo_box label="Moderate" name="access_combo"> + <icons_combo_box.item label="Adult" name="Adult" value="42"/> + <icons_combo_box.item label="Moderate" name="Mature" value="21"/> + <icons_combo_box.item label="General" name="PG" value="13"/> + </icons_combo_box> <button label="é©ç”¨" name="apply_btn"/> - <button label="ユーザー1åをホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ" name="kick_btn"/> - <button label="ユーザー全員をホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ" name="kick_all_btn"/> + <button label="ä½äºº 1 åをホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_btn"/> + <button label="ä½äººå…¨å“¡ã‚’ホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_all_btn"/> <button label="メッセージを地域ã«é€ä¿¡..." name="im_btn"/> <button label="テレãƒãƒ–ã®ç®¡ç†..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml index aa8c126423..188a60eb60 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml @@ -3,19 +3,19 @@ <text name="region_text_lbl"> 地域: </text> - <text name="region_text" left_delta="70"> + <text left_delta="70" name="region_text"> ä¸æ˜Ž </text> <text name="version_channel_text_lbl"> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š </text> - <text name="version_channel_text" left_delta="70"> + <text left_delta="70" name="version_channel_text"> ä¸æ˜Ž </text> <text name="region_type_lbl"> 種類: </text> - <text name="region_type" left_delta="70"> + <text left_delta="70" name="region_type"> ä¸æ˜Ž </text> <check_box label="地形編集をブãƒãƒƒã‚¯" name="block_terraform_check"/> @@ -25,8 +25,8 @@ <check_box label="土地ã®å†è²©ã‚’許å¯" name="allow_land_resell_check"/> <check_box label="土地ã®çµ±åˆãƒ»åˆ†å‰²ã‚’許å¯" name="allow_parcel_changes_check"/> <check_box label="土地ã®æ¤œç´¢è¡¨ç¤ºã‚’ブãƒãƒƒã‚¯" name="block_parcel_search_check" tool_tip="検索çµæžœã§ã€ã“ã®åœ°åŸŸã¨åŒºç”»ã‚’表示ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã§ã™"/> - <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" name="agent_limit_spin" label_width="110" width="190"/> - <spinner label="物体ボーナス" name="object_bonus_spin" label_width="110" width="190"/> + <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" label_width="110" name="agent_limit_spin" width="190"/> + <spinner label="物体ボーナス" label_width="110" name="object_bonus_spin" width="190"/> <text label="レーティング区分" name="access_text"> レーティング区分: </text> @@ -36,8 +36,8 @@ <combo_box.item label="General" name="PG"/> </combo_box> <button label="é©ç”¨" name="apply_btn"/> - <button label="ユーザー1åをホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_btn"/> - <button label="ユーザー全員をホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_all_btn"/> + <button label="ä½äºº 1 åをホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_btn"/> + <button label="ä½äººå…¨å“¡ã‚’ホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ..." name="kick_all_btn"/> <button label="メッセージを地域ã«é€ä¿¡..." name="im_btn"/> <button label="テレãƒãƒ–ã®ç®¡ç†..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml index 526e6cdeb9..14fc0b4c22 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml @@ -25,16 +25,16 @@ テクスãƒãƒ£æ¨™é«˜ç¯„囲 </text> <text name="height_text_lbl6"> - å—西 + 北西 </text> <text name="height_text_lbl7"> - 北西 + åŒ—æ± </text> <text name="height_text_lbl8"> - å—æ± + å—西 </text> <text name="height_text_lbl9"> - åŒ—æ± + å—æ± </text> <spinner label="低" name="height_start_spin_0"/> <spinner label="低" name="height_start_spin_1"/> diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml index 8ffcd8863e..923455abba 100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -22,7 +22,7 @@ L$ [AMT] </panel.string> <button label="" label_selected="" name="buycurrency" tool_tip="所æŒé‡‘"/> - <button label="è²·ã†" name="buyL" tool_tip="クリックã—㦠L$ を購入ã—ã¾ã™"/> + <button label="購入" name="buyL" tool_tip="クリックã—㦠L$ を購入ã—ã¾ã™"/> <text name="TimeText" tool_tip="ç¾åœ¨æ™‚刻(太平洋)"> 24:00 AM PST </text> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml index 439891bab1..ff9b5dc6aa 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -38,7 +38,7 @@ </panel.string> <text name="title" value="オブジェクトã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«"/> <text name="where" value="(インワールド)"/> - <panel name="properties_panel" label=""> + <panel label="" name="properties_panel"> <text name="Name:"> åå‰ï¼š </text> @@ -60,7 +60,7 @@ <text name="Group_label"> グループ: </text> - <button name="button set group" tool_tip="ã“ã®ã‚ªãƒ–ジェクト権é™ã‚’共有ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠž"/> + <button name="button set group" tool_tip="ã“ã®ã‚ªãƒ–ジェクト権é™ã‚’共有ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠžã—ã¾ã™"/> <name_box initial_value="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°..." name="Group Name Proxy"/> <button label="è²æ¸¡" label_selected="è²æ¸¡" name="button deed" tool_tip="ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’è²æ¸¡ã™ã‚‹ã¨ã€Œæ¬¡ã®æ‰€æœ‰è€…ã€ã®æ¨©é™ãŒé©ç”¨ã•ã‚Œã¾ã™ã€‚ グループ共有オブジェクトã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚ªãƒ•ã‚£ã‚µãƒ¼ãŒè²æ¸¡ã§ãã¾ã™ã€‚"/> <text name="label click action"> @@ -91,7 +91,7 @@ </text> <check_box label="ä¿®æ£" name="checkbox next owner can modify"/> <check_box label="コピー" name="checkbox next owner can copy"/> - <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="checkbox next owner can transfer" tool_tip="次ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™"/> + <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="checkbox next owner can transfer" tool_tip="次ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã§ãã¾ã™"/> </panel> <check_box label="販売ä¸" name="checkbox for sale"/> <combo_box name="sale type"> @@ -124,5 +124,6 @@ <button label="é–‹ã" name="open_btn"/> <button label="支払ã†" name="pay_btn"/> <button label="è²·ã†" name="buy_btn"/> + <button label="詳細" name="details_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index de0de5a0c9..688e4751de 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -758,6 +758,9 @@ <string name="invalid"> 無効 </string> + <string name="NewWearable"> + æ–°ã—ã„ [WEARABLE_ITEM] + </string> <string name="next"> 次㸠</string> @@ -955,7 +958,7 @@ 買ㆠ</string> <string name="BuyforL$"> - Buy for L$ + L$ ã§è³¼å…¥ </string> <string name="Stone"> 石 @@ -1468,6 +1471,9 @@ <string name="PanelContentsNewScript"> æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト </string> + <string name="BusyModeResponseDefault"> + メッセージをé€ã£ãŸä½äººã¯ã€èª°ã«ã‚‚邪é”ã‚’ã•ã‚ŒãŸããªã„ãŸã‚ç¾åœ¨ã€Œå–ã‚Šè¾¼ã¿ä¸ã€ãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚ ã‚ãªãŸã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã€ã‚ã¨ã§ç¢ºèªã§ãるよã†ã« IM パãƒãƒ«ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + </string> <string name="MuteByName"> (å称別) </string> diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml index adcf0e42c3..2f67d43707 100644 --- a/indra/newview/skins/default/xui/ja/teleport_strings.xml +++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<teleport_messages name=""> +<teleport_messages> <message_set name="errors"> <message name="invalid_tport"> テレãƒãƒ¼ãƒˆå‡¦ç†ä¸ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ ãƒã‚°ã‚¤ãƒ³ã—ç›´ã™å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 @@ -63,6 +63,9 @@ <message name="completing"> テレãƒãƒ¼ãƒˆã‚’完了ã—ã¾ã™ã€‚ </message> + <message name="completed_from"> + [T_SLURL] ã‹ã‚‰ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãŒå®Œäº†ã—ã¾ã—㟠+ </message> <message name="resolving"> 目的地を解決ã—ã¦ã„ã¾ã™ã€‚ </message> diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp index 4eadc64b5a..d5795ef4a0 100644 --- a/indra/test/llpermissions_tut.cpp +++ b/indra/test/llpermissions_tut.cpp @@ -61,7 +61,7 @@ namespace tut uuid2 == LLUUID::null && uuid3 == LLUUID::null)); ensure("LLPermission Get Functions failed", (permissions.getMaskBase() == PERM_ALL && permissions.getMaskOwner() == PERM_ALL && permissions.getMaskGroup() == PERM_ALL && permissions.getMaskEveryone() == PERM_ALL && permissions.getMaskNextOwner() == PERM_ALL)); - ensure("Ownership functions failed", (permissions.isGroupOwned() == FALSE && permissions.isOwned() == FALSE)); + ensure("Ownership functions failed", ((! permissions.isGroupOwned()) && (! permissions.isOwned()))); } template<> template<> @@ -204,7 +204,7 @@ namespace tut LLPermissions perm1; LLUUID uuid; BOOL is_group_owned = FALSE; - ensure("1:getOwnership:failed ", (FALSE == perm1.getOwnership(uuid,is_group_owned))); + ensure("1:getOwnership:failed ", ! perm1.getOwnership(uuid,is_group_owned)); LLPermissions perm; LLUUID creator("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); @@ -213,11 +213,11 @@ namespace tut LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); perm.init(creator,owner,lastOwner,group); perm.getOwnership(uuid,is_group_owned); - ensure("2:getOwnership:failed ", ((uuid == owner) && (FALSE == is_group_owned))); + ensure("2:getOwnership:failed ", ((uuid == owner) && (! is_group_owned))); perm.init(creator,LLUUID::null,lastOwner,group); perm.getOwnership(uuid,is_group_owned); - ensure("3:getOwnership:failed ", ((uuid == group) && (TRUE == is_group_owned))); + ensure("3:getOwnership:failed ", ((uuid == group) && is_group_owned)); } template<> template<> @@ -240,17 +240,17 @@ namespace tut LLUUID agent("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); LLUUID owner("68edcf47-ccd7-45b8-9f90-1649d7f12806"); LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); - bool is_atomic = TRUE; - ensure("setOwnerAndGroup():failed ", (TRUE == perm.setOwnerAndGroup(agent,owner,group,is_atomic))); + bool is_atomic = true; + ensure("setOwnerAndGroup():failed ", perm.setOwnerAndGroup(agent,owner,group,is_atomic)); LLUUID owner2("68edcf47-ccd7-45b8-9f90-1649d7f12807"); LLUUID group2("9c8eca51-53d5-42a7-bb58-cef070395db9"); // cant change - agent need to be current owner - ensure("setOwnerAndGroup():failed ", (FALSE == perm.setOwnerAndGroup(agent,owner2,group2,is_atomic))); + ensure("setOwnerAndGroup():failed ", ! perm.setOwnerAndGroup(agent,owner2,group2,is_atomic)); // should be able to change - agent and owner same as current owner - ensure("setOwnerAndGroup():failed ", (TRUE == perm.setOwnerAndGroup(owner,owner,group2,is_atomic))); + ensure("setOwnerAndGroup():failed ", perm.setOwnerAndGroup(owner,owner,group2,is_atomic)); } template<> template<> @@ -259,7 +259,7 @@ namespace tut LLPermissions perm; LLUUID agent; LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); - ensure("deedToGroup():failed ", (TRUE == perm.deedToGroup(agent,group))); + ensure("deedToGroup():failed ", perm.deedToGroup(agent,group)); } template<> template<> void permission_object_t::test<11>() @@ -268,12 +268,12 @@ namespace tut LLUUID agent; BOOL set = 1; U32 bits = PERM_TRANSFER | PERM_MODIFY; - ensure("setBaseBits():failed ", (TRUE == perm.setBaseBits(agent, set, bits))); - ensure("setOwnerBits():failed ", (TRUE == perm.setOwnerBits(agent, set, bits))); + ensure("setBaseBits():failed ", perm.setBaseBits(agent, set, bits)); + ensure("setOwnerBits():failed ", perm.setOwnerBits(agent, set, bits)); LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8"); - ensure("setBaseBits():failed ", (FALSE == perm.setBaseBits(agent1, set, bits))); - ensure("setOwnerBits():failed ", (FALSE == perm.setOwnerBits(agent1, set, bits))); + ensure("setBaseBits():failed ", ! perm.setBaseBits(agent1, set, bits)); + ensure("setOwnerBits():failed ", ! perm.setOwnerBits(agent1, set, bits)); } template<> template<> @@ -284,14 +284,14 @@ namespace tut LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); BOOL set = 1; U32 bits = 10; - ensure("setGroupBits():failed ", (TRUE == perm.setGroupBits(agent,group, set, bits))); - ensure("setEveryoneBits():failed ", (TRUE == perm.setEveryoneBits(agent,group, set, bits))); - ensure("setNextOwnerBits():failed ", (TRUE == perm.setNextOwnerBits(agent,group, set, bits))); - - LLUUID agent1("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); - ensure("setGroupBits():failed ", (FALSE == perm.setGroupBits(agent1,group, set, bits))); - ensure("setEveryoneBits():failed ", (FALSE == perm.setEveryoneBits(agent1,group, set, bits))); - ensure("setNextOwnerBits():failed ", (FALSE == perm.setNextOwnerBits(agent1,group, set, bits))); + ensure("setGroupBits():failed ", perm.setGroupBits(agent,group, set, bits)); + ensure("setEveryoneBits():failed ", perm.setEveryoneBits(agent,group, set, bits)); + ensure("setNextOwnerBits():failed ", perm.setNextOwnerBits(agent,group, set, bits)); + + LLUUID agent1("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); + ensure("setGroupBits():failed ", ! perm.setGroupBits(agent1,group, set, bits)); + ensure("setEveryoneBits():failed ", ! perm.setEveryoneBits(agent1,group, set, bits)); + ensure("setNextOwnerBits():failed ", ! perm.setNextOwnerBits(agent1,group, set, bits)); } template<> template<> @@ -301,14 +301,14 @@ namespace tut LLUUID agent; LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); U32 bits = 10; - ensure("allowOperationBy():failed ", (TRUE == perm.allowOperationBy(bits,agent,group))); + ensure("allowOperationBy():failed ", perm.allowOperationBy(bits,agent,group)); LLUUID agent1("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); LLUUID creator("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); LLUUID owner("68edcf47-ccd7-45b8-9f90-1649d7f12806"); LLUUID lastOwner("5e47a0dc-97bf-44e0-8b40-de06718cee9d"); perm.init(creator,owner,lastOwner,group); - ensure("allowOperationBy():failed ", (TRUE == perm.allowOperationBy(bits,agent1,group))); + ensure("allowOperationBy():failed ", perm.allowOperationBy(bits,agent1,group)); } template<> template<> @@ -321,15 +321,12 @@ namespace tut LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); perm.init(creator,owner,lastOwner,group); LLUUID agent; - ensure("1:allowModifyBy():failed ", (TRUE == perm.allowModifyBy(agent))); - ensure("2:allowModifyBy():failed ", (TRUE == perm.allowModifyBy(agent,group))); + ensure("1:allowModifyBy():failed ", perm.allowModifyBy(agent)); + ensure("2:allowModifyBy():failed ", perm.allowModifyBy(agent,group)); - U32 val1 = 0x7FFFFFFF; - S32 sVal = 1 << 14; - sVal = val1 & sVal; LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8"); - ensure("3:allowModifyBy():failed ", (sVal == perm.allowModifyBy(agent1))); - ensure("4:allowModifyBy():failed ", (sVal == perm.allowModifyBy(agent1,group))); + ensure("3:allowModifyBy():failed ", perm.allowModifyBy(agent1)); + ensure("4:allowModifyBy():failed ", perm.allowModifyBy(agent1,group)); } template<> template<> @@ -342,15 +339,12 @@ namespace tut LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); perm.init(creator,owner,lastOwner,group); LLUUID agent; - ensure("1:allowCopyBy():failed ", (TRUE == perm.allowModifyBy(agent))); - ensure("2:allowCopyBy():failed ", (TRUE == perm.allowModifyBy(agent,group))); + ensure("1:allowCopyBy():failed ", perm.allowModifyBy(agent)); + ensure("2:allowCopyBy():failed ", perm.allowModifyBy(agent,group)); - U32 val1 = 0x7FFFFFFF; - S32 sVal = 1 << 15; - sVal = val1 & sVal; LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8"); - ensure("3:allowCopyBy():failed ", (sVal == perm.allowCopyBy(agent1))); - ensure("4:allowCopyBy():failed ", (sVal == perm.allowCopyBy(agent1,group))); + ensure("3:allowCopyBy():failed ", perm.allowCopyBy(agent1)); + ensure("4:allowCopyBy():failed ", perm.allowCopyBy(agent1,group)); } template<> template<> @@ -363,15 +357,12 @@ namespace tut LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); perm.init(creator,owner,lastOwner,group); LLUUID agent; - ensure("1:allowMoveBy():failed ", (TRUE == perm.allowMoveBy(agent))); - ensure("2:allowMoveBy():failed ", (TRUE == perm.allowMoveBy(agent,group))); + ensure("1:allowMoveBy():failed ", perm.allowMoveBy(agent)); + ensure("2:allowMoveBy():failed ", perm.allowMoveBy(agent,group)); - U32 val1 = 0x7FFFFFFF; - S32 sVal = 1 << 19; - sVal = val1 & sVal; LLUUID agent1("9c8eca51-53d5-42a7-bb58-cef070395db8"); - ensure("3:allowMoveBy():failed ", (sVal == perm.allowMoveBy(agent1))); - ensure("4:allowMoveBy():failed ", (sVal == perm.allowMoveBy(agent1,group))); + ensure("3:allowMoveBy():failed ", perm.allowMoveBy(agent1)); + ensure("4:allowMoveBy():failed ", perm.allowMoveBy(agent1,group)); } template<> template<> @@ -383,20 +374,17 @@ namespace tut LLUUID lastOwner("5e47a0dc-97bf-44e0-8b40-de06718cee9d"); LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); LLUUID agent; - ensure("1:allowMoveBy():failed ", (TRUE == perm.allowTransferTo(agent))); + ensure("1:allowMoveBy():failed ", perm.allowTransferTo(agent)); perm.init(creator,owner,lastOwner,group); - U32 val1 = 0x7FFFFFFF; - S32 sVal = 1 << 13; - sVal = val1 & sVal; - ensure("2:allowMoveBy():failed ", (sVal == perm.allowTransferTo(agent))); + ensure("2:allowMoveBy():failed ", perm.allowTransferTo(agent)); } template<> template<> void permission_object_t::test<18>() { LLPermissions perm,perm1; - ensure("1:Operator==:failed ", perm == perm1); + ensure_equals("1:Operator==:failed ", perm, perm1); LLUUID creator("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); LLUUID owner("68edcf47-ccd7-45b8-9f90-1649d7f12806"); @@ -404,7 +392,7 @@ namespace tut LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); perm.init(creator,owner,lastOwner,group); perm = perm1; - ensure("2:Operator==:failed ", perm == perm1); + ensure_equals("2:Operator==:failed ", perm, perm1); } template<> template<> @@ -416,7 +404,7 @@ namespace tut LLUUID lastOwner("5e47a0dc-97bf-44e0-8b40-de06718cee9d"); LLUUID group("9c8eca51-53d5-42a7-bb58-cef070395db8"); perm.init(creator,owner,lastOwner,group); - ensure("2:Operator==:failed ", perm != perm1); + ensure_not_equals("2:Operator==:failed ", perm, perm1); } template<> template<> @@ -453,7 +441,7 @@ namespace tut } perm1.importFile(fp); fclose(fp); - ensure("exportFile()/importFile():failed to export and import the data ", perm1 == perm); + ensure_equals("exportFile()/importFile():failed to export and import the data ", perm1, perm); } template<> template<> @@ -479,7 +467,7 @@ namespace tut std::istringstream istream(ostream.str()); perm1.importLegacyStream(istream); - ensure("exportLegacyStream()/importLegacyStream():failed to export and import the data ", perm1 == perm); + ensure_equals("exportLegacyStream()/importLegacyStream():failed to export and import the data ", perm1, perm); } template<> template<> @@ -502,7 +490,7 @@ namespace tut stream1 << perm; perm1.init(creator,owner,lastOwner,group); stream2 << perm1; - ensure("1:operator << failed",(stream1.str() == stream2.str())); + ensure_equals("1:operator << failed", stream1.str(), stream2.str()); } template<> template<> @@ -533,19 +521,19 @@ namespace tut { LLAggregatePermissions AggrPermission; LLAggregatePermissions AggrPermission1; - ensure("getU8() function failed", (AggrPermission.getU8() == 0)); - ensure("isEmpty() function failed", (AggrPermission.isEmpty() == TRUE)); + ensure_equals("getU8() function failed", AggrPermission.getU8(), 0); + ensure("isEmpty() function failed", AggrPermission.isEmpty()); AggrPermission.getValue(PERM_TRANSFER); ensure_equals("getValue() function failed", AggrPermission.getValue(PERM_TRANSFER), 0x00); AggrPermission.aggregate(PERM_ITEM_UNRESTRICTED); - ensure("aggregate() function failed", (AggrPermission.isEmpty() == FALSE)); + ensure("aggregate() function failed", ! AggrPermission.isEmpty()); AggrPermission1.aggregate(AggrPermission); - ensure("aggregate() function failed", (AggrPermission1.isEmpty() == FALSE)); + ensure("aggregate() function failed", ! AggrPermission1.isEmpty()); std::ostringstream stream1; stream1 << AggrPermission; - ensure("operator<< failed", (stream1.str() == "{PI_COPY=All, PI_MODIFY=All, PI_TRANSFER=All}")); + ensure_equals("operator<< failed", stream1.str(), "{PI_COPY=All, PI_MODIFY=All, PI_TRANSFER=All}"); } } diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index 6b275bbcad..e5a846f15a 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -307,7 +307,7 @@ GLfloat LLMediaPluginTest::distanceToCamera( GLfloat point_x, GLfloat point_y, G GLdouble modelMatrix[16]; GLdouble projMatrix[16]; - int viewport[4]; + GLint viewport[4]; glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); |