Added Event Enablers to Widget class
This commit is contained in:
parent
812260b969
commit
22ed3c0744
6 changed files with 56 additions and 14 deletions
|
|
@ -78,7 +78,7 @@ const $accentColorDark = #6B0A1DFF
|
|||
(scrollbar) {
|
||||
(thumb) {
|
||||
color = rgb(140, 140, 140)
|
||||
borderRadius = 16.0
|
||||
borderRadius = 30.0
|
||||
borderColor = rgb(150, 150, 150)
|
||||
showBorder = true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,6 +62,14 @@ namespace ogfx
|
|||
m_anim.update();
|
||||
}
|
||||
|
||||
void Button::onMouseReleased(const Event& event)
|
||||
{
|
||||
if (!isMouseInside())
|
||||
return;
|
||||
if (event.mouse->button == MouseEventData::eButton::Left && callback_onActionPerformed)
|
||||
callback_onActionPerformed(event);
|
||||
}
|
||||
|
||||
void Button::setText(const String& text)
|
||||
{
|
||||
m_text = text;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace ogfx
|
|||
Button& create(const String& text);
|
||||
void onDraw(ogfx::BasicRenderer2D& gfx) override;
|
||||
void onUpdate(void) override;
|
||||
void onMouseReleased(const Event& event) override;
|
||||
void setText(const String& text);
|
||||
void setIcon(const String& filePath);
|
||||
void applyTheme(const ostd::Stylesheet& theme) override;
|
||||
|
|
|
|||
|
|
@ -235,6 +235,7 @@ namespace ogfx
|
|||
case eCallback::WindowResized: callback_onWindowResized = std::move(callback); break;
|
||||
case eCallback::WindowFocused: callback_onWindowFocused = std::move(callback); break;
|
||||
case eCallback::WindowFocusLost: callback_onWindowFocusLost = std::move(callback); break;
|
||||
case eCallback::ActionPerformed: callback_onActionPerformed = std::move(callback); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
|
@ -272,7 +273,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMousePressed(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMousePressedEventEnabled()) return;
|
||||
setThemeQualifier("pressed");
|
||||
if (hasChildren())
|
||||
m_widgets.onMousePressed(event);
|
||||
|
|
@ -287,7 +288,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMouseReleased(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMouseReleasedEventEnabled()) return;
|
||||
setThemeQualifier("pressed", false);
|
||||
m_pressedButton = ogfx::MouseEventData::eButton::None;
|
||||
if (hasChildren())
|
||||
|
|
@ -314,7 +315,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMouseMoved(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMouseMovedEventEnabled()) return;
|
||||
if (hasChildren())
|
||||
m_widgets.onMouseMoved(event);
|
||||
if (!event.isHandled())
|
||||
|
|
@ -329,7 +330,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMouseScrolled(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMouseScrolledEventEnabled()) return;
|
||||
if (hasChildren())
|
||||
m_widgets.onMouseScrolled(event);
|
||||
if (!event.isHandled())
|
||||
|
|
@ -342,7 +343,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMouseEntered(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMouseEnteredEventEnabled()) return;
|
||||
setThemeQualifier("hover");
|
||||
if (callback_onMouseEntered)
|
||||
callback_onMouseEntered(event);
|
||||
|
|
@ -353,7 +354,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMouseExited(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMouseExitedEventEnabled()) return;
|
||||
setThemeQualifier("hover", false);
|
||||
if (callback_onMouseExited)
|
||||
callback_onMouseExited(event);
|
||||
|
|
@ -364,7 +365,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onMouseDragged(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isMouseDraggedEventEnabled()) return;
|
||||
if (hasChildren())
|
||||
m_widgets.onMouseDragged(event);
|
||||
if (!event.isHandled())
|
||||
|
|
@ -379,7 +380,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onKeyPressed(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isKeyPressedEventEnabled()) return;
|
||||
if (hasChildren())
|
||||
m_widgets.onKeyPressed(event);
|
||||
if (!event.isHandled())
|
||||
|
|
@ -392,7 +393,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onKeyReleased(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isKeyReleasedEventEnabled()) return;
|
||||
m_pressedButton = ogfx::MouseEventData::eButton::None;
|
||||
if (hasChildren())
|
||||
m_widgets.onKeyReleased(event);
|
||||
|
|
@ -406,7 +407,7 @@ namespace ogfx
|
|||
|
||||
void Widget::__onTextEntered(const Event& event)
|
||||
{
|
||||
if (event.isHandled()) return;
|
||||
if (event.isHandled() || !isTextEnteredEventEnabled()) return;
|
||||
if (hasChildren())
|
||||
m_widgets.onTextEntered(event);
|
||||
if (!event.isHandled())
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@ namespace ogfx
|
|||
WindowClosed,
|
||||
WindowResized,
|
||||
WindowFocused,
|
||||
WindowFocusLost
|
||||
WindowFocusLost,
|
||||
ActionPerformed
|
||||
};
|
||||
public: using EventCallback = std::function<void(const Event&)>;
|
||||
public:
|
||||
|
|
@ -172,6 +173,21 @@ namespace ogfx
|
|||
OSTD_BOOL_PARAM_GETSET_E(Tooltip, m_enableTooltip);
|
||||
// ==========================================================================
|
||||
|
||||
|
||||
|
||||
// ================================= EVENT ENABLERS =================================
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MousePressedEvent, m_disableMousePressed);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MouseReleasedEvent, m_disableMouseReleased);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MouseMovedEvent, m_disableMouseMoved);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MouseScrolledEvent, m_disableMouseScrolled);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MouseEnteredEvent, m_disableMouseEntered);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MouseExitedEvent, m_disableMouseExited);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(MouseDraggedEvent, m_disableMouseDragged);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(KeyPressedEvent, m_disableKeyPressed);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(KeyReleasedEvent, m_disableKeyReleased);
|
||||
OSTD_BOOL_PARAM_GETSET_E_NEG(TextEnteredEvent, m_disableTextEntered);
|
||||
// ==================================================================================
|
||||
|
||||
protected:
|
||||
void apply_common_theme_values(const ostd::Stylesheet& theme);
|
||||
inline void disableChildren(void) { m_allowChildren = false; }
|
||||
|
|
@ -214,6 +230,21 @@ namespace ogfx
|
|||
|
||||
|
||||
|
||||
// ======= Event Enablers =======
|
||||
bool m_disableMousePressed { false };
|
||||
bool m_disableMouseReleased { false };
|
||||
bool m_disableMouseMoved { false };
|
||||
bool m_disableMouseScrolled { false };
|
||||
bool m_disableMouseEntered { false };
|
||||
bool m_disableMouseExited { false };
|
||||
bool m_disableMouseDragged { false };
|
||||
bool m_disableKeyPressed { false };
|
||||
bool m_disableKeyReleased { false };
|
||||
bool m_disableTextEntered { false };
|
||||
// ==============================
|
||||
|
||||
|
||||
|
||||
// ====== THEMING =====
|
||||
String m_stylesheetCategoryName { "" };
|
||||
stdvec<String> m_themeIDList;
|
||||
|
|
@ -271,6 +302,7 @@ namespace ogfx
|
|||
EventCallback callback_onWindowResized { nullptr };
|
||||
EventCallback callback_onWindowFocused { nullptr };
|
||||
EventCallback callback_onWindowFocusLost { nullptr };
|
||||
EventCallback callback_onActionPerformed { nullptr };
|
||||
|
||||
public:
|
||||
// ====================== DUMMIES ======================
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class Window : public ogfx::gui::Window
|
|||
});
|
||||
|
||||
m_btn1.setText("BUTTON");
|
||||
m_btn1.setCallback(ogfx::gui::Widget::eCallback::MousePressed, [&](const ogfx::gui::Event& event) -> void {
|
||||
m_btn1.setCallback(ogfx::gui::Widget::eCallback::ActionPerformed, [&](const ogfx::gui::Event& event) -> void {
|
||||
std::cout << showOpenFileDialog(filters) << "\n";
|
||||
});
|
||||
m_btn1.addThemeOverride("@.button.showIcon", true);
|
||||
|
|
@ -119,7 +119,7 @@ class Window : public ogfx::gui::Window
|
|||
|
||||
m_list.setSize(200, 300);
|
||||
|
||||
for (i32 i = 0; i < 10000; i++)
|
||||
for (i32 i = 0; i < 500; i++)
|
||||
{
|
||||
m_list.addLine(ostd::Random::getString(ostd::Random::getui8(1, 40)));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue