From 29a0f7cfdd33e8d18ad5d932eefa67332d5b5ed3 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Thu, 9 Jul 2009 17:50:25 +0200 Subject: looks like working now modified: linden/indra/newview/llchatbar.cpp modified: linden/indra/newview/llviewerwindow.cpp modified: linden/indra/newview/llvoavatar.cpp --- linden/indra/newview/llchatbar.cpp | 1 + linden/indra/newview/llviewerwindow.cpp | 88 ++++++++++++++++++--------------- linden/indra/newview/llvoavatar.cpp | 13 ++++- 3 files changed, 61 insertions(+), 41 deletions(-) diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp index 59aa572..02a62b6 100644 --- a/linden/indra/newview/llchatbar.cpp +++ b/linden/indra/newview/llchatbar.cpp @@ -115,6 +115,7 @@ LLChatBar::LLChatBar() LLChatBar::~LLChatBar() { + gGestureManager.removeObserver(mObserver); delete mObserver; mObserver = NULL; // LLView destructor cleans up children diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index 7e6c24f..1554075 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp @@ -1829,69 +1829,82 @@ void LLViewerWindow::initWorldUI() S32 width = mRootView->getRect().getWidth(); LLRect full_window(0, height, width, 0); - if ( gBottomPanel == NULL ) // Don't re-enter if objects are alreay created - { - // panel containing chatbar, toolbar, and overlay, over floaters - gBottomPanel = new LLBottomPanel(mRootView->getRect()); - mRootView->addChild(gBottomPanel); + if (gBottomPanel) + mRootView->removeChild(gBottomPanel, TRUE); + // panel containing chatbar, toolbar, and overlay, over floaters + gBottomPanel = new LLBottomPanel(mRootView->getRect()); + mRootView->addChild(gBottomPanel); - // View for hover information - gHoverView = new LLHoverView(std::string("gHoverView"), full_window); - gHoverView->setVisible(TRUE); - mRootView->addChild(gHoverView); + if (gHoverView) + mRootView->removeChild(gHoverView, TRUE); + // View for hover information + gHoverView = new LLHoverView(std::string("gHoverView"), full_window); + gHoverView->setVisible(TRUE); + mRootView->addChild(gHoverView); - gIMMgr = LLIMMgr::getInstance(); + gIMMgr = LLIMMgr::getInstance(); - if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) - { - LLFloaterChat::getInstance(LLSD())->loadHistory(); - } + if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) + { + LLFloaterChat::getInstance(LLSD())->loadHistory(); + } - LLRect morph_view_rect = full_window; - morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); - morph_view_rect.mTop = full_window.mTop - 32; - gMorphView = new LLMorphView(std::string("gMorphView"), morph_view_rect ); - mRootView->addChild(gMorphView); - gMorphView->setVisible(FALSE); + LLRect morph_view_rect = full_window; + morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); + morph_view_rect.mTop = full_window.mTop - 32; + if (gMorphView) + mRootView->removeChild(gMorphView, TRUE); + + gMorphView = new LLMorphView(std::string("gMorphView"), morph_view_rect ); + mRootView->addChild(gMorphView); + gMorphView->setVisible(FALSE); - // *Note: this is where gFloaterMute used to be initialized. + // *Note: this is where gFloaterMute used to be initialized. - LLWorldMapView::initClass(); + LLWorldMapView::initClass(); - adjust_rect_centered_partial_zoom("FloaterWorldMapRect2", full_window); + adjust_rect_centered_partial_zoom("FloaterWorldMapRect2", full_window); + if (!gFloaterWorldMap) + { gFloaterWorldMap = new LLFloaterWorldMap(); gFloaterWorldMap->setVisible(FALSE); + } - // - // Tools for building - // - - // Toolbox floater - init_menus(); + // + // Tools for building + // + // Toolbox floater + init_menus(); + if (!gFloaterTools) + { gFloaterTools = new LLFloaterTools(); gFloaterTools->setVisible(FALSE); + } + if (!gStatusBar) + { // Status bar S32 menu_bar_height = gMenuBarView->getRect().getHeight(); - LLRect root_rect = getRootView()->getRect(); + LLRect root_rect = mRootView->getRect(); LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height); gStatusBar = new LLStatusBar(std::string("status"), status_rect); gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); - + gStatusBar->reshape(root_rect.getWidth(), gStatusBar->getRect().getHeight(), TRUE); gStatusBar->translate(0, root_rect.getHeight() - gStatusBar->getRect().getHeight()); // sync bg color with menu bar gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor() ); + mRootView->addChild(gStatusBar); + } - LLFloaterChatterBox::createInstance(LLSD()); + LLFloaterChatterBox::createInstance(LLSD()); - getRootView()->addChild(gStatusBar); - // menu holder appears on top to get first pass at all mouse events - getRootView()->sendChildToFront(gMenuHolder); - } + // menu holder appears on top to get first pass at all mouse events + + mRootView->sendChildToFront(gMenuHolder); } // Destroy the UI @@ -5136,7 +5149,6 @@ void LLBottomPanel::draw() void* LLBottomPanel::createHUD(void* data) { - delete gHUDView; gHUDView = new LLHUDView(); return gHUDView; } @@ -5144,14 +5156,12 @@ void* LLBottomPanel::createHUD(void* data) void* LLBottomPanel::createOverlayBar(void* data) { - delete gOverlayBar; gOverlayBar = new LLOverlayBar(); return gOverlayBar; } void* LLBottomPanel::createToolBar(void* data) { - delete gToolBar; gToolBar = new LLToolBar(); return gToolBar; } diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 3d2523e..999a609 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp @@ -691,7 +691,11 @@ LLVOAvatar::LLVOAvatar( mTexEyeColor( NULL ), mNeedsSkin(FALSE), mUpdatePeriod(1), - mFullyLoadedInitialized(FALSE) +// mFullyLoadedInitialized(FALSE) + mPreviousFullyLoaded(FALSE), + mVisibleChat( FALSE ), + mFullyLoadedInitialized(FALSE), + mFullyLoaded(FALSE) { LLMemType mt(LLMemType::MTYPE_AVATAR); @@ -1807,6 +1811,10 @@ BOOL LLVOAvatar::buildSkeleton(LLVOAvatarSkeletonInfo *info) { LLMemType mt(LLMemType::MTYPE_AVATAR); + //this can get called with null info on startup sometimes + if (!info) + return FALSE; + //------------------------------------------------------------------------- // allocate joints //------------------------------------------------------------------------- @@ -2174,9 +2182,10 @@ void LLVOAvatar::buildCharacter() LLMenuItemCallGL* item = new LLMenuItemCallGL(attachment->getName(), NULL, &object_selected_and_point_valid, &attach_label, attachment); +if (item){ item->addListener(gMenuHolder->getListenerByName("Object.AttachToAvatar"), "on_click", curiter->first); gAttachSubMenu->append(item); - +} gDetachSubMenu->append(new LLMenuItemCallGL(attachment->getName(), &handle_detach_from_avatar, object_attached, &detach_label, attachment)); -- cgit v1.1