Browse Source

* bug #7784, moving of gtk2x11 from lazarus to fpc. (minus laz package)

git-svn-id: trunk@5357 -
marco 19 years ago
parent
commit
ddcb1616b6

+ 15 - 0
.gitattributes

@@ -3062,6 +3062,21 @@ packages/extra/gtk2/gtk+/gtk/gtkwindow.inc svneol=native#text/plain
 packages/extra/gtk2/gtk+/gtk/paste.pas svneol=native#text/plain
 packages/extra/gtk2/gtk+/gtk/xembed.inc svneol=native#text/plain
 packages/extra/gtk2/gtk2forlazarus.lpk -text
+packages/extra/gtk2/gtk2x11/gdk2x.pas svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdk2x11includes.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkdisplay-x11.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkdrawable-x11.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkinputprivate.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkpixmap-x11.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkprivate-x11.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkscreen-x11.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkwindow-x11.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gdkx.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/gxid_proto.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/mwmutil.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/xsettings-client.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/include/xsettings-common.inc svneol=native#text/plain
+packages/extra/gtk2/gtk2x11/scripts/gdkx11_h2pas.sh svneol=native#text/plain
 packages/extra/gtk2/gtkglext/gdkglconfig.inc svneol=native#text/plain
 packages/extra/gtk2/gtkglext/gdkglcontext.inc svneol=native#text/plain
 packages/extra/gtk2/gtkglext/gdkgldefs.inc svneol=native#text/plain

+ 206 - 83
packages/extra/gtk2/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/10/13]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/13]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
@@ -356,127 +356,127 @@ ifeq ($(FULL_TARGET),powerpc64-linux)
 override TARGET_UNITS+=buildgtk2
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+override TARGET_IMPLICITUNITS+=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_EXAMPLEDIRS+=examples
@@ -604,127 +604,250 @@ endif
 override INSTALL_BUILDUNIT=buildgtk2
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+override COMPILER_INCLUDEDIR+=gtk2x11/include
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_UNITDIR+=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
 endif
 override SHARED_BUILD=n
 override SHARED_BUILD=n

+ 3 - 2
packages/extra/gtk2/Makefile.fpc

@@ -12,10 +12,11 @@ libc=y
 [target]
 units=buildgtk2 
 exampledirs=examples
-implicitunits=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext
+implicitunits=glib2 atk pango gdk2pixbuf gdk2 gtk2 libglade2 gtkglext gdkglext gdk2x
 
 [compiler]
-unitdir=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext
+unitdir=glib atk pango gtk+/gdk-pixbuf gtk+/gdk gtk+/gtk libglade gtkglext gtk2x11
+includedir=gtk2x11/include
 
 [install]
 buildunit=buildgtk2

+ 1 - 1
packages/extra/gtk2/buildgtk2.pp

@@ -25,7 +25,7 @@ unit buildgtk2; // keep unit name lowercase for kylix
 interface
 
 uses
-  gtk2, libglade2,gdkglext,gtkglext;
+  gtk2, libglade2,gdkglext,gtkglext,gdk2x;
 
 implementation
 

+ 64 - 0
packages/extra/gtk2/gtk2x11/gdk2x.pas

@@ -0,0 +1,64 @@
+{
+ *****************************************************************************
+ *                                                                           *
+ *  See the file COPYING.modifiedLGPL, included in this distribution,        *
+ *  for details about the copyright.                                         *
+ *                                                                           *
+ *  This program is distributed in the hope that it will be useful,          *
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     *
+ *                                                                           *
+ *****************************************************************************
+
+  Author: Mattias Gaertner
+
+}
+unit gdk2x;
+
+{$IFDEF FPC}
+  {$mode objfpc}
+{$ENDIF}
+{$IFDEF VER140}
+  {$DEFINE KYLIX}
+{$ENDIF}
+
+interface
+
+uses
+  Classes, SysUtils, Unix, BaseUnix, glib2, gdk2, XLib, X, XRender;
+
+{$ifdef FREEBSD}
+  {$linklib pthread}
+{$endif}
+
+{$IFNDEF KYLIX}
+  {$PACKRECORDS C}
+{$ELSE}
+  {$ALIGN 4}
+  {$WEAKPACKAGEUNIT}
+  {$WARNINGS OFF}
+{$ENDIF}
+
+{$DEFINE read_forward_definitions}
+type
+{$I include/gdk2x11includes.inc}
+{$UNDEF read_forward_definitions}
+
+{$DEFINE read_interface_rest}
+{$I include/gdk2x11includes.inc}
+{$UNDEF read_interface_rest}
+
+implementation
+
+{*****************************************************************************
+ * macro functions
+ *
+ *****************************************************************************}
+
+// call implementation parts of header files
+{$DEFINE read_implementation}
+{$I include/gdk2x11includes.inc}
+{$UNDEF read_implementation}
+
+end.
+

+ 14 - 0
packages/extra/gtk2/gtk2x11/include/gdk2x11includes.inc

@@ -0,0 +1,14 @@
+{%MainUnit ../gdk2x.pas}
+
+{$I xsettings-common.inc}
+{$I xsettings-client.inc}
+{$I gdkdisplay-x11.inc}
+{$I gdkdrawable-x11.inc}
+{$I gdkinputprivate.inc}
+{$I gdkpixmap-x11.inc}
+{$I gdkprivate-x11.inc}
+{$I gdkscreen-x11.inc}
+{$I gdkwindow-x11.inc}
+{$I gdkx.inc}
+{$I gxid_proto.inc}
+{$I mwmutil.inc}

+ 121 - 0
packages/extra/gtk2/gtk2x11/include/gdkdisplay-x11.inc

@@ -0,0 +1,121 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+{ Keyboard related information  }
+{ Whether we were able to turn on detectable-autorepeat using
+     XkbSetDetectableAutorepeat. If FALSE, we'll fall back
+     to checking the next event with XPending().  }
+{ Information about current pointer and keyboard grabs held by this
+     client. If gdk_pointer_xgrab_window or gdk_keyboard_xgrab_window
+     window is NULL, then the other associated fields are ignored
+    }
+{ drag and drop information  }
+{ data needed for MOTIF DnD  }
+{ Mapping to/from virtual atoms  }
+{ Session Management leader window see ICCCM  }
+{ list of filters for client messages  }
+{ X ID hashtable  }
+{ translation queue  }
+{ Input device  }
+{ input GdkDevice list  }
+{ input GdkWindow list  }
+{ information about network port and host for gxid daemon  }
+
+type
+   PGdkDisplayX11 = ^TGdkDisplayX11;
+   TGdkDisplayX11 = record
+        parent_instance : TGdkDisplay;
+        xdisplay : PDisplay;
+        default_screen : PGdkScreen;
+        screens : ^PGdkScreen;
+        grab_count : gint;
+        xkb_event_type : gint;
+        use_xkb : gboolean;
+        have_xkb_autorepeat : gboolean;
+        keymap : PGdkKeymap;
+        keymap_serial : guint;
+        use_xshm : gboolean;
+        have_shm_pixmaps : gboolean;
+        have_shape : gint;
+        pointer_xgrab_window : PGdkWindowObject;
+        pointer_xgrab_serial : gulong;
+        pointer_xgrab_owner_events : gboolean;
+        keyboard_xgrab_window : PGdkWindowObject;
+        keyboard_xgrab_serial : gulong;
+        keyboard_xgrab_owner_events : gboolean;
+        current_dest_drag : PGdkDragContext;
+        motif_drag_window : TWindow;
+        motif_drag_gdk_window : PGdkWindow;
+        motif_target_lists : ^PGList;
+        motif_n_target_lists : gint;
+        atom_from_virtual : PGHashTable;
+        atom_to_virtual : PGHashTable;
+        leader_window : TWindow;
+        client_filters : PGList;
+        xid_ht : PGHashTable;
+        translate_queue : PGQueue;
+        input_devices : PGList;
+        input_windows : PGList;
+        input_ignore_core : gint;
+        input_gxid_host : Pgchar;
+        input_gxid_port : gint;
+        use_xft : gint;
+     end;
+
+   PGdkDisplayX11Class = ^TGdkDisplayX11Class;
+   TGdkDisplayX11Class = record
+        parent_class : TGdkDisplayClass;
+     end;
+
+
+// Private function GDK_TYPE_DISPLAY_X11 : GType;
+function GDK_DISPLAY_X11(obj : pointer) : PGdkDisplayX11;
+function GDK_DISPLAY_X11_CLASS(klass : pointer) : PGdkDisplayX11Class;
+// Private function GDK_IS_DISPLAY_X11(obj : pointer) : boolean;
+// Private function GDK_IS_DISPLAY_X11_CLASS(klass : pointer) : boolean;
+// Private function GDK_DISPLAY_X11_GET_CLASS(obj : pointer) : PGdkDisplayX11Class;
+// Private function _gdk_display_x11_get_type:GType;cdecl;external gdklib;
+// Private function _gdk_x11_display_screen_for_xrootwin(display:PGdkDisplay; xrootwin:TWindow):PGdkScreen;cdecl;external;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+{ Private
+function GDK_TYPE_DISPLAY_X11 : GType;
+begin
+   GDK_TYPE_DISPLAY_X11:=_gdk_display_x11_get_type;
+end;}
+
+function GDK_DISPLAY_X11(obj : pointer) : PGdkDisplayX11;
+begin
+   GDK_DISPLAY_X11:=PGdkDisplayX11(obj);
+   //GDK_DISPLAY_X11:=PGdkDisplayX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_DISPLAY_X11));
+end;
+
+function GDK_DISPLAY_X11_CLASS(klass : pointer) : PGdkDisplayX11Class;
+begin
+   GDK_DISPLAY_X11_CLASS:=PGdkDisplayX11Class(klass);
+   //GDK_DISPLAY_X11_CLASS:=PGdkDisplayX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_DISPLAY_X11));
+end;
+
+{ Private
+function GDK_IS_DISPLAY_X11(obj : pointer) : boolean;
+begin
+   GDK_IS_DISPLAY_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_DISPLAY_X11);
+end;
+
+function GDK_IS_DISPLAY_X11_CLASS(klass : pointer) : boolean;
+begin
+   GDK_IS_DISPLAY_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_DISPLAY_X11);
+end;
+
+function GDK_DISPLAY_X11_GET_CLASS(obj : pointer) : PGdkDisplayX11Class;
+begin
+   GDK_DISPLAY_X11_GET_CLASS:=PGdkDisplayX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_DISPLAY_X11));
+end;}
+
+{$ENDIF read_implementation}
+

