llsidetraypanelcontainer.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:3k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2. * @file llsidetraypanelcontainer.cpp
  3. * @brief LLSideTrayPanelContainer implementation
  4. *
  5. * $LicenseInfo:firstyear=2001&license=viewergpl$
  6. * Copyright (c) 2001-2010, Linden Research, Inc.
  7. * Second Life Viewer Source Code
  8. * The source code in this file ("Source Code") is provided by Linden Lab
  9. * to you under the terms of the GNU General Public License, version 2.0
  10. * ("GPL"), unless you have obtained a separate licensing agreement
  11. * ("Other License"), formally executed by you and Linden Lab.  Terms of
  12. * the GPL can be found in doc/GPL-license.txt in this distribution, or
  13. * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  14. * There are special exceptions to the terms and conditions of the GPL as
  15. * it is applied to this Source Code. View the full text of the exception
  16. * in the file doc/FLOSS-exception.txt in this software distribution, or
  17. * online at
  18. * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  19. * By copying, modifying or distributing this software, you acknowledge
  20. * that you have read and understood your obligations described above,
  21. * and agree to abide by those obligations.
  22. * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  23. * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  24. * COMPLETENESS OR PERFORMANCE.
  25. * $/LicenseInfo$
  26. */
  27. #include "llviewerprecompiledheaders.h"
  28. #include "llsidetraypanelcontainer.h"
  29. static LLDefaultChildRegistry::Register<LLSideTrayPanelContainer> r2("panel_container");
  30. std::string LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME = "sub_panel_name";
  31. LLSideTrayPanelContainer::Params::Params()
  32.  : default_panel_name("default_panel_name")
  33. {
  34. // Always hide tabs.
  35. hide_tabs(true);
  36. }
  37. LLSideTrayPanelContainer::LLSideTrayPanelContainer(const Params& p)
  38.  : LLTabContainer(p)
  39.  , mDefaultPanelName(p.default_panel_name)
  40. {
  41. }
  42. void LLSideTrayPanelContainer::onOpen(const LLSD& key)
  43. {
  44. // Select specified panel and save navigation history.
  45. if(key.has(PARAM_SUB_PANEL_NAME))
  46. {
  47. //*NOTE dzaporozhan
  48. // Navigation history is not used after fix for EXT-3186,
  49. // openPreviousPanel() always opens default panel
  50. // Save panel navigation history
  51. std::string panel_name = key[PARAM_SUB_PANEL_NAME];
  52. selectTabByName(panel_name);
  53. }
  54. // Will reopen current panel if no panel name was passed.
  55. getCurrentPanel()->onOpen(key);
  56. }
  57. void LLSideTrayPanelContainer::openPreviousPanel()
  58. {
  59. if(!mDefaultPanelName.empty())
  60. {
  61. selectTabByName(mDefaultPanelName);
  62. }
  63. else
  64. {
  65. selectTab(0);
  66. }
  67. }
  68. BOOL LLSideTrayPanelContainer::handleKeyHere(KEY key, MASK mask)
  69. {
  70. // No key press handling code for Panel Container - this disables
  71. // Tab Container's Alt + Left/Right Button tab switching.
  72. // Let default handler process key presses, don't simply return TRUE or FALSE
  73. // as this may brake some functionality as it did with Copy/Paste for 
  74. // text_editor (ticket EXT-642).
  75. return LLPanel::handleKeyHere(key, mask);
  76. }