Russian Qt Forum
Ноябрь 05, 2024, 22:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как ловить  (Прочитано 3057 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Февраль 15, 2016, 07:31 »

Добрый день

Не работает один из драгов. Вместо ожидаемого mouseMove по каким-то необъяснимым причинам приходит mouseRelease. Но мышу-то я не отпускал! И, конечно, никаких mouseRelease самостоятельно не посылал. На всякий случай проверил нажата ли мышь средствами OSX - нажата. Вот стало интересно, что делать в такой ситуации

1) "Выкладывай тестовый проект" - такой возможности здесь нет, там все неподъемно

2) Сравнивать этот драг с другими, работающими, до тех пор пока... Ясно что этот трудоемкий метод когда нет ничего лучшего

3) "Ну так ты в отладчике-то посмотри!". Смотрю. Вижу что из очереди достается событие у которого e->buttons равно нулю
Код
C++ (Qt)
void QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent *e)
{
   QEvent::Type type;
   Qt::MouseButtons stateChange = e->buttons ^ buttons;
...
 
И что? Кто и когда положил его в очередь - до этого можно и не докопаться

Какие есть предложения?

Спасибо
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 15, 2016, 13:08 »

Под "драгом" подразумевается "mouse press & move" ?
Может в фильтре блокируется?
Что в QGuiApplication::mouseButtons() ?
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Февраль 15, 2016, 13:54 »

Под "драгом" подразумевается "mouse press & move" ?
Да

Может в фильтре блокируется?
Приходит мистический mouseRelease, который, как и задумывалось, обрабатывается как "юзер отпустил мышу"

Что в QGuiApplication::mouseButtons() ?
Была 1 (левая кнопка), и приходящее mouseRelease сбрасывает в 0 (в ядре Qt).
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #3 : Февраль 15, 2016, 14:34 »

4) пробовать отрезать куски функционала
5) воспользоваться git bisect
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.092 секунд. Запросов: 23.