Проблемма с модальными окнами (Linux)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проблемма с модальными окнами (Linux)

Сообщение qivi » 17.02.2014 16:10:42

Столкнулся с проблемой. В Linux Mint 16 Cinnamon, проблема заключается в следующем:

Допустим у программы есть главная форма и дополнительная открываемая в модальном режиме по надобности. Главная форма запускается в полно экранном режиме:
Код: Выделить всё
Form1.WindowState:=wsFullScreen;

Далее вызываем вспомогательную форму (допустим по нажатию кнопки):
Код: Выделить всё
Form2.ShowModal

В итоге получается следующее, модальное окно, видимо из за полно экранного режима оказывается под главной формой (в оконном режиме проблемы нет), при этом теряет фокус так как его получило модальное окно. Весьма неудобная ситуация даже что б просто убить процесс выполняемой программы.

Как с этим бороться со стороны программы (я к тому что советы касающиеся перенастройки корицы что бы этого избежать не актуальны)?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Проблемма с модальными окнами (Linux)

Сообщение hinst » 17.02.2014 16:17:14

qivi писал(а):В итоге получается следующее, модальное окно, видимо из за полно экранного режима оказывается под главной формой (в оконном режиме проблемы нет), при этом теряет фокус так как его получило модальное окно. Весьма неудобная ситуация даже что б просто убить процесс выполняемой программы.

Модальное окно под главной формой теряет фокус так как его получило модальное окно.....
Так кто получает фокус в итоге? Я так понимаю, что модальное окно получает фокус, и оно же при этом невидимо
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Проблемма с модальными окнами (Linux)

Сообщение qivi » 17.02.2014 17:56:45

В общем не знаю кто получает фокус, модальное окно на экране не отображается (точнее оно отображается но под главной формой, оно там и появляется), главная форма больше ни на что не отзывается, в режиме:
Код: Выделить всё
Form1.WindowState:=wsFullScreen;

Переключение рабочих областей и окон через верхний угол не работает, вынужден через альт+таб переключаться на другую запущенную программу, это возвращает панель меню и задач, через диспечер процессов убиваю выполняемую программу.
Последний раз редактировалось qivi 17.02.2014 18:43:13, всего редактировалось 1 раз.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Проблемма с модальными окнами (Linux)

Сообщение resident » 17.02.2014 18:17:18

http://lazplanet.blogspot.ru/2014/01/al ... -form.html
http://forum.lazarus.freepascal.org/ind ... ic=11975.0
http://forum.lazarus.freepascal.org/ind ... ic=12837.0

Добавлено спустя 3 минуты 17 секунд:
qivi писал(а):
Код: Выделить всё
Form1.WindowState:=wsFullScreen;


А если так? И играться уже с переключением StayOnTop?
http://www.cyberforum.ru/lazarus/thread1059288.html
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Проблемма с модальными окнами (Linux)

Сообщение qivi » 14.03.2014 01:28:30

Прочитав предложенное выше я установил свойству FormStyle значение fsStayOnTop, расчитывая что она будет сверху только моей программы, а по факту форма ведёт себя единтично fsSystemStayOnTop. Почему так может быть? Что с этим можно сделать?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Проблемма с модальными окнами (Linux)

Сообщение minoshi » 14.03.2014 21:11:28

в mseide сталкивался с подобным - как решить в лоб не нашел, сделал финт ушами - реализовал по схеме "все в одном окне".
При вызове дополнительного окна основное окно скрывается за фреймом, который препятствует передаче фокуса элементам, на фрейме расположено то самое дополнительное окно.

Выглядит всё это так:
Изображение
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: Проблемма с модальными окнами (Linux)

Сообщение alexs » 14.03.2014 23:09:46

А нельзя использовать wsMaximized вместо wsFullScreen?
Хотя эффект конечно странный.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Проблемма с модальными окнами (Linux)

Сообщение alex208210 » 15.03.2014 09:11:49

linux sabayon x86, XFCE(GTK), lazarus 0.9.28.2. FPC 2.4.0. Такой проблемы не наблюдаю.
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: Проблемма с модальными окнами (Linux)

Сообщение Mirage » 15.03.2014 14:52:08

Каждый раз, когда всплывает модальное окно вспоминаю разработчиков нехорошим словом.
Модальные окна - зло.
Возможно, разработчики Cinnamon решили таким образом бороться со злом.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Проблемма с модальными окнами (Linux)

Сообщение qivi » 15.03.2014 17:18:35

А нельзя использовать wsMaximized вместо wsFullScreen?

Можно впринципе, но wsFullScreen блокирует действие в Cinnamon на поднесение курсора к левому верхнему углу экрана, что желательно. Да и всегда хочетс костылей поменьше использовать.

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

Негодование правидника и короткая православная проповедь +1. Тока во первых от модальных окон отказаться на 100% невозмложно, а во вторых данная ситуация касается как модалльных, так и не модальных окон, т. к. форма то одна и для тех, и для других.

linux sabayon x86, XFCE(GTK), lazarus 0.9.28.2. FPC 2.4.0. Такой проблемы не наблюдаю.

Ну видимо причина кроется в неподдержке всего зоопарка оконных менеджеров и окружений рабочего стола.

Я впрочем вроде подобрал компромис.

Хотя ещё вопросик, как можнго проверить что окно сейчас находется сверху прочих окон?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 215

Рейтинг@Mail.ru