Your message dated Sun, 01 Feb 2026 19:14:23 +0100
with message-id <[email protected]>
and subject line Re: Bug#1126737: libgtk-3-dev: Incorrect type definition for
`state` fields in Gdk-3.0.gir
has caused the Debian Bug report #1126737,
regarding libgtk-3-dev: Incorrect type definition for `state` fields in
Gdk-3.0.gir
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1126737: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1126737
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: libgtk-3-dev
Version: 3.24.49-3
Severity: normal
Tags: patch upstream
X-Debbugs-Cc: [email protected]
Dear Maintainer,
* What led up to the situation?
Building GTK bindings for Free Pascal using `git2pas` tool.
* What exactly did you do (or not do) that was effective (or
ineffective)?
Cheked the definition of the fields in GIR file and compared it with
relevant C
header files.
* What was the outcome of this action?
There is clearly a mismatch between C and GIR files.
* What outcome did you expect instead?
Provided a patch to fix the issue.
-- System Information:
Debian Release: 13.3
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500,
'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.16.3+deb13-amd64 (SMP w/24 CPU threads; PREEMPT)
Kernel taint flags: TAINT_WARN
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8),
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libgtk-3-dev depends on:
pn gir1.2-cairo-1.0-dev <none>
ii gir1.2-freedesktop-dev [gir1.2-xlib-2.0-dev] 1.84.0-1
ii gir1.2-glib-2.0-dev [gir1.2-gio-2.0-dev] 2.84.4-3~deb13u2
ii gir1.2-gtk-3.0 3.24.49-3
ii libatk-bridge2.0-dev 2.56.2-1+deb13u1
ii libatk1.0-dev [gir1.2-atk-1.0-dev] 2.56.2-1+deb13u1
ii libcairo2-dev 1.18.4-1+b1
ii libcloudproviders-dev 0.3.6-2
ii libegl1-mesa-dev 25.0.7-2
ii libepoxy-dev 1.5.10-2
ii libfontconfig-dev 2.15.0-2.3
ii libfribidi-dev 1.0.16-1
ii libgdk-pixbuf-2.0-dev [gir1.2-gdkpixbuf-2.0-dev] 2.42.12+dfsg-4
ii libglib2.0-dev 2.84.4-3~deb13u2
ii libgtk-3-0t64 3.24.49-3
ii libgtk-3-common 3.24.49-3
ii libpango1.0-dev [gir1.2-pango-1.0-dev] 1.56.3-1
ii libwayland-dev 1.23.1-3
ii libx11-dev 2:1.8.12-1
ii libxcomposite-dev 1:0.4.6-1
ii libxcursor-dev 1:1.2.3-1
ii libxdamage-dev 1:1.1.6-1+b2
ii libxext-dev 2:1.3.4-1+b3
ii libxfixes-dev 1:6.0.0-2+b4
ii libxi-dev 2:1.8.2-1
ii libxinerama-dev 2:1.1.4-3+b4
ii libxkbcommon-dev 1.7.0-2
ii libxrandr-dev 2:1.5.4-1+b3
ii pkgconf 1.8.1-4
ii wayland-protocols 1.44-1
libgtk-3-dev recommends no packages.
Versions of packages libgtk-3-dev suggests:
pn libgtk-3-doc <none>
-- no debconf information
diff --git a/Gdk-3.0.gir b/Gdk-3.0.gir
index 04bb8fa..8f763a4 100644
--- a/Gdk-3.0.gir
+++ b/Gdk-3.0.gir
@@ -8493,7 +8493,7 @@ button press must also occur within 1/2 second of the first button press.</doc>
line="703">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
<field name="button" writable="1">
<doc xml:space="preserve"
@@ -8663,7 +8663,7 @@ gdk_event_get_source_device() to get the slave device.</doc>
line="932">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
</record>
<record name="EventDND" c:type="GdkEventDND">
@@ -8909,7 +8909,7 @@ can also cause #GdkEventGrabBroken events.</doc>
line="872">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
<field name="keyval" writable="1">
<doc xml:space="preserve"
@@ -9283,7 +9283,7 @@ events, so different sequences may be distinguished.</doc>
line="663">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
<field name="is_hint" writable="1">
<doc xml:space="preserve"
@@ -9667,7 +9667,7 @@ gdk_event_get_scroll_deltas().</doc>
line="825">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
<field name="direction" writable="1">
<doc xml:space="preserve"
@@ -9879,7 +9879,7 @@ several active sequences at the same time.</doc>
line="777">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
<field name="sequence" writable="1">
<doc xml:space="preserve"
@@ -10015,7 +10015,7 @@ gdk_event_get_source_device() to get the slave device.</doc>
line="1255">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
</record>
<record name="EventTouchpadSwipe" c:type="GdkEventTouchpadSwipe">
@@ -10103,7 +10103,7 @@ gdk_event_get_source_device() to get the slave device.</doc>
line="1214">a bit-mask representing the state of
the modifier keys (e.g. Control, Shift and Alt) and the pointer
buttons. See #GdkModifierType.</doc>
- <type name="ModifierType"/>
+ <type name="ModifierType" c:type="GdkModifierType*"/>
</field>
</record>
<enumeration name="EventType"
--- End Message ---
--- Begin Message ---
Control: tags -1 - moreinfo
Control: tags -1 + wontfix
Control: notfound -1 3.24.49-3
Hi Simon,
Thanks for your quick response and for looking into this issue.
On Sun, 2026-02-01 at 12:33 +0000, Simon McVittie wrote:
> Control: tags -1 + moreinfo
>
> On Sun, 01 Feb 2026 at 01:40:02 +0100, Mazen Neifer wrote:
> > Building GTK bindings for Free Pascal using `git2pas` tool.
>
> Do you mean gir2pascal, or something different? A tool of that name
> doesn't seem to be packaged as a binary in Debian, although
> lazarus-src-4.4 and similar packages seem to contain source code for
> it.
To clarify, I really meant gir2pas, a fork of gir2pascal hosted
at https://gitlab.com/gtk4pas/gir2pas.
I am the maintainer of this fork, which is meant to become the Debian
way to generate GTK bindings for Free Pascal and Lazarus.
>
> > Cheked the definition of the fields in GIR file and compared it
> > with relevant C
> > header files.
> ...
> > There is clearly a mismatch between C and GIR files.
>
> What do you believe to be a clear mismatch between the C and the GIR
> files? When reporting a bug it's usually best to describe what the
> problem is, rather than expecting a reader to guess it from a
> proposed
> solution.
According to https://docs.gtk.org/gdk3/struct.EventButton.html the
state field is defined as a pointer.
So, I was misled by the official GTK docs page for GdkEventButton,
which shows a pseudo‑C declaration with GdkModifierType* state;.
This explains my impression that the field should be pointer‑typed,
which is why my initial patch used GdkModifierType* in the c:type
However, the actual C header in Debian (/usr/include/gtk-
3.0/gdk/gdkevents.h) clearly shows it is a value field (guint), so my
proposed change was wrong.
I should have posted a bug against GTK docs, rather than Debian GIR
files. Apologies.
>
> > Provided a patch to fix the issue.
>
> The GIR XML is machine-generated from the C source, C header files
> and
> shared library by tools in the gobject-introspection package, which
> are
> the reference implementation of GObject-Introspection - so patching
> the
> GIR XML by hand is not going to be the right solution to any problem.
Yes, you're right.
This bug can be closed.
Best Regards,
Mazen
--- End Message ---