+ 75 - 0
packages/extra/gtk2/gtk2x11/include/gdkdrawable-x11.inc

@@ -0,0 +1,75 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+{ Drawable implementation for X11 }
+
+type
+   PGdkDrawableImplX11 = ^TGdkDrawableImplX11;
+   TGdkDrawableImplX11 = record
+        parent_instance : TGdkDrawable;
+        wrapper : PGdkDrawable;
+        colormap : PGdkColormap;
+        xid : TWindow;
+        screen : PGdkScreen;
+        {$IFDEF Has_XFT}
+        picture : TPicture;
+        {$ENDIF}
+     end;
+
+   PGdkDrawableImplX11Class = ^TGdkDrawableImplX11Class;
+   TGdkDrawableImplX11Class = record
+        parent_class : TGdkDrawableClass;
+     end;
+
+// Private function GDK_TYPE_DRAWABLE_IMPL_X11 : GType;
+function GDK_DRAWABLE_IMPL_X11(obj : pointer) : PGdkDrawableImplX11;
+function GDK_DRAWABLE_IMPL_X11_CLASS(klass : pointer) : PGdkDrawableImplX11Class;
+// Private function GDK_IS_DRAWABLE_IMPL_X11(obj : pointer) : boolean;
+// Private function GDK_IS_DRAWABLE_IMPL_X11_CLASS(klass : pointer) : boolean;
+// Private function GDK_DRAWABLE_IMPL_X11_GET_CLASS(obj : pointer) : PGdkDrawableImplX11Class;
+
+// Private function _gdk_drawable_impl_x11_get_type:GType;cdecl;external;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+{ Private
+function GDK_TYPE_DRAWABLE_IMPL_X11 : GType;
+begin
+   GDK_TYPE_DRAWABLE_IMPL_X11:=_gdk_drawable_impl_x11_get_type;
+end;}
+
+function GDK_DRAWABLE_IMPL_X11(obj : pointer) : PGdkDrawableImplX11;
+begin
+   GDK_DRAWABLE_IMPL_X11:=PGdkDrawableImplX11(obj);
+   //GDK_DRAWABLE_IMPL_X11:=PGdkDrawableImplX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_DRAWABLE_IMPL_X11));
+end;
+
+function GDK_DRAWABLE_IMPL_X11_CLASS(klass : pointer) : PGdkDrawableImplX11Class;
+begin
+   GDK_DRAWABLE_IMPL_X11_CLASS:=PGdkDrawableImplX11Class(klass);
+   //GDK_DRAWABLE_IMPL_X11_CLASS:=PGdkDrawableImplX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_DRAWABLE_IMPL_X11));
+end;
+
+{ Private
+function GDK_IS_DRAWABLE_IMPL_X11(obj : pointer) : boolean;
+begin
+   GDK_IS_DRAWABLE_IMPL_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_DRAWABLE_IMPL_X11);
+end;
+
+function GDK_IS_DRAWABLE_IMPL_X11_CLASS(klass : pointer) : boolean;
+begin
+   GDK_IS_DRAWABLE_IMPL_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_DRAWABLE_IMPL_X11);
+end;
+
+function GDK_DRAWABLE_IMPL_X11_GET_CLASS(obj : pointer) : PGdkDrawableImplX11Class;
+begin
+   GDK_DRAWABLE_IMPL_X11_GET_CLASS:=PGdkDrawableImplX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_DRAWABLE_IMPL_X11));
+end;
+}
+
+{$ENDIF read_implementation}
+

+ 148 - 0
packages/extra/gtk2/gtk2x11/include/gdkinputprivate.inc

@@ -0,0 +1,148 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_forward_definitions}
+   PPPGdkTimeCoord = ^PPGdkTimeCoord;
+{$ENDIF read_forward_definitions}
+
+{$IFDEF read_interface_rest}
+
+type
+{ information about a device axis  }
+{ reported x resolution  }
+{ reported x minimum/maximum values  }
+{ calibrated resolution (for aspect ration) - only relative values
+     between axes used  }
+{ calibrated minimum/maximum values  }
+   PGdkAxisInfo = ^TGdkAxisInfo;
+   TGdkAxisInfo = record
+        xresolution : gint;
+        xmin_value : gint;
+        xmax_value : gint;
+        resolution : gint;
+        min_value : gint;
+        max_value : gint;
+     end;
+
+
+const
+   GDK_INPUT_NUM_EVENTC = 6;
+{$ifndef XINPUT_NONE}
+{ information about the axes  }
+{ Information about XInput device  }
+{ minimum key code for device  }
+{ true if we need to select a different set of events, but
+     can't because this is the core pointer  }
+{ Mask of buttons (used for button grabs)  }
+{ true if we've claimed the device as active. (used only for XINPUT_GXI)  }
+{$endif}
+{ !XINPUT_NONE  }
+
+type
+   PGdkDevicePrivate = ^TGdkDevicePrivate;
+   TGdkDevicePrivate = record
+        info : TGdkDevice;
+        deviceid : guint32;
+        display : PGdkDisplay;
+        axes : PGdkAxisInfo;
+        xdevice : Pointer; // PXDevice;
+        min_keycode : gint;
+        buttonpress_type : longint;
+        buttonrelease_type : longint;
+        keypress_type : longint;
+        keyrelease_type : longint;
+        motionnotify_type : longint;
+        proximityin_type : longint;
+        proximityout_type : longint;
+        changenotify_type : longint;
+        needs_update : gint;
+        button_state : gint;
+        claimed : gint;
+     end;
+
+   P_GdkDeviceClass = ^T_GdkDeviceClass;
+   T_GdkDeviceClass = record
+        parent_class : TGObjectClass;
+     end;
+
+{ gdk window  }
+{ Extension mode (GDK_EXTENSION_EVENTS_ALL/CURSOR)  }
+{ position relative to root window  }
+{ rectangles relative to window of windows obscuring this one  }
+{ Is there a pointer grab for this window ?  }
+   PGdkInputWindow = ^TGdkInputWindow;
+   TGdkInputWindow = record
+        window : PGdkWindow;
+        mode : TGdkExtensionMode;
+        root_x : gint;
+        root_y : gint;
+        obscuring : PGdkRectangle;
+        num_obscuring : gint;
+        grabbed : gint;
+     end;
+     
+{ Global data  }
+// Private function GDK_IS_CORE(d : pointer) : boolean;
+
+{ Function declarations  }
+function gdk_input_window_find(window:PGdkWindow):PGdkInputWindow;cdecl;external;
+
+procedure gdk_input_window_destroy(window:PGdkWindow);cdecl;external;
+
+function _gdk_device_allocate_history(device:PGdkDevice; n_events:gint):PPGdkTimeCoord;cdecl;external;
+
+procedure _gdk_init_input_core;cdecl;external;
+
+{ The following functions are provided by each implementation
+   (xfree, gxi, and none)
+  }
+function _gdk_input_enable_window(window:PGdkWindow; gdkdev:PGdkDevicePrivate):gint;cdecl;external;
+
+function _gdk_input_disable_window(window:PGdkWindow; gdkdev:PGdkDevicePrivate):gint;cdecl;external;
+
+function _gdk_input_window_none_event(event:PGdkEvent; xevent:PXEvent):gint;cdecl;external;
+
+procedure _gdk_input_configure_event(xevent:PXConfigureEvent; window:PGdkWindow);cdecl;external;
+
+procedure _gdk_input_enter_event(xevent:PXCrossingEvent; window:PGdkWindow);cdecl;external;
+
+function _gdk_input_other_event(event:PGdkEvent; xevent:PXEvent; window:PGdkWindow):gint;cdecl;external;
+
+function _gdk_input_grab_pointer(window:PGdkWindow; owner_events:gint; event_mask:TGdkEventMask; confine_to:PGdkWindow; time:guint32):gint;cdecl;external;
+
+procedure _gdk_input_ungrab_pointer(display:PGdkDisplay; time:guint32);cdecl;external;
+
+function _gdk_device_get_history(device:PGdkDevice; window:PGdkWindow; start:guint32; stop:guint32; events:PPPGdkTimeCoord;
+           n_events:Pgint):gboolean;cdecl;external;
+
+{$ifndef XINPUT_NONE}
+
+const
+   GDK_MAX_DEVICE_CLASSES = 13;
+
+function gdk_input_common_init(display:PGdkDisplay; include_core:gint):gint;cdecl;external;
+
+function gdk_input_find_device(display:PGdkDisplay; id:guint32):PGdkDevicePrivate;cdecl;external;
+
+procedure gdk_input_get_root_relative_geometry(display:PDisplay; w:TWindow; x_ret:Plongint; y_ret:Plongint; width_ret:Plongint; 
+            height_ret:Plongint);cdecl;external;
+
+procedure gdk_input_common_find_events(window:PGdkWindow; gdkdev:PGdkDevicePrivate; mask:gint; classes:Pointer {PXEventClass}; num_classes:Plongint);cdecl;external;
+
+procedure gdk_input_common_select_events(window:PGdkWindow; gdkdev:PGdkDevicePrivate);cdecl;external;
+
+function gdk_input_common_other_event(event:PGdkEvent; xevent:PXEvent; input_window:PGdkInputWindow; gdkdev:PGdkDevicePrivate):gint;cdecl;external;
+
+{$endif}
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+{ Private
+function GDK_IS_CORE(d : pointer) : boolean;
+begin
+   GDK_IS_CORE:= (PGdkDevice(d)) = _gdk_core_pointer;
+end;}
+
+{$ENDIF read_implementation}
+

+ 90 - 0
packages/extra/gtk2/gtk2x11/include/gdkpixmap-x11.inc

@@ -0,0 +1,90 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+
+{ Pixmap implementation for X11 }
+
+type
+   PGdkPixmapImplX11 = ^TGdkPixmapImplX11;
+   TGdkPixmapImplX11 = record
+        parent_instance : TGdkDrawableImplX11;
+        width : gint;
+        height : gint;
+        flag0 : word;
+     end;
+
+type
+   PGdkPixmapImplX11Class = ^TGdkPixmapImplX11Class;
+   TGdkPixmapImplX11Class = record
+        parent_class : TGdkDrawableImplX11Class;
+     end;
+
+// Private function GDK_TYPE_PIXMAP_IMPL_X11 : GType;
+function GDK_PIXMAP_IMPL_X11(obj : pointer) : PGdkPixmapImplX11;
+function GDK_PIXMAP_IMPL_X11_CLASS(klass : pointer) : PGdkPixmapImplX11Class;
+// Private function GDK_IS_PIXMAP_IMPL_X11(obj : pointer) : boolean;
+// Private function GDK_IS_PIXMAP_IMPL_X11_CLASS(klass : pointer) : boolean;
+// Private function GDK_PIXMAP_IMPL_X11_GET_CLASS(obj : pointer) : PGdkPixmapImplX11Class;
+
+
+const
+   bm_TGdkPixmapImplX11_is_foreign = $1;
+   bp_TGdkPixmapImplX11_is_foreign = 0;
+
+function is_foreign(a : PGdkPixmapImplX11) : guint;
+procedure set_is_foreign(a : PGdkPixmapImplX11; __is_foreign : guint);
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+{ Private
+function gdk_pixmap_impl_x11_get_type: GType; cdecl; external;
+
+function GDK_TYPE_PIXMAP_IMPL_X11 : GType;
+begin
+   GDK_TYPE_PIXMAP_IMPL_X11:=gdk_pixmap_impl_x11_get_type;
+end;     }
+
+function GDK_PIXMAP_IMPL_X11(obj : pointer) : PGdkPixmapImplX11;
+begin
+   GDK_PIXMAP_IMPL_X11:=PGdkPixmapImplX11(obj);
+   //GDK_PIXMAP_IMPL_X11:=PGdkPixmapImplX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_PIXMAP_IMPL_X11));
+end;
+
+function GDK_PIXMAP_IMPL_X11_CLASS(klass : pointer) : PGdkPixmapImplX11Class;
+begin
+   GDK_PIXMAP_IMPL_X11_CLASS:=PGdkPixmapImplX11Class(klass);
+   //GDK_PIXMAP_IMPL_X11_CLASS:=PGdkPixmapImplX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_PIXMAP_IMPL_X11));
+end;
+
+{ Private
+function GDK_IS_PIXMAP_IMPL_X11(obj : pointer) : boolean;
+begin
+   GDK_IS_PIXMAP_IMPL_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_PIXMAP_IMPL_X11);
+end;
+
+function GDK_IS_PIXMAP_IMPL_X11_CLASS(klass : pointer) : boolean;
+begin
+   GDK_IS_PIXMAP_IMPL_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_PIXMAP_IMPL_X11);
+end;
+
+function GDK_PIXMAP_IMPL_X11_GET_CLASS(obj : pointer) : PGdkPixmapImplX11Class;
+begin
+   GDK_PIXMAP_IMPL_X11_GET_CLASS:=PGdkPixmapImplX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_PIXMAP_IMPL_X11));
+end; }
+
+function is_foreign(a : PGdkPixmapImplX11) : guint;
+begin
+   is_foreign:=(a^.flag0 and bm_TGdkPixmapImplX11_is_foreign) shr bp_TGdkPixmapImplX11_is_foreign;
+end;
+
+procedure set_is_foreign(a : PGdkPixmapImplX11; __is_foreign : guint);
+begin
+   a^.flag0:=a^.flag0 or ((__is_foreign shl bp_TGdkPixmapImplX11_is_foreign) and bm_TGdkPixmapImplX11_is_foreign);
+end;
+
+{$ENDIF read_implementation}
+

