нареканий, не без доделок, конечно, но не в этом суть.
Единственный затык - не могу показать дочернее окно модально, как это делается в линуксах я не знаю пока и нужен совет. Из CrossVCL я наковырял такой пример (больше нет), как получить из хендла окна PGtkWindow, вот пример и он работает, переносит окно в (0, 0):
procedure gtk_window_move(window: Pointer; x, y: Integer); cdecl; external 'libgtk-3.so.0';
var
WindowPtr, ContentViewPtr: Pointer;
begin
// First param is a Window (PGtkWindow, NSWindow),
// Second param is child container (PGtkWidget, NSView) where all children inserted
if GetNativeHandles(Handle, WindowPtr, ContentViewPtr) then
gtk_window_move(WindowPtr, 0, 0);
end;
Вопрос, как, имея WindowPtr и ContentViewPtr сделать окно модальным? В какую сторону ковырять?
CrossVCL это Wine, а в Wine c модальностью все трудно, насколько я знаю.
Откуда инфа про Wine? Впервые слышу, но не спорю.
Сам где-то слышал. Да и врядли что-то иное принципиально вообще возможно.
Нет, там не Wine, как не Wine у FMX
Посмотри функции gtk_window_set_skip_taskbar_hint gtk_window_set_transient_for
Уже лучше, почти то, что надо - и из таскбара убирается дочернее окно и показывается поверх родительского. Задача почти решена, в принципе уже достаточно, но всегда хочется большего. Я всё-ещё могу на парента переключится и там вводить и кликать, хоть дочернее окно и поверх отображается. Отодвинул и работай. Это как-то отрубить можно?
Странно. На Астре дисейблится/енейбится атоматом при показе модальных окон. Правда есть проблемы если из одного модального окна показать второе - при закрытии второго, энейблятся все окна. Возможно нужно взять более свежую версию CrossVCL. Если не поможет, то дисейблить самому.
на Астре - fly, у него свои фишки
Да, мой косяк был, дизейблится парент, вызывал Show вместо ShowModal
Обсуждают сегодня