From 9fcfa8277b5ab6177a5ed54418c545776dea2fc5 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Fri, 30 Jul 2010 16:16:55 +0300 Subject: EXT-7796 ADDITIOANL FIXED Reopen reason - Camera Floater did not take into account edit appearance mode while it is being built. FIX: Store the "edit appearance" mode as internal floater's flag and apply it while building to ensure that its controls have right "enable" state. Also added forcing of Pan Camera mode if floater is opened first time in Edit appearance mode. Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/824/ --HG-- branch : product-engine --- indra/newview/llfloatercamera.cpp | 23 +++++++++++++++++++---- indra/newview/llfloatercamera.h | 3 +++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 0fa536dfad..85a5f076ab 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -62,6 +62,7 @@ const F32 CAMERA_BUTTON_DELAY = 0.0f; #define CONTROLS "controls" bool LLFloaterCamera::sFreeCamera = false; +bool LLFloaterCamera::sAppearanceEditing = false; // Zoom the camera in and out class LLPanelCameraZoom @@ -245,16 +246,21 @@ void LLFloaterCamera::resetCameraMode() void LLFloaterCamera::onAvatarEditingAppearance(bool editing) { + sAppearanceEditing = editing; LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); if (!floater_camera) return; + floater_camera->handleAvatarEditingAppearance(editing); +} +void LLFloaterCamera::handleAvatarEditingAppearance(bool editing) +{ //camera presets (rear, front, etc.) - floater_camera->childSetEnabled("preset_views_list", !editing); - floater_camera->childSetEnabled("presets_btn", !editing); + childSetEnabled("preset_views_list", !editing); + childSetEnabled("presets_btn", !editing); //camera modes (object view, mouselook view) - floater_camera->childSetEnabled("camera_modes_list", !editing); - floater_camera->childSetEnabled("avatarview_btn", !editing); + childSetEnabled("camera_modes_list", !editing); + childSetEnabled("avatarview_btn", !editing); } void LLFloaterCamera::update() @@ -349,6 +355,9 @@ BOOL LLFloaterCamera::postBuild() update(); + // ensure that appearance mode is handled while building. See EXT-7796. + handleAvatarEditingAppearance(sAppearanceEditing); + return LLDockableFloater::postBuild(); } @@ -371,6 +380,12 @@ void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* pane ECameraControlMode LLFloaterCamera::determineMode() { + if (sAppearanceEditing) + { + // this is the only enabled camera mode while editing agent appearance. + return CAMERA_CTRL_MODE_PAN; + } + LLTool* curr_tool = LLToolMgr::getInstance()->getCurrentTool(); if (curr_tool == LLToolCamera::getInstance()) { diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index c5f8cd6db5..737bd17e72 100644 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h @@ -124,9 +124,12 @@ private: // fills flatlist with items from given panel void fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel); + void handleAvatarEditingAppearance(bool editing); + // set to true when free camera mode is selected in modes list // remains true until preset camera mode is chosen, or pan button is clicked, or escape pressed static bool sFreeCamera; + static bool sAppearanceEditing; BOOL mClosed; ECameraControlMode mPrevMode; ECameraControlMode mCurrMode; -- cgit v1.2.3