+ 243 - 0
packages/extra/gtk2/gtk2x11/include/gdkprivate-x11.inc

@@ -0,0 +1,243 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_forward_definitions}
+   // remove this TXRenderColor, when it has been added to the X11 bindings of FPC
+   TXRenderColor = record
+     red: word;
+     green: word;
+     blue: word;
+     alpha: word;
+   end;
+   
+   PPXRectangle = ^PXRectangle;
+{$ENDIF read_forward_definitions}
+
+{$IFDEF read_interface_rest}
+
+type
+   PGdkGCX11 = ^TGdkGCX11;
+   TGdkGCX11 = record
+        parent_instance : TGdkGC;
+        xgc : TGC;
+        screen : PGdkScreen;
+        clip_region : PGdkRegion;
+        dirty_mask : guint;
+        fg_picture : TPicture;
+        fg_picture_color : TXRenderColor;
+        fg_pixel : gulong;
+     end;
+
+   PGdkGCX11Class = ^TGdkGCX11Class;
+   TGdkGCX11Class = record
+        parent_class : TGdkGCClass;
+     end;
+
+   PGdkCursorPrivate = ^TGdkCursorPrivate;
+   TGdkCursorPrivate = record
+        cursor : TGdkCursor;
+        xcursor : TCursor;
+        screen : PGdkScreen;
+     end;
+
+   PGdkVisualPrivate = ^TGdkVisualPrivate;
+   TGdkVisualPrivate = record
+        visual : TGdkVisual;
+        xvisual : PVisual;
+        screen : PGdkScreen;
+     end;
+
+// Private function GDK_TYPE_GC_X11 : GType;
+function GDK_GC_X11(obj : pointer) : PGdkGCX11;
+function GDK_GC_X11_CLASS(klass : pointer) : PGdkGCX11Class;
+// Private function GDK_IS_GC_X11(obj : pointer) : boolean;
+// Private function GDK_IS_GC_X11_CLASS(klass : pointer) : boolean;
+// Private function GDK_GC_X11_GET_CLASS(obj : pointer) : PGdkGCX11Class;
+
+
+procedure _gdk_xid_table_insert(display:PGdkDisplay; xid:PXID; data:gpointer);cdecl;external;
+procedure _gdk_xid_table_remove(display:PGdkDisplay; xid:TXID);cdecl;external;
+function _gdk_send_xevent(display:PGdkDisplay; window:TWindow; propagate:gboolean; event_mask:glong; event_send:PXEvent):gint;cdecl;external;
+// Private function _gdk_gc_x11_get_type:GType;cdecl;external;
+
+{$ifdef HAVE_XFT}
+function _gdk_x11_have_render(display:PGdkDisplay):gboolean;cdecl;external;
+function _gdk_x11_gc_get_fg_picture(gc:PGdkGC):TPicture;cdecl;external;
+{$endif HAVE_XFT}
+
+function _gdk_x11_gc_new(drawable:PGdkDrawable; values:PGdkGCValues; values_mask:TGdkGCValuesMask):PGdkGC;cdecl;external;
+function gdk_colormap_lookup(xcolormap:TColormap):PGdkColormap;cdecl;external;
+function gdk_visual_lookup(xvisual:PVisual):PGdkVisual;cdecl;external;
+procedure gdk_window_add_colormap_windows(window:PGdkWindow);cdecl;external;
+function _gdk_x11_copy_to_image(drawable:PGdkDrawable; image:PGdkImage; src_x:gint; src_y:gint; dest_x:gint;
+           dest_y:gint; width:gint; height:gint):PGdkImage;cdecl;external;
+function _gdk_x11_image_get_shm_pixmap(image:PGdkImage):TPixmap;cdecl;external;
+
+{ Routines from gdkgeometry-x11.c  }
+procedure _gdk_window_init_position(window:PGdkWindow);cdecl;external;
+procedure _gdk_window_move_resize_child(window:PGdkWindow; x:gint; y:gint; width:gint; height:gint);cdecl;external;
+procedure _gdk_window_process_expose(window:PGdkWindow; serial:gulong; area:PGdkRectangle);cdecl;external;
+procedure _gdk_selection_window_destroyed(window:PGdkWindow);cdecl;external;
+function _gdk_selection_filter_clear_event(event:PXSelectionClearEvent):gboolean;cdecl;external;
+procedure _gdk_region_get_xrectangles(region:PGdkRegion; x_offset:gint; y_offset:gint; rects:PPXRectangle; n_rects:Pgint);cdecl;external;
+function _gdk_moveresize_handle_event(event:PXEvent):gboolean;cdecl;external;
+function _gdk_moveresize_configure_done(display:PGdkDisplay; window:PGdkWindow):gboolean;cdecl;external;
+procedure _gdk_keymap_state_changed(display:PGdkDisplay);cdecl;external;
+function _gdk_x11_get_group_for_state(display:PGdkDisplay; state:TGdkModifierType):gint;cdecl;external;
+//function _gdk_x11_gc_flush(gc:PGdkGC):TGC;cdecl;external;
+procedure _gdk_x11_initialize_locale;cdecl;external;
+procedure _gdk_xgrab_check_unmap(window:PGdkWindow; serial:gulong);cdecl;external;
+procedure _gdk_xgrab_check_destroy(window:PGdkWindow);cdecl;external;
+function _gdk_x11_display_is_root_window(display:PGdkDisplay; xroot_window:TWindow):gboolean;cdecl;external;
+procedure _gdk_x11_events_init_screen(screen:PGdkScreen);cdecl;external;
+procedure _gdk_events_init(display:PGdkDisplay);cdecl;external;
+procedure _gdk_windowing_window_init(screen:PGdkScreen);cdecl;external;
+procedure _gdk_visual_init(screen:PGdkScreen);cdecl;external;
+procedure _gdk_dnd_init(display:PGdkDisplay);cdecl;external;
+procedure _gdk_windowing_image_init(display:PGdkDisplay);cdecl;external;
+procedure _gdk_input_init(display:PGdkDisplay);cdecl;external;
+
+
+var
+   _gdk_x11_drawable_class : TGdkDrawableClass;cvar;external;
+   _gdk_use_xshm : gboolean;cvar;external;
+(* Const before type ignored *)
+   _gdk_nenvent_masks : longint;cvar;external;
+(* Const before type ignored *)
+   _gdk_event_mask_table : array of longint;cvar;external;
+   _gdk_selection_property : TGdkAtom;cvar;external;
+   _gdk_synchronize : gboolean;cvar;external;
+
+function GDK_PIXMAP_SCREEN(pix : pointer) : PGdkScreen;
+
+function GDK_PIXMAP_DISPLAY(pix : pointer) : PGdkDisplay;
+function GDK_PIXMAP_XROOTWIN(pix : pointer) : TWindow;
+function GDK_DRAWABLE_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
+function GDK_DRAWABLE_SCREEN(win : PGdkDrawable) : PGdkScreen;
+function GDK_DRAWABLE_XROOTWIN(win : PGdkDrawable) : TWindow;
+function GDK_SCREEN_DISPLAY(screen : PGdkScreen) : PGdkDisplay;
+function GDK_SCREEN_XROOTWIN(screen : PGdkScreen) : TWindow;
+function GDK_WINDOW_SCREEN(win : PGdkDrawable) : PGdkScreen;
+function GDK_WINDOW_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
+function GDK_WINDOW_XROOTWIN(win : PGdkDrawable) : TWindow;
+function GDK_GC_DISPLAY(gc : PGdkGC) : PGdkDisplay;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+{ Private
+function GDK_TYPE_GC_X11 : GType;
+begin
+   GDK_TYPE_GC_X11:=_gdk_gc_x11_get_type;
+end;}
+
+function GDK_GC_X11(obj : pointer) : PGdkGCX11;
+begin
+   GDK_GC_X11:=PGdkGCX11(obj);
+   //GDK_GC_X11:=PGdkGCX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_GC_X11));
+end;
+
+function GDK_GC_X11_CLASS(klass : pointer) : PGdkGCX11Class;
+begin
+   GDK_GC_X11_CLASS:=PGdkGCX11Class(klass);
+   //GDK_GC_X11_CLASS:=PGdkGCX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_GC_X11));
+end;
+
+{ Private
+function GDK_IS_GC_X11(obj : pointer) : boolean;
+begin
+   GDK_IS_GC_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_GC_X11);
+end;
+
+function GDK_IS_GC_X11_CLASS(klass : pointer) : boolean;
+begin
+   GDK_IS_GC_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_GC_X11);
+end;
+
+function GDK_GC_X11_GET_CLASS(obj : pointer) : PGdkGCX11Class;
+begin
+   GDK_GC_X11_GET_CLASS:=PGdkGCX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_GC_X11));
+end;     }
+
+function GDK_PIXMAP_SCREEN(pix : pointer) : PGdkScreen;
+begin
+   GDK_PIXMAP_SCREEN:=(GDK_DRAWABLE_IMPL_X11((PGdkPixmapObject(pix))^.impl))^.screen;
+end;
+
+function GDK_PIXMAP_DISPLAY(pix : pointer) : PGdkDisplay;
+begin
+   GDK_PIXMAP_DISPLAY:=(GDK_SCREEN_X11(GDK_PIXMAP_SCREEN(pix)))^.display;
+end;
+
+function GDK_PIXMAP_XROOTWIN(pix : pointer) : TWindow;
+begin
+   GDK_PIXMAP_XROOTWIN:=(GDK_SCREEN_X11(GDK_PIXMAP_SCREEN(pix)))^.xroot_window;
+end;
+
+function GDK_DRAWABLE_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
+var
+   if_local1 : PGdkDisplay;
+begin
+   if GDK_IS_WINDOW(win) then
+     if_local1:=GDK_WINDOW_DISPLAY(win)
+   else
+     if_local1:=GDK_PIXMAP_DISPLAY(win);
+   GDK_DRAWABLE_DISPLAY:=if_local1;
+end;
+
+function GDK_DRAWABLE_SCREEN(win : PGdkDrawable) : PGdkScreen;
+var
+   if_local1 : PGdkScreen;
+begin
+   if GDK_IS_WINDOW(win) then
+     if_local1:=GDK_WINDOW_SCREEN(win)
+   else
+     if_local1:=GDK_PIXMAP_SCREEN(win);
+   GDK_DRAWABLE_SCREEN:=if_local1;
+end;
+
+function GDK_DRAWABLE_XROOTWIN(win : PGdkDrawable) : TWindow;
+var
+   if_local1 : TWindow;
+begin
+   if GDK_IS_WINDOW(win) then
+     if_local1:=GDK_WINDOW_XROOTWIN(win)
+   else
+     if_local1:=GDK_PIXMAP_XROOTWIN(win);
+   GDK_DRAWABLE_XROOTWIN:=if_local1;
+end;
+
+function GDK_SCREEN_DISPLAY(screen : PGdkScreen) : PGdkDisplay;
+begin
+   GDK_SCREEN_DISPLAY:=(GDK_SCREEN_X11(screen))^.display;
+end;
+
+function GDK_SCREEN_XROOTWIN(screen : PGdkScreen) : TWindow;
+begin
+   GDK_SCREEN_XROOTWIN:=(GDK_SCREEN_X11(screen))^.xroot_window;
+end;
+
+function GDK_WINDOW_SCREEN(win : PGdkDrawable) : PGdkScreen;
+begin
+   GDK_WINDOW_SCREEN:=(GDK_DRAWABLE_IMPL_X11((PGdkWindowObject(win))^.impl))^.screen;
+end;
+
+function GDK_WINDOW_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
+begin
+   GDK_WINDOW_DISPLAY:=(GDK_SCREEN_X11(GDK_WINDOW_SCREEN(win)))^.display;
+end;
+
+function GDK_WINDOW_XROOTWIN(win : PGdkDrawable) : TWindow;
+begin
+   GDK_WINDOW_XROOTWIN:=(GDK_SCREEN_X11(GDK_WINDOW_SCREEN(win)))^.xroot_window;
+end;
+
+function GDK_GC_DISPLAY(gc : PGdkGC) : PGdkDisplay;
+begin
+   GDK_GC_DISPLAY:=GDK_SCREEN_DISPLAY((GDK_GC_X11(gc))^.screen);
+end;
+
+{$ENDIF read_implementation}
+

