BsGUIDockSlider.cpp 2.0 KB

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