#include "widget.h"

widget::widget(float x0, float y0, float width0, float height0)
{
    x = x0; y = y0;
    width = width0; height = height0;
    focus = false;
}

bool widget::event (genv::event &ev)
{
    if (ev.type == genv::ev_mouse && x <= ev.pos_x && ev.pos_x <= x+width && y <= ev.pos_y && ev.pos_y <= y+height)
    {
        if (ev.button == 0)
        {
            onMouseMove(ev.pos_x, ev.pos_y);
            return false;
        }
        else if (ev.button > 0) onClick(ev.pos_x, ev.pos_y, ev.button);
        else onMouseUp(ev.pos_x, ev.pos_y, -ev.button);
        return true;
    }
    if (ev.type == genv::ev_key && focus)
    {
        if (ev.keycode > 0) onKeyPress(ev.keycode);
        else onKeyUp(ev.keycode);
        return true;
    }
    if (ev.type == genv::ev_timer)
    {
        onTick();
        return false;
    }
    return false;
}
