Revision 1 (by (no author), 2006/09/28 22:53:53) Initial import
/// \file widget.cpp
/// Widget class

#include <allegro.h>
#include "widget.h"

Widget::Widget(Widget* parent): x(0), y(0), w(0), h(0), isFocused(false), wantKeyboard(false), parent(parent), wantRedraw(true)
{
}

Widget::~Widget()
{
}

bool Widget::IsMouseOver()
{
	return mouse_x >= x && mouse_x < x + w && mouse_y >= y && mouse_y < y + h;
}

void Widget::WantRedraw()
{
	wantRedraw = true;
	if(parent)
		parent->WantRedraw();
}

void Widget::Focus()
{
	isFocused = true;
	if(parent)
		parent->FocusChild(this);
}

void Widget::FocusChild(Widget* child)
{
}

void Widget::Redraw(RedrawEventArgs* e)
{
}

void Widget::KeyDown(KeyEventArgs* e)
{
}

void Widget::KeyUp(KeyEventArgs* e)
{
}

void Widget::MouseMove(MouseEventArgs* e)
{
}

void Widget::MousePress(MouseEventArgs* e)
{
	Focus();
	saved_buttons = e->b;
}

void Widget::MouseRelease(MouseEventArgs* e)
{
	if(saved_buttons & 1 && !(e->b & 1))
	{
		MouseClick();
	}
}

void Widget::MouseScroll(MouseEventArgs* e)
{
}

void Widget::MouseClick()
{
	onClick.Trigger(this);
}

// The end