From 623dae525dc14a69322266e33421770431c34a66 Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Mon, 12 Jul 2010 19:47:44 +0300 Subject: EXT-7796 FIXED disabling/enabling presets and camera modes on switching to/from camera customize mode Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/732/ --HG-- branch : product-engine --- indra/newview/llfloatercamera.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'indra/newview/llfloatercamera.cpp') diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index d6effb2b21..0fa536dfad 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -243,6 +243,20 @@ void LLFloaterCamera::resetCameraMode() floater_camera->switchMode(CAMERA_CTRL_MODE_PAN); } +void LLFloaterCamera::onAvatarEditingAppearance(bool editing) +{ + LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); + if (!floater_camera) return; + + //camera presets (rear, front, etc.) + floater_camera->childSetEnabled("preset_views_list", !editing); + floater_camera->childSetEnabled("presets_btn", !editing); + + //camera modes (object view, mouselook view) + floater_camera->childSetEnabled("camera_modes_list", !editing); + floater_camera->childSetEnabled("avatarview_btn", !editing); +} + void LLFloaterCamera::update() { ECameraControlMode mode = determineMode(); -- cgit v1.2.3 From 566e3969f98c7ac10fe151ba119a78ac5eda2e3c Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Fri, 30 Jul 2010 10:02:30 -0700 Subject: deprecated LLPanel::child*() methods --- indra/newview/llfloatercamera.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'indra/newview/llfloatercamera.cpp') diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 0fa536dfad..75d3d188b1 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -125,10 +125,15 @@ LLPanelCameraItem::LLPanelCameraItem(const LLPanelCameraItem::Params& p) } } +void set_view_visible(LLView* parent, const std::string& name, bool visible) +{ + parent->getChildView(name)->setVisible(visible); +} + BOOL LLPanelCameraItem::postBuild() { - setMouseEnterCallback(boost::bind(&LLPanelCameraItem::childSetVisible, this, "hovered_icon", true)); - setMouseLeaveCallback(boost::bind(&LLPanelCameraItem::childSetVisible, this, "hovered_icon", false)); + setMouseEnterCallback(boost::bind(set_view_visible, this, "hovered_icon", true)); + setMouseLeaveCallback(boost::bind(set_view_visible, this, "hovered_icon", false)); setMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); setRightMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); return TRUE; @@ -143,9 +148,9 @@ void LLPanelCameraItem::setValue(const LLSD& value) { if (!value.isMap()) return;; if (!value.has("selected")) return; - childSetVisible("selected_icon", value["selected"]); - childSetVisible("picture", !value["selected"]); - childSetVisible("selected_picture", value["selected"]); + getChildView("selected_icon")->setVisible( value["selected"]); + getChildView("picture")->setVisible( !value["selected"]); + getChildView("selected_picture")->setVisible( value["selected"]); } static LLRegisterPanelClassWrapper t_camera_zoom_panel("camera_zoom_panel"); @@ -249,12 +254,12 @@ void LLFloaterCamera::onAvatarEditingAppearance(bool editing) if (!floater_camera) return; //camera presets (rear, front, etc.) - floater_camera->childSetEnabled("preset_views_list", !editing); - floater_camera->childSetEnabled("presets_btn", !editing); + floater_camera->getChildView("preset_views_list")->setEnabled(!editing); + floater_camera->getChildView("presets_btn")->setEnabled(!editing); //camera modes (object view, mouselook view) - floater_camera->childSetEnabled("camera_modes_list", !editing); - floater_camera->childSetEnabled("avatarview_btn", !editing); + floater_camera->getChildView("camera_modes_list")->setEnabled(!editing); + floater_camera->getChildView("avatarview_btn")->setEnabled(!editing); } void LLFloaterCamera::update() @@ -484,15 +489,15 @@ void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::stri void LLFloaterCamera::updateState() { - childSetVisible(ZOOM, CAMERA_CTRL_MODE_PAN == mCurrMode); + getChildView(ZOOM)->setVisible(CAMERA_CTRL_MODE_PAN == mCurrMode); bool show_presets = (CAMERA_CTRL_MODE_PRESETS == mCurrMode) || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode && CAMERA_CTRL_MODE_PRESETS == mPrevMode); - childSetVisible(PRESETS, show_presets); + getChildView(PRESETS)->setVisible(show_presets); bool show_camera_modes = CAMERA_CTRL_MODE_MODES == mCurrMode || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode && CAMERA_CTRL_MODE_MODES == mPrevMode); - childSetVisible("camera_modes_list", show_camera_modes); + getChildView("camera_modes_list")->setVisible( show_camera_modes); updateItemsSelection(); -- cgit v1.2.3 From 84c848504c53a571a8be0281616e0dfecce53db3 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 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'indra/newview/llfloatercamera.cpp') 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()) { -- cgit v1.2.3