UndeadDragon
@UndeadDragon
Разработчик ПО на C++, Qt, Python и др.

Как поменять курсор в XCB или XLIB?

dis = XOpenDisplay(0);
    xcb_connection_t *conn = XGetXCBConnection(dis);
    Window window = 0;
    int revert_to;
    XGetInputFocus(dis, &window, &revert_to);

    xcb_cursor_t cursor = 71;
    xcb_change_window_attributes(conn, window, XCB_CW_CURSOR, &cursor);
    xcb_flush(conn);

Не работает тестовый код по каким-то причинам, ничего не меняется.

Есть так же пример на XLib, но он только при первом вызове, почему-то, меняет курсор и больше не хочет:
Cursor cursor;
    Window window = 0;
    int revert_to;
    XGetInputFocus(dis, &window, &revert_to);
    XUndefineCursor(dis, window);

    auto temp_d = XOpenDisplay(0);

    if (dis != temp_d) {
        qDebug() << "Not equal";
        XCloseDisplay(dis);
        dis = temp_d;
    } else {
        XCloseDisplay(temp_d);
    }

    switch (cursorState) {
    case TL:
        cursor = XCreateFontCursor(dis, XC_ul_angle);
        break;
    case BR:
        cursor = XCreateFontCursor(dis, XC_lr_angle);
        break;
    case TR:
        cursor = XCreateFontCursor(dis, XC_ur_angle);
        break;
    case BL:
        cursor = XCreateFontCursor(dis, XC_ll_angle);
        break;
    case B:
        cursor = XCreateFontCursor(dis, XC_bottom_side);
        break;
    case T:
        cursor = XCreateFontCursor(dis, XC_top_side);
        break;
    case L:
        cursor = XCreateFontCursor(dis, XC_left_side);
        break;
    case R:
        cursor = XCreateFontCursor(dis, XC_right_side);
        break;
    case Inside:
        cursor = XCreateFontCursor(dis, XC_X_cursor);
        break;
    default:
        cursor = XCreateFontCursor(dis, XC_arrow);
        break;
    }

    //Cursor c = XcursorLibraryLoadCursor(dis, "sb_v_double_arrow");
    XDefineCursor(dis, window, cursor);
  • Вопрос задан
  • 288 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 10:12
15000 руб./за проект
01 мая 2024, в 10:00
2500 руб./за проект
01 мая 2024, в 09:59
5000 руб./за проект