BsGUIDockSlider.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "GUI/BsGUIDockSlider.h"
  4. #include "GUI/BsGUIDimensions.h"
  5. #include "GUI/BsGUIMouseEvent.h"
  6. namespace bs
  7. {
  8. const String& GUIDockSlider::getGUITypeName()
  9. {
  10. static String name = "DockSlider";
  11. return name;
  12. }
  13. GUIDockSlider::GUIDockSlider(bool horizontal, const String& styleName, const GUIDimensions& dimensions)
  14. : GUIButtonBase(styleName, GUIContent(HString("")), dimensions), mHorizontal(horizontal), mDragInProgress(false)
  15. {
  16. }
  17. GUIDockSlider* GUIDockSlider::create(bool horizontal, const String& styleName)
  18. {
  19. return new (bs_alloc<GUIDockSlider>()) GUIDockSlider(horizontal,
  20. getStyleName<GUIDockSlider>(styleName), GUIDimensions::create());
  21. }
  22. GUIDockSlider* GUIDockSlider::create(bool horizontal, const GUIOptions& options, const String& styleName)
  23. {
  24. return new (bs_alloc<GUIDockSlider>()) GUIDockSlider(horizontal,
  25. getStyleName<GUIDockSlider>(styleName), GUIDimensions::create(options));
  26. }
  27. bool GUIDockSlider::_hasCustomCursor(const Vector2I position, CursorType& type) const
  28. {
  29. if (_isInBounds(position) && !_isDisabled())
  30. {
  31. type = mHorizontal ? CursorType::SizeNS : CursorType::SizeWE;
  32. return true;
  33. }
  34. return false;
  35. }
  36. bool GUIDockSlider::_mouseEvent(const GUIMouseEvent& ev)
  37. {
  38. bool processed = GUIButtonBase::_mouseEvent(ev);
  39. if(ev.getType() == GUIMouseEventType::MouseDragStart)
  40. {
  41. if (!_isDisabled())
  42. {
  43. mLastDragPosition = ev.getPosition();
  44. mDragInProgress = true;
  45. }
  46. return true;
  47. }
  48. else if(ev.getType() == GUIMouseEventType::MouseDrag)
  49. {
  50. if (!_isDisabled())
  51. {
  52. Vector2I delta = ev.getPosition() - mLastDragPosition;
  53. mLastDragPosition = ev.getPosition();
  54. if (!onDragged.empty())
  55. onDragged(delta);
  56. }
  57. return true;
  58. }
  59. else if(ev.getType() == GUIMouseEventType::MouseDragEnd)
  60. {
  61. if (!_isDisabled())
  62. mDragInProgress = false;
  63. return true;
  64. }
  65. return processed;
  66. }
  67. }