コード例 #1
0
ファイル: ui.cpp プロジェクト: JickLee/Core
UIElement* UI::processMouse(MouseCursor& cursor) {

    bool mousemove = (cursor.getPos() != cursor_pos);

    cursor_pos = cursor.getPos();

    if(cursor.leftClick()) {

        left_pressed = true;
        return click(cursor);
        
    } else if(cursor.leftButtonPressed()) {

        if(mousemove) {
            left_drag = true;
            return drag(cursor);
        }
        
    } else {
        if(left_pressed) {
            if(left_drag) {
                left_drag = false;
            }
            left_pressed = false;
        }
    }

    int scroll_amount = cursor.scrollWheel();

    if(scroll_amount != 0) {
        scrolling = true;
        return scroll(cursor);
    } else if(scrolling) {
        scrolling = false;
    }

    // call idle if nothing happened
    // not sure about this 'idle' concept really
    // might be better to indicate the type of change in the action class

    UIElement* selected = getSelected();
    if(selected!=0) selected->idle();


    return 0;
}