Summary: | При передаче фокуса mdi окну, поднимается X-овое окно приложения | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Александр Пликус <pav> |
Component: | Окна / фокус / перерисовка | Assignee: | Сергей Гуральник <serhio> |
Status: | CLOSED INVALID | QA Contact: | Svetlana Zhukova <svzhu> |
Severity: | minor | ||
Priority: | P4 | CC: | akv, dm, goga, lav, olezha, serhio |
Version: | 2.1 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 11863 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | 3768, 4623 | ||
Bug Blocks: | 42, 10932 | ||
Deadline: | 2010-09-20 |
Description
Александр Пликус
2009-10-21 15:53:17 MSD
ставил эксперименты Не удалось воспроизвести ситуацию с разными рабочими столами. Ошибка с подъемом окна, при передаче фокуса внутреннему mdi окну воспроизвелась. Для этого в KDE необходимо настроить: "Уровень предовращения перехода фокуса" = "Нет". В Gnome ошибка воспроизводится с настройками по-умолчанию. Тестировал в windows. Там подъема окна не происходит и фокус клавиатуры не перехватывается. Воспроизводить можно так: 1) бутылка 1c77/1c7727 2) открыть обработку c:\tmp\speedtest3.ert 3) пока идет обработка переключиться на другое X-овое окно В результате по завершении обработки окно 1с поднимается на передний план. Сломалось коммитом: commit f82d3645e0b746dac674fdbaa259453651b74865 Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Thu Apr 9 16:05:01 2009 +0400 user32/winex11.drv: Using the Drop/Raise window functions for all aplications (eterbug #3768) Проблема связана с тем, что в результате описанного выше коммита XSetInputFocus отрабатывает всегда, когда wine приложение должно получить winAPI'шный фокус. В windows в аналогичной ситуации приложение также пытается перехватить фокус - получает сообщение WM_SETFOCUS. Но, похоже, сама ОС не позволяет этого сделать. Решение заключается в том, чтобы блокировать работу X11DRV_SetFocus (передачу X-ового фокуса), если managed режим и X-овое окно имеющее фокус не является окном запущенного wine приложения. Этот патч отключается при использовании переменной окружения: WINEENABLERAISE=1 Протестировал кучу уже решенных проблем с фокусом, чтобы ничего не сломалось. Но все равно что-то мог упустить и побочный эффект может быть. Патч проблему не решил. Эта же ошибка воспроизводится в не managed режиме. Поэтому надо смотреть - почему передается wineapi'шный фокус. Если быть точнее - патч решил проблему только для KDE. В Gnome и не managed режиме ошибка воспроизводится. Еще раз все хорошенько протестировал. Патч, который сейчас лежит в рассылке: winex11.drv: Don't set the focus to wine window if another X window had been activated (eterbug #4382) Решает багу в любом DE. Но она продолжает воспроизводится в не managed режиме (на это есть заявка 11863). Постараюсь сделать патч, чтобы проблема решалась в любом режиме. Если не успею к выходу 1.0.12, полагаю, стоит приложить существующий патч. Написал тест для windows. Приложение перехватывает фокус по таймеру. В windows приложение не может передать фокус своему окну, если в это время фокус принадлежит окну другого процесса. Вероятнее всего, windows отслеживает у какого процесса фокус и запрещает другим процессам его перехватить. Вообще, только SetForegroundWindow может что-то сделать с окном из другого процесса. Сейчас в wine SetForegroundWindow и SetFocus вызывают set_active_window, в результате чего окно получает фокус ввода. Похоже в этом и заключается ошибка. Выложил новый патч на эту багу. Решение - не вызывать set_active_window из SetFocus. Т.е. теперь поднять окно другого процесса можно только с помощью SetForegroundWindow, как и в windows. Принято. WINE@Etersoft 1.0.12 eter1/1 Пользователь жалуется, что в 1.0.12 воспроизводится (см. заявку 11863). Надо еще протестировать через NX и на Xfce. to baraka@ Воспроизведи, пожалуйста, у нас. Пользователь пишет, что бага осталась в 1.0.12, но я не смог воспроизвести. Посмотри заявку 11863, может быть это поможет. Вроде как воспроизводится только на NX. (In reply to comment #12) > to baraka@ > Воспроизведи, пожалуйста, у нас. > Пользователь пишет, что бага осталась в > 1.0.12, но я не смог воспроизвести. Посмотри > заявку 11863, может быть это поможет. Вроде > как воспроизводится только на NX. > Воспроизвести также не удалось. Пробовал и в Gnome, и в KDE, так же через NX не проявляется ошибка. Из-за этого коммита появилась ошибка #4623. Решено было откатить текущее решение. > 1) бутылка 1c77/1c7727
> 2) открыть обработку c:\tmp\speedtest3.ert
> 3) пока идет обработка переключиться на
> другое X-овое окно
>
> В результате по завершении обработки окно
> 1с поднимается на передний план.
>
сделал wine --update
не воспроизводится(KDE)
воспроизвел через GNOME->NX(консольный логин): окно с 1С после окончания обработки всплыло на передний план
После обновления до текущего eterhack - проблема должна решится. сломалось коммитом: user32/winex11.drv: Using the Drop/Raise window functions for all aplications (eterbug #3768) В eterhack откатили все патчи на Drop/Raise в winex11.drv. Проверить на eterhack. WINE@Etersoft 1.0 SQL 1.3.27/1.0.12-eter1.15/26 протестировал в KDE Gnome и через NX Самовольного захвата фокуса замечано небыло тестировал скриптом 1c77/1c7727/dosdevices/c:\tmp\speedtest3.ert Закрываю Бутылку 1c77/1c7727 не нашёл ни в одной из версий swine Место нахождение файла speedtest3.ert тоже оказалось загадкой. Нужно думать как воспроизвести без них. Продолжительный поиск по папке /var/ftp/pvt/Windows с паттерном "speedtest*" не дал положительного результата. $find /var/ftp/pvt/Windows/* -iname 'speedtest*' find: ‘./Drivers/WLAN_QualcommAtheros_Win7_32_VER1000288’: Отказано в доступе find: ‘./ГосПрограммы/8798_XP03_Client_vbox/Snapshots’: Отказано в доступе Задача относится к релизу 2.1. , который больше не поддерживается. Аннулирую. Закрыта. |