+ 95 - 0
packages/extra/gtk2/gtk2x11/include/gdkscreen-x11.inc

@@ -0,0 +1,95 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+
+{ Visual Part  }
+{ Colormap Part  }
+{ X settings  }
+{ Xinerama  }
+
+type
+   PGdkScreenX11 = ^TGdkScreenX11;
+   TGdkScreenX11 = record
+        parent_instance : TGdkScreen;
+        display : PGdkDisplay;
+        xdisplay : PDisplay;
+        xscreen : PScreen;
+        screen_num : gint;
+        xroot_window : TWindow;
+        root_window : PGdkWindow;
+        wmspec_check_window : TWindow;
+        system_visual : PGdkVisualPrivate;
+        visuals : ^PGdkVisualPrivate;
+        nvisuals : gint;
+        available_depths : array[0..6] of gint;
+        navailable_depths : gint;
+        available_types : array[0..5] of TGdkVisualType;
+        navailable_types : gint;
+        visual_hash : PGHashTable;
+        default_colormap : PGdkColormap;
+        system_colormap : PGdkColormap;
+        xsettings_client : PXSettingsClient;
+        num_monitors : gint;
+        monitors : PGdkRectangle;
+     end;
+
+   PGdkScreenX11Class = ^TGdkScreenX11Class;
+   TGdkScreenX11Class = record
+        parent_class : TGdkScreenClass;
+     end;
+
+
+// Private function GDK_TYPE_SCREEN_X11 : GType;
+function GDK_SCREEN_X11(obj : pointer) : PGdkScreenX11;
+function GDK_SCREEN_X11_CLASS(klass : pointer) : PGdkScreenX11Class;
+// Private function GDK_IS_SCREEN_X11(obj : pointer) : boolean;
+// Private function GDK_IS_SCREEN_X11_CLASS(klass : pointer) : boolean;
+// Private function GDK_SCREEN_X11_GET_CLASS(obj : pointer) : PGdkScreenX11Class;
+
+
+// Private function _gdk_screen_x11_get_type:GType;cdecl;external;
+
+function _gdk_x11_screen_new(display:PGdkDisplay; screen_number:gint):PGdkScreen;cdecl;external;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+{ Private
+function GDK_TYPE_SCREEN_X11 : GType;
+begin
+   GDK_TYPE_SCREEN_X11:=_gdk_screen_x11_get_type;
+end;}
+
+function GDK_SCREEN_X11(obj : pointer) : PGdkScreenX11;
+begin
+   GDK_SCREEN_X11:=PGdkScreenX11(obj);
+   //GDK_SCREEN_X11:=PGdkScreenX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_SCREEN_X11));
+end;
+
+function GDK_SCREEN_X11_CLASS(klass : pointer) : PGdkScreenX11Class;
+begin
+   GDK_SCREEN_X11_CLASS:=PGdkScreenX11Class(klass);
+   //GDK_SCREEN_X11_CLASS:=PGdkScreenX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_SCREEN_X11));
+end;
+
+{ Private
+function GDK_IS_SCREEN_X11(obj : pointer) : boolean;
+begin
+   GDK_IS_SCREEN_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_SCREEN_X11);
+end;
+
+function GDK_IS_SCREEN_X11_CLASS(klass : pointer) : boolean;
+begin
+   GDK_IS_SCREEN_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_SCREEN_X11);
+end;
+
+function GDK_SCREEN_X11_GET_CLASS(obj : pointer) : PGdkScreenX11Class;
+begin
+   GDK_SCREEN_X11_GET_CLASS:=PGdkScreenX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_SCREEN_X11));
+end;}
+
+{$ENDIF read_implementation}
+

