Summary: | 1С 7.7: Выпадающий список остаётся на месте при перетаскивании окна | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Andrey Vusik <night> |
Component: | Окна / фокус / перерисовка | Assignee: | Andrey Vusik <night> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | minor | ||
Priority: | P4 | CC: | baraka, kondratyuk, lav, sergling, vitperov, vostok |
Version: | 2.0 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 5157 | ||
Bug Blocks: | 2401, 5101 | ||
Attachments: | Скриншот |
Проверял 2 раза локально и в бутылке (через нх) В винде после перетаскивания эта вкладка пропадает. Проблема проявляется не только в окне авторизации, но и в других, которые имеют выпадающее окно выбора. *** Bug 2651 has been marked as a duplicate of this bug. *** Выложил патч. Получилось несколько косвенное решение: При нажатии на caption X-ового окна DefWinProc ловит сообщение WM_CANCELMODE, в котором происходит проверка, есть ли среди видимых окно класса "ComboLBox" (выпадающий список). Если есть, то происходит сброс фокуса с возвратом его текущему окну. В результате такого переключения фокуса, выпадающий список становится невидимым. Попробую найти более оптимальное решение. Тут наверное лучше оперировать не с фокусом, а с захватом (Capture) Выложил патч. Следует заметить, что бага проявляется не только в 1с, но и в других приложениях (например, в Компасе). Новое решение заклячается в следующем: При нажатии на caption X-ового окна, вызывается ф-ция X11DRV_FocusOut (которая и посылает сообщение WM_CANCELMODE). В эту ф-цию добавлена проверка - есть среди созданных окно класса "ComboLBox". Если есть, ему посылаются сообщения WM_LBUTTONDOWN и WM_LBUTTONUP с текущими координатами. В результате контрол понимает, что нажали не по нему и сворачивается. К сожалению, не получилось использовать capture, как советовал Толя. Т.к. иногда (например в Компасе) выпадающий список не захватывает мышь, т.е. GetCapture возвращает NULL. К тому же, выпадающий список никак не реагирует на изменение capture. (In reply to comment #8) > Выложил патч. > > Следует заметить, что бага проявляется не > только в 1с, но и в других приложениях > (например, в Компасе). Тогда почему в этом патче добавлена проверка на etersoft_1version? Быть может, не проверять? (In reply to comment #8) > Выложил патч. > > Следует заметить, что бага проявляется не > только в 1с, но и в других приложениях > (например, в Компасе). > > Новое решение заклячается в следующем: > > При нажатии на caption X-ового окна, вызывается > ф-ция X11DRV_FocusOut (которая и посылает > сообщение WM_CANCELMODE). В эту ф-цию добавлена > проверка - есть среди созданных окно класса > "ComboLBox". Если есть, ему посылаются сообщения > WM_LBUTTONDOWN и WM_LBUTTONUP с текущими координатами. В > результате контрол понимает, что нажали не > по нему и сворачивается. > > К сожалению, не получилось использовать > capture, как советовал Толя. Т.к. иногда > (например в Компасе) выпадающий список не > захватывает мышь, т.е. GetCapture возвращает NULL. > К тому же, выпадающий список никак не > реагирует на изменение capture. > Хм, а msg тесты на такое поведение есть? Может просмотрев их получится сделать нормально? Как я понимаю проблема только в etersoft сборке? (In reply to comment #8) > К сожалению, не получилось использовать > capture, как советовал Толя. Т.к. иногда > (например в Компасе) выпадающий список не > захватывает мышь, т.е. GetCapture возвращает NULL. > К тому же, выпадающий список никак не > реагирует на изменение capture. > Да, наверное это не поможет. Просто захват часто используют контролы, которые сделаны в виде выпадающего списка (например календарь, самописные контролы, VCL) Привил конфликты, вызванные данным патчем. Немного изменился файл winex11.drv/event.c Надо на всякий случай проверить не появилась ли бага. (In reply to comment #12) > Привил конфликты, вызванные данным патчем. > Немного изменился файл winex11.drv/event.c > Надо на всякий случай проверить не > появилась ли бага. > Проблемы нет. 1.0.12-eter2/1 Прошу прощения, забыл сказать, что изменения касаются только eterhack, и в 1.0.12 их не будет никогда. Надо проверять либо на текущей версии eterhack либо ждать сборки 1.0.13 1.7.0-eter2/4 Проблемы нет ни в gnome ни в kde |
Created attachment 830 [details] Скриншот В 1с77 при загрузке базы если открыть выбор пользователя, а затем перетащить окно авторизации - вкладка выбора остаётся на месте.