UIButton.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <TurboBadger/tb_widgets.h>
  2. #include <TurboBadger/tb_widgets_common.h>
  3. #include "UIEvents.h"
  4. #include "UIButton.h"
  5. using namespace tb;
  6. namespace Atomic
  7. {
  8. UIButton::UIButton(Context* context, bool createWidget) : UIWidget(context, false)
  9. {
  10. if (createWidget)
  11. {
  12. widget_ = new TBButton();
  13. widget_->SetDelegate(this);
  14. }
  15. }
  16. UIButton::~UIButton()
  17. {
  18. }
  19. bool UIButton::OnEvent(const tb::TBWidgetEvent &ev)
  20. {
  21. if (ev.type == EVENT_TYPE_CLICK)
  22. {
  23. if (ev.target == widget_) // button clicked itself
  24. {
  25. VariantMap eventData;
  26. ConvertEvent(this, ev, eventData);
  27. SendEvent(E_WIDGETEVENT, eventData);
  28. // this is catching the window close button
  29. return true;
  30. }
  31. if (ev.target && ev.target->GetID() == TBID("__popup-menu"))
  32. {
  33. // popup menu
  34. if (JSGetHeapPtr())
  35. {
  36. VariantMap eventData;
  37. eventData[PopupMenuSelect::P_BUTTON] = this;
  38. eventData[PopupMenuSelect::P_REFID] = (unsigned) ev.ref_id;
  39. SendEvent(E_POPUPMENUSELECT, eventData);
  40. }
  41. return true;
  42. }
  43. }
  44. return false;
  45. }
  46. }