Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: serkol от Ноябрь 23, 2010, 01:57



Название: Баги на Mac OS X
Отправлено: serkol от Ноябрь 23, 2010, 01:57
Я заметил 2 бага Qt GUI на Mac OS X. Я открыл темы на bugreports.qt.nokia.com, но похоже что их не рассматривали, и не понятно когда рассмотрят.

Если Вам тоже мешают эти баги, проголосуйте пожалуйста за эти темы на bugreports.qt.nokia.com

1. В Mac OS X часто используются модальные диалоги, которые вылезают из заголовка главного окна, и остаются прикрепленными к нему. При этом можно перетянуть главное окно вместе с диалогом, если тянуть за заголовок главного окна.

Баг: стоит кликнуть на заголовок главного окна, диалог теряет фокус (а не должен), на нем все становится серым. Если теперь кликать на диалог, все работает, но все выглядит как disabled - все серое.

Обнаружено на Mac OS 10.6.5, Qt 4.7.1 Cocoa

http://bugreports.qt.nokia.com/browse/QTBUG-15474

2. Колесо прокрутки (scroll wheel на мышке) продолжает крутить виджет после перемещения мыши за пределы виджета. Например QDateEdit (или что угодно другое со скролом) - кликни на него, теперь передвинь курсор мышки за его пределы, например над фоном окна программы (мышь должна быть над чем-то что не скролируется), прокрути колесо прокрутки - QDateEdit меняет дату.

Это особенно сильно достает если пользоваться новой эпловской мышкой Magic Mouse - у нее вся поверхность работает как колесо прокрутки, так что часто возникают неумышленные прокрутки. Эта мышка идет со всеми новыми эпловскими десктопами, так что этот баг заметят многие. Меня это уже достало :-) причем в не-Qt-ишных программах я такого не вижу.

Виджеты должны игнорировать сигналы прокрутки, если курсор мыши находится за их пределами.

http://bugreports.qt.nokia.com/browse/QTBUG-15475


Название: Re: Баги на Mac OS X
Отправлено: GreatSnake от Ноябрь 23, 2010, 09:32
Цитировать
Виджеты должны игнорировать сигналы прокрутки, если курсор мыши находится за их пределами.
Согласен, но вот только что проверил под виндой - поведение такое же. Правда через RDP, т.к. на работе сижу на линуксе.


Название: Re: Баги на Mac OS X
Отправлено: Авварон от Ноябрь 23, 2010, 11:34
Первое баг, а второе - фича дейтэдита и иже с ним, вполне понятная кстати (тк у нее скролл не скролл а допфича на колесико). На нормальных скролл виджетах всё ок.
Лучше запостите баг креатора о сочетании cmd+скролл, который из-за гребаного кинетик скроллинга у мыши зумит текст в креаторе. Added: уже есть http://bugreports.qt.nokia.com/browse/QTBUG-9803?focusedCommentId=133399
Да, а в каких программах вы дэйтэдит нашли?:)


Название: Re: Баги на Mac OS X
Отправлено: serkol от Ноябрь 24, 2010, 03:02
С тем что это фича dateedit - я не согласен. Когда мышь за пределами контрола, он должен забыть о мыше. У меня Magic Mouse, и любое скольжение пальца по ней вызывает скрол. Я тестировал свою программу, и часто в dateedit у меня оказывалась неправильная дата, потому что после ввода даты, при перемещении мыши к другому контролу, палец немного скользил по поверхности мыши (уже за пределами dateedit), и в нем менялась дата.

Так же себя ведет combobox.

Мне кажется что еще в каких-то контролах я видел это. Если не исправят к моменту выхода моей проги, прийдется наверное наследовать от всех таких контролов, и гасить event со скролом. Я уже сделал так с qtabbar - он вообще не должен реагировать на скролл. В родных программах на маке такой контрол не реагирует на скрол. С этой гребаной Magic Mouse вообще проблематично выбрать нужный таб, если он реагирует на скрол. Чуть дрогнул палец, и уже выбран другой таб.


Название: Re: Баги на Mac OS X
Отправлено: GreatSnake от Ноябрь 24, 2010, 09:23
Цитировать
Когда мышь за пределами контрола, он должен забыть о мыше.
Это уже, имхо, вопрос не Qt, а к MacOS. Нафига туда вообще шлётся событие?
Не думаю, что тролли специально для этого перехватывают события.


Название: Re: Баги на Mac OS X
Отправлено: zenden от Ноябрь 24, 2010, 11:52
Цитировать
Когда мышь за пределами контрола, он должен забыть о мыше.
Это уже, имхо, вопрос не Qt, а к MacOS. Нафига туда вообще шлётся событие?
Не думаю, что тролли специально для этого перехватывают события.


Qt не использует нативные контролы операционки, и вообще, с точки зрения операционки -  в окне, созданном Qt, никаких контролов нет. Поэтому Qt сама рассылает события для дочерних QWidget, по своему собственному велосипедному методу.


Название: Re: Баги на Mac OS X
Отправлено: GreatSnake от Ноябрь 24, 2010, 13:18
Цитировать
Поэтому Qt сама рассылает события для дочерних QWidget, по своему собственному велосипедному методу.
Чушь несёте. Причём здесь получение события от колеса прокрутки?


Название: Re: Баги на Mac OS X
Отправлено: ufna от Ноябрь 24, 2010, 13:36
Проверил на семерке - глюка "с прокруткой" нет => это конизьм ОС


Название: Re: Баги на Mac OS X
Отправлено: zenden от Ноябрь 24, 2010, 19:06
Причём здесь получение события от колеса прокрутки?

а при том, что события от мыши  приходят напрямую от системы только виджетам, у которых есть "native window" . По-умолчанию они есть только у top-level виджетов.


Название: Re: Баги на Mac OS X
Отправлено: GreatSnake от Ноябрь 24, 2010, 19:12
Извиняюсь, чушь сморозил я, а не Вы. Не внимательно прочитал:
Цитировать
... например над фоном окна программы (мышь должна быть над чем-то что не скролируется)...
почему-то в голове отложилось, что курсор вне окна был.
Вы абсолютно правы - здесь косяк Qt.


Название: Re: Баги на Mac OS X
Отправлено: Авварон от Ноябрь 24, 2010, 20:38
serkol
Советую поменять мышь, у меня на мэджик маус таких косяков нет:) Может дело конечно в настройках. Единственный косяк - это кинетик скроллинг + зажатый контрол в креаторе