AndrewCrewKuznetsov / xneur-devel

Xneur main repository
55 stars 25 forks source link

Возможная ошибка в utils.c в фунции grab_all_keys #46

Open Mingun opened 4 years ago

Mingun commented 4 years ago

В процессе анализа кода обнаружил странное место в функции grab_all_keys, очень похожее на ошибку: https://github.com/AndrewCrewKuznetsov/xneur-devel/blob/362019ac27f388b319b654d33ec3b1799339bf72/xneur/lib/main/utils.c#L134-L172

Для установки is_grab используется константа XIAllDevices, а для снятия -- константа XIAllMasterDevices. Причем до коммита c8eb7bfa31cabf9cded7741706670e4746af4b98 всегда использовалась константа XIAllMasterDevices. Автор коммита неизвестен гитхабу, поэтому я не могу призвать его сюда, но это изменение никак в коммите не описано и очень похоже на ошибку.

Mingun commented 4 years ago

Кроме того, почему-то grab_button (захват событий мыши) всегда использует кортевое окно дисплея, а grab_all_keys для XInput использует корневое окно, а для не XInput -- переданное в функцию. Выбор событий по смене фокуса также использует переданное окно. Такое смешение окон подозрительно и похоже на ошибку. Если это все же не ошибка, нужно добавить комментарий в код, объясняющий такой странный подход.