Closes: #37712.
When mouse moves but remains over the same widget, we should not
recreate the hint window. Just break execution and 'exit `ActivateHint`
function early.
(cherry picked from commit f7c5d02afb)
Closes: #40337. Thanks To: Anton Kavalenka.
When the image is stored in a buffer using 32 bits per pixel, we don't
need to copy pixel by pixel unless the components order is wrong.
We can use `System.move` in this case.
This is the same thing that is used in GTK2.
Closes: #40333. Thanks To: Anton Kavalenka.
Check number of connected monitors and fail if none.
Fall back to first monitory id no primary monitor is defined.
Closes#40331.
GTK3 WS needs to get that handle in order to retrieve the parent window
which need to be set as transient of the newly created popup window.
This is a required by GTK3 documentation as one can see in
https://docs.gtk.org/gtk3/method.Window.set_transient_for.html
This patch needs to touch common LCL code, but `HintData` files does
not seem to be really used.
1. MarkAsChanged method (protected) is added, which sets FChanged to
true.
2. Virtual DoAfterUpdateStarted and DoBeforeUpdateEnded methods
(protected) are added. They are called in first BeginUpdate and last
EndUpdate respectively.
This unit is not generated when building Gtk-3 units. We generate it
with a separate command (see below).
We constrained the units version to Bullseye (Debian 11.6) shipped
libraries.
They were generated using the following command:
```sh
gir2pas -P Laz -e Set
-M atk-2.36 \
-M pango-1.16 \
-M pangocairo-1.46 \
-M glib-2.66 \
-M gio-2.66 \
-M gmodule-2.66 \
-M gobject-2.66 \
-M gtk-3.24 \
-i /usr/share/gir-1.0/PangoCairo-1.0.gir \
-o lazarus/lcl/interfaces/gtk3/gtk3bindings
```
Added DLL name and entry point name to the external clause.
We constrained the units version to Bullseye (Debian 11.6) shipped
libraries.
They were generated using le following command:
```sh
gir2pas -P Laz -e Set -i /usr/share/gir-1.0/Gtk-3.0.gir -o gtk3-test-2 \
-M atk-2.36 \
-M pango-1.16 \
-M pangocairo-1.46 \
-M glib-2.66 \
-M gio-2.66 \
-M gmodule-2.66 \
-M gobject-2.66 \
-M gtk-3.24
```
Some files are still modified manually.
We constrained the units version to Bullseye (Debian 11.6) shipped
libraries.
They were generated using le following command:
```sh
gir2pas -P Laz -e Set -i /usr/share/gir-1.0/Gtk-3.0.gir -o gtk3-test-2 \
-M atk-2.36 \
-M pango-1.16 \
-M pangocairo-1.46 \
-M glib-2.66 \
-M gtk-3.24
```
Some files are still modified manually.
Some changes ware needed in `gtk3procs.pas` to define legacy macro
`PANGO_PIXELS` and to remove compilation warning.
This change fixes translation of enums and bit fields after recent fin
in `gir2pas` tool.
This required a code change in `gtk3cobject.inc` as some bit fields were
treated as enums while they are now treated as sets.
Units were generated using the following command on Debian Bookworm (12)
```sh
gir2pas -P Laz -e Set -i /usr/share/gir-1.0/Gtk-3.0.gir -o gtk3bindings
```
Then, some functions were removed manually to enable support of Debian
Bullseye (11.6).
The function `cairo_stroke` causes the current path to be cleared from
the cairo context. Thus we loose the current position.
We replace is with `cairo_stroke_preserve` in order to preserves the
path within the cairo context.
This change migrates remaining GObject2 bit fields to Pascal sets.
This required a code change in `gtk3cellrenderes.pas` as integers could
not be cast into sets.
Units were generated using the following command on Debian Bookworm (12)
```sh
gir2pas -P Laz -e Set -i /usr/share/gir-1.0/Gtk-3.0.gir -o gtk3bindings
```
Then, some functions were removed manually to enable support of Debian
Bullseye (11.6).