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

Отработанное время:
Продуктивное время:
Bug 2728 - 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: 2.0
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Andrey Vusik
QA Contact:
URL:
Whiteboard:
Keywords:
: 2651 (view as bug list)
Depends on: 5157
Blocks: 2401 5101
  Show dependency treegraph
 
In work:
Reported: 2008-10-25 15:06 MSD by Andrey Vusik
Modified: 2011-01-18 13:27 MSK (History)
6 users (show)

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


Attachments
Скриншот (545.60 KB, image/png)
2010-11-18 03:58 MSK, Andrey Vusik
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Vusik 2008-10-25 15:06:55 MSD
Created attachment 830 [details]
Скриншот

В 1с77 при загрузке базы если открыть выбор пользователя, а затем перетащить окно авторизации - вкладка выбора остаётся на месте.
Comment 1 Andrey Vusik 2008-10-25 15:07:52 MSD
Проверял 2 раза локально и в бутылке (через нх)
Comment 2 Andrey Vusik 2008-10-25 19:54:57 MSD
В винде после перетаскивания эта вкладка пропадает.
Comment 3 Andrey Vusik 2008-10-26 17:27:33 MSK
Проблема проявляется не только в окне авторизации, но и в других, которые имеют выпадающее окно выбора.
Comment 4 Константин Кондратюк 2008-10-28 15:32:53 MSK
*** Bug 2651 has been marked as a duplicate of this bug. ***
Comment 5 Илья Шпигорь 2008-11-01 13:57:32 MSK
Выложил патч.

Получилось несколько косвенное решение:
 
При нажатии на caption X-ового окна DefWinProc ловит сообщение WM_CANCELMODE, в котором происходит проверка, есть ли среди видимых окно класса "ComboLBox" (выпадающий список). Если есть, то происходит сброс фокуса с возвратом его текущему окну. 
В результате такого переключения фокуса, выпадающий список становится невидимым.
Comment 6 Илья Шпигорь 2008-11-01 14:27:56 MSK
Попробую найти более оптимальное решение.
Comment 7 Анатолий Лютин 2008-11-05 10:59:54 MSK
Тут наверное лучше оперировать не с фокусом, а с захватом (Capture)
Comment 8 Илья Шпигорь 2008-11-05 15:45:59 MSK
Выложил патч.

Следует заметить, что бага проявляется не только в 1с, но и в других приложениях (например, в Компасе).

Новое решение заклячается в следующем:

При нажатии на caption X-ового окна, вызывается ф-ция X11DRV_FocusOut (которая и посылает сообщение WM_CANCELMODE). В эту ф-цию добавлена проверка - есть среди созданных окно класса "ComboLBox". Если есть, ему посылаются сообщения WM_LBUTTONDOWN и WM_LBUTTONUP с текущими координатами. В результате контрол понимает, что нажали не по нему и сворачивается.

К сожалению, не получилось использовать capture, как советовал Толя. Т.к. иногда (например в Компасе) выпадающий список не захватывает мышь, т.е. GetCapture возвращает NULL. К тому же, выпадающий список никак не реагирует на изменение capture.
Comment 9 Vitaly Lipatov 2008-11-05 17:17:16 MSK
(In reply to comment #8)
> Выложил патч.
> 
> Следует заметить, что бага проявляется не
> только в 1с, но и в других приложениях
> (например, в Компасе).
Тогда почему в этом патче добавлена проверка на etersoft_1version?
Быть может, не проверять?
Comment 10 Анатолий Лютин 2008-11-06 12:31:23 MSK
(In reply to comment #8)
> Выложил патч.
> 
> Следует заметить, что бага проявляется не
> только в 1с, но и в других приложениях
> (например, в Компасе).
> 
> Новое решение заклячается в следующем:
> 
> При нажатии на caption X-ового окна, вызывается
> ф-ция X11DRV_FocusOut (которая и посылает
> сообщение WM_CANCELMODE). В эту ф-цию добавлена
> проверка - есть среди созданных окно класса
> "ComboLBox". Если есть, ему посылаются сообщения
> WM_LBUTTONDOWN и WM_LBUTTONUP с текущими координатами. В
> результате контрол понимает, что нажали не
> по нему и сворачивается.
> 
> К сожалению, не получилось использовать
> capture, как советовал Толя. Т.к. иногда
> (например в Компасе) выпадающий список не
> захватывает мышь, т.е. GetCapture возвращает NULL.
> К тому же, выпадающий список никак не
> реагирует на изменение capture.
> 



Хм, а msg тесты на такое поведение есть? Может просмотрев их получится сделать нормально? Как я понимаю проблема только в etersoft сборке?

Comment 11 Анатолий Лютин 2008-11-06 12:33:32 MSK
(In reply to comment #8)
> К сожалению, не получилось использовать
> capture, как советовал Толя. Т.к. иногда
> (например в Компасе) выпадающий список не
> захватывает мышь, т.е. GetCapture возвращает NULL.
> К тому же, выпадающий список никак не
> реагирует на изменение capture.
> 

Да, наверное это не поможет. Просто захват часто используют контролы, которые сделаны в виде выпадающего списка (например календарь, самописные контролы, VCL)
Comment 12 Виталий Перов 2010-02-22 20:04:00 MSK
Привил конфликты, вызванные данным патчем.
Немного изменился файл winex11.drv/event.c
Надо на всякий случай проверить не появилась ли бага.
Comment 13 Andrey Vusik 2010-02-25 19:49:58 MSK
(In reply to comment #12)
> Привил конфликты, вызванные данным патчем.
> Немного изменился файл winex11.drv/event.c
> Надо на всякий случай проверить не
> появилась ли бага.
> 

Проблемы нет.
1.0.12-eter2/1
Comment 14 Виталий Перов 2010-02-25 19:56:36 MSK
Прошу прощения, забыл сказать, что изменения касаются только eterhack, и в 1.0.12 их не будет никогда. Надо проверять либо на текущей версии eterhack либо ждать сборки 1.0.13
Comment 15 Andrey Vusik 2011-01-18 13:27:27 MSK
1.7.0-eter2/4
Проблемы нет ни в gnome ни в kde