From 93ebe05b414d392293a5b371ea4b7eeb6328c847 Mon Sep 17 00:00:00 2001 From: zeljko Date: Mon, 9 Jan 2012 11:41:32 +0000 Subject: [PATCH] Gtk2: fixed showing and handling of popup forms over modal forms.issues #20074 and #20369 git-svn-id: trunk@34676 - --- lcl/interfaces/gtk2/gtk2wsforms.pp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lcl/interfaces/gtk2/gtk2wsforms.pp b/lcl/interfaces/gtk2/gtk2wsforms.pp index 93a85486b0..5aca1b9a5b 100644 --- a/lcl/interfaces/gtk2/gtk2wsforms.pp +++ b/lcl/interfaces/gtk2/gtk2wsforms.pp @@ -617,9 +617,18 @@ begin gtk_window_set_default_size(GtkWindow, Max(1,AForm.Width), Max(1,AForm.Height)); gtk_widget_set_uposition(PGtkWidget(GtkWindow), AForm.Left, AForm.Top); GtkWindowShowModal(AForm, GtkWindow); - end - else + end else + begin + if (AForm.FormStyle <> fsMDIChild) and AForm.HandleObjectShouldBeVisible and + (ModalWindows <> nil) and (ModalWindows.Count > 0) and + (AForm.PopupParent = nil) and (AForm.BorderStyle = bsNone) then + begin + GtkWindow := PGtkWindow(AForm.Handle); + gtk_window_set_transient_for(GtkWindow, nil); + gtk_window_set_modal(GtkWindow, True); + end; Gtk2WidgetSet.SetVisible(AWinControl, AForm.HandleObjectShouldBeVisible); + end; InvalidateLastWFPResult(AWinControl, AWinControl.BoundsRect); end;