Example #1
0
bool CMouse::SelectCursor(const CPoint& screenPoint, const CPoint& clientPoint, UINT nFlags)
{
    const auto& s = AfxGetAppSettings();

    if (m_bD3DFS && m_pMainFrame->m_OSD.OnMouseMove(nFlags, clientPoint)) {
        StopMouseHider();
        m_cursor = Cursor::HAND;
        return true;
    }

    if (m_pMainFrame->GetLoadState() == MLS::LOADED && m_pMainFrame->GetPlaybackMode() == PM_DVD &&
            (m_pMainFrame->IsD3DFullScreenMode() ^ m_bD3DFS) == 0 &&
            (m_pMainFrame->m_pDVDC->SelectAtPosition(GetVideoPoint(clientPoint)) == S_OK)) {
        StopMouseHider();
        m_cursor = Cursor::HAND;
        return true;
    }

    bool bMouseButtonDown = !!(nFlags & ~(MK_CONTROL | MK_SHIFT));
    bool bHidden = (m_cursor == Cursor::NONE);
    bool bHiddenAndMoved = bHidden && !PointEqualsImprecise(screenPoint, m_hideCursorPoint);
    bool bCanHide = !bMouseButtonDown &&
                    (m_pMainFrame->GetLoadState() == MLS::LOADED || m_pMainFrame->m_controls.DelayShowNotLoaded()) &&
                    !m_pMainFrame->IsInteractiveVideo() &&
                    (m_switchingToFullscreen.first || IsOnFullscreenWindow() ||
                     (s.bHideWindowedMousePointer && !(m_pMainFrame->IsD3DFullScreenMode() ^ m_bD3DFS)));

    if (m_switchingToFullscreen.first) {
        if (bCanHide && PointEqualsImprecise(screenPoint, m_switchingToFullscreen.second)) {
            StopMouseHider();
            m_cursor = Cursor::NONE;
            m_hideCursorPoint = screenPoint;
            return true;
        }
    }

    if (!bHidden || bHiddenAndMoved || !bCanHide) {
        m_cursor = Cursor::ARROW;
        if (bCanHide) {
            if (!m_bMouseHiderStarted || screenPoint != m_mouseHiderStartScreenPoint) {
                StartMouseHider(screenPoint);
            }
        } else if (m_bMouseHiderStarted) {
            StopMouseHider();
        }
    }

    return true;
}
Example #2
0
void CMouse::InternalOnMouseLeave()
{
    StopMouseHider();
    m_bTrackingMouseLeave = false;
    m_cursor = Cursor::ARROW;
    if (m_bD3DFS) {
        m_pMainFrame->m_OSD.OnMouseLeave();
    }
}
Example #3
0
void CMouse::ResetToBlankState()
{
    StopMouseHider();
    m_bLeftDown = false;
    m_bTrackingMouseLeave = false;
    m_drag = Drag::NO_DRAG;
    m_cursor = Cursor::ARROW;
    m_switchingToFullscreen.first = false;
}
Example #4
0
void CMouse::MouseHiderCallback()
{
    ASSERT(!m_pMainFrame->IsInteractiveVideo());
    if (GetTickCount() > m_dwMouseHiderStartTick + CURSOR_HIDE_TIMEOUT) {
        StopMouseHider();
        ASSERT(m_cursor != Cursor::NONE);
        m_cursor = Cursor::NONE;
        CPoint screenPoint;
        VERIFY(GetCursorPos(&screenPoint));
        m_hideCursorPoint = screenPoint;
        ::SetCursor(m_cursors[m_cursor]);
    }
}
Example #5
0
CMouse::~CMouse()
{
    StopMouseHider();
}
Example #6
0
void CMouse::InternalOnMouseLeave()
{
    StopMouseHider();
    m_bTrackingMouseLeave = false;
    m_cursor = Cursor::ARROW;
}