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

Отработанное время:
Продуктивное время:
Bug 3344 - Потеря X фокуса в не managed режиме в Gnome   Make a simular bug
Summary: Потеря X фокуса в не managed режиме в Gnome
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Окна / фокус / перерисовка (show other bugs)
Version: 1.0.9
Hardware: PC All
: P4 normal
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 3040 3305
  Show dependency treegraph
 
In work:
Reported: 2009-01-21 13:43 MSK by Илья Шпигорь
Modified: 2009-02-21 20:12 MSK (History)
3 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Илья Шпигорь 2009-01-21 13:43:33 MSK
В Gnome при не managed режиме после того, как окно имеющее X фокус (например MessageBox или всплывающее popup окно), становится невидимым или уничтожается приложение запущенное в wine теряет фокус ввода. 

В KDE с этим все впорядке. В не managed режиме тоже все нормально. 

Воспроизвести можно так:
- бутылка 1c77/1c77-27-OpenConf
- база "Зарплата+Кадры"
- Конфигуратор

Редактируем код какого-либо модуля, чтобы появилась подсказка. Выбираем какой-либо текст из подсказки. Текст вставляется, окно 1с теряет фокус.
Comment 1 Илья Шпигорь 2009-02-11 11:42:51 MSK
Выложил патч.

Проблема заключалась в том, что после передачи X-ового фокуса ввода окну, как только окно становилось не видимым или уничтожалось, Gnome передавал X фокус родителю этого окна (если запуск был из консоли то фокус уходил в нее). Поведение KDE в этом случае немного отличается - фокус родителю не передается и ошибки нет.

Проблема проявляется только в не managed режиме. В этом случае управление X фокусом осуществляет функция X11DRV_SetFocus.

Решение заключается в том, что как только приложение wine получило X фокус (в не managed режиме), все дальнейшие попытки его передать блокируются до тех пор, пока он остается у wine. На самом деле, если фокус оказывается у приложения wine, функций Windows API вполне достаточно для его передачи в пределах приложения и вмешательство X-ов не требуется.
Comment 2 Денис Баранов 2009-02-21 20:12:24 MSK
Принято.
eter42\eter18