+ 177 - 0
packages/extra/gtk2/gtk2x11/include/gdkwindow-x11.inc

@@ -0,0 +1,177 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+
+type
+{ Offsets to add to X coordinates within window  }
+{   to get GDK coodinates within window  }
+{ Set when the window background is temporarily
+   unset during resizing and scaling  }
+{ visible rectangle of window  }
+   PGdkXPositionInfo = ^TGdkXPositionInfo;
+   TGdkXPositionInfo = record
+        x : gint;
+        y : gint;
+        width : gint;
+        height : gint;
+        x_offset : gint;
+        y_offset : gint;
+        flag0 : word;
+        clip_rect : TGdkRectangle;
+     end;
+
+const
+   bm_TGdkXPositionInfo_big = $1;
+   bp_TGdkXPositionInfo_big = 0;
+   bm_TGdkXPositionInfo_mapped = $2;
+   bp_TGdkXPositionInfo_mapped = 1;
+   bm_TGdkXPositionInfo_no_bg = $4;
+   bp_TGdkXPositionInfo_no_bg = 2;
+function big(var a : TGdkXPositionInfo) : guint;
+procedure set_big(var a : TGdkXPositionInfo; __big : guint);
+function mapped(var a : TGdkXPositionInfo) : guint;
+procedure set_mapped(var a : TGdkXPositionInfo; __mapped : guint);
+function no_bg(var a : TGdkXPositionInfo) : guint;
+procedure set_no_bg(var a : TGdkXPositionInfo; __no_bg : guint);
+{ Window implementation for X11 }
+
+
+type
+   PGdkWindowImplX11 = ^TGdkWindowImplX11;
+   TGdkWindowImplX11 = record
+        parent_instance : TGdkDrawableImplX11;
+        width : gint;
+        height : gint;
+        position_info : TGdkXPositionInfo;
+        flag0 : word;
+        focus_window : TWindow;
+     end;
+
+type
+   PGdkWindowImplX11Class = ^TGdkWindowImplX11Class;
+   TGdkWindowImplX11Class = record
+        parent_class : TGdkDrawableImplX11Class;
+     end;
+
+
+function GDK_TYPE_WINDOW_IMPL_X11 : GType;
+
+function GDK_WINDOW_IMPL_X11(obj : pointer) : PGdkWindowImplX11;
+
+function GDK_WINDOW_IMPL_X11_CLASS(klass : pointer) : PGdkWindowImplX11Class;
+
+function GDK_IS_WINDOW_IMPL_X11(obj : pointer) : boolean;
+
+function GDK_IS_WINDOW_IMPL_X11_CLASS(klass : pointer) : boolean;
+
+function GDK_WINDOW_IMPL_X11_GET_CLASS(obj : pointer) : PGdkWindowImplX11Class;
+
+{ Set if the window, or any descendent of it, has the focus }
+{ Set if !window_has_focus, but events are being sent to the
+     window because the pointer is in it. (Typically, no window
+     manager is running. }
+{ We use an extra X window for toplevel windows that we XSetInputFocus()
+     to in order to avoid getting keyboard events redirected to subwindows
+     that might not even be part of this app }
+
+const
+   bm_TGdkWindowImplX11_has_focus = $1;
+   bp_TGdkWindowImplX11_has_focus = 0;
+   bm_TGdkWindowImplX11_has_pointer_focus = $2;
+   bp_TGdkWindowImplX11_has_pointer_focus = 1;
+function has_focus(var a : TGdkWindowImplX11) : guint;
+procedure set_has_focus(var a : TGdkWindowImplX11; __has_focus : guint);
+function has_pointer_focus(var a : TGdkWindowImplX11) : guint;
+procedure set_has_pointer_focus(var a : TGdkWindowImplX11; __has_pointer_focus : guint);
+
+
+function gdk_window_impl_x11_get_type:GType;cdecl;external;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+function big(var a : TGdkXPositionInfo) : guint;
+begin
+   big:=(a.flag0 and bm_TGdkXPositionInfo_big) shr bp_TGdkXPositionInfo_big;
+end;
+
+procedure set_big(var a : TGdkXPositionInfo; __big : guint);
+begin
+   a.flag0:=a.flag0 or ((__big shl bp_TGdkXPositionInfo_big) and bm_TGdkXPositionInfo_big);
+end;
+
+function mapped(var a : TGdkXPositionInfo) : guint;
+begin
+   mapped:=(a.flag0 and bm_TGdkXPositionInfo_mapped) shr bp_TGdkXPositionInfo_mapped;
+end;
+
+procedure set_mapped(var a : TGdkXPositionInfo; __mapped : guint);
+begin
+   a.flag0:=a.flag0 or ((__mapped shl bp_TGdkXPositionInfo_mapped) and bm_TGdkXPositionInfo_mapped);
+end;
+
+function no_bg(var a : TGdkXPositionInfo) : guint;
+begin
+   no_bg:=(a.flag0 and bm_TGdkXPositionInfo_no_bg) shr bp_TGdkXPositionInfo_no_bg;
+end;
+
+procedure set_no_bg(var a : TGdkXPositionInfo; __no_bg : guint);
+begin
+   a.flag0:=a.flag0 or ((__no_bg shl bp_TGdkXPositionInfo_no_bg) and bm_TGdkXPositionInfo_no_bg);
+end;
+
+function GDK_TYPE_WINDOW_IMPL_X11 : GType;
+begin
+   GDK_TYPE_WINDOW_IMPL_X11:=gdk_window_impl_x11_get_type;
+end;
+
+function GDK_WINDOW_IMPL_X11(obj : pointer) : PGdkWindowImplX11;
+begin
+   GDK_WINDOW_IMPL_X11:=PGdkWindowImplX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_WINDOW_IMPL_X11));
+end;
+
+function GDK_WINDOW_IMPL_X11_CLASS(klass : pointer) : PGdkWindowImplX11Class;
+begin
+   GDK_WINDOW_IMPL_X11_CLASS:=PGdkWindowImplX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_WINDOW_IMPL_X11));
+end;
+
+function GDK_IS_WINDOW_IMPL_X11(obj : pointer) : boolean;
+begin
+   GDK_IS_WINDOW_IMPL_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_WINDOW_IMPL_X11);
+end;
+
+function GDK_IS_WINDOW_IMPL_X11_CLASS(klass : pointer) : boolean;
+begin
+   GDK_IS_WINDOW_IMPL_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_WINDOW_IMPL_X11);
+end;
+
+function GDK_WINDOW_IMPL_X11_GET_CLASS(obj : pointer) : PGdkWindowImplX11Class;
+begin
+   GDK_WINDOW_IMPL_X11_GET_CLASS:=PGdkWindowImplX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_WINDOW_IMPL_X11));
+end;
+
+function has_focus(var a : TGdkWindowImplX11) : guint;
+begin
+   has_focus:=(a.flag0 and bm_TGdkWindowImplX11_has_focus) shr bp_TGdkWindowImplX11_has_focus;
+end;
+
+procedure set_has_focus(var a : TGdkWindowImplX11; __has_focus : guint);
+begin
+   a.flag0:=a.flag0 or ((__has_focus shl bp_TGdkWindowImplX11_has_focus) and bm_TGdkWindowImplX11_has_focus);
+end;
+
+function has_pointer_focus(var a : TGdkWindowImplX11) : guint;
+begin
+   has_pointer_focus:=(a.flag0 and bm_TGdkWindowImplX11_has_pointer_focus) shr bp_TGdkWindowImplX11_has_pointer_focus;
+end;
+
+procedure set_has_pointer_focus(var a : TGdkWindowImplX11; __has_pointer_focus : guint);
+begin
+   a.flag0:=a.flag0 or ((__has_pointer_focus shl bp_TGdkWindowImplX11_has_pointer_focus) and bm_TGdkWindowImplX11_has_pointer_focus);
+end;
+
+{$ENDIF read_implementation}
+

+ 284 - 0
packages/extra/gtk2/gtk2x11/include/gdkx.inc

