Bug 1628

Summary: Не показывается значок крестик
Product: Wine School Reporter: Денис Баранов <baraka>
Component: КМ ШколаAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact:
Severity: critical    
Priority: P3 CC: kondratyuk, lav, night, vostok
Version: 0.7   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 1837, 1527, 1528, 1638, 1692    
Attachments: скрин
Окно после сворачивания-разворачивания

Description Денис Баранов 2008-04-08 19:49:26 MSD
Created attachment 374 [details]
скрин

Тем самым делается невозможным закрыть нормально программу.
Comment 1 Анатолий Лютин 2008-04-08 20:00:53 MSD
Ужас какой. Беру себе.
Comment 2 Анатолий Лютин 2008-04-30 17:29:22 MSD
Надо снимать декорирование окон оконным менеджером Linux, т.к. похоже используется переопределение вида стандартного окна и стиля ( ПРИВЕТ, Delphi!!) и менеджер окон, черех wine не получает игформацию о том, что есть Close Box  у окна (это, конечно, тоже бага, но фишка в том, что такие окна и в Windows так не декорируются стандартным менеджером).
Comment 3 Константин Кондратюк 2008-05-04 11:06:12 MSD
Снятие декорирования, конечно, решает проблему кнопок.
Но, как замечено в соседней баге:
------- Комментарий  #10 от Анатолий Лютин  2008-05-03 15:58:42 
...
Без декорирования окно сворачивается в
маленькую иконку и эту иконку невозможно
никуда перетащить, что в целом совсем
неприятно.
Comment 4 Константин Кондратюк 2008-05-04 11:21:40 MSD
Created attachment 423 [details]
Окно после сворачивания-разворачивания

Вот так выглядит окно после сворачивания его кнопкой "свернуть" и последующего разворачивания. Окно - это та полоска в середине скриншота :)
Это если без декорирования. С декорированием разворачивается нормально.
Comment 5 Анатолий Лютин 2008-05-04 11:41:47 MSD
На самом деле в этой баге две большие проблемы в архитектуре wine:
1. Это реализованное Windows 3.1 like минимизация.
2. Это неполная связь между X-вым менеджером и wine-скими окнами.

Кстати, по каждой их этих проблем есть отдельные баги в багзилле, просто для КМ-школы это стало серьёзным препятствием в работе.

