diff --git a/lcl/interfaces/gtk2/gtk2wsforms.pp b/lcl/interfaces/gtk2/gtk2wsforms.pp index 72743c990c..ccf6c28e24 100644 --- a/lcl/interfaces/gtk2/gtk2wsforms.pp +++ b/lcl/interfaces/gtk2/gtk2wsforms.pp @@ -742,16 +742,6 @@ begin GtkWindow := {%H-}PGtkWindow(AForm.Handle); - if AForm.HandleObjectShouldBeVisible then - begin - LastMouse.Button := 0; - LastMouse.ClickCount := 0; - LastMouse.Down := False; - LastMouse.MousePos := Point(0, 0); - LastMouse.Time := 0; - LastMouse.WinControl := nil; - end; - if (fsModal in AForm.FormState) and AForm.HandleObjectShouldBeVisible then begin gtk_window_set_default_size(GtkWindow, Max(1,AForm.Width), Max(1,AForm.Height)); diff --git a/lcl/interfaces/gtk2/gtk2wsmenus.pp b/lcl/interfaces/gtk2/gtk2wsmenus.pp index f8595db79f..f9a7724366 100644 --- a/lcl/interfaces/gtk2/gtk2wsmenus.pp +++ b/lcl/interfaces/gtk2/gtk2wsmenus.pp @@ -612,7 +612,16 @@ var begin Result := False; if PopupMenu is TPopupMenu then + begin PopupMenu.Close; + // Fix freezing some controls (eg SpeedButton) when close PopupMenu + LastMouse.Button := 0; + LastMouse.ClickCount := 0; + LastMouse.Down := False; + LastMouse.MousePos := Point(0, 0); + LastMouse.Time := 0; + LastMouse.WinControl := nil; + end; end; procedure gtkWSPopupMenuDeactivate(widget: PGtkWidget; data: gPointer); cdecl;