Bug 1129

Summary: 1Cv77: Переключение между окнами открытыми внутри 1С не соответствует поведению в Windows
Product: WINE@Etersoft Reporter: Andrey Chichak <andrey.chichak>
Component: Окна / фокус / перерисовкаAssignee: Сергей Гуральник <serhio>
Status: CLOSED FIXED QA Contact: Svetlana Zhukova <svzhu>
Severity: normal    
Priority: P5 CC: baraka, fe, lav, serhio
Version: 2.1   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 777, 2409, 8991    

Description Andrey Chichak 2008-02-05 09:31:03 MSK
При открытии трех окон (журналов, отчетов, справочников и т.д.) 1С позволяет переключаться между ними комбинациями: Ctrl-Tab - вперед, Ctrl-Shift-Tab - назад по списку окон.
Ctrl-Tab - работает правильно.
Ctrl-Shift-Tab - переключает на одно окно назад, следущее нажатие - возврат к предыдущему окну, т.е. нажатие этой комбинации меняет окна последнее и предпоследнее. Под MSwindows - переключает правильно ... порядок обратного переключения (с нажатой Shift) полностью соответствует порядку прямого, только задом наперед.
Прочитал написанное и сам ничего не понял :о))
Comment 1 Анатолий Лютин 2008-03-25 22:18:55 MSK
Проверил, именно так всё и есть.
В windows - мы идёт по списку назад.
В wine - прыгаем с предыдущего на текущее и наоборот, т.е. дальше чем за два окна назад выбраться горячими клавишами невозможно.
Comment 2 Анатолий Лютин 2008-04-02 19:29:51 MSD
Мой патч на mdi на это не влияет.
Comment 3 Анатолий Лютин 2008-04-02 22:26:09 MSD
Посмотрел код wine - неправильно реализовано определение предыдущего окна в MDI_GetWindow. Напишу тест и исправление.
Comment 4 Илья Шпигорь 2008-08-29 16:37:08 MSD
Только все должно быть наоборот (по крайней мере так в windows):
 Ctrl + Tab - назад, а Ctrl + Tab + Shift вперед.
Направление назад, имеется в виду, - к ранее созданному окну.
Comment 5 Илья Шпигорь 2008-09-03 16:55:43 MSD
Сделал и выложил патч. 

Проблема была в процедуре MDI_GetWindow. Для получения списка дочерних MDI окон использовалась функция WIN_ListChildren, которая ставила активное окно всегда первым в списке. Вместо нее теперь для получения этого списка используется поле структуры MDICLIENTINFO, указывающее на массив дочерних окон. 
Порядок окон в этом массиве не изменяется при смене активного окна.
Comment 6 Илья Шпигорь 2008-09-04 12:56:15 MSD
Слегка поправил патч. Выложил TRY 2.

Теперь благодаря присвоению:
list = clientInfo->child
Значительно меньше изменений в коде функции.
Comment 7 Илья Шпигорь 2008-09-08 13:30:53 MSD
Думаю багу можно закрыть.
Comment 8 Денис Баранов 2008-09-08 17:33:45 MSD
Ну пока закрывать рано, т.к. патч в сборку еще не включили.
Поэтому ждем новой сборки.
Comment 9 Денис Баранов 2008-10-13 18:38:18 MSD
Проверил на новой сборке, не воспоризвелось.
Comment 12 Svetlana Zhukova 2013-06-10 08:27:34 MSK
Странно,бутылки стали пропадать все чаще...
$ swine -h eter-2.1 1c77/1c77
Error: '1c77/1c77' bottle does NOT exist, run with -c key for create
Создала новую одноименную.
Присутствует:
* Пт июн 07 2013 Etersoft Builder <builder@etersoft.ru> 2.1.2-alt17
- user32: Bring reference MDI child to bottom when switching to next. (eterbug #1129) (cherry picked from commit e90418d31cc6fd299fed2afa972cc82433cf33db)
WINE@Etersoft SQL 2.1.2/2.1.0-eter17/3
Проблемы нет.