@@ -0,0 +1,284 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+var
+   gdk_display : PDisplay;cvar;external;
+
+function gdk_x11_drawable_get_xdisplay(drawable:PGdkDrawable):PDisplay;cdecl;external;
+function gdk_x11_drawable_get_xid(drawable:PGdkDrawable):TXID;cdecl;external;
+function gdk_x11_image_get_xdisplay(image:PGdkImage):PDisplay;cdecl;external;
+function gdk_x11_image_get_ximage(image:PGdkImage):PXImage;cdecl;external;
+function gdk_x11_colormap_get_xdisplay(colormap:PGdkColormap):PDisplay;cdecl;external;
+function gdk_x11_colormap_get_xcolormap(colormap:PGdkColormap):TColormap;cdecl;external;
+function gdk_x11_cursor_get_xdisplay(cursor:PGdkCursor):PDisplay;cdecl;external;
+function gdk_x11_cursor_get_xcursor(cursor:PGdkCursor):TCursor;cdecl;external;
+function gdk_x11_display_get_xdisplay(display:PGdkDisplay):PDisplay;cdecl;external;
+function gdk_x11_visual_get_xvisual(visual:PGdkVisual):PVisual;cdecl;external;
+function gdk_x11_gc_get_xdisplay(gc:PGdkGC):PDisplay;cdecl;external;
+function gdk_x11_gc_get_xgc(gc:PGdkGC):TGC;cdecl;external;
+function gdk_x11_screen_get_xscreen(screen:PGdkScreen):PScreen;cdecl;external;
+function gdk_x11_screen_get_screen_number(screen:PGdkScreen):longint;cdecl;external;
+
+{$ifndef GDK_MULTIHEAD_SAFE}
+
+function gdk_x11_get_default_root_xwindow:TWindow;cdecl;external;
+function gdk_x11_get_default_xdisplay:PDisplay;cdecl;external;
+function gdk_x11_get_default_screen:gint;cdecl;external;
+
+{$endif}
+function GDK_COLORMAP_XDISPLAY(cmap : PGdkColormap) : PDisplay;
+function GDK_COLORMAP_XCOLORMAP(cmap : PGdkColormap) : TColormap;
+function GDK_CURSOR_XDISPLAY(cursor : PGdkCursor) : PDisplay;
+function GDK_CURSOR_XCURSOR(cursor : PGdkCursor) : TCursor;
+function GDK_IMAGE_XDISPLAY(image : PGdkImage) : PDisplay;
+function GDK_IMAGE_XIMAGE(image : PGdkImage) : PXImage;
+
+{$ifndef GDK_MULTIHEAD_SAFE}
+function GDK_ROOT_WINDOW : TWindow;
+{$endif}
+
+function GDK_DISPLAY_XDISPLAY(display : PGdkDisplay) : PDisplay;
+function GDK_WINDOW_XDISPLAY(win : PGdkDrawable) : PDisplay;
+function GDK_WINDOW_XID(win : PGdkDrawable) : TXID;
+function GDK_WINDOW_XWINDOW(win : PGdkDrawable) : TXID;
+function GDK_PIXMAP_XDISPLAY(win : PGdkDrawable) : PDisplay;
+function GDK_PIXMAP_XID(win : PGdkDrawable) : TXID;
+function GDK_DRAWABLE_XDISPLAY(win : PGdkDrawable) : PDisplay;
+function GDK_DRAWABLE_XID(win : PGdkDrawable) : TXID;
+function GDK_GC_XDISPLAY(gc : PGdkGC) : PDisplay;
+function GDK_GC_XGC(gc : PGdkGC) : TGC;
+function GDK_SCREEN_XDISPLAY(screen : PGdkScreen) : PDisplay;
+function GDK_SCREEN_XSCREEN(screen : PGdkScreen) : PScreen;
+function GDK_SCREEN_XNUMBER(screen : PGdkScreen) : longint;
+function GDK_VISUAL_XVISUAL(visual : PGdkVisual) : PVisual;
+
+function gdkx_visual_get_for_screen(screen:PGdkScreen; xvisualid:TVisualID):PGdkVisual;cdecl;external;
+
+{$ifndef GDK_MULTIHEAD_SAFE}
+
+function gdkx_visual_get(xvisualid:TVisualID):PGdkVisual;cdecl;external;
+
+{$endif}
+{ XXX: Do not use this function until it is fixed. An X Colormap
+        is useless unless we also have the visual.  }
+function gdkx_colormap_get(xcolormap:TColormap):PGdkColormap;cdecl;external;
+
+{ Return the Gdk  for a particular XID  }
+function gdk_xid_table_lookup_for_display(display:PGdkDisplay; xid:TXID):gpointer;cdecl;external;
+
+function gdk_x11_get_server_time(window:PGdkWindow):guint32;cdecl;external;
+
+{ returns TRUE if we support the given WM spec feature  }
+function gdk_x11_screen_supports_net_wm_hint(screen:PGdkScreen; _property:TGdkAtom):gboolean;cdecl;external;
+
+{$ifndef GDK_MULTIHEAD_SAFE}
+
+function gdk_xid_table_lookup(xid:TXID):gpointer;cdecl;external;
+function gdk_net_wm_supports(_property:TGdkAtom):gboolean;cdecl;external;
+procedure gdk_x11_grab_server;cdecl;external;
+procedure gdk_x11_ungrab_server;cdecl;external;
+
+{$endif}
+
+function gdk_x11_lookup_xdisplay(xdisplay:PDisplay):PGdkDisplay;cdecl;external;
+
+{ Functions to get the X Atom equivalent to the GdkAtom  }
+function gdk_x11_atom_to_xatom_for_display(display:PGdkDisplay; atom:TGdkAtom):TAtom;cdecl;external;
+
+function gdk_x11_xatom_to_atom_for_display(display:PGdkDisplay; xatom:TAtom):TGdkAtom;cdecl;external;
+
+(* Const before type ignored *)
+function gdk_x11_get_xatom_by_name_for_display(display:PGdkDisplay; atom_name:Pgchar):TAtom;cdecl;external;
+
+(* Const before type ignored *)
+function gdk_x11_get_xatom_name_for_display(display:PGdkDisplay; xatom:TAtom):Pgchar;cdecl;external;
+
+{$ifndef GDK_MULTIHEAD_SAFE}
+function gdk_x11_atom_to_xatom(atom:TGdkAtom):TAtom;cdecl;external;
+function gdk_x11_xatom_to_atom(xatom:TAtom):TGdkAtom;cdecl;external;
+(* Const before type ignored *)
+function gdk_x11_get_xatom_by_name(atom_name:Pgchar):TAtom;cdecl;external;
+(* Const before type ignored *)
+function gdk_x11_get_xatom_name(xatom:TAtom):Pgchar;cdecl;external;
+{$endif}
+
+{$ifdef GDK_ENABLE_DEPRECATED}
+function gdk_x11_font_get_xdisplay(font:PGdkFont):PDisplay;cdecl;external;
+function gdk_x11_font_get_xfont(font:PGdkFont):gpointer;cdecl;external;
+(* Const before type ignored *)
+function gdk_x11_font_get_name(font:PGdkFont):Pchar;cdecl;external;
+function GDK_FONT_XDISPLAY(font : PGdkFont): PDisplay;
+function GDK_FONT_XFONT(font : PGdkFont): gpointer;
+
+{$ifndef GDK_MULTIHEAD_SAFE}
+function gdk_font_lookup(xid : TXID) : PGdkFont;
+{$endif}
+
+function gdk_font_lookup_for_display(display:PGdkDisplay; xid:TXID) : PGdkFont;
+
+procedure gdk_x11_display_grab(display:PGdkDisplay);cdecl;external;
+
+procedure gdk_x11_display_ungrab(display:PGdkDisplay);cdecl;external;
+{$endif GDK_ENABLE_DEPRECATED}
+
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+
+
+function GDK_COLORMAP_XDISPLAY(cmap : PGdkColormap) : PDisplay;
+begin
+   GDK_COLORMAP_XDISPLAY:=gdk_x11_colormap_get_xdisplay(cmap);
+end;
+
+function GDK_COLORMAP_XCOLORMAP(cmap : PGdkColormap) : TColormap;
+begin
+   GDK_COLORMAP_XCOLORMAP:=gdk_x11_colormap_get_xcolormap(cmap);
+end;
+
+function GDK_CURSOR_XDISPLAY(cursor : PGdkCursor) : PDisplay;
+begin
+   GDK_CURSOR_XDISPLAY:=gdk_x11_cursor_get_xdisplay(cursor);
+end;
+
+function GDK_CURSOR_XCURSOR(cursor : PGdkCursor) : TCursor;
+begin
+   GDK_CURSOR_XCURSOR:=gdk_x11_cursor_get_xcursor(cursor);
+end;
+
+function GDK_IMAGE_XDISPLAY(image : PGdkImage) : PDisplay;
+begin
+   GDK_IMAGE_XDISPLAY:=gdk_x11_image_get_xdisplay(image);
+end;
+
+function GDK_IMAGE_XIMAGE(image : PGdkImage) : PXImage;
+begin
+   GDK_IMAGE_XIMAGE:=gdk_x11_image_get_ximage(image);
+end;
+
+function GDK_DRAWABLE_XDISPLAY(win : PGdkDrawable) : PDisplay;
+var
+   if_local1 : PDisplay;
+begin
+   if GDK_IS_WINDOW(win) then
+     if_local1:=GDK_WINDOW_XDISPLAY(win)
+   else
+     if_local1:=GDK_PIXMAP_XDISPLAY(win);
+   GDK_DRAWABLE_XDISPLAY:=if_local1;
+end;
+
+function GDK_DRAWABLE_XID(win : PGdkDrawable) : TWindow;
+var
+   if_local1 : TWindow;
+begin
+   if GDK_IS_WINDOW(win) then
+     if_local1:=GDK_WINDOW_XID(win)
+   else
+     if_local1:=GDK_PIXMAP_XID(win);
+   GDK_DRAWABLE_XID:=if_local1;
+end;
+
+function GDK_GC_XDISPLAY(gc : PGdkGC) : PDisplay;
+begin
+   GDK_GC_XDISPLAY:=GDK_SCREEN_XDISPLAY((GDK_GC_X11(gc))^.screen);
+end;
+
+function GDK_GC_XGC(gc : PGdkGC) : TGC;
+begin
+   GDK_GC_XGC:=(GDK_GC_X11(gc))^.xgc;
+end;
+
+function GDK_SCREEN_XSCREEN(screen : PGdkScreen) : PScreen;
+begin
+   GDK_SCREEN_XSCREEN:=(GDK_SCREEN_X11(screen))^.xscreen;
+end;
+
+function GDK_SCREEN_XNUMBER(screen : PGdkScreen) : longint;
+begin
+   GDK_SCREEN_XNUMBER:=(GDK_SCREEN_X11(screen))^.screen_num;
+end;
+
+function GDK_VISUAL_XVISUAL(visual : PGdkVisual) : PVisual;
+begin
+   GDK_VISUAL_XVISUAL:=(PGdkVisualPrivate(visual))^.xvisual;
+end;
+
+function GDK_GC_GET_XGC(gc : PGdkGC) : TGC;
+var
+   if_local1 : TGC;
+begin
+   if_local1:=(PGdkGCX11(gc))^.xgc;
+   if (GDK_GC_X11(gc))^.dirty_mask=gTRUE then begin
+     //if_local1:=_gdk_x11_gc_flush(gc)
+   end;
+   GDK_GC_GET_XGC:=if_local1;
+end;
+
+function GDK_ROOT_WINDOW : TWindow;
+begin
+   GDK_ROOT_WINDOW:=gdk_x11_get_default_root_xwindow;
+end;
+
+function GDK_DISPLAY_XDISPLAY(display : PGdkDisplay) : PDisplay;
+begin
+   GDK_DISPLAY_XDISPLAY:=gdk_x11_display_get_xdisplay(display);
+end;
+
+function GDK_WINDOW_XDISPLAY(win : PGdkDrawable) : PDisplay;
+begin
+   GDK_WINDOW_XDISPLAY:=gdk_x11_drawable_get_xdisplay((PGdkWindowObject(win))^.impl);
+end;
+
+function GDK_WINDOW_XID(win : PGdkDrawable) : TXID;
+begin
+   GDK_WINDOW_XID:=gdk_x11_drawable_get_xid(win);
+end;
+
+function GDK_WINDOW_XWINDOW(win : PGdkDrawable) : TXID;
+begin
+   GDK_WINDOW_XWINDOW:=gdk_x11_drawable_get_xid(win);
+end;
+
+function GDK_PIXMAP_XDISPLAY(win : PGdkDrawable) : PDisplay;
+begin
+   GDK_PIXMAP_XDISPLAY:=gdk_x11_drawable_get_xdisplay((PGdkPixmapObject(win))^.impl);
+end;
+
+function GDK_PIXMAP_XID(win : PGdkDrawable) : TXID;
+begin
+   GDK_PIXMAP_XID:=gdk_x11_drawable_get_xid(win);
+end;
+
+function GDK_SCREEN_XDISPLAY(screen : PGdkScreen) : PDisplay;
+begin
+   GDK_SCREEN_XDISPLAY:=gdk_x11_display_get_xdisplay(gdk_screen_get_display(screen));
+end;
+
+{$ifdef GDK_ENABLE_DEPRECATED}
+function GDK_FONT_XDISPLAY(font : PGdkFont): PDisplay;
+begin
+   GDK_FONT_XDISPLAY:=gdk_x11_font_get_xdisplay(font);
+end;
+
+function gdk_font_lookup(xid : TXID) : PGdkFont;
+begin
+   gdk_font_lookup:=PGdkFont(gdk_xid_table_lookup(xid));
+end;
+
+function GDK_FONT_XFONT(font : PGdkFont): gpointer;
+begin
+   GDK_FONT_XFONT:=gdk_x11_font_get_xfont(font);
+end;
+
+function gdk_font_lookup_for_display(display:PGdkDisplay; xid:TXID) : PGdkFont;
+begin
+   gdk_font_lookup_for_display:=PGdkFont(gdk_xid_table_lookup_for_display(display,xid));
+end;
+{$ENDIF GDK_ENABLE_DEPRECATED}
+
+
+{$ENDIF read_implementation}
+

