| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // ================================================================================
- // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås ==
- // == See tb_core.h for more information. ==
- // ================================================================================
- #include "tb_menu_window.h"
- #include "tb_widgets_listener.h"
- namespace tb {
- // == TBMenuWindow ==========================================
- TBMenuWindow::TBMenuWindow(TBWidget *target, TBID id)
- : TBPopupWindow(target)
- {
- SetID(id);
- SetSkinBg(TBIDC("TBMenuWindow"), WIDGET_INVOKE_INFO_NO_CALLBACKS);
- m_select_list.GetScrollContainer()->SetAdaptToContentSize(true);
- m_select_list.SetIsFocusable(false); ///< Avoid it autoclosing its window on click
- m_select_list.SetSkinBg("");
- m_select_list.SetRect(GetPaddingRect());
- m_select_list.SetGravity(WIDGET_GRAVITY_ALL);
- AddChild(&m_select_list);
- }
- TBMenuWindow::~TBMenuWindow()
- {
- RemoveChild(&m_select_list);
- }
- bool TBMenuWindow::Show(TBSelectItemSource *source, const TBPopupAlignment &alignment, int initial_value)
- {
- m_select_list.SetValue(initial_value);
- m_select_list.SetSource(source);
- m_select_list.ValidateList();
- return TBPopupWindow::Show(alignment);
- }
- bool TBMenuWindow::OnEvent(const TBWidgetEvent &ev)
- {
- if (ev.type == EVENT_TYPE_CLICK && &m_select_list == ev.target)
- {
- TBWidgetSafePointer this_widget(this);
- // Invoke the click on the target
- TBWidgetEvent target_ev(EVENT_TYPE_CLICK);
- target_ev.ref_id = ev.ref_id;
- InvokeEvent(target_ev);
- // If target got deleted, close
- if (this_widget.Get())
- Close();
- return true;
- }
- return TBPopupWindow::OnEvent(ev);
- }
- }; // namespace tb
|