Exemple #1
0
void ui_userbox_do( UI_GADGET_USERBOX * userbox, int keypress )
{
	int OnMe, olddrag;

	OnMe = ui_mouse_on_gadget( (UI_GADGET *)userbox );

	olddrag  = userbox->b1_dragging;

	userbox->mouse_onme = OnMe;
	userbox->mouse_x = Mouse.x - userbox->x1;
	userbox->mouse_y = Mouse.y - userbox->y1;

	userbox->b1_clicked = 0;

	if (OnMe)
	{
		if ( B1_JUST_PRESSED )
		{
			userbox->b1_dragging = 1;
			userbox->b1_drag_x1 = Mouse.x - userbox->x1;
			userbox->b1_drag_y1 = Mouse.y - userbox->y1;
			userbox->b1_clicked = 1;
		}

		if ( B1_PRESSED )
		{
			userbox->b1_held_down = 1;
			userbox->b1_drag_x2 = Mouse.x - userbox->x1;
			userbox->b1_drag_y2 = Mouse.y - userbox->y1;
		}
		else    {
			userbox->b1_held_down = 0;
			userbox->b1_dragging = 0;
		}

		if ( B1_DOUBLE_CLICKED )
			userbox->b1_double_clicked = 1;
		else
			userbox->b1_double_clicked = 0;

	}

	if (!B1_PRESSED)
		userbox->b1_dragging = 0;

	userbox->b1_done_dragging = 0;

	if (olddrag==1 && userbox->b1_dragging==0 )
	{
		if ((userbox->b1_drag_x1 !=  userbox->b1_drag_x2) || (userbox->b1_drag_y1 !=  userbox->b1_drag_y2) )
			userbox->b1_done_dragging = 1;
	}

	if (CurWindow->keyboard_focus_gadget==(UI_GADGET *)userbox)
		userbox->keypress = keypress;

	ui_draw_userbox( userbox );

}
Exemple #2
0
window_event_result ui_userbox_do( UI_DIALOG *dlg, UI_GADGET_USERBOX * userbox,const d_event &event )
{
	int OnMe, olddrag;
	int x, y, z;
	int keypress = 0;
	window_event_result rval = window_event_result::ignored;
	
	if (event.type == EVENT_WINDOW_DRAW)
		ui_draw_userbox( dlg, userbox );
	
	if (event.type == EVENT_KEY_COMMAND)
		keypress = event_key_get(event);
		
	mouse_get_pos(&x, &y, &z);
	OnMe = ui_mouse_on_gadget( userbox );

	olddrag  = userbox->b1_held_down;

	userbox->mouse_onme = OnMe;
	userbox->mouse_x = x - userbox->x1;
	userbox->mouse_y = y - userbox->y1;

	userbox->b1_dragging = 0;
	userbox->b1_clicked = 0;

	if (OnMe)
	{
		if ( B1_JUST_PRESSED )
		{
			userbox->b1_held_down = 1;
			userbox->b1_drag_x1 = x - userbox->x1;
			userbox->b1_drag_y1 = y - userbox->y1;
			rval = window_event_result::handled;
		}
		else if (B1_JUST_RELEASED)
		{
			if (userbox->b1_held_down)
				userbox->b1_clicked = 1;
			userbox->b1_held_down = 0;
			rval = window_event_result::handled;
		}

		if ( (event.type == EVENT_MOUSE_MOVED) && userbox->b1_held_down )
		{
			userbox->b1_dragging = 1;
			userbox->b1_drag_x2 = x - userbox->x1;
			userbox->b1_drag_y2 = y - userbox->y1;
		}

		if ( B1_DOUBLE_CLICKED )
		{
			userbox->b1_double_clicked = 1;
			rval = window_event_result::handled;
		}
		else
			userbox->b1_double_clicked = 0;

	}

	if (B1_JUST_RELEASED)
		userbox->b1_held_down = 0;

	userbox->b1_done_dragging = 0;

	if (olddrag==1 && userbox->b1_held_down==0 )
	{
		if ((userbox->b1_drag_x1 !=  userbox->b1_drag_x2) || (userbox->b1_drag_y1 !=  userbox->b1_drag_y2) )
			userbox->b1_done_dragging = 1;
	}

	if (dlg->keyboard_focus_gadget==userbox)
	{
		userbox->keypress = keypress;
		rval = window_event_result::handled;
	}
	
	if (userbox->b1_clicked || userbox->b1_dragging)
	{
		rval = ui_gadget_send_event(dlg, userbox->b1_clicked ? EVENT_UI_GADGET_PRESSED : EVENT_UI_USERBOX_DRAGGED, userbox);
		if (rval == window_event_result::ignored)
			rval = window_event_result::handled;
	}

	return rval;
}