+ 52 - 0
packages/extra/gtk2/gtk2x11/include/gxid_proto.inc

@@ -0,0 +1,52 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+
+const
+   GXID_CLAIM_DEVICE = 1;
+   GXID_RELEASE_DEVICE = 2;
+   GXID_RETURN_OK = 0;
+   GXID_RETURN_ERROR = -(1);
+
+type
+   PGxidMessage = ^TGxidMessage;
+
+   PGxidU32 = ^TGxidU32;
+   TGxidU32 = dword;
+
+   PGxidI32 = ^TGxidI32;
+   TGxidI32 = longint;
+   TGxidClaimDevice = record
+        _type : TGxidU32;
+        length : TGxidU32;
+        device : TGxidU32;
+        window : TGxidU32;
+        exclusive : TGxidU32;
+     end;
+
+   TGxidReleaseDevice = record
+        _type : TGxidU32;
+        length : TGxidU32;
+        device : TGxidU32;
+        window : TGxidU32;
+     end;
+
+   TGxidMessageAny = record
+        _type : TGxidU32;
+        length : TGxidU32;
+     end;
+
+   TGxidMessage = record
+       case longint of
+          0 : ( any : TGxidMessageAny );
+          1 : ( claim : TGxidClaimDevice );
+          2 : ( release : TGxidReleaseDevice );
+       end;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+{$ENDIF read_implementation}
+

+ 109 - 0
packages/extra/gtk2/gtk2x11/include/mwmutil.inc

@@ -0,0 +1,109 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+
+type
+   PMotifWmHints = ^TMotifWmHints;
+   TMotifWmHints = record
+        flags : dword;
+        functions : dword;
+        decorations : dword;
+        input_mode : longint;
+        status : dword;
+     end;
+   TMwmHints = TMotifWmHints;
+   PMwmHints = ^TMwmHints;
+
+const
+   MWM_HINTS_FUNCTIONS = 1 shl 0;
+   MWM_HINTS_DECORATIONS = 1 shl 1;
+   MWM_HINTS_INPUT_MODE = 1 shl 2;
+   MWM_HINTS_STATUS = 1 shl 3;
+   MWM_FUNC_ALL = 1 shl 0;
+   MWM_FUNC_RESIZE = 1 shl 1;
+   MWM_FUNC_MOVE = 1 shl 2;
+   MWM_FUNC_MINIMIZE = 1 shl 3;
+   MWM_FUNC_MAXIMIZE = 1 shl 4;
+   MWM_FUNC_CLOSE = 1 shl 5;
+   MWM_DECOR_ALL = 1 shl 0;
+   MWM_DECOR_BORDER = 1 shl 1;
+   MWM_DECOR_RESIZEH = 1 shl 2;
+   MWM_DECOR_TITLE = 1 shl 3;
+   MWM_DECOR_MENU = 1 shl 4;
+   MWM_DECOR_MINIMIZE = 1 shl 5;
+   MWM_DECOR_MAXIMIZE = 1 shl 6;
+   MWM_INPUT_MODELESS = 0;
+   MWM_INPUT_PRIMARY_APPLICATION_MODAL = 1;
+   MWM_INPUT_SYSTEM_MODAL = 2;
+   MWM_INPUT_FULL_APPLICATION_MODAL = 3;
+   MWM_INPUT_APPLICATION_MODAL = MWM_INPUT_PRIMARY_APPLICATION_MODAL;
+   MWM_TEAROFF_WINDOW = 1 shl 0;
+
+{ atoms}
+   _XA_MOTIF_BINDINGS = '_MOTIF_BINDINGS';
+   _XA_MOTIF_WM_HINTS = '_MOTIF_WM_HINTS';
+   _XA_MOTIF_WM_MESSAGES = '_MOTIF_WM_MESSAGES';
+   _XA_MOTIF_WM_OFFSET = '_MOTIF_WM_OFFSET';
+   _XA_MOTIF_WM_MENU = '_MOTIF_WM_MENU';
+   _XA_MOTIF_WM_INFO = '_MOTIF_WM_INFO';
+   _XA_MWM_HINTS = _XA_MOTIF_WM_HINTS;
+   _XA_MWM_MESSAGES = _XA_MOTIF_WM_MESSAGES;
+   _XA_MWM_MENU = _XA_MOTIF_WM_MENU;
+   _XA_MWM_INFO = _XA_MOTIF_WM_INFO;
+
+{ _MWM_INFO property }
+
+type
+   PMotifWmInfo = ^TMotifWmInfo;
+   TMotifWmInfo = record
+        flags : longint;
+        wm_window : TWindow;
+     end;
+
+   PMwmInfo = ^TMwmInfo;
+   TMwmInfo = TMotifWmInfo;
+
+const
+   MWM_INFO_STARTUP_STANDARD = 1 shl 0;
+   MWM_INFO_STARTUP_CUSTOM = 1 shl 1;
+
+{ _MWM_HINTS property }
+type
+   PPropMotifWmHints = ^TPropMotifWmHints;
+   TPropMotifWmHints = record
+        flags : dword;
+        functions : dword;
+        decorations : dword;
+        inputMode : longint;
+        status : dword;
+     end;
+
+   PPropMwmHints = ^TPropMwmHints;
+   TPropMwmHints = TPropMotifWmHints;
+
+const
+   PROP_MOTIF_WM_HINTS_ELEMENTS = 5;
+   PROP_MWM_HINTS_ELEMENTS = PROP_MOTIF_WM_HINTS_ELEMENTS;
+
+{ _MWM_INFO property, slight return }
+type
+   PPropMotifWmInfo = ^TPropMotifWmInfo;
+   TPropMotifWmInfo = record
+        flags : dword;
+        wmWindow : dword;
+     end;
+
+   PPropMwmInfo = ^TPropMwmInfo;
+   TPropMwmInfo = TPropMotifWmInfo;
+
+const
+   PROP_MOTIF_WM_INFO_ELEMENTS = 2;
+   PROP_MWM_INFO_ELEMENTS = PROP_MOTIF_WM_INFO_ELEMENTS;
+
+{$ENDIF read_interface_rest}
+
+//------------------------------------------------------------------------------
+
+{$IFDEF read_implementation}
+{$ENDIF read_implementation}
+

