コード例 #1
0
ファイル: button.c プロジェクト: artfwo/rutabaga
static int
on_event(struct rtb_element *elem, const struct rtb_event *e)
{
	SELF_FROM(elem);

	switch (e->type) {
	case RTB_MOUSE_DOWN:
	case RTB_DRAG_START:
		return 1;

	case RTB_KEY_PRESS:
		if (handle_key_press(self, RTB_EVENT_AS(e, rtb_key_event)))
			return 1;
		break;

	case RTB_MOUSE_CLICK:
		if (RTB_EVENT_AS(e, rtb_mouse_event)->button != RTB_MOUSE_BUTTON1)
			return 0;

		return dispatch_click_event(self, RTB_EVENT_AS(e, rtb_mouse_event));

	default:
		return super.on_event(elem, e);
	}

	return 0;
}
コード例 #2
0
ファイル: window.c プロジェクト: wrl/rutabaga
static void
attached(struct rtb_element *elem,
		struct rtb_element *parent, struct rtb_window *window)
{
	SELF_FROM(elem);

	super.attached(elem, parent, window);
	self->type = rtb_type_ref(window, self->type,
			"net.illest.rutabaga.window");

	rtb_style_resolve_list(self, self->style_list);
	self->restyle(RTB_ELEMENT(self));
}
コード例 #3
0
ファイル: button.c プロジェクト: artfwo/rutabaga
static void
attached(struct rtb_element *elem,
		struct rtb_element *parent, struct rtb_window *window)
{
	SELF_FROM(elem);

	super.attached(elem, parent, window);
	self->type = rtb_type_ref(window, self->type,
			"net.illest.rutabaga.widgets.button");

	self->outer_pad.x = self->label.outer_pad.x;
	self->outer_pad.y = self->label.outer_pad.y;
}
コード例 #4
0
ファイル: button.c プロジェクト: artfwo/rutabaga
static int
reflow(struct rtb_element *elem, struct rtb_element *instigator,
		rtb_ev_direction_t direction)
{
	SELF_FROM(elem);

	super.reflow(elem, instigator, direction);

	self->outer_pad.x = self->label.outer_pad.x;
	self->outer_pad.y = self->label.outer_pad.y;

	return 1;
}
コード例 #5
0
ファイル: window.c プロジェクト: wrl/rutabaga
static int
win_event(struct rtb_element *elem, const struct rtb_event *e)
{
	SELF_FROM(elem);

	switch (e->type) {
	case RTB_WINDOW_CLOSE:
		if (!rtb_handle(elem, e))
			rtb_event_loop_stop(self->rtb);
		return 1;

	case RTB_KEY_PRESS:
	case RTB_KEY_RELEASE:
		if (self->focus && self->focus != RTB_ELEMENT(self))
			if (rtb_elem_deliver_event(self->focus, e))
				return 1;

		if (rtb_handle(elem, e))
			return 1;
	}

	return super.on_event(elem, e);
}
コード例 #6
0
ファイル: window.c プロジェクト: wrl/rutabaga
static void
mark_dirty(struct rtb_element *elem)
{
	SELF_FROM(elem);
	self->dirty = 1;
}