[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Regarding the GTK+ bug pointed out by issue #3091
[Thread Prev] | [Thread Next]
- Subject: Re: Regarding the GTK+ bug pointed out by issue #3091
- From: Benoît Minisini <benoit.minisini@xxxxxxxxxxxxxxxx>
- Date: Sun, 19 Oct 2025 01:19:01 +0200
- To: Gambas Mailing List <user@xxxxxxxxxxxxxxxxxxxxxx>
Le 18/10/2025 à 19:44, Benoît Minisini a écrit :
Hi, There is a big design bug in GTK+3.When you put a widget A inside a parent container widget B, and A is clipped by B (for example its Y coordinate is negative), then only the drawing of A is clipped on the screen.But the hidden part A is still active, and may prevent another widget C at the same place to work correctly (depending on whether A is above or below).In other words, there is draw clipping, but not event clipping! It's utterly stupid in my opinon, but hey it's GTK+.I found a workaround for the IDE form editor by ordering controls differently. This workaround is available for the 3.21.0 version that will be released as soon as possible.But it's not a long-term solution.As soon as 3.21.0 is out, I will commit a possible solution on the master, but as this needs some tests, I can't put it in the stable release just now.What is the solution? It is the 'GtkEventBox' widget, which is a container that just uses its own X11 window for itself and all its children.By using it on every container controls, the event clipping is ensured by the X11 server, and so GTK+ can't mess things up.And now there is Wayland. No idea if GtkEventBox will work the same way on it, we'll see. But Wayland is not my priority anymore, so...Sorry for the inconvenience. Regards,
I pushed the workaround I talked about on master to see what happens.It should fix the clipping probelm for all containers inheriting UserContainer at the moment, i.e. everything except uncached DrawingArea and TabStrip.
I will see if something can done for DrawingArea and TabStrip later. Regards, -- Benoît Minisini.
| Regarding the GTK+ bug pointed out by issue #3091 | Benoît Minisini <benoit.minisini@xxxxxxxxxxxxxxxx> |