+ 27 - 0
packages/extra/gtk2/gtk2x11/include/xsettings-client.inc

@@ -0,0 +1,27 @@
+{%MainUnit ../gdk2x.pas}
+{$IFDEF read_interface_rest}
+type
+  PXSettingsAction = ^TXSettingsAction;
+  TXSettingsAction =  Longint;
+  
+Const
+  XSETTINGS_ACTION_NEW = 0;
+  XSETTINGS_ACTION_CHANGED = 1;
+  XSETTINGS_ACTION_DELETED = 2;
+
+type
+  // this PXSettingsClient needs to be removed when there are xcl.h bindings for fpc
+  PXSettingsClient = pointer;
+
+type
+  TXSettingsNotifyFunc = procedure (name:Pchar; action:TXSettingsAction; setting:PXSettingsSetting; cb_data:pointer);cdecl;
+
+  TXSettingsWatchFunc = procedure (window:TWindow; is_start:TBool; mask:longint; cb_data:pointer);cdecl;
+
+function xsettings_client_new(display:PDisplay; screen:longint; notify:TXSettingsNotifyFunc; watch:TXSettingsWatchFunc; cb_data:pointer):PXSettingsClient;cdecl;external;
+procedure xsettings_client_destroy(client:PXSettingsClient);cdecl;external;
+function xsettings_client_process_event(client:PXSettingsClient; xev:PXEvent):TBool;cdecl;external;
+function xsettings_client_get_setting(client:PXSettingsClient; name:Pchar; setting:PPXSettingsSetting):TXSettingsResult;cdecl;external;
+
+{$ENDIF read_interface_rest}
+

+ 111 - 0
packages/extra/gtk2/gtk2x11/include/xsettings-common.inc

@@ -0,0 +1,111 @@
+{%MainUnit ../gdk2x.pas}
+
+{$IFDEF read_interface_rest}
+
+{ Renames for GDK inclusion  }
+
+{const
+   xsettings_byte_order = _gdk_xsettings_byte_order;
+   xsettings_client_destroy = _gdk_xsettings_client_destroy;
+   xsettings_client_get_setting = _gdk_xsettings_client_get_setting;
+   xsettings_client_new = _gdk_xsettings_client_new;
+   xsettings_client_process_event = _gdk_xsettings_client_process_event;
+   xsettings_list_copy = _gdk_xsettings_list_copy;
+   xsettings_list_delete = _gdk_xsettings_list_delete;
+   xsettings_list_free = _gdk_xsettings_list_free;
+   xsettings_list_insert = _gdk_xsettings_list_insert;
+   xsettings_list_lookup = _gdk_xsettings_list_lookup;
+   xsettings_setting_copy = _gdk_xsettings_setting_copy;
+   xsettings_setting_equal = _gdk_xsettings_setting_equal;
+   xsettings_setting_free = _gdk_xsettings_setting_free;}
+
+type
+{ Types of settings possible. Enum values correspond to protocol values. }
+
+   PXSettingsType = ^TXSettingsType;
+   TXSettingsType =  Longint;
+
+Const
+   XSETTINGS_TYPE_INT = 0;
+   XSETTINGS_TYPE_STRING = 1;
+   XSETTINGS_TYPE_COLOR = 2;
+
+type
+   PXSettingsResult = ^TXSettingsResult;
+   TXSettingsResult =  Longint;
+
+Const
+   XSETTINGS_SUCCESS = 0;
+   XSETTINGS_NO_MEM = 1;
+   XSETTINGS_ACCESS = 2;
+   XSETTINGS_FAILED = 3;
+   XSETTINGS_NO_ENTRY = 4;
+   XSETTINGS_DUPLICATE_ENTRY = 5;
+
+type
+   PXSettingsBuffer = ^TXSettingsBuffer;
+   TXSettingsBuffer = record
+        byte_order : char;
+        len : size_t;
+        data : Pbyte;
+        pos : Pbyte;
+     end;
+
+   PXSettingsColor = ^TXSettingsColor;
+   TXSettingsColor = record
+        red : word;
+        green : word;
+        blue : word;
+        alpha : word;
+     end;
+
+   PXSettingsSetting = ^TXSettingsSetting;
+   TXSettingsSetting = record
+        name : Pchar;
+        _type : TXSettingsType;
+        data : record
+            case longint of
+               0 : ( v_int : longint );
+               1 : ( v_string : Pchar );
+               2 : ( v_color : TXSettingsColor );
+            end;
+        last_change_serial : dword;
+     end;
+   PPXSettingsSetting = ^PXSettingsSetting;
+
+   PXSettingsList = ^TXSettingsList;
+   TXSettingsList = record
+        setting : PXSettingsSetting;
+        next : PXSettingsList;
+     end;
+   PPXSettingsList = ^PXSettingsList;
+
+
+function xsettings_setting_copy(setting:PXSettingsSetting):PXSettingsSetting;cdecl;external;
+procedure xsettings_setting_free(setting:PXSettingsSetting);cdecl;external;
+function xsettings_setting_equal(setting_a:PXSettingsSetting; setting_b:PXSettingsSetting):longint;cdecl;external;
+procedure xsettings_list_free(list:PXSettingsList);cdecl;external;
+function xsettings_list_copy(list:PXSettingsList):PXSettingsList;cdecl;external;
+function xsettings_list_insert(list:PPXSettingsList; setting:PXSettingsSetting):TXSettingsResult;cdecl;external;
+
+(* Const before type ignored *)
+function xsettings_list_lookup(list:PXSettingsList; name:Pchar):PXSettingsSetting;cdecl;external;
+
+(* Const before type ignored *)
+function xsettings_list_delete(list:PPXSettingsList; name:Pchar):TXSettingsResult;cdecl;external;
+
+function xsettings_byte_order:char;cdecl;external;
+
+function XSETTINGS_PAD(n,m : longint) : longint;
+
+{$ENDIF read_interface_rest}
+
+{$IFDEF read_implementation}
+
+function XSETTINGS_PAD(n,m : longint) : longint;
+  begin
+     XSETTINGS_PAD:=((n + m) - 1) and ( not (m - 1));
+  end;
+
+{$ENDIF read_implementation}
+

+ 48 - 0
packages/extra/gtk2/gtk2x11/scripts/gdkx11_h2pas.sh

@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+#set -x
+set -e
+
+# make sure, we are in the right directory
+cd ../scripts
+
+CHeaderDir=../c_src/x11
+PascalIncDir=../include
+HTmpFile=temp.h
+PasTmpFile=temp.inc
+
+HFiles=$(ls $CHeaderDir/*.h)
+for HFile in $HFiles; do
+  echo $HFile
+  ShortHFile=$(echo $HFile | sed -e 's#.*/##')
+  ShortPascalFile=$(echo $ShortHFile | sed -e 's#\.h$#.inc#')
+  echo $ShortPascalFile
+  PascalFile=$PascalIncDir/$ShortPascalFile
+  cat $HFile | sed \
+    -e 's#G_BEGIN_DECLS##g' \
+    -e 's#G_END_DECLS##g' \
+    -e 's#G_CONST_RETURN#const#g' \
+    > $HTmpFile
+
+  h2pas -d -e -i -p -t -o $PasTmpFile $HTmpFile
+  cat $PasTmpFile | sed \
+    -e 's#\bT\(gint\)\b#\1#g' \
+    -e 's#\bT\(guint\)\b#\1#g' \
+    -e 's#\bT\(gboolean\)\b#\1#g' \
+    -e 's#\bT\(glong\)\b#\1#g' \
+    -e 's#\bT\(gulong\)\b#\1#g' \
+    -e 's#\bT\(gchar\)\b#\1#g' \
+    -e 's#\bT\(guchar\)\b#\1#g' \
+    -e 's#\bT\(gshort\)\b#\1#g' \
+    -e 's#\bT\(gushort\)\b#\1#g' \
+    -e 's#\bT\(gfloat\)\b#\1#g' \
+    -e 's#\bT\(gdouble\)\b#\1#g' \
+    -e 's#\bT\(gpointer\)\b#\1#g' \
+    -e 's#\bT\(gconstpointer\)\b#\1#g' \
+    -e 's#\bT\(guint32\)\b#\1#g' \
+    > $PascalFile
+done
+
+
+# end.
+