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

Отработанное время:
Продуктивное время:
Bug 165 - Потеря фокуса 1С 7.7 при закрытии модального окна   Make a simular bug
Summary: Потеря фокуса 1С 7.7 при закрытии модального окна
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Окна / фокус / перерисовка (show other bugs)
Version: 1.0.3
Hardware: PC Linux
: P2 normal
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact: Vitaly Lipatov
URL:
Whiteboard:
Keywords:
: 73 2938 (view as bug list)
Depends on:
Blocks: 492 73 101 150 166 287 760 1916 10708
  Show dependency treegraph
 
In work:
Reported: 2006-06-22 14:00 MSD by Александр Пликус
Modified: 2015-08-20 11:50 MSK (History)
7 users (show)

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


Attachments
тестовая база 1С для проверки работы фокуса (333.50 KB, application/octet-stream)
2010-11-18 03:58 MSK, Александр Пликус
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Пликус 2006-06-22 14:00:04 MSD
 
Comment 1 Александр Пликус 2006-06-22 14:02:39 MSD
Created attachment 25 [details]
тестовая база 1С для проверки работы фокуса
Comment 2 Александр Пликус 2006-06-22 16:12:47 MSD
функция в 1С
ОткрытьФормуМодально();

или 
OpenFormModal ();
Comment 3 Vitaly Lipatov 2006-06-26 22:43:59 MSD
Похоже фокус остаётся на нажатой кнопке в модальном окне  и пропадает вместе с 
её удалением. 
Comment 4 Константин Петров 2006-07-27 12:49:31 MSD
поскольку модальное окошко имеет шапку не KDE, а WINE'а, я думаю, что проблема 
в реализации библиотеки mfc42.dll (mfc40.dll).
Comment 5 Vitaly Lipatov 2006-10-06 15:19:33 MSD
mfc40 никак не используется  
Comment 6 Vitaly Lipatov 2006-10-06 22:36:24 MSD
Написать человеку когда исправим.  
http://www.unixforum.org/lofiversion/index.php/t22209.html  
Comment 7 Константин Кондратюк 2006-12-13 16:16:19 MSK
Подтверждаю для 1.0.5
Comment 8 Анатолий Лютин 2007-03-17 12:24:08 MSK
Т.к. занимаюсь этим перевешиваю на себя.
Comment 9 Анатолий Лютин 2007-03-17 12:25:38 MSK
В конфигурации, которую предоставил Саша переодически окну возвращается фокус.
Буду сравнивать.
Comment 10 Анатолий Лютин 2007-04-07 17:34:53 MSD
Написал тест(MDI),который открывает такие же окна. Полностью синтезирует ошибку и найдена интересноая особенность: если окно не двигать, а сразу закрыть, то фокус вернётся, если его немного подвигать, то фокус в 95% случаев не возвращается).
Comment 11 Анатолий Лютин 2007-04-09 19:14:22 MSD
Засада, исправил так, что в моём тесте стабильно всё возвращается, а Сашином тесте  только окну родителю =(
Comment 12 Анатолий Лютин 2007-04-11 17:49:17 MSD
Принудительно возвращаю фокус окну-родителю и корневому окну. В данной конфигурации работает, правда иногда и Корневого окна полоска не перекрашивается (когда приобретает фокус), но фокус возвращается туда, куда надо - факт.
Закрываю. Патч в нашем cvs.
Comment 13 Синицын Иван 2007-04-13 17:32:41 MSD
подтверждаю, работает, фокус возвращается.
Comment 14 Leonid Shadevsky 2008-11-29 15:34:30 MSK
В сборке 36/14 на KDE 3.5 ошибка вновь воспроизводится
Comment 15 Илья Шпигорь 2008-12-01 10:03:39 MSK
*** Bug 73 has been marked as a duplicate of this bug. ***
Comment 16 Илья Шпигорь 2008-12-01 10:04:49 MSK
*** Bug 2938 has been marked as a duplicate of this bug. ***
Comment 17 Илья Шпигорь 2008-12-01 10:08:31 MSK
Похоже, баги #2938, #165, #73 заключаются в одной и той же проблеме - передаче X-ового фокуса не enabled окну. 

Для решения этой проблемы в 1с7 надо приложить патч из рассылки:

winex11.drv: Skip checking to window disabled for X set focus (eterbug #2938 #2845)
Comment 18 Vitaly Lipatov 2015-08-20 11:42:22 MSK
commit ec7a545407eebfadf6a70d525958518555666917
Author: Ilya Shpigor <shpigor@etersoft.ru>
Date:   Thu Nov 27 10:16:26 2008 +0300

    winex11.drv: Skip checking to window disabled for X set focus (eterbug #2938 #2845)

diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index bc86414..ad825f9 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -465,12 +465,7 @@ static inline BOOL can_activate_window( HWND hwnd )
     if (!(style & WS_VISIBLE)) return FALSE;
     if ((style & (WS_POPUP|WS_CHILD)) == WS_CHILD) return FALSE;
     if (hwnd == GetDesktopWindow()) return FALSE;
-
-    LOADETER_FUNC(etersoft_1version);
-    if ( etersoft_1version && (etersoft_1version() == 8) )
-        return TRUE;
-    else
-        return !(style & WS_DISABLED);
+    return TRUE;
 }