Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 4382 - При передаче фокуса mdi окну, поднимается X-овое окно приложения   Make a simular bug
Summary: При передаче фокуса mdi окну, поднимается X-овое окно приложения
Status: CLOSED INVALID
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Окна / фокус / перерисовка (show other bugs)
Version: 2.1
Hardware: PC All
: P4 minor
Target Milestone: ---
Deadline: 2010-09-20
Assignee: Сергей Гуральник
QA Contact: Svetlana Zhukova
URL:
Whiteboard:
Keywords:
Depends on: 3768 4623
Blocks: 42 10932
  Show dependency treegraph
 
In work:
Reported: 2009-10-21 15:53 MSD by Александр Пликус
Modified: 2024-03-20 23:02 MSK (History)
6 users (show)

See Also:
Заявки RT: 11863
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Пликус 2009-10-21 15:53:17 MSD
WINE перехватывает фокус у чужого приложения даже для своего внутреннего окна. Самое неприятное, что на отображении это никак не сказываетя... (если конечно в настройках КДЕ не отключить "Уровень предовращения перехода фокуса" - в этом случае окно с фокусом отобразится, но не уверен что это верное поведение...)... просто перестают работать клавиши.
Comment 1 Александр Пликус 2009-10-21 15:53:47 MSD
ставил эксперименты
Comment 2 Илья Шпигорь 2009-10-26 15:08:12 MSK
Не удалось воспроизвести ситуацию с разными рабочими столами.

Ошибка с подъемом окна, при передаче фокуса внутреннему mdi окну воспроизвелась. Для этого в KDE необходимо настроить: "Уровень предовращения перехода фокуса" =  "Нет". В Gnome ошибка воспроизводится с настройками по-умолчанию.

Тестировал в windows. Там подъема окна не происходит и фокус клавиатуры не перехватывается.

Воспроизводить можно так:
1) бутылка 1c77/1c7727
2) открыть обработку c:\tmp\speedtest3.ert
3) пока идет обработка переключиться на другое X-овое окно

В результате по завершении обработки окно 1с поднимается на передний план.
Comment 3 Илья Шпигорь 2009-10-26 15:59:26 MSK
Сломалось коммитом:

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)
Comment 4 Илья Шпигорь 2009-10-27 11:37:06 MSK
Проблема связана с тем, что в результате описанного выше коммита XSetInputFocus отрабатывает всегда, когда wine приложение должно получить winAPI'шный фокус.

В windows в аналогичной ситуации приложение также пытается перехватить фокус - получает сообщение WM_SETFOCUS. Но, похоже, сама ОС не позволяет этого сделать.

Решение заключается в том, чтобы блокировать работу X11DRV_SetFocus (передачу X-ового фокуса), если managed режим и X-овое окно имеющее фокус не является окном запущенного wine приложения.

Этот патч отключается при использовании переменной окружения:
WINEENABLERAISE=1

Протестировал кучу уже решенных проблем с фокусом, чтобы ничего не сломалось. Но все равно что-то мог упустить и побочный эффект может быть.
Comment 5 Илья Шпигорь 2009-11-24 12:40:07 MSK
Патч проблему не решил.

Эта же ошибка воспроизводится в не managed режиме. Поэтому надо смотреть - почему передается wineapi'шный фокус.
Comment 6 Илья Шпигорь 2009-11-24 12:44:36 MSK
Если быть точнее - патч решил проблему только для KDE. В Gnome и не managed режиме ошибка воспроизводится.
Comment 7 Илья Шпигорь 2009-11-24 14:12:50 MSK
Еще раз все хорошенько протестировал.

Патч, который сейчас лежит в рассылке:

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, полагаю, стоит приложить существующий патч.
Comment 8 Илья Шпигорь 2009-11-24 15:40:47 MSK
Написал тест для windows. Приложение перехватывает фокус по таймеру.