В общем править надо, всё и сразу, но это может потребовать значительное время.
Comment 6 Vitaly Lipatov 2008-05-04 13:16:49 MSD
Я думаю для начала не надо запрещать управление окнами со стороны WM,
и не будет проблем с Windows 3.1 like...
А уж с тем, почему не показывается X, можно и разобраться.
Comment 7 Анатолий Лютин 2008-05-08 13:12:54 MSD
Кстати, пока самый лучший и прекрасно работающий вариант - это в winecfg отключить декорирование окон, но оставить управление менеджером - и крестик показывается и глюков с окнами нет. Поэтому юзайте все на здоровье!
Comment 8 Константин Кондратюк 2008-05-08 13:17:34 MSD
(In reply to comment #7)
> работающий вариант - это в winecfg отключить
> декорирование окон, но оставить управление
> менеджером
Скриншот из четвёртого комментария - иллюстрация этой схемы.

Comment 9 Vitaly Lipatov 2008-05-08 13:41:41 MSD
1. Хотелось бы понять, поменяла ли возможность управления декорированием окон на поведение Wine по умолчанию?
2. Совет про декорирование может быть только конкретным для конкретной программы. Мы можем добавить в реестр запись об отключении декорирования именно для этого бинарника.
Comment 10 Константин Кондратюк 2008-05-10 16:23:43 MSD
Подтверждаю проблему (комм. 4,7,8) на euclid'е на новой сборке:
Build Date: Сбт 10 Май 2008 13:53:44

Таким образом, отключение декорирования недопустимо, по крайней мере на моей машине проблема выглядит очень неприятной.
Comment 11 Константин Кондратюк 2008-05-10 16:36:41 MSD
Проблема проявляется везде (проверил atlant, builder, cellar, freebsd).
Бутылка km-school-kondratyuk
Comment 12 Константин Кондратюк 2008-05-12 17:56:23 MSD
WINE@Etersoft School на euclid:
всё те же проблемы
Comment 13 Анатолий Лютин 2008-05-15 19:18:46 MSD
Короче wine тут не виноват, просмотрел я код, который сообщает, какие кнопки куда добавлять.. Так вот для окна такого стиля ( 0x096C00000) заголовок должен быть вообще без кнопок (проверил созданием окна с таким стилем в win), поэтому при декорировании wine, правильно считает, что такой кнопки нет ( а кнопку "свернуть" добавлять, кстати, он тоже не должен) и правильно сообщает какой заголовок делать KDE - без кнопки "закрыть".

Эти кнопки создаются самой программой. Поэтому, если перекрыть их любым менеджером (даже в винде типа talisman), то эти кнопки не должны показываться.

Сейчас посмотрю, может быть смогу что-нибудь ещё сделать.
Comment 14 Анатолий Лютин 2008-05-22 20:41:45 MSD
А ещё такая бага есть в некоторых всплывающих окнах 1с 8.1
Comment 15 Анатолий Лютин 2008-05-22 20:52:09 MSD
(In reply to comment #14)
> А ещё такая бага есть в некоторых
> всплывающих окнах 1с 8.1
> 

Модальные всплывающие окна не должны декорироваться...
Comment 16 Анатолий Лютин 2008-05-22 21:35:57 MSD
(In reply to comment #15)
> 
> Модальные всплывающие окна не должны
> декорироваться...
> 
Управление оставил, а декорирование снял - в итоге получилось очень хорошо, доволен..
Comment 17 Константин Кондратюк 2008-05-22 22:40:11 MSD
Толь, точно нормально?
У меня окно неизменно в полоску разворачивалось...
Comment 18 Анатолий Лютин 2008-05-23 11:14:23 MSD
(In reply to comment #17)
> Толь, точно нормально?
> У меня окно неизменно в полоску
> разворачивалось...
> 

Я разве что-то говорил, что именно это исправил? Я имел ввиду только то,что я исправил, то что нашёл сам.

Смотри 14 комментарий.

Comment 19 Vitaly Lipatov 2008-06-24 10:41:34 MSD
Так в итоге - можно именно для этого окна отключить декорирование?
Comment 20 Анатолий Лютин 2008-06-24 11:00:35 MSD
(In reply to comment #19)
> Так в итоге - можно именно для этого окна
> отключить декорирование?
> 

Декорирование, по-моему, я уже давно отключил. Проблема состоит в том, что при развётке из минимизированного состояния окно разворачивается с неправильным размером. Я так понял...
Comment 21 Vitaly Lipatov 2008-06-24 11:05:26 MSD
Надо проверить на wine-school-0.8:
какое состояние сейчас?
Comment 22 Денис Баранов 2008-06-24 16:07:03 MSD
Крестик так и не работает..
Comment 23 Анатолий Лютин 2008-06-24 16:10:39 MSD
(In reply to comment #22)
> Крестик так и не работает..
> 

Хорошо, сейчас у себя проверю, возможно я просто не поделился со всеми хаком..
Comment 24 Vitaly Lipatov 2008-06-24 17:08:45 MSD
Если бы приложение было цельным, было бы достаточно в user.reg добавить
[Software\\Wine\\AppDefaults\\KMSchool.exe\\X11 Driver]
"Decorated"="N"
Но так как рабочие места *.arm - это вызываемые исполняемые файлы,
и на всех не напасёшься отключения декорирования, принято решение отключить декорирование для окон, имеющих стиль WS_OVERLAPPEDWINDOW.

Толя, проверь пожалуйста, и если решение подходит, прокомментируй здесь что получилось.
Comment 25 Анатолий Лютин 2008-06-24 17:20:33 MSD
(In reply to comment #24)
> Если бы приложение было цельным, было бы
> достаточно в user.reg добавить
> [Software\\Wine\\AppDefaults\\KMSchool.exe\\X11 Driver]
> "Decorated"="N"
> Но так как рабочие места *.arm - это
> вызываемые исполняемые файлы,
> и на всех не напасёшься отключения
> декорирования, принято решение отключить
> декорирование для окон, имеющих стиль
> WS_OVERLAPPEDWINDOW.
> 
> Толя, проверь пожалуйста, и если решение
> подходит, прокомментируй здесь что
> получилось.
> 
Слишком поспешный комментарий. WS_OVERLAPPEDWINDOW и WS_OVERLAPPED никакого отношения к оверлаппингу в смысле подмены стандартной обработки не имеют. Классы КМ-ШКОЛЫ не имеют шаблона названий (типа KM-TMainWindow и т.д.) чтобы можно было по ключу убирать декорирование. Поэтому вариантов несколько : отключаем декор для всех окон, отключаем декор для окон с конкретным классом, ищём какой-то общий знаменатель стилей для необходимых окон и отключаем декорирование для него.
Comment 26 Vitaly Lipatov 2008-06-24 17:22:09 MSD
Временно отключено декорирование для КМ-Школы:
Created commit 0a01bb5: disable main window decoration for KM-School (fix eterbug #1628)
Comment 27 Константин Кондратюк 2008-06-28 17:34:50 MSD
Работает только для главного окна. В модулях всё так же нет крестика.
Comment 28 Анатолий Лютин 2008-07-10 17:01:28 MSD
Не моя ошибка. 
Comment 29 Vitaly Lipatov 2008-07-12 01:25:56 MSD
Давно сделал для всех модулей

commit cdc4ffc9deecbc464da2f21a9dee7c53fa8240f7
Author: Vitaly Lipatov <lav@etersoft.ru>
Date:   Sun Jun 29 22:21:56 2008 +0400

    disable decoration for all KM-School *.arm modules (see #1628)
Comment 30 Andrey Vusik 2008-07-12 22:49:52 MSD
Закрываю.
Сборка 0.9.4