XWindow не слушает свои собственные атрибуты / оконный менеджер

Проблема:
У меня есть окно Java, управляемое XWindows в файле Window Manager C ++ в системе Linux. Где-то есть ошибка, если вы открываете HCI примерно от 7 до 35 раз подряд (и быстро), как правило, по крайней мере, один раз, когда окно открывается в месте по умолчанию (0,0), а не в месте, которое я установил (430, 300 ). После сбоя, если я закрываю HCI и снова открываю его, он открывается в правильном месте, как и до ошибки. Атрибуты изначально устанавливаются с помощью XMoveResizeWindow.

Я добавил цикл, чтобы проверить расположение HCI (через XTranslateAttributes и XGetWindowAttributes), сравнить X и Y с заданным местоположением и сбросить атрибуты, если они не совпадают.

Однако, когда я печатаю атрибуты, это показывает (430, 300), даже когда окно фактически открылось в (0,0).

Конкретный вопрос:
Это ошибка с XWindows? имеет ли смысл для атрибутов читать одну вещь, но для того, чтобы она не соответствовала фактическому местоположению (т. е. возможно, эти атрибуты являются предложениями, а не требованиями)? Есть ли другой метод, который может вернуть более точное местоположение HCI?

Обновить:
Я попытался изменить цикл, чтобы просто переместить местоположение 15 раз подряд через XMoveWindow. Кажется, это исправлено (еще не завершено тестирование). Но, безусловно, должен быть лучший путь, чем грубая сила.

1

Решение

Вам нужно подождать, чтобы убедиться, что окно действительно реализовано, прежде чем пытаться изменить его положение и т. Д. Попробуйте добавить обработчик событий, который маскирует SubstructureRedirectMask, и вызовите XMoveResizeWindow в обработчике событий, когда тип события — XMapRequestEvent.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]