[Lazarus] TStringGrid and cancelling a modal form

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Mon Mar 12 18:25:57 CET 2018


Running on (Debian) Linux on AMD64 or ARM, Lazarus 1.6.4 and FPC 3.0.2, 
I'm seeing different behaviour depending on whether a program uses Qt or 
GTK2. The program changes the hardware configuration of a mouse 
(Logitech G600) using hidraw, and as such needs to run with root 
privilege (e.g. kdesudo or sudo -E).

On the main form I've got (a tabbed notebook containing multiple 
instances of) a TStringGrid. The OnSelection event invokes a modal form 
(containing nothing of significant complexity) with OK and Cancel 
buttons, and stripped down looks like this:

procedure TFormLG600.StringGridMode1UnshiftedSelection(Sender: TObject; 
aCol, aRow: Integer);

begin
{...}
   if ButtonsAndKeys.ShowModal() = mrOk then begin
{...}
   end
end;

This is fine if built for Qt, but if built for GTK2 what I see is that 
after the modal form is exited any mouse activity over the grid appears 
to cause an erratic multicell selection and the modal form immediately 
pops up again. This is reproducible if the Cancel button is pressed, and 
in at least some cases after OK.

I've seen indeterminate discussion of this in the foramina, and have 
followed up the indicated wiki pages etc. Does anybody have any 
suggestions, preferably not along the lines of "don't use GTK2" since I 
was thinking of sticking this on Sourceforge and that restriction would 
probably be unpopular?

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]


More information about the Lazarus mailing list