В windows приложение не может передать фокус своему окну, если в это время фокус принадлежит окну другого процесса. Вероятнее всего, windows отслеживает у какого процесса фокус и запрещает другим процессам его перехватить. Вообще, только SetForegroundWindow может что-то сделать с окном из другого процесса.

Сейчас в wine SetForegroundWindow и SetFocus вызывают set_active_window, в результате чего окно получает фокус ввода. Похоже в этом и заключается ошибка.
Comment 9 Илья Шпигорь 2009-11-24 16:45:51 MSK
Выложил новый патч на эту багу.

Решение - не вызывать set_active_window из SetFocus. Т.е. теперь поднять окно другого процесса можно только с помощью SetForegroundWindow, как и в windows.
Comment 10 Денис Баранов 2009-11-27 22:49:33 MSK
Принято.
WINE@Etersoft 1.0.12 eter1/1
Comment 11 Илья Шпигорь 2010-01-15 10:32:03 MSK
Пользователь жалуется, что в 1.0.12 воспроизводится (см. заявку 11863).

Надо еще протестировать через NX и на Xfce.
Comment 12 Илья Шпигорь 2010-01-16 13:57:21 MSK
to baraka@
Воспроизведи, пожалуйста, у нас.

Пользователь пишет, что бага осталась в 1.0.12, но я не смог воспроизвести. Посмотри заявку 11863, может быть это поможет. Вроде как воспроизводится только на NX.
Comment 13 Денис Баранов 2010-01-16 19:05:50 MSK
(In reply to comment #12)
> to baraka@
> Воспроизведи, пожалуйста, у нас.
> Пользователь пишет, что бага осталась в
> 1.0.12, но я не смог воспроизвести. Посмотри
> заявку 11863, может быть это поможет. Вроде
> как воспроизводится только на NX.
> 

Воспроизвести также не удалось. Пробовал и в Gnome, и в KDE, так же через NX не проявляется ошибка.


Comment 14 Илья Шпигорь 2010-02-17 14:07:45 MSK
Из-за этого коммита появилась ошибка #4623. Решено было откатить текущее решение.
Comment 15 Калюхович Юрий 2010-02-19 18:14:42 MSK
> 1) бутылка 1c77/1c7727
> 2) открыть обработку c:\tmp\speedtest3.ert
> 3) пока идет обработка переключиться на
> другое X-овое окно
> 
> В результате по завершении обработки окно
> 1с поднимается на передний план.
> 

сделал wine --update
не воспроизводится(KDE)
воспроизвел через GNOME->NX(консольный логин): окно с 1С после окончания обработки всплыло на передний план
Comment 16 Илья Шпигорь 2010-02-24 17:09:29 MSK
После обновления до текущего eterhack - проблема должна решится. сломалось коммитом:

user32/winex11.drv: Using the Drop/Raise window functions for all
aplications (eterbug #3768)

В eterhack откатили все патчи на Drop/Raise в winex11.drv.
Comment 17 Денис Баранов 2011-09-06 19:41:05 MSK
Проверить на eterhack.
Comment 18 Marat Sharipov 2011-09-28 14:02:03 MSK
WINE@Etersoft 1.0 SQL 1.3.27/1.0.12-eter1.15/26
протестировал в KDE Gnome и через NX Самовольного захвата фокуса замечано небыло
тестировал скриптом 1c77/1c7727/dosdevices/c:\tmp\speedtest3.ert
Закрываю
Comment 21 Konstantin Artyushkin 2015-10-20 16:03:27 MSK
Бутылку 1c77/1c7727 не нашёл ни в одной из версий swine 
Место нахождение файла speedtest3.ert тоже оказалось загадкой.

Нужно думать как воспроизвести без них.
Comment 22 Konstantin Artyushkin 2015-11-25 16:44:11 MSK
Продолжительный поиск по папке /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’: Отказано в доступе
Comment 23 Олег Шевченко 2024-03-20 23:02:19 MSK
Задача относится к релизу 2.1. , который больше не поддерживается.
Аннулирую.
Comment 24 Олег Шевченко 2024-03-20 23:02:27 MSK
Закрыта.