GHOST_TSuccess GHOST_Window::setCursorGrab(GHOST_TGrabCursorMode mode, GHOST_Rect *bounds, GHOST_TInt32 mouse_ungrab_xy[2])
{
	if (m_cursorGrab == mode)
		return GHOST_kSuccess;

	/* override with new location */
	if (mouse_ungrab_xy) {
		assert(mode == GHOST_kGrabDisable);
		m_cursorGrabInitPos[0] = mouse_ungrab_xy[0];
		m_cursorGrabInitPos[1] = mouse_ungrab_xy[1];
	}

	if (setWindowCursorGrab(mode)) {

		if (mode == GHOST_kGrabDisable)
			m_cursorGrabBounds.m_l = m_cursorGrabBounds.m_r = -1;
		else if (bounds) {
			m_cursorGrabBounds = *bounds;
		}
		else {  /* if bounds not defined, use window */
			getClientBounds(m_cursorGrabBounds);
		}
		m_cursorGrab = mode;
		return GHOST_kSuccess;
	}
	else {
		return GHOST_kFailure;
	}
}
Exemplo n.º 2
0
GHOST_TSuccess GHOST_Window::setCursorGrab(GHOST_TGrabCursorMode mode, GHOST_Rect *bounds)
{
	if(m_cursorGrab == mode)
		return GHOST_kSuccess;

	if (setWindowCursorGrab(mode)) {

		if(mode==GHOST_kGrabDisable)
			m_cursorGrabBounds.m_l= m_cursorGrabBounds.m_r= -1;
		else if (bounds) {
			m_cursorGrabBounds= *bounds;
		}
		m_cursorGrab = mode;
		return GHOST_kSuccess;
	}
	else {
		return GHOST_kFailure;
	}
}