aboutsummaryrefslogtreecommitdiffstats
path: root/packages/gtk+
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2005-06-30 08:19:37 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-06-30 08:19:37 +0000
commitc8e5702127e507e82e6f68a4b8c546803accea9d (patch)
tree00583491f40ecc640f2b28452af995e3a63a09d7 /packages/gtk+
parent87ec8ca4d2e2eb4d1c1e1e1a6b46a395d56805b9 (diff)
downloadopenembedded-c8e5702127e507e82e6f68a4b8c546803accea9d.tar.gz
openembedded-c8e5702127e507e82e6f68a4b8c546803accea9d.tar.bz2
openembedded-c8e5702127e507e82e6f68a4b8c546803accea9d.zip
import clean BK tree at cset 1.3670
Diffstat (limited to 'packages/gtk+')
-rw-r--r--packages/gtk+/.mtn2git_empty0
-rw-r--r--packages/gtk+/files/.mtn2git_empty0
-rw-r--r--packages/gtk+/files/migration.patch619
-rw-r--r--packages/gtk+/gtk+-1.2-1.2.10/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix689
-rw-r--r--packages/gtk+/gtk+-1.2-1.2.10/no-xwc267
-rw-r--r--packages/gtk+/gtk+-1.2-1.2.10/timezone-fix.patch15
-rw-r--r--packages/gtk+/gtk+-2.2.4/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.2.4/automake-lossage.patch446
-rw-r--r--packages/gtk+/gtk+-2.2.4/configure-lossage.patch12
-rw-r--r--packages/gtk+/gtk+-2.2.4/glib-2.0.m4212
-rw-r--r--packages/gtk+/gtk+-2.2.4/glib-gettext.m4380
-rw-r--r--packages/gtk+/gtk+-2.2.4/libtool-lossage.patch20
-rw-r--r--packages/gtk+/gtk+-2.2.4/no-demos.patch15
-rw-r--r--packages/gtk+/gtk+-2.2.4/no-xwc.patch148
-rw-r--r--packages/gtk+/gtk+-2.4.13/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.4.13/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.4.13/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.4.13/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.4.13/gtk-doc.m453
-rw-r--r--packages/gtk+/gtk+-2.4.13/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.4.13/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.4.13/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.4.13/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.4.13/no-xwc.patch148
-rw-r--r--packages/gtk+/gtk+-2.4.13/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.4.13/single-click.patch48
-rw-r--r--packages/gtk+/gtk+-2.4.13/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.4.13/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.4.13/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.4.4/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.4.4/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.4.4/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.4.4/gtk-doc.m453
-rw-r--r--packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.4.4/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.4.4/no-xwc.patch148
-rw-r--r--packages/gtk+/gtk+-2.4.4/single-click.patch48
-rw-r--r--packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.4.4/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.0/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.6.0/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.6.0/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.0/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.6.0/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.6.0/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.6.0/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.6.0/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.6.0/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.6.0/single-click.patch48
-rw-r--r--packages/gtk+/gtk+-2.6.0/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.6.0/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.0/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.6.1/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.6.1/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.6.1/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.1/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.6.1/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.6.1/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.6.1/ltr.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.1/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.6.1/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.6.1/no-xwc.patch151
-rw-r--r--packages/gtk+/gtk+-2.6.1/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.6.1/single-click.patch48
-rw-r--r--packages/gtk+/gtk+-2.6.1/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.6.1/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.1/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.6.2/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.6.2/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.6.2/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.2/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.6.2/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.6.2/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.6.2/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.6.2/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.6.2/no-xwc.patch151
-rw-r--r--packages/gtk+/gtk+-2.6.2/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.6.2/single-click.patch48
-rw-r--r--packages/gtk+/gtk+-2.6.2/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.6.2/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.2/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.6.3/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.6.3/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.6.3/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.6.3/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.6.3/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.6.3/no-xwc.patch151
-rw-r--r--packages/gtk+/gtk+-2.6.3/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.6.3/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.3/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch26
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch33
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch18
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff1885
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff53
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff38
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff10
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff27
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff292
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff17
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff471
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff23
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff2464
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff12
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff66
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff11
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff19
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff10
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff520
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff950
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcomboboxentry.c.diff24
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkcontainer.c.diff284
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkdialog.c.diff451
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkdnd.c.diff12
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkentry.c.diff1308
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkenums.h.diff15
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.c.diff12
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.h.diff12
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkframe.c.diff82
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.c.diff102
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.h.diff64
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff344
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkhseparator.c.diff40
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkiconfactory.c.diff69
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkicontheme.c.diff48
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.c.diff52
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.h.diff29
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkimmulticontext.c.diff155
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.c.diff390
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.h.diff29
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmain.c.diff35
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.c.diff266
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.h.diff284
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.c.diff606
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.h.diff622
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.c.diff1223
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.h.diff12
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.c.diff457
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.h.diff10
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.c.diff490
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.h.diff12
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtknotebook.c.diff831
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogress.c.diff20
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogressbar.c.diff141
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkradiobutton.c.diff244
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.c.diff845
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.h.diff29
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkrbtree.c.diff48
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.c.diff581
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.h.diff19
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkscrolledwindow.c.diff162
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparator.c.diff21
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparatortoolitem.c.diff90
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtksettings.c.diff66
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkspinbutton.c.diff50
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.c.diff250
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.h.diff13
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktable.c.diff95
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.c.diff443
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.h.diff17
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.c.diff1688
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.h.diff40
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktextview.c.diff417
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff252
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.c.diff65
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.h.diff10
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelfilter.c.diff52
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelsort.c.diff21
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeprivate.h.diff58
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeselection.c.diff91
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.c.diff2253
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.h.diff18
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeviewcolumn.c.diff51
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.c.diff86
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.h.diff24
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkvseparator.c.diff45
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.c.diff1046
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.h.diff59
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff78
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.h.diff13
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/io-gif-animation.c.diff108
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/io-gif.c.diff37
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/no-xwc.patch151
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/single-click.patch54
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+-2.6.7/.mtn2git_empty0
-rw-r--r--packages/gtk+/gtk+-2.6.7/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.6.7/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.6.7/gtk+-handhelds.patch236
-rw-r--r--packages/gtk+/gtk+-2.6.7/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.6.7/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.6.7/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.6.7/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.6.7/no-xwc.patch151
-rw-r--r--packages/gtk+/gtk+-2.6.7/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.6.7/single-click.patch54
-rw-r--r--packages/gtk+/gtk+-2.6.7/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.6.7/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.6.7/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+_2.6.4-1.osso7.bb165
219 files changed, 35763 insertions, 0 deletions
diff --git a/packages/gtk+/.mtn2git_empty b/packages/gtk+/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/.mtn2git_empty
diff --git a/packages/gtk+/files/.mtn2git_empty b/packages/gtk+/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/files/.mtn2git_empty
diff --git a/packages/gtk+/files/migration.patch b/packages/gtk+/files/migration.patch
index e69de29bb2..f4c7f853ad 100644
--- a/packages/gtk+/files/migration.patch
+++ b/packages/gtk+/files/migration.patch
@@ -0,0 +1,619 @@
+Index: configure.in
+===================================================================
+RCS file: /cvs/gnome/gtk+/configure.in,v
+retrieving revision 1.419.2.4
+diff -u -r1.419.2.4 configure.in
+--- configure.in 8 Feb 2005 21:39:42 -0000 1.419.2.4
++++ configure.in 27 Feb 2005 13:10:16 -0000
+@@ -1495,6 +1495,16 @@
+ GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
+ GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
+
++AC_ARG_ENABLE(display-migration,
++ [AC_HELP_STRING([--enable-display-migration],
++ [include support for GPE_CHANGE_DISPLAY protocol])],
++ enable_migration=yes, enable_migration=no)
++if test "$enable_migration" = "yes"; then
++ AC_DEFINE([ENABLE_MIGRATION], 1, [Define if display migration is enabled])
++ GTK_DEP_LIBS="$GTK_DEP_LIBS -lgcrypt"
++fi
++AM_CONDITIONAL(ENABLE_MIGRATION, test $enable_migration = "yes")
++
+ AC_SUBST(GTK_PACKAGES)
+ AC_SUBST(GTK_EXTRA_LIBS)
+ AC_SUBST(GTK_EXTRA_CFLAGS)
+Index: gtk/Makefile.am
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/Makefile.am,v
+retrieving revision 1.266.2.1
+diff -u -r1.266.2.1 Makefile.am
+--- gtk/Makefile.am 13 Jan 2005 15:18:21 -0000 1.266.2.1
++++ gtk/Makefile.am 27 Feb 2005 13:10:17 -0000
+@@ -520,6 +520,10 @@
+ gtkwindow.c \
+ xembed.h
+
++if ENABLE_MIGRATION
++gtk_c_sources += gtkmigration.c
++endif
++
+ if OS_UNIX
+ gtk_private_h_sources += gtkfilesystemunix.h
+ gtk_c_sources += gtkfilesystemunix.c
+Index: gtk/gtkmain.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkmain.c,v
+retrieving revision 1.255
+diff -u -r1.255 gtkmain.c
+--- gtk/gtkmain.c 27 Dec 2004 05:25:15 -0000 1.255
++++ gtk/gtkmain.c 27 Feb 2005 13:10:19 -0000
+@@ -491,6 +491,10 @@
+ _gtk_accel_map_init ();
+ _gtk_rc_init ();
+
++#ifdef ENABLE_MIGRATION
++ gtk_migration_init ();
++#endif
++
+ /* Set the 'initialized' flag.
+ */
+ gtk_initialized = TRUE;
+Index: gtk/gtkwindow.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkwindow.c,v
+retrieving revision 1.281.2.4
+diff -u -r1.281.2.4 gtkwindow.c
+--- gtk/gtkwindow.c 21 Feb 2005 04:21:49 -0000 1.281.2.4
++++ gtk/gtkwindow.c 27 Feb 2005 13:10:56 -0000
+@@ -731,6 +731,8 @@
+ add_tab_bindings (binding_set, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
+ }
+
++extern void gtk_migration_mark_window (GtkWidget *w);
++
+ static void
+ gtk_window_init (GtkWindow *window)
+ {
+@@ -790,6 +792,10 @@
+ "event",
+ G_CALLBACK (gtk_window_event),
+ NULL);
++
++#ifdef ENABLE_MIGRATION
++ gtk_migration_mark_window (window);
++#endif
+ }
+
+ static void
+--- /dev/null 2005-02-20 01:07:50.714416160 +0000
++++ gtk/gtkmigration.c 2005-02-27 15:05:04.052757352 +0000
+@@ -0,0 +1,529 @@
++/*
++ * Copyright (C) 2003, 2005 Philip Blundell <philb@gnu.org>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#include <stdlib.h>
++#include <ctype.h>
++#include <libintl.h>
++#include <string.h>
++#include <assert.h>
++
++#include <X11/X.h>
++#include <X11/Xlib.h>
++#include <X11/Xatom.h>
++
++#include <gcrypt.h>
++
++#include "gtk.h"
++#include "gdk.h"
++#include "x11/gdkx.h"
++
++#define _(x) gettext(x)
++
++static GdkAtom string_gdkatom, display_change_gdkatom;
++static GdkAtom rsa_challenge_gdkatom;
++
++#define DISPLAY_CHANGE_SUCCESS 0
++#define DISPLAY_CHANGE_UNABLE_TO_CONNECT 1
++#define DISPLAY_CHANGE_NO_SUCH_SCREEN 2
++#define DISPLAY_CHANGE_AUTHENTICATION_BAD 3
++#define DISPLAY_CHANGE_INDETERMINATE_ERROR 4
++
++static gboolean no_auth;
++
++static GSList *all_widgets;
++
++static gboolean gtk_migration_initialised;
++
++#define CHALLENGE_LEN 64
++
++gchar *gtk_migration_auth_challenge_string;
++
++static unsigned char challenge_bytes[CHALLENGE_LEN];
++static unsigned long challenge_seq;
++
++#define hexbyte(x) ((x) >= 10 ? (x) + 'a' - 10 : (x) + '0')
++
++struct rsa_key
++{
++ gcry_mpi_t n, e, d, p, q, u;
++};
++
++static gcry_mpi_t
++mpi_from_sexp (gcry_sexp_t r, char *tag)
++{
++ gcry_sexp_t s = gcry_sexp_find_token (r, tag, 0);
++ return gcry_sexp_nth_mpi (s, 1, GCRYMPI_FMT_USG);
++}
++
++static char *
++hex_from_mpi (gcry_mpi_t m)
++{
++ char *buf;
++ gcry_mpi_aprint (GCRYMPI_FMT_HEX, (void *)&buf, NULL, m);
++ return buf;
++}
++
++static void
++gtk_migration_crypt_create_hash (char *display, char *challenge, size_t len, char *result)
++{
++ size_t dlen = strlen (display);
++ gchar *buf = g_malloc (dlen + 1 + len);
++ strcpy (buf, display);
++ memcpy (buf + dlen + 1, challenge, len);
++ gcry_md_hash_buffer (GCRY_MD_SHA1, result, buf, len + dlen + 1);
++ g_free (buf);
++}
++
++static int
++do_encode_md (const unsigned char *digest, size_t digestlen, int algo,
++ unsigned int nbits, gcry_mpi_t *r_val)
++{
++ int nframe = (nbits+7) / 8;
++ unsigned char *frame;
++ int i, n;
++ unsigned char asn[100];
++ size_t asnlen;
++
++ asnlen = sizeof(asn);
++ if (gcry_md_algo_info (algo, GCRYCTL_GET_ASNOID, asn, &asnlen))
++ return -1;
++
++ if (digestlen + asnlen + 4 > nframe )
++ return -1;
++
++ /* We encode the MD in this way:
++ *
++ * 0 1 PAD(n bytes) 0 ASN(asnlen bytes) MD(len bytes)
++ *
++ * PAD consists of FF bytes.
++ */
++ frame = g_malloc (nframe);
++ n = 0;
++ frame[n++] = 0;
++ frame[n++] = 1; /* block type */
++ i = nframe - digestlen - asnlen -3 ;
++ assert ( i > 1 );
++ memset ( frame+n, 0xff, i ); n += i;
++ frame[n++] = 0;
++ memcpy ( frame+n, asn, asnlen ); n += asnlen;
++ memcpy ( frame+n, digest, digestlen ); n += digestlen;
++ assert ( n == nframe );
++
++ gcry_mpi_scan (r_val, GCRYMPI_FMT_USG, frame, nframe, &nframe);
++ g_free (frame);
++ return 0;
++}
++
++static gboolean
++gtk_migration_crypt_check_signature (struct rsa_key *k, char *hash, char *sigbuf)
++{
++ gcry_mpi_t mpi, mpi2;
++ gcry_sexp_t data, sig, key;
++ int rc;
++
++ do_encode_md (hash, 20, GCRY_MD_SHA1, 1024, &mpi);
++
++ gcry_sexp_build (&data, NULL, "(data (value %m))", mpi);
++
++ gcry_mpi_release (mpi);
++
++ gcry_sexp_build (&key, NULL, "(public-key (rsa (n %m) (e %m)))", k->n, k->e);
++
++ if (gcry_mpi_scan (&mpi2, GCRYMPI_FMT_HEX, sigbuf, 0, NULL))
++ {
++ gcry_sexp_release (data);
++ return FALSE;
++ }
++
++ gcry_sexp_build (&sig, NULL, "(sig-val (rsa (s %m)))", mpi2);
++
++ rc = gcry_pk_verify (sig, data, key);
++
++ gcry_sexp_release (data);
++ gcry_sexp_release (key);
++ gcry_sexp_release (sig);
++ gcry_mpi_release (mpi2);
++
++ if (rc)
++ return FALSE;
++
++ return TRUE;
++}
++
++static void
++gtk_migration_auth_update_challenge (void)
++{
++ int i;
++ unsigned char *p;
++
++ if (gtk_migration_auth_challenge_string == NULL)
++ gtk_migration_auth_challenge_string = g_malloc ((CHALLENGE_LEN * 2) + 9);
++
++ p = gtk_migration_auth_challenge_string;
++
++ for (i = 0; i < CHALLENGE_LEN; i++)
++ {
++ *p++ = hexbyte (challenge_bytes[i] >> 4);
++ *p++ = hexbyte (challenge_bytes[i] & 15);
++ }
++
++ sprintf (p, "%08lx", challenge_seq++);
++}
++
++static void
++gtk_migration_auth_generate_challenge (void)
++{
++ gcry_randomize (challenge_bytes, sizeof (challenge_bytes), GCRY_STRONG_RANDOM);
++ gtk_migration_auth_update_challenge ();
++}
++
++static struct rsa_key *
++parse_pubkey (char *s)
++{
++ struct rsa_key *r;
++ gcry_mpi_t n, e;
++ gchar *sp;
++
++ sp = strtok (s, " \n");
++ gcry_mpi_scan (&e, GCRYMPI_FMT_HEX, sp, 0, NULL);
++ sp = strtok (NULL, " \n");
++ gcry_mpi_scan (&n, GCRYMPI_FMT_HEX, sp, 0, NULL);
++
++ r = g_malloc0 (sizeof (struct rsa_key));
++ r->e = e;
++ r->n = n;
++ return r;
++}
++
++static struct rsa_key *
++lookup_pubkey (u_int32_t id)
++{
++ const gchar *home_dir = g_get_home_dir ();
++ gchar *filename = g_strdup_printf ("%s/.gpe/migrate/public", home_dir);
++ FILE *fp = fopen (filename, "r");
++ struct rsa_key *r = NULL;
++
++ if (fp)
++ {
++ while (!feof (fp))
++ {
++ char buffer[4096];
++ if (fgets (buffer, 4096, fp))
++ {
++ char *p;
++ u_int32_t this_id = strtoul (buffer, &p, 16);
++ if (p != buffer && *p == ' ')
++ {
++#ifdef DEBUG
++ fprintf (stderr, "found id %x\n", this_id);
++#endif
++ if (this_id == id)
++ {
++ r = parse_pubkey (++p);
++ break;
++ }
++ }
++ }
++ }
++ fclose (fp);
++ }
++
++ g_free (filename);
++ return r;
++}
++
++static void
++free_pubkey (struct rsa_key *k)
++{
++ gcry_mpi_release (k->n);
++ gcry_mpi_release (k->e);
++
++ g_free (k);
++}
++
++static gboolean
++gtk_migration_auth_validate_request (char *display, char *data)
++{
++ u_int32_t key_id;
++ char *ep;
++ char *p;
++ struct rsa_key *k;
++ char hash[20];
++ gboolean rc;
++
++ p = strchr (data, ' ');
++ if (p == NULL)
++ return FALSE;
++ *p++ = 0;
++
++ key_id = strtoul (data, &ep, 16);
++ if (*ep)
++ return FALSE;
++
++ k = lookup_pubkey (key_id);
++ if (k == NULL)
++ return FALSE;
++
++ gtk_migration_crypt_create_hash (display, gtk_migration_auth_challenge_string,
++ strlen (gtk_migration_auth_challenge_string), hash);
++
++ rc = gtk_migration_crypt_check_signature (k, hash, p);
++
++ free_pubkey (k);
++
++ return rc;
++}
++
++static int
++do_change_display (GtkWidget *w, char *display_name)
++{
++ GdkDisplay *newdisplay;
++ guint screen_nr = 1;
++ guint i;
++
++ if (display_name[0] == 0)
++ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
++
++ i = strlen (display_name) - 1;
++ while (i > 0 && isdigit (display_name[i]))
++ i--;
++
++ if (display_name[i] == '.')
++ {
++ screen_nr = atoi (display_name + i + 1);
++ display_name[i] = 0;
++ }
++
++ newdisplay = gdk_display_open (display_name);
++ if (newdisplay)
++ {
++ GdkScreen *screen = gdk_display_get_screen (newdisplay, screen_nr);
++ if (screen)
++ {
++ gtk_window_set_screen (GTK_WINDOW (w), screen);
++ gdk_display_manager_set_default_display (gdk_display_manager_get (),
++ newdisplay);
++ return DISPLAY_CHANGE_SUCCESS;
++ }
++ else
++ return DISPLAY_CHANGE_NO_SUCH_SCREEN;
++ }
++
++ return DISPLAY_CHANGE_UNABLE_TO_CONNECT;
++}
++
++static void
++set_challenge_on_window (GdkWindow *window)
++{
++ gdk_property_change (window, rsa_challenge_gdkatom, string_gdkatom,
++ 8, GDK_PROP_MODE_REPLACE, gtk_migration_auth_challenge_string,
++ strlen (gtk_migration_auth_challenge_string));
++}
++
++static void
++update_challenge_on_windows (void)
++{
++ GSList *i;
++
++ gtk_migration_auth_update_challenge ();
++
++ for (i = all_widgets; i; i = i->next)
++ {
++ GtkWidget *w = GTK_WIDGET (i->data);
++ if (w->window)
++ set_challenge_on_window (w->window);
++ }
++}
++
++static void
++reset_state (GdkWindow *window)
++{
++ gdk_property_change (window, display_change_gdkatom, string_gdkatom,
++ 8, GDK_PROP_MODE_REPLACE, NULL, 0);
++}
++
++static void
++generate_response (GdkDisplay *gdisplay, Display *dpy, Window window, int code)
++{
++ XClientMessageEvent ev;
++ Atom atom = gdk_x11_atom_to_xatom_for_display (gdisplay,
++ display_change_gdkatom);
++
++ memset (&ev, 0, sizeof (ev));
++
++ ev.type = ClientMessage;
++ ev.window = window;
++ ev.message_type = atom;
++ ev.format = 32;
++
++ ev.data.l[0] = window;
++ ev.data.l[1] = code;
++
++ XSendEvent (dpy, DefaultRootWindow (dpy), False, SubstructureNotifyMask, (XEvent *)&ev);
++}
++
++static int
++handle_request (GdkWindow *gwindow, char *prop)
++{
++ GtkWidget *widget;
++ char *target, *auth_method, *auth_data;
++ char *p;
++
++ target = prop;
++ auth_method = "NULL";
++ auth_data = NULL;
++
++ p = strchr (prop, ' ');
++ if (p)
++ {
++ *p = 0;
++ auth_method = ++p;
++
++ p = strchr (p, ' ');
++ if (p)
++ {
++ *p = 0;
++ auth_data = ++p;
++ }
++ }
++
++ if (no_auth == FALSE)
++ {
++ if (!strcasecmp (auth_method, "null"))
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ else if (!strcasecmp (auth_method, "rsa-sig"))
++ {
++ if (gtk_migration_auth_validate_request (target, auth_data) == FALSE)
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ }
++ else
++ return DISPLAY_CHANGE_AUTHENTICATION_BAD;
++ }
++
++ gdk_window_get_user_data (gwindow, (gpointer*) &widget);
++
++ if (widget)
++ return do_change_display (widget, target);
++
++ return DISPLAY_CHANGE_INDETERMINATE_ERROR;
++}
++
++static GdkFilterReturn
++filter_func (GdkXEvent *xevp, GdkEvent *ev, gpointer p)
++{
++ XPropertyEvent *xev = (XPropertyEvent *)xevp;
++
++ if (xev->type == PropertyNotify)
++ {
++ GdkDisplay *gdisplay;
++ Atom atom;
++
++ gdisplay = gdk_x11_lookup_xdisplay (xev->display);
++ if (gdisplay)
++ {
++ atom = gdk_x11_atom_to_xatom_for_display (gdisplay, display_change_gdkatom);
++
++ if (xev->atom == atom)
++ {
++ GdkWindow *gwindow;
++
++ gwindow = gdk_window_lookup_for_display (gdisplay, xev->window);
++
++ if (gwindow)
++ {
++ GdkAtom actual_type;
++ gint actual_format;
++ gint actual_length;
++ unsigned char *prop = NULL;
++
++ if (gdk_property_get (gwindow, display_change_gdkatom, string_gdkatom,
++ 0, G_MAXLONG, FALSE, &actual_type, &actual_format,
++ &actual_length, &prop))
++ {
++ if (actual_length != 0)
++ {
++ if (actual_type == string_gdkatom && actual_length > 8)
++ {
++ gchar *buf = g_malloc (actual_length + 1);
++ int rc;
++
++ memcpy (buf, prop, actual_length);
++ buf[actual_length] = 0;
++
++ rc = handle_request (gwindow, buf);
++
++ g_free (buf);
++ generate_response (gdisplay, xev->display, xev->window, rc);
++
++ if (rc == DISPLAY_CHANGE_SUCCESS)
++ update_challenge_on_windows ();
++ }
++
++ reset_state (gwindow);
++ }
++ }
++
++ if (prop)
++ g_free (prop);
++ }
++ }
++
++ return GDK_FILTER_REMOVE;
++ }
++ }
++
++ return GDK_FILTER_CONTINUE;
++}
++
++static void
++unrealize_window (GtkWidget *w)
++{
++ all_widgets = g_slist_remove (all_widgets, w);
++}
++
++void
++gtk_migration_mark_window (GtkWidget *w)
++{
++ if (! gtk_migration_initialised)
++ {
++ g_warning ("gtk_migration not initialised yet");
++ return;
++ }
++
++ if (GTK_WIDGET_REALIZED (w))
++ {
++ GdkWindow *window = w->window;
++
++ gdk_window_add_filter (window, filter_func, NULL);
++
++ reset_state (window);
++ set_challenge_on_window (window);
++
++ all_widgets = g_slist_append (all_widgets, w);
++
++ g_signal_connect (G_OBJECT (w), "unrealize", G_CALLBACK (unrealize_window), NULL);
++ }
++ else
++ g_signal_connect (G_OBJECT (w), "realize", G_CALLBACK (gtk_migration_mark_window), NULL);
++}
++
++void
++gtk_migration_init (void)
++{
++ if (getenv ("GPE_DISPLAY_MIGRATION_NO_AUTH") != NULL)
++ no_auth = TRUE;
++
++ string_gdkatom = gdk_atom_intern ("STRING", FALSE);
++ display_change_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE", FALSE);
++ rsa_challenge_gdkatom = gdk_atom_intern ("_GPE_DISPLAY_CHANGE_RSA_CHALLENGE", FALSE);
++
++ gtk_migration_auth_generate_challenge ();
++
++ gtk_migration_initialised = TRUE;
++}
diff --git a/packages/gtk+/gtk+-1.2-1.2.10/.mtn2git_empty b/packages/gtk+/gtk+-1.2-1.2.10/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-1.2-1.2.10/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix b/packages/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix
index e69de29bb2..a406235bae 100644
--- a/packages/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix
+++ b/packages/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix
@@ -0,0 +1,689 @@
+fixup configure.in, acinclude.m4 and Makefile.am's for reconfigurability. make
+gtk-config use pkg-config
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gtk+-1.2.10/configure.in~gtk+1.2-reconf-fix
++++ gtk+-1.2.10/configure.in
+@@ -17,7 +17,9 @@
+
+ dnl we need to AC_DIVERT_PUSH/AC_DIVERT_POP these variable definitions so they
+ dnl are available for $ac_help expansion (don't we all *love* autoconf?)
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++ifdef([AC_DIVERSION_NOTICE],
++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
++ [AC_DIVERT_PUSH(NOTICE)])dnl
+ #
+ # Making releases:
+ # GTK_MICRO_VERSION += 1;
+@@ -76,7 +78,10 @@
+
+ dnl figure debugging default, prior to $ac_help setup
+ dnl
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++ifdef([AC_DIVERSION_NOTICE],
++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
++ [AC_DIVERT_PUSH(NOTICE)])dnl
++
+ if test `expr $GTK_MINOR_VERSION \% 2` = 1 ; then
+ debug_default=yes
+ else
+@@ -292,12 +297,9 @@
+ AC_SUBST(GLIB_DEPLIBS)
+
+ # Find the X11 include and library directories
+-AC_PATH_X
+ AC_PATH_XTRA
+
+-if test "x$x_includes" = "x"; then
+- x_includes="/usr/include"
+-fi
++PKG_CHECK_MODULES(X,x11 xau)
+
+ saved_cflags="$CFLAGS"
+ saved_ldflags="$LDFLAGS"
+--- gtk+-1.2.10/gdk/Makefile.am~gtk+1.2-reconf-fix
++++ gtk+-1.2.10/gdk/Makefile.am
+@@ -31,7 +31,7 @@
+ # setup source file variables
+ #
+ # GDK header files for public installation (non-generated)
+-gdk_public_h_sources = @STRIP_BEGIN@ \
++gdk_public_h_sources = \
+ gdk.h \
+ gdkcursors.h \
+ gdkrgb.h \
+@@ -39,9 +39,9 @@
+ gdkkeysyms.h \
+ gdkprivate.h \
+ gdktypes.h \
+- gdkx.h \
+-@STRIP_END@
+-gdk_c_sources = @STRIP_BEGIN@ \
++ gdkx.h
++
++gdk_c_sources = \
+ gdk.c \
+ gdkcc.c \
+ gdkcolor.c \
+@@ -72,18 +72,16 @@
+ MwmUtil.h \
+ gxid_lib.h \
+ gxid_proto.h \
+- gxid_lib.c \
+-@STRIP_END@
++ gxid_lib.c
+
+ #
+ # setup GDK sources and their dependancies
+ #
+ libgdkinclude_HEADERS = $(gdk_public_h_sources)
+ libgdk_la_SOURCES = $(gdk_c_sources)
+-MAINTAINERCLEANFILES +=
+-EXTRA_HEADERS +=
+-EXTRA_DIST +=
+-EXTRA_DIST +=
++MAINTAINERCLEANFILES =
++EXTRA_HEADERS =
++EXTRA_DIST =
+
+ #
+ # rules to generate built sources
+--- gtk+-1.2.10/gtk/Makefile.am~gtk+1.2-reconf-fix
++++ gtk+-1.2.10/gtk/Makefile.am
+@@ -39,7 +39,7 @@
+ # setup source file variables
+ #
+ # GTK+ header files for public installation (non-generated)
+-gtk_public_h_sources = @STRIP_BEGIN@ \
++gtk_public_h_sources = \
+ gtk.h \
+ gtkaccelgroup.h \
+ gtkaccellabel.h \
+@@ -148,13 +148,13 @@
+ gtkvscrollbar.h \
+ gtkvseparator.h \
+ gtkwidget.h \
+- gtkwindow.h \
+-@STRIP_END@
++ gtkwindow.h
++
+ # GTK+ header files that don't get installed
+-gtk_private_h_sources = @STRIP_BEGIN@ \
+-@STRIP_END@
++gtk_private_h_sources =
++
+ # GTK+ C sources to build the library from
+-gtk_c_sources = @STRIP_BEGIN@ \
++gtk_c_sources = \
+ gtkaccelgroup.c \
+ gtkaccellabel.c \
+ gtkadjustment.c \
+@@ -262,8 +262,8 @@
+ gtkwidget.c \
+ gtkwindow.c \
+ fnmatch.c \
+- fnmatch.h \
+-@STRIP_END@
++ fnmatch.h
++
+ # we use our own built_sources variable rules to avoid automake's
+ # BUILT_SOURCES oddities
+ # we generate frequently rebuild files piggyback on a stamp file, so sources
+@@ -271,7 +271,7 @@
+ # content
+ #
+ # built sources that don't get installed
+-gtk_built_sources = @STRIP_BEGIN@ \
++gtk_built_sources = \
+ stamp-gtk.defs \
+ stamp-gtktypebuiltins.h \
+ stamp-gtkmarshal.h \
+@@ -279,17 +279,18 @@
+ gtktypebuiltins_ids.c \
+ gtktypebuiltins_evals.c \
+ gtkmarshal.c \
+- gtk.defs \
+-@STRIP_END@
++ gtk.defs
++
++
+ # built sources that get installed with the header files
+-gtk_built_public_sources = @STRIP_BEGIN@ \
++gtk_built_public_sources = \
+ gtkmarshal.h \
+- gtktypebuiltins.h \
+-@STRIP_END@
++ gtktypebuiltins.h
++
+ # non-header sources (headers should be specified in the above variables)
+ # that don't serve as direct make target sources, i.e. they don't have
+ # their own .lo rules and don't get publically installed
+-gtk_extra_sources = @STRIP_BEGIN@ \
++gtk_extra_sources = \
+ gtkfeatures.h.in \
+ makeenums.pl \
+ makeenums.awk \
+@@ -298,8 +299,8 @@
+ gtkargcollector.c \
+ gtk-boxed.defs \
+ genmarshal.pl \
+- gtkmarshal.list \
+-@STRIP_END@
++ gtkmarshal.list
++
+ # Extra headers that are used for enum type array/id generation
+ gdk_headers = @STRIP_BEGIN@ \
+ ../gdk/gdktypes.h \
+@@ -311,9 +312,9 @@
+ #
+ libgtkinclude_HEADERS = $(gtk_public_h_sources) $(gtk_built_public_sources) gtkfeatures.h
+ libgtk_la_SOURCES = $(gtk_c_sources)
+-MAINTAINERCLEANFILES += $(gtk_built_public_sources) $(gtk_built_sources)
+-EXTRA_HEADERS +=
+-EXTRA_DIST += $(gtk_private_h_sources)
++MAINTAINERCLEANFILES = $(gtk_built_public_sources) $(gtk_built_sources)
++EXTRA_HEADERS =
++EXTRA_DIST = $(gtk_private_h_sources)
+ EXTRA_DIST += $(gtk_built_sources) $(gtk_built_public_sources) $(gtk_extra_sources)
+
+ #
+@@ -321,7 +322,7 @@
+ #
+ # setup autogeneration dependancies
+ gen_sources = xgen-gdef xgen-gtbh xgen-gtbvc xgen-gtbic xgen-gtbec xgen-gmh xgen-gmc
+-CLEANFILES += $(gen_sources)
++CLEANFILES = $(gen_sources)
+ COPYING: $(gtk_built_public_sources) $(gtk_built_sources)
+ $(OBJECTS): COPYING # this is our oldest-source-stamp
+ # initial creation of the real stamp-* files
+--- gtk+-1.2.10/docs/Makefile.am~gtk+1.2-reconf-fix
++++ gtk+-1.2.10/docs/Makefile.am
+@@ -166,7 +166,7 @@
+ echo $$p; \
+ done
+
+-EXTRA_DIST += \
++EXTRA_DIST = \
+ Changes-1.2.txt \
+ debugging.txt \
+ developers.txt \
+--- gtk+-1.2.10/acinclude.m4~gtk+1.2-reconf-fix
++++ gtk+-1.2.10/acinclude.m4
+@@ -21,428 +21,6 @@
+ ## configuration script generated by Autoconf, you may include it under
+ ## the same distribution terms that you use for the rest of that program.
+
+-# serial 40 AC_PROG_LIBTOOL
+-AC_DEFUN(AC_PROG_LIBTOOL,
+-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+-
+-# Save cache, so that ltconfig can load it
+-AC_CACHE_SAVE
+-
+-# Actually configure libtool. ac_aux_dir is where install-sh is found.
+-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
+-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
+-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
+-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
+-|| AC_MSG_ERROR([libtool configure failed])
+-
+-# Reload cache, that may have been modified by ltconfig
+-AC_CACHE_LOAD
+-
+-# This can be used to rebuild libtool when needed
+-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+-
+-# Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+-AC_SUBST(LIBTOOL)dnl
+-
+-# Redirect the config.log output again, so that the ltconfig log is not
+-# clobbered by the next message.
+-exec 5>>./config.log
+-])
+-
+-AC_DEFUN(AC_LIBTOOL_SETUP,
+-[AC_PREREQ(2.13)dnl
+-AC_REQUIRE([AC_ENABLE_SHARED])dnl
+-AC_REQUIRE([AC_ENABLE_STATIC])dnl
+-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+-AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+-AC_REQUIRE([AC_PROG_RANLIB])dnl
+-AC_REQUIRE([AC_PROG_CC])dnl
+-AC_REQUIRE([AC_PROG_LD])dnl
+-AC_REQUIRE([AC_PROG_NM])dnl
+-AC_REQUIRE([AC_PROG_LN_S])dnl
+-dnl
+-
+-case "$target" in
+-NONE) lt_target="$host" ;;
+-*) lt_target="$target" ;;
+-esac
+-
+-# Check for any special flags to pass to ltconfig.
+-libtool_flags="--cache-file=$cache_file"
+-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
+-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
+-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
+-test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
+-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
+-[libtool_flags="$libtool_flags --enable-dlopen"])
+-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+-[libtool_flags="$libtool_flags --enable-win32-dll"])
+-AC_ARG_ENABLE(libtool-lock,
+- [ --disable-libtool-lock avoid locking (might break parallel builds)])
+-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+-
+-# Some flags need to be propagated to the compiler or linker for good
+-# libtool support.
+-case "$lt_target" in
+-*-*-irix6*)
+- # Find out which ABI we are using.
+- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+- if AC_TRY_EVAL(ac_compile); then
+- case "`/usr/bin/file conftest.o`" in
+- *32-bit*)
+- LD="${LD-ld} -32"
+- ;;
+- *N32*)
+- LD="${LD-ld} -n32"
+- ;;
+- *64-bit*)
+- LD="${LD-ld} -64"
+- ;;
+- esac
+- fi
+- rm -rf conftest*
+- ;;
+-
+-*-*-sco3.2v5*)
+- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+- SAVE_CFLAGS="$CFLAGS"
+- CFLAGS="$CFLAGS -belf"
+- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
+- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+- CFLAGS="$SAVE_CFLAGS"
+- fi
+- ;;
+-
+-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+-[*-*-cygwin* | *-*-mingw*)
+- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+- AC_CHECK_TOOL(AS, as, false)
+- AC_CHECK_TOOL(OBJDUMP, objdump, false)
+- ;;
+-])
+-esac
+-])
+-
+-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
+-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+-
+-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
+-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+-
+-# AC_ENABLE_SHARED - implement the --enable-shared flag
+-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
+-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
+-# `yes'.
+-AC_DEFUN(AC_ENABLE_SHARED, [dnl
+-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+-AC_ARG_ENABLE(shared,
+-changequote(<<, >>)dnl
+-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
+-changequote([, ])dnl
+-[p=${PACKAGE-default}
+-case "$enableval" in
+-yes) enable_shared=yes ;;
+-no) enable_shared=no ;;
+-*)
+- enable_shared=no
+- # Look at the argument we got. We use all the common list separators.
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+- for pkg in $enableval; do
+- if test "X$pkg" = "X$p"; then
+- enable_shared=yes
+- fi
+- done
+- IFS="$ac_save_ifs"
+- ;;
+-esac],
+-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
+-])
+-
+-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
+-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+-AC_ENABLE_SHARED(no)])
+-
+-# AC_ENABLE_STATIC - implement the --enable-static flag
+-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
+-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
+-# `yes'.
+-AC_DEFUN(AC_ENABLE_STATIC, [dnl
+-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+-AC_ARG_ENABLE(static,
+-changequote(<<, >>)dnl
+-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
+-changequote([, ])dnl
+-[p=${PACKAGE-default}
+-case "$enableval" in
+-yes) enable_static=yes ;;
+-no) enable_static=no ;;
+-*)
+- enable_static=no
+- # Look at the argument we got. We use all the common list separators.
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+- for pkg in $enableval; do
+- if test "X$pkg" = "X$p"; then
+- enable_static=yes
+- fi
+- done
+- IFS="$ac_save_ifs"
+- ;;
+-esac],
+-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
+-])
+-
+-# AC_DISABLE_STATIC - set the default static flag to --disable-static
+-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+-AC_ENABLE_STATIC(no)])
+-
+-
+-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
+-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
+-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
+-# `yes'.
+-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
+-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+-AC_ARG_ENABLE(fast-install,
+-changequote(<<, >>)dnl
+-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
+-changequote([, ])dnl
+-[p=${PACKAGE-default}
+-case "$enableval" in
+-yes) enable_fast_install=yes ;;
+-no) enable_fast_install=no ;;
+-*)
+- enable_fast_install=no
+- # Look at the argument we got. We use all the common list separators.
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+- for pkg in $enableval; do
+- if test "X$pkg" = "X$p"; then
+- enable_fast_install=yes
+- fi
+- done
+- IFS="$ac_save_ifs"
+- ;;
+-esac],
+-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
+-])
+-
+-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
+-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+-AC_ENABLE_FAST_INSTALL(no)])
+-
+-# AC_PROG_LD - find the path to the GNU or non-GNU linker
+-AC_DEFUN(AC_PROG_LD,
+-[AC_ARG_WITH(gnu-ld,
+-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+-AC_REQUIRE([AC_PROG_CC])dnl
+-AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+-ac_prog=ld
+-if test "$ac_cv_prog_gcc" = yes; then
+- # Check if gcc -print-prog-name=ld gives a path.
+- AC_MSG_CHECKING([for ld used by GCC])
+- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+- case "$ac_prog" in
+- # Accept absolute paths.
+-changequote(,)dnl
+- [\\/]* | [A-Za-z]:[\\/]*)
+- re_direlt='/[^/][^/]*/\.\./'
+-changequote([,])dnl
+- # Canonicalize the path of ld
+- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+- done
+- test -z "$LD" && LD="$ac_prog"
+- ;;
+- "")
+- # If it fails, then pretend we aren't using GCC.
+- ac_prog=ld
+- ;;
+- *)
+- # If it is relative, then search for the first ld in PATH.
+- with_gnu_ld=unknown
+- ;;
+- esac
+-elif test "$with_gnu_ld" = yes; then
+- AC_MSG_CHECKING([for GNU ld])
+-else
+- AC_MSG_CHECKING([for non-GNU ld])
+-fi
+-AC_CACHE_VAL(ac_cv_path_LD,
+-[if test -z "$LD"; then
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+- for ac_dir in $PATH; do
+- test -z "$ac_dir" && ac_dir=.
+- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+- ac_cv_path_LD="$ac_dir/$ac_prog"
+- # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some GNU ld's only accept -v.
+- # Break only if it was the GNU/non-GNU ld that we prefer.
+- if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+- test "$with_gnu_ld" != no && break
+- else
+- test "$with_gnu_ld" != yes && break
+- fi
+- fi
+- done
+- IFS="$ac_save_ifs"
+-else
+- ac_cv_path_LD="$LD" # Let the user override the test with a path.
+-fi])
+-LD="$ac_cv_path_LD"
+-if test -n "$LD"; then
+- AC_MSG_RESULT($LD)
+-else
+- AC_MSG_RESULT(no)
+-fi
+-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+-AC_PROG_LD_GNU
+-])
+-
+-AC_DEFUN(AC_PROG_LD_GNU,
+-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
+-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+- ac_cv_prog_gnu_ld=yes
+-else
+- ac_cv_prog_gnu_ld=no
+-fi])
+-])
+-
+-# AC_PROG_NM - find the path to a BSD-compatible name lister
+-AC_DEFUN(AC_PROG_NM,
+-[AC_MSG_CHECKING([for BSD-compatible nm])
+-AC_CACHE_VAL(ac_cv_path_NM,
+-[if test -n "$NM"; then
+- # Let the user override the test.
+- ac_cv_path_NM="$NM"
+-else
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+- test -z "$ac_dir" && ac_dir=.
+- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+- ac_cv_path_NM="$ac_dir/nm -B"
+- break
+- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+- ac_cv_path_NM="$ac_dir/nm -p"
+- break
+- else
+- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- fi
+- fi
+- done
+- IFS="$ac_save_ifs"
+- test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
+-fi])
+-NM="$ac_cv_path_NM"
+-AC_MSG_RESULT([$NM])
+-])
+-
+-# AC_CHECK_LIBM - check for math library
+-AC_DEFUN(AC_CHECK_LIBM,
+-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+-LIBM=
+-case "$lt_target" in
+-*-*-beos* | *-*-cygwin*)
+- # These system don't have libm
+- ;;
+-*-ncr-sysv4.3*)
+- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
+- ;;
+-*)
+- AC_CHECK_LIB(m, main, LIBM="-lm")
+- ;;
+-esac
+-])
+-
+-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
+-# the libltdl convenience library, adds --enable-ltdl-convenience to
+-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
+-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
+-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
+-# '${top_builddir}/' (note the single quotes!) if your package is not
+-# flat, and, if you're not using automake, define top_builddir as
+-# appropriate in the Makefiles.
+-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+- case "$enable_ltdl_convenience" in
+- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+- "") enable_ltdl_convenience=yes
+- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+- esac
+- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
+- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
+-])
+-
+-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
+-# the libltdl installable library, and adds --enable-ltdl-install to
+-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
+-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
+-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
+-# '${top_builddir}/' (note the single quotes!) if your package is not
+-# flat, and, if you're not using automake, define top_builddir as
+-# appropriate in the Makefiles.
+-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+- AC_CHECK_LIB(ltdl, main,
+- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+- [if test x"$enable_ltdl_install" = xno; then
+- AC_MSG_WARN([libltdl not installed, but installation disabled])
+- else
+- enable_ltdl_install=yes
+- fi
+- ])
+- if test x"$enable_ltdl_install" = x"yes"; then
+- ac_configure_args="$ac_configure_args --enable-ltdl-install"
+- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
+- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
+- else
+- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+- LIBLTDL="-lltdl"
+- INCLTDL=
+- fi
+-])
+-
+-dnl old names
+-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
+-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
+-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
+-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
+-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
+-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
+-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
+-
+-dnl This is just to silence aclocal about the macro not being used
+-ifelse([AC_DISABLE_FAST_INSTALL])dnl
+-
+-# Macro to add for using GNU gettext.
+-# Ulrich Drepper <drepper@cygnus.com>, 1995.
+-#
+-# Modified to never use included libintl.
+-# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+-#
+-#
+-# This file can be copied and used freely without restrictions. It can
+-# be used in projects which are not available under the GNU Public License
+-# but which still want to provide support for the GNU gettext functionality.
+-# Please note that the actual code is *not* freely available.
+-
+-# serial 5
+-
+ AC_DEFUN(AM_GTK_WITH_NLS,
+ [AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+--- gtk+-1.2.10/gtk-config.in~gtk+1.2-reconf-fix
++++ gtk+-1.2.10/gtk-config.in
+@@ -1,10 +1,5 @@
+ #!/bin/sh
+
+-glib_libs="@glib_libs@"
+-glib_cflags="@glib_cflags@"
+-glib_thread_libs="@glib_thread_libs@"
+-glib_thread_cflags="@glib_thread_cflags@"
+-
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ exec_prefix_set=no
+@@ -86,27 +81,16 @@
+ fi
+
+ if test "$lib_gthread" = "yes"; then
+- glib_cflags="$glib_thread_cflags"
+- glib_libs="$glib_thread_libs"
++ modules="gtk+ gthread"
++else
++ modules="gtk+"
+ fi
+
+ if test "$echo_cflags" = "yes"; then
+- echo -I@includedir@/gtk-1.2 $glib_cflags @x_cflags@
++ echo `pkg-config --cflags $modules`
+ fi
+
+ if test "$echo_libs" = "yes"; then
+- my_glib_libs=
+- libdirs=-L@libdir@
+- for i in $glib_libs ; do
+- if test $i != -L@libdir@ ; then
+- if test -z "$my_glib_libs" ; then
+- my_glib_libs="$i"
+- else
+- my_glib_libs="$my_glib_libs $i"
+- fi
+- fi
+- done
+-
+- echo $libdirs @x_ldflags@ -lgtk -lgdk $my_glib_libs @INTLLIBS@ @x_libs@ @GDK_WLIBS@ -lm
++ echo `pkg-config --libs $modules`
+ fi
+
diff --git a/packages/gtk+/gtk+-1.2-1.2.10/no-xwc b/packages/gtk+/gtk+-1.2-1.2.10/no-xwc
index e69de29bb2..e26bba8ed3 100644
--- a/packages/gtk+/gtk+-1.2-1.2.10/no-xwc
+++ b/packages/gtk+/gtk+-1.2-1.2.10/no-xwc
@@ -0,0 +1,267 @@
+remove mb and XWC support, as tinyx doesnt support this
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gtk+-1.2.10/gdk/gdkdraw.c~no-xwc
++++ gtk+-1.2.10/gdk/gdkdraw.c
+@@ -236,12 +236,14 @@
+ strlen (string) / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) font_private->xfont;
+ XmbDrawString (drawable_private->xdisplay, drawable_private->xwindow,
+ fontset, gc_private->xgc, x, y, string, strlen (string));
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -291,12 +293,14 @@
+ gc_private->xgc, x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) font_private->xfont;
+ XmbDrawString (drawable_private->xdisplay, drawable_private->xwindow,
+ fontset, gc_private->xgc, x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -337,6 +341,7 @@
+ g_free (glyphs);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -357,6 +362,7 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+--- gtk+-1.2.10/gdk/gdkim.c~no-xwc
++++ gtk+-1.2.10/gdk/gdkim.c
+@@ -121,6 +121,7 @@
+
+ current_locale = setlocale (LC_ALL, NULL);
+
++#ifdef HAVE_XWC
+ if ((strcmp (current_locale, "C")) && (strcmp (current_locale, "POSIX")))
+ {
+ gdk_use_mb = TRUE;
+@@ -145,7 +146,8 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
+-
++#endif
++
+ return current_locale;
+ }
+
+@@ -1551,6 +1553,7 @@
+ else
+ length = len;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ XTextProperty tpr;
+@@ -1589,6 +1592,7 @@
+ g_free (src_wc);
+ }
+ else
++#endif
+ {
+ gint i;
+
+@@ -1644,6 +1648,7 @@
+ /* NoMem or LocaleNotSupp */
+ return -1;
+ }
++#ifdef HAVE_XWC
+ if (XwcTextPropertyToTextList (gdk_display, &tpr, &wstrs, &num_wstrs)
+ != Success)
+ {
+@@ -1659,6 +1664,7 @@
+ dest[len_cpy] = wstr_src[len_cpy];
+ XwcFreeStringList (wstrs);
+ return len_cpy;
++#endif
+ }
+ else
+ {
+--- gtk+-1.2.10/gdk/gdkfont.c~no-xwc
++++ gtk+-1.2.10/gdk/gdkfont.c
+@@ -244,9 +244,11 @@
+ gdk_xid_table_remove (((XFontStruct *) private->xfont)->fid);
+ XFreeFont (private->xdisplay, (XFontStruct *) private->xfont);
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ XFreeFontSet (private->xdisplay, (XFontSet) private->xfont);
+ break;
++#endif
+ default:
+ g_error ("unknown font type.");
+ break;
+@@ -292,6 +294,7 @@
+ return (((XFontStruct *) privatea->xfont)->fid ==
+ ((XFontStruct *) privateb->xfont)->fid);
+ }
++#ifdef HAVE_XWC
+ else if (fonta->type == GDK_FONT_FONTSET && fontb->type == GDK_FONT_FONTSET)
+ {
+ gchar *namea, *nameb;
+@@ -301,6 +304,7 @@
+
+ return (strcmp(namea, nameb) == 0);
+ }
++#endif
+ else
+ /* fontset != font */
+ return FALSE;
+@@ -333,10 +337,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) string, strlen (string) / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) font_private->xfont;
+ width = XmbTextEscapement (fontset, string, strlen(string));
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -372,10 +378,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -414,6 +422,7 @@
+
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -431,6 +440,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -474,10 +484,12 @@
+ width = XTextWidth (xfont, &character, 1);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, &character, 1) ;
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -523,6 +535,7 @@
+
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ {
+@@ -530,6 +543,7 @@
+ width = XwcTextEscapement (fontset, &char_wc, 1) ;
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -597,6 +611,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -611,6 +626,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -664,6 +680,7 @@
+
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -691,6 +708,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -750,11 +768,13 @@
+ }
+ width = overall.rbearing;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &log);
+ width = ink.x + ink.width;
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -818,11 +838,13 @@
+ }
+ height = overall.ascent + overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &log);
+ height = log.height;
+ break;
++#endif
+ default:
+ height = 0;
+ }
diff --git a/packages/gtk+/gtk+-1.2-1.2.10/timezone-fix.patch b/packages/gtk+/gtk+-1.2-1.2.10/timezone-fix.patch
index e69de29bb2..15684145f1 100644
--- a/packages/gtk+/gtk+-1.2-1.2.10/timezone-fix.patch
+++ b/packages/gtk+/gtk+-1.2-1.2.10/timezone-fix.patch
@@ -0,0 +1,15 @@
+diff -NurBabdH gtk+-1.2.10/gtk/testrgb.c gtk+-1.2.10-timezone-fix/gtk/testrgb.c
+--- gtk+-1.2.10/gtk/testrgb.c 2000-08-18 23:36:34.000000000 +0200
++++ gtk+-1.2.10-timezone-fix/gtk/testrgb.c 2005-03-03 11:18:09.000000000 +0100
+@@ -49,7 +49,10 @@
+ get_time (void)
+ {
+ struct timeval tv;
+- struct timezone tz;
++ struct timezone {
++ int tz_minuteswest; /* minutes W of Greenwich */
++ int tz_dsttime; /* type of dst correction */
++ } tz;
+
+ gettimeofday (&tv, &tz);
+
diff --git a/packages/gtk+/gtk+-2.2.4/.mtn2git_empty b/packages/gtk+/gtk+-2.2.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.2.4/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.2.4/automake-lossage.patch b/packages/gtk+/gtk+-2.2.4/automake-lossage.patch
index e69de29bb2..9560abf9ba 100644
--- a/packages/gtk+/gtk+-2.2.4/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.2.4/automake-lossage.patch
@@ -0,0 +1,446 @@
+--- gtk/Makefile.am.old 2003-09-03 20:50:06.000000000 +0100
++++ gtk/Makefile.am 2004-03-07 12:17:29.000000000 +0000
+@@ -2,7 +2,7 @@
+
+ SUBDIRS=stock-icons theme-bits
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DG_LOG_DOMAIN=\"Gtk\" \
+ -DGTK_LIBDIR=\"$(libdir)\" \
+ -DGTK_DATA_PREFIX=\"$(prefix)\" \
+@@ -20,8 +20,7 @@
+ -DGDK_DISABLE_DEPRECATED \
+ -DGTK_DISABLE_DEPRECATED \
+ @GTK_DEBUG_FLAGS@ \
+- @GTK_DEP_CFLAGS@ \
+-@STRIP_END@
++ @GTK_DEP_CFLAGS@
+
+ gtarget=@gdktarget@
+
+@@ -67,7 +66,7 @@
+ # since automake doesn't support conditionalized libsomething_la_LDFLAGS
+ # we use the general approach here
+ libgtkincludedir = $(includedir)/gtk-2.0/gtk
+-LDFLAGS = @STRIP_BEGIN@ \
++AM_LDFLAGS = \
+ @LDFLAGS@ \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -export-dynamic \
+@@ -77,8 +76,8 @@
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+ $(top_builddir)/gdk/@gdktargetlib@ \
+ $(libgtk_target_ldflags) \
+- @GTK_DEP_LIBS@ \
+-@STRIP_END@
++ @GTK_DEP_LIBS@
++
+
+ #
+ # setup source file variables
+@@ -86,7 +85,7 @@
+
+ # GTK+ header files for public installation (non-generated, or generated
+ # by configure)
+-gtk_public_h_sources = @STRIP_BEGIN@ \
++gtk_public_h_sources = \
+ gtk.h \
+ gtkaccelgroup.h \
+ gtkaccellabel.h \
+@@ -228,10 +227,10 @@
+ gtkvscrollbar.h \
+ gtkvseparator.h \
+ gtkwidget.h \
+- gtkwindow.h \
+-@STRIP_END@
++ gtkwindow.h
++
+ # GTK+ header files that don't get installed
+-gtk_private_h_sources = @STRIP_BEGIN@ \
++gtk_private_h_sources = \
+ gtkrbtree.h \
+ gtktextbtree.h \
+ gtktextchildprivate.h \
+@@ -244,8 +243,7 @@
+ gtkthemes.h \
+ gtktreedatalist.h \
+ gtktreeprivate.h \
+- gtkwindow-decorate.h \
+-@STRIP_END@
++ gtkwindow-decorate.h
+
+ # GTK+ C sources to build the library from
+
+@@ -257,7 +255,7 @@
+ gtktreeitem.c
+ endif
+
+-gtk_c_sources = @STRIP_BEGIN@ \
++gtk_c_sources = \
+ gtkaccelgroup.c \
+ gtkaccelmap.c \
+ gtkaccellabel.c \
+@@ -410,15 +408,13 @@
+ gtkwindow-decorate.c \
+ fnmatch.c \
+ xembed.h \
+- ${crufty_gtk_c_sources} \
+-@STRIP_END@
++ ${crufty_gtk_c_sources}
+
+-gtk_plug_c_sources = @STRIP_BEGIN@ \
++gtk_plug_c_sources = \
+ gtkplug.c \
+ gtksocket.c \
+ gtkxembed.c \
+- gtkxembed.h \
+-@STRIP_END@
++ gtkxembed.h
+
+ # we use our own built_sources variable rules to avoid automake's
+ # BUILT_SOURCES oddities
+@@ -427,35 +423,34 @@
+ # content
+
+ # built sources that get installed with the header files
+-gtk_built_public_sources = @STRIP_BEGIN@ \
++gtk_built_public_sources = \
+ gtkmarshal.h \
+- gtktypebuiltins.h \
+-@STRIP_END@
+-gtk_built_private_headers = @STRIP_BEGIN@ \
+- gtkmarshalers.h \
+-@STRIP_END@
++ gtktypebuiltins.h
++
++gtk_built_private_headers = \
++ gtkmarshalers.h
++
+ # built sources that don't get installed
+-gtk_built_sources = @STRIP_BEGIN@ \
++gtk_built_sources = \
+ gtktypebuiltins.c \
+ gtkmarshalers.c \
+ gtkmarshalers.h \
+ gtkmarshal.c \
+ ${gtk_built_private_headers} \
+- ${gtk_built_public_sources} \
+-@STRIP_END@
+-stamp_files = @STRIP_BEGIN@ \
++ ${gtk_built_public_sources}
++
++stamp_files = \
+ stamp-gtkmarshalers.h \
+ stamp-gtkmarshal.h \
+- stamp-gtktypebuiltins.h \
+-@STRIP_END@
++ stamp-gtktypebuiltins.h
++
+ # non-header sources (headers should be specified in the above variables)
+ # that don't serve as direct make target sources, i.e. they don't have
+ # their own .lo rules and don't get publically installed
+-gtk_extra_sources = @STRIP_BEGIN@ \
++gtk_extra_sources = \
+ gtkversion.h.in \
+ gtkmarshalers.list \
+- gtkmarshal.list \
+-@STRIP_END@
++ gtkmarshal.list
+
+ #
+ # setup GTK+ sources and their dependencies
+@@ -592,11 +587,10 @@
+
+ TEST_DEPS = $(DEPS) gtk.immodules
+
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ $(gtktargetlib) \
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+- $(top_builddir)/gdk/$(gdktargetlib) \
+-@STRIP_END@
++ $(top_builddir)/gdk/$(gdktargetlib)
+
+ #
+ # Installed tools
+@@ -615,7 +609,7 @@
+ echo $$p; \
+ done
+
+-EXTRA_DIST += @STRIP_BEGIN@ \
++EXTRA_DIST += \
+ line-arrow.xbm \
+ line-wrap.xbm \
+ tree_plus.xbm \
+@@ -629,9 +623,8 @@
+ gtkrc.key.default \
+ gtkrc.key.emacs \
+ makefile.msc \
+- makefile.msc.in \
+-@STRIP_END@
++ makefile.msc.in
+
+ install-data-local:
+
+
+--- gdk/Makefile.am.old 2003-09-03 20:49:25.000000000 +0100
++++ gdk/Makefile.am 2004-03-07 12:18:18.000000000 +0000
+@@ -10,7 +10,7 @@
+ makeenums.pl \
+ makefile.msc
+
+-common_includes = @STRIP_BEGIN@ \
++common_includes = \
+ -DG_LOG_DOMAIN=\"Gdk\" \
+ -DGDK_COMPILATION \
+ -I$(top_srcdir) \
+@@ -20,8 +20,7 @@
+ -DGDK_PIXBUF_DISABLE_DEPRECATED \
+ -DGDK_DISABLE_DEPRECATED \
+ @GTK_DEBUG_FLAGS@ \
+- @GDK_DEP_CFLAGS@ \
+-@STRIP_END@
++ @GDK_DEP_CFLAGS@
+
+ INCLUDES = $(common_includes)
+ gtarget=@gdktarget@
+@@ -69,7 +68,7 @@
+ # libtool stuff: set version and export symbols for resolving
+ # since automake doesn't support conditionalized libsomething_la_LDFLAGS
+ # we use the general approach here
+-LDFLAGS = @STRIP_BEGIN@ \
++AM_LDFLAGS = \
+ @LDFLAGS@ \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -export-dynamic \
+@@ -77,8 +76,7 @@
+ $(no_undefined) \
+ @LIBTOOL_EXPORT_OPTIONS@ \
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+- $(gdk_win32_symbols) \
+-@STRIP_END@
++ $(gdk_win32_symbols)
+
+ #
+ # setup source file variables
+@@ -88,7 +86,7 @@
+ #
+ # Note: files added here may need to be be propagated to gdk_headers in gtk/Makefile.am
+ #
+-gdk_public_h_sources = @STRIP_BEGIN@ \
++gdk_public_h_sources = \
+ gdk.h \
+ gdkcolor.h \
+ gdkcursor.h \
+@@ -114,16 +112,14 @@
+ gdkselection.h \
+ gdktypes.h \
+ gdkvisual.h \
+- gdkwindow.h \
+-@STRIP_END@
++ gdkwindow.h
+
+-gdk_headers = @STRIP_BEGIN@ \
++gdk_headers = \
+ $(gdk_public_h_sources) \
+ gdkenumtypes.h \
+- gdkprivate.h \
+-@STRIP_END@
++ gdkprivate.h
+
+-gdk_c_sources = @STRIP_BEGIN@ \
++gdk_c_sources = \
+ gdk.c \
+ gdkcolor.c \
+ gdkcursor.c \
+@@ -153,8 +149,7 @@
+ gdkscreen.c \
+ gdkselection.c \
+ gdkvisual.c \
+- gdkwindow.c \
+-@STRIP_END@
++ gdkwindow.c
+
+ #
+ # setup GDK sources and their dependencies
+@@ -164,11 +159,10 @@
+ gdkinclude_HEADERS = $(gdk_headers)
+
+ # gdkmarshalers.c is not here becuase it is currently an empty file
+-common_sources = @STRIP_BEGIN@ \
++common_sources = \
+ $(gdk_c_sources) \
+ gdkenumtypes.c \
+- gdkmarshalers.h \
+-@STRIP_END@
++ gdkmarshalers.h
+
+ libgdk_x11_2_0_la_SOURCES = $(common_sources)
+ libgdk_linux_fb_2_0_la_SOURCES = $(common_sources) gdkkeynames.c
+--- gdk-pixbuf/Makefile.am.old 2003-01-27 23:19:07.000000000 +0000
++++ gdk-pixbuf/Makefile.am 2004-03-07 12:19:11.000000000 +0000
+@@ -238,7 +238,7 @@
+ endif
+
+ DEPS = libgdk_pixbuf-$(GTK_API_VERSION).la
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DG_LOG_DOMAIN=\"GdkPixbuf\" \
+ -I$(top_srcdir) -I$(top_builddir) \
+ -I$(top_srcdir)/gdk-pixbuf \
+@@ -252,8 +252,7 @@
+ @INCLUDED_LOADER_DEFINE@ \
+ @GTK_DEBUG_FLAGS@ \
+ @GDK_PIXBUF_DEP_CFLAGS@ \
+- -DGDK_PIXBUF_ENABLE_BACKEND \
+-@STRIP_END@
++ -DGDK_PIXBUF_ENABLE_BACKEND
+
+ AM_CPPFLAGS = "-DPIXBUF_LIBDIR=\"$(loaderdir)\"" "-DBUILT_MODULES_DIR=\"$(srcdir)/.libs\""
+ LDADDS = libgdk_pixbuf-$(GTK_API_VERSION).la
+@@ -281,7 +280,7 @@
+ # The GdkPixBuf library
+ #
+ libgdk_pixbufincludedir = $(includedir)/gtk-2.0/gdk-pixbuf
+-libgdk_pixbuf_2_0_la_SOURCES = @STRIP_BEGIN@ \
++libgdk_pixbuf_2_0_la_SOURCES = \
+ gdk-pixbuf-i18n.h \
+ gdk-pixbuf.c \
+ gdk-pixbuf-animation.c \
+@@ -291,14 +290,13 @@
+ gdk-pixbuf-scale.c \
+ gdk-pixbuf-util.c \
+ gdk-pixdata.c \
+- $(gdk_pixbuf_built_cfiles) \
+-@STRIP_END@
+-libgdk_pixbuf_2_0_la_LDFLAGS = @STRIP_BEGIN@ \
++ $(gdk_pixbuf_built_cfiles)
++
++libgdk_pixbuf_2_0_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ @LIBTOOL_EXPORT_OPTIONS@ \
+ $(no_undefined) \
+- $(gdk_pixbuf_symbols) \
+-@STRIP_END@
++ $(gdk_pixbuf_symbols)
+
+ libgdk_pixbuf_2_0_la_LIBADD = pixops/libpixops.la $(builtin_objs) $(gdk_pixbuf_win32res_lo) $(GDK_PIXBUF_DEP_LIBS)
+ libgdk_pixbuf_2_0_la_DEPENDENCIES = pixops/libpixops.la $(builtin_objs) $(gdk_pixbuf_def) $(gdk_pixbuf_win32res_lo)
+--- demos/Makefile.am.old 2003-06-06 01:52:59.000000000 +0100
++++ demos/Makefile.am 2004-03-07 12:20:23.000000000 +0000
+@@ -2,7 +2,7 @@
+
+ SUBDIRS = gtk-demo
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/gdk \
+ -DG_DISABLE_DEPRECATED \
+@@ -10,19 +10,17 @@
+ -DGDK_DISABLE_DEPRECATED \
+ -DGTK_DISABLE_DEPRECATED \
+ @GTK_DEBUG_FLAGS@ \
+- @GTK_DEP_CFLAGS@ \
+-@STRIP_END@
++ @GTK_DEP_CFLAGS@
+
+ DEPS = \
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+ $(top_builddir)/gdk/@gdktargetlib@ \
+ $(top_builddir)/gtk/@gtktargetlib@
+
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+ $(top_builddir)/gdk/@gdktargetlib@ \
+- $(top_builddir)/gtk/@gtktargetlib@ \
+-@STRIP_END@
++ $(top_builddir)/gtk/@gtktargetlib@
+
+ noinst_PROGRAMS = \
+ testpixbuf \
+--- docs/faq/Makefile.am.old 2002-03-06 03:59:12.000000000 +0000
++++ docs/faq/Makefile.am 2004-03-07 12:23:40.000000000 +0000
+@@ -14,15 +14,6 @@
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+ else
+-html:
+- echo "***"
+- echo "*** Warning: FAQ not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: FAQ not built"
+- echo "***"
+
+ dist-hook:
+ echo "***"
+--- docs/tutorial/Makefile.am.old 2002-03-06 03:59:12.000000000 +0000
++++ docs/tutorial/Makefile.am 2004-03-07 12:24:42.000000000 +0000
+@@ -49,15 +49,6 @@
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+ else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+
+ dist-hook:
+ echo "***"
+--- demos/gtk-demo/Makefile.am.old 2003-06-09 22:58:32.000000000 +0100
++++ demos/gtk-demo/Makefile.am 2004-03-07 12:25:47.000000000 +0000
+@@ -4,7 +4,7 @@
+
+ ## These should be in the order you want them to appear in the
+ ## demo app, which means alphabetized by demo title, not filename
+-demos = @STRIP_BEGIN@ \
++demos = \
+ appwindow.c \
+ button_box.c \
+ changedisplay.c \
+@@ -21,10 +21,9 @@
+ sizegroup.c \
+ stock_browser.c \
+ textview.c \
+- tree_store.c \
+-@STRIP_END@
++ tree_store.c
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DDEMOCODEDIR="\"$(democodedir)\"" \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/gdk \
+@@ -33,19 +32,17 @@
+ -DGDK_DISABLE_DEPRECATED \
+ -DGTK_DISABLE_DEPRECATED \
+ @GTK_DEBUG_FLAGS@ \
+- @GTK_DEP_CFLAGS@ \
+-@STRIP_END@
++ @GTK_DEP_CFLAGS@
+
+ DEPS = \
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+ $(top_builddir)/gdk/@gdktargetlib@ \
+ $(top_builddir)/gtk/@gtktargetlib@
+
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
+ $(top_builddir)/gdk/@gdktargetlib@ \
+- $(top_builddir)/gtk/@gtktargetlib@ \
+-@STRIP_END@
++ $(top_builddir)/gtk/@gtktargetlib@
+
+ bin_PROGRAMS = gtk-demo
+
diff --git a/packages/gtk+/gtk+-2.2.4/configure-lossage.patch b/packages/gtk+/gtk+-2.2.4/configure-lossage.patch
index e69de29bb2..04b789675d 100644
--- a/packages/gtk+/gtk+-2.2.4/configure-lossage.patch
+++ b/packages/gtk+/gtk+-2.2.4/configure-lossage.patch
@@ -0,0 +1,12 @@
+--- configure.in~ 2003-09-04 18:06:42.000000000 +0100
++++ configure.in 2004-03-07 12:28:12.000000000 +0000
+@@ -963,7 +963,8 @@
+
+ AC_MSG_CHECKING([For sufficiently new FreeType (at least 2.0.1)])
+ AC_TRY_COMPILE([
+-#include <freetype/freetype.h>
++#include <ft2build.h>
++#include FT_FREETYPE_H
+ #include FT_ERRORS_H
+ ],
+ [(void)1;],:,have_freetype=false)
diff --git a/packages/gtk+/gtk+-2.2.4/glib-2.0.m4 b/packages/gtk+/gtk+-2.2.4/glib-2.0.m4
index e69de29bb2..28ccef4a5f 100644
--- a/packages/gtk+/gtk+-2.2.4/glib-2.0.m4
+++ b/packages/gtk+/gtk+-2.2.4/glib-2.0.m4
@@ -0,0 +1,212 @@
+# Configure paths for GLIB
+# Owen Taylor 1997-2001
+
+dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or
+dnl gthread is specified in MODULES, pass to pkg-config
+dnl
+AC_DEFUN(AM_PATH_GLIB_2_0,
+[dnl
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program],
+ , enable_glibtest=yes)
+
+ pkg_config_args=glib-2.0
+ for module in . $4
+ do
+ case "$module" in
+ gmodule)
+ pkg_config_args="$pkg_config_args gmodule-2.0"
+ ;;
+ gobject)
+ pkg_config_args="$pkg_config_args gobject-2.0"
+ ;;
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+ no_glib=""
+
+ if test x$PKG_CONFIG != xno ; then
+ if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
+ :
+ else
+ echo *** pkg-config too old; version 0.7 or better required.
+ no_glib=yes
+ PKG_CONFIG=no
+ fi
+ else
+ no_glib=yes
+ fi
+
+ min_glib_version=ifelse([$1], ,2.0.0,$1)
+ AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+ enable_glibtest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+ :
+ else
+ no_glib=yes
+ fi
+ fi
+
+ if test x"$no_glib" = x ; then
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+ GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+ glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_glibtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+ rm -f conf.glibtest
+ AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.glibtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_glib_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_glib_version");
+ exit(1);
+ }
+
+ if ((glib_major_version != $glib_config_major_version) ||
+ (glib_minor_version != $glib_config_minor_version) ||
+ (glib_micro_version != $glib_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+ $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+ (glib_minor_version != GLIB_MINOR_VERSION) ||
+ (glib_micro_version != GLIB_MICRO_VERSION))
+ {
+ printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ }
+ else
+ {
+ if ((glib_major_version > major) ||
+ ((glib_major_version == major) && (glib_minor_version > minor)) ||
+ ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_glib" = x ; then
+ AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+ else
+ if test -f conf.glibtest ; then
+ :
+ else
+ echo "*** Could not run GLIB test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$LIBS $GLIB_LIBS"
+ AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+ echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GLIB_CFLAGS=""
+ GLIB_LIBS=""
+ GLIB_GENMARSHAL=""
+ GOBJECT_QUERY=""
+ GLIB_MKENUMS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ AC_SUBST(GLIB_GENMARSHAL)
+ AC_SUBST(GOBJECT_QUERY)
+ AC_SUBST(GLIB_MKENUMS)
+ rm -f conf.glibtest
+])
diff --git a/packages/gtk+/gtk+-2.2.4/glib-gettext.m4 b/packages/gtk+/gtk+-2.2.4/glib-gettext.m4
index e69de29bb2..862db40a93 100644
--- a/packages/gtk+/gtk+-2.2.4/glib-gettext.m4
+++ b/packages/gtk+/gtk+-2.2.4/glib-gettext.m4
@@ -0,0 +1,380 @@
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl.
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+ [AC_CHECK_HEADERS([locale.h])
+ if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+ dnl NLS is obligatory
+ [USE_NLS=yes
+ AC_SUBST(USE_NLS)
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ AC_CHECK_HEADER(libintl.h,
+ [gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return (int) dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes,
+ gt_cv_func_dgettext_libc=no)
+ ])
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" ; then
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes)])
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ AC_MSG_CHECKING([if -liconv is needed to use gettext])
+ AC_MSG_RESULT([])
+ AC_CHECK_LIB(intl, dcgettext,
+ [gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv],
+ :,-liconv)
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT,1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ AC_CHECK_FUNCS(dcgettext)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share and
+ dnl and CATOBJEXT=.gmo in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac])
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+ ])
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [always defined to indicate that i18n is enabled])
+ fi
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is not GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.in.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(PO_IN_DATADIR_TRUE)
+ AC_SUBST(PO_IN_DATADIR_FALSE)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by
+# glib-gettextize.
+dnl
+glib_DEFUN(GLIB_GNU_GETTEXT,
+ [AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+
+ GLIB_LC_MESSAGES
+ GLIB_WITH_NLS
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN(GLIB_DEFINE_LOCALEDIR,
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+if test "x$CATOBJEXT" = "x.mo" ; then
+ localedir=`eval echo "${libdir}/locale"`
+else
+ localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+ [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN(AM_GLIB_GNU_GETTEXT,[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN(AM_GLIB_DEFINE_LOCALEDIR,[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
diff --git a/packages/gtk+/gtk+-2.2.4/libtool-lossage.patch b/packages/gtk+/gtk+-2.2.4/libtool-lossage.patch
index e69de29bb2..d291cbdd69 100644
--- a/packages/gtk+/gtk+-2.2.4/libtool-lossage.patch
+++ b/packages/gtk+/gtk+-2.2.4/libtool-lossage.patch
@@ -0,0 +1,20 @@
+--- configure.in.orig 2004-03-14 23:30:31.000000000 +0000
++++ configure.in 2004-03-15 00:00:51.000000000 +0000
+@@ -340,7 +340,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -664,7 +664,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
diff --git a/packages/gtk+/gtk+-2.2.4/no-demos.patch b/packages/gtk+/gtk+-2.2.4/no-demos.patch
index e69de29bb2..7a44943d4a 100644
--- a/packages/gtk+/gtk+-2.2.4/no-demos.patch
+++ b/packages/gtk+/gtk+-2.2.4/no-demos.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- gtk+-2.2.4/Makefile.am~no-demos 2003-01-30 22:40:35.000000000 +0100
++++ gtk+-2.2.4/Makefile.am 2004-03-11 11:49:43.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.2.4/no-xwc.patch b/packages/gtk+/gtk+-2.2.4/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/packages/gtk+/gtk+-2.2.4/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.2.4/no-xwc.patch
@@ -0,0 +1,148 @@
+--- gdk/x11/gdkdrawable-x11.c~ 2003-08-18 17:02:39.000000000 +0100
++++ gdk/x11/gdkdrawable-x11.c 2004-03-29 21:30:17.000000000 +0100
+@@ -636,12 +636,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -673,6 +675,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -693,7 +696,8 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+
+--- gdk/x11/gdkim-x11.c~ 2002-11-01 00:45:32.000000000 +0000
++++ gdk/x11/gdkim-x11.c 2004-03-29 21:28:30.000000000 +0100
+@@ -51,6 +51,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -96,6 +97,7 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
++#endif
+
+ return;
+ }
+@@ -139,6 +141,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -177,6 +180,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -209,6 +213,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -241,7 +246,8 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
+
+--- gdk/x11/gdkfont-x11.c~ 2003-03-06 20:17:55.000000000 +0000
++++ gdk/x11/gdkfont-x11.c 2004-03-29 21:29:40.000000000 +0100
+@@ -594,10 +594,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -647,6 +649,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -664,6 +667,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -736,6 +740,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -750,6 +755,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -822,6 +828,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -849,6 +856,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
diff --git a/packages/gtk+/gtk+-2.4.13/.mtn2git_empty b/packages/gtk+/gtk+-2.4.13/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.4.13/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.4.13/automake-lossage.patch b/packages/gtk+/gtk+-2.4.13/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.4.13/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.4.13/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.4.13/disable-tooltips.patch b/packages/gtk+/gtk+-2.4.13/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.4.13/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.4.13/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.4.13/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.4.13/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.4.13/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.4.13/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.4.13/gtk-doc.m4 b/packages/gtk+/gtk+-2.4.13/gtk-doc.m4
index e69de29bb2..3ec41666b2 100644
--- a/packages/gtk+/gtk+-2.4.13/gtk-doc.m4
+++ b/packages/gtk+/gtk+-2.4.13/gtk-doc.m4
@@ -0,0 +1,53 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH(html-dir,
+ AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST(HTML_DIR)
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE(gtk-doc,
+ AC_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [default=no]]),,
+ enable_gtk_doc=no)
+
+ have_gtk_doc=no
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+ fi
+
+ dnl do we want to do a version check?
+ifelse([$1],[],,
+ [gtk_doc_min_version=$1
+ if test "$have_gtk_doc" = yes; then
+ AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+ if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ have_gtk_doc=no
+ fi
+ fi
+])
+ if test x$enable_gtk_doc = xyes; then
+ if test "$have_gtk_doc" != yes; then
+ enable_gtk_doc=no
+ fi
+ fi
+
+ AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+ AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
diff --git a/packages/gtk+/gtk+-2.4.13/gtklabel-resize-patch b/packages/gtk+/gtk+-2.4.13/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/packages/gtk+/gtk+-2.4.13/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.4.13/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.4.13/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.4.13/hardcoded_libtool.patch
index e69de29bb2..9da8dd8cf1 100644
--- a/packages/gtk+/gtk+-2.4.13/hardcoded_libtool.patch
+++ b/packages/gtk+/gtk+-2.4.13/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.4.1/configure.in 2004-05-01 02:02:06.000000000 +1000
++++ gtk+-2.4.1/configure.in 2004-06-03 13:26:41.000000000 +1000
+@@ -350,7 +350,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -669,7 +669,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1441,7 +1441,7 @@
+ # export list from -export-symbols-regex is ignored and everything
+ # is exported
+ #
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.4.13/menu-deactivate.patch b/packages/gtk+/gtk+-2.4.13/menu-deactivate.patch
index e69de29bb2..29e665fbf3 100644
--- a/packages/gtk+/gtk+-2.4.13/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.4.13/menu-deactivate.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004
++++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004
+@@ -37,7 +37,7 @@
+ #include "gtktearoffmenuitem.h"
+ #include "gtkwindow.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ enum {
+ DEACTIVATE,
+@@ -156,6 +156,7 @@
+ static GtkContainerClass *parent_class = NULL;
+ static guint menu_shell_signals[LAST_SIGNAL] = { 0 };
+
++static int last_crossing_time;
+
+ GType
+ gtk_menu_shell_get_type (void)
+@@ -418,6 +419,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -545,6 +547,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -597,6 +606,8 @@
+ if (menu_shell->active)
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
++
++ last_crossing_time = event->time;
+
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
diff --git a/packages/gtk+/gtk+-2.4.13/no-demos.patch b/packages/gtk+/gtk+-2.4.13/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/packages/gtk+/gtk+-2.4.13/no-demos.patch
+++ b/packages/gtk+/gtk+-2.4.13/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000
++++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.4.13/no-xwc.patch b/packages/gtk+/gtk+-2.4.13/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/packages/gtk+/gtk+-2.4.13/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.4.13/no-xwc.patch
@@ -0,0 +1,148 @@
+--- gdk/x11/gdkdrawable-x11.c~ 2003-08-18 17:02:39.000000000 +0100
++++ gdk/x11/gdkdrawable-x11.c 2004-03-29 21:30:17.000000000 +0100
+@@ -636,12 +636,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -673,6 +675,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -693,7 +696,8 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+
+--- gdk/x11/gdkim-x11.c~ 2002-11-01 00:45:32.000000000 +0000
++++ gdk/x11/gdkim-x11.c 2004-03-29 21:28:30.000000000 +0100
+@@ -51,6 +51,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -96,6 +97,7 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
++#endif
+
+ return;
+ }
+@@ -139,6 +141,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -177,6 +180,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -209,6 +213,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -241,7 +246,8 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
+
+--- gdk/x11/gdkfont-x11.c~ 2003-03-06 20:17:55.000000000 +0000
++++ gdk/x11/gdkfont-x11.c 2004-03-29 21:29:40.000000000 +0100
+@@ -594,10 +594,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -647,6 +649,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -664,6 +667,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -736,6 +740,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -750,6 +755,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -822,6 +828,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -849,6 +856,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
diff --git a/packages/gtk+/gtk+-2.4.13/scroll-timings.patch b/packages/gtk+/gtk+-2.4.13/scroll-timings.patch
index e69de29bb2..a38b21dcc2 100644
--- a/packages/gtk+/gtk+-2.4.13/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.4.13/scroll-timings.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100
+@@ -35,9 +35,9 @@
+ #include "gtkintl.h"
+ #include "gtkscrollbar.h"
+
+-#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */
+-#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */
++#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.4.13/single-click.patch b/packages/gtk+/gtk+-2.4.13/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/packages/gtk+/gtk+-2.4.13/single-click.patch
+++ b/packages/gtk+/gtk+-2.4.13/single-click.patch
@@ -0,0 +1,48 @@
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c gtk+-2.4.4/gtk/gtkcalendar.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkcalendar.c 2004-09-18 12:41:28.000000000 +0100
+@@ -1026,9 +1026,8 @@
+ private_data->drag_start_y = y;
+
+ gtk_calendar_select_and_focus_day (calendar, day);
+- }
+- else if (event->type == GDK_2BUTTON_PRESS)
+- {
++
++ // Double-click action follows
+ private_data->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c gtk+-2.4.4/gtk/gtktreeview.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c 2004-07-10 05:02:11.000000000 +0100
++++ gtk+-2.4.4/gtk/gtktreeview.c 2004-09-18 13:49:23.000000000 +0100
+@@ -2180,7 +2180,8 @@
+ tree_view->priv->focus_column = column;
+
+ /* decide if we edit */
+- if (event->type == GDK_BUTTON_PRESS && event->button == 1 &&
++ /* Changed from button 1 to 2 so as not to conflict with the single-click activation */
++ if (event->type == GDK_BUTTON_PRESS && event->button == 2 &&
+ !(event->state & gtk_accelerator_get_default_mod_mask ()))
+ {
+ GtkTreePath *anchor;
+@@ -2305,16 +2306,13 @@
+ /* Test if a double click happened on the same row. */
+ if (event->button == 1)
+ {
+- /* We also handle triple clicks here, because a user could have done
+- * a first click and a second double click on different rows.
++ /* Replaced double/triple click with single-click for PDAs.
+ */
+- if ((event->type == GDK_2BUTTON_PRESS
+- || event->type == GDK_3BUTTON_PRESS)
+- && tree_view->priv->last_button_press)
++ if (event->type == GDK_BUTTON_PRESS)
+ {
+ GtkTreePath *lsc;
+
+- lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
++ lsc = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
+
+ if (lsc)
+ {
diff --git a/packages/gtk+/gtk+-2.4.13/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.4.13/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.4.13/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.4.13/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.4.13/spinbutton.patch b/packages/gtk+/gtk+-2.4.13/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/packages/gtk+/gtk+-2.4.13/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.4.13/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.4.13/xsettings.patch b/packages/gtk+/gtk+-2.4.13/xsettings.patch
index e69de29bb2..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.4.13/xsettings.patch
+++ b/packages/gtk+/gtk+-2.4.13/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.4.4/.mtn2git_empty b/packages/gtk+/gtk+-2.4.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.4.4/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.4.4/automake-lossage.patch b/packages/gtk+/gtk+-2.4.4/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.4.4/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.4.4/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch b/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.4.4/gtk-doc.m4 b/packages/gtk+/gtk+-2.4.4/gtk-doc.m4
index e69de29bb2..3ec41666b2 100644
--- a/packages/gtk+/gtk+-2.4.4/gtk-doc.m4
+++ b/packages/gtk+/gtk+-2.4.4/gtk-doc.m4
@@ -0,0 +1,53 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH(html-dir,
+ AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST(HTML_DIR)
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE(gtk-doc,
+ AC_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [default=no]]),,
+ enable_gtk_doc=no)
+
+ have_gtk_doc=no
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+ fi
+
+ dnl do we want to do a version check?
+ifelse([$1],[],,
+ [gtk_doc_min_version=$1
+ if test "$have_gtk_doc" = yes; then
+ AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+ if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ have_gtk_doc=no
+ fi
+ fi
+])
+ if test x$enable_gtk_doc = xyes; then
+ if test "$have_gtk_doc" != yes; then
+ enable_gtk_doc=no
+ fi
+ fi
+
+ AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+ AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
diff --git a/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch b/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch
index e69de29bb2..9da8dd8cf1 100644
--- a/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch
+++ b/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.4.1/configure.in 2004-05-01 02:02:06.000000000 +1000
++++ gtk+-2.4.1/configure.in 2004-06-03 13:26:41.000000000 +1000
+@@ -350,7 +350,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -669,7 +669,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1441,7 +1441,7 @@
+ # export list from -export-symbols-regex is ignored and everything
+ # is exported
+ #
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.4.4/no-demos.patch b/packages/gtk+/gtk+-2.4.4/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/packages/gtk+/gtk+-2.4.4/no-demos.patch
+++ b/packages/gtk+/gtk+-2.4.4/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000
++++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.4.4/no-xwc.patch b/packages/gtk+/gtk+-2.4.4/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/packages/gtk+/gtk+-2.4.4/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.4.4/no-xwc.patch
@@ -0,0 +1,148 @@
+--- gdk/x11/gdkdrawable-x11.c~ 2003-08-18 17:02:39.000000000 +0100
++++ gdk/x11/gdkdrawable-x11.c 2004-03-29 21:30:17.000000000 +0100
+@@ -636,12 +636,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -673,6 +675,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -693,7 +696,8 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+
+--- gdk/x11/gdkim-x11.c~ 2002-11-01 00:45:32.000000000 +0000
++++ gdk/x11/gdkim-x11.c 2004-03-29 21:28:30.000000000 +0100
+@@ -51,6 +51,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -96,6 +97,7 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
++#endif
+
+ return;
+ }
+@@ -139,6 +141,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -177,6 +180,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -209,6 +213,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -241,7 +246,8 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
+
+--- gdk/x11/gdkfont-x11.c~ 2003-03-06 20:17:55.000000000 +0000
++++ gdk/x11/gdkfont-x11.c 2004-03-29 21:29:40.000000000 +0100
+@@ -594,10 +594,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -647,6 +649,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -664,6 +667,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -736,6 +740,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -750,6 +755,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -822,6 +828,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -849,6 +856,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
diff --git a/packages/gtk+/gtk+-2.4.4/single-click.patch b/packages/gtk+/gtk+-2.4.4/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/packages/gtk+/gtk+-2.4.4/single-click.patch
+++ b/packages/gtk+/gtk+-2.4.4/single-click.patch
@@ -0,0 +1,48 @@
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c gtk+-2.4.4/gtk/gtkcalendar.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkcalendar.c 2004-09-18 12:41:28.000000000 +0100
+@@ -1026,9 +1026,8 @@
+ private_data->drag_start_y = y;
+
+ gtk_calendar_select_and_focus_day (calendar, day);
+- }
+- else if (event->type == GDK_2BUTTON_PRESS)
+- {
++
++ // Double-click action follows
+ private_data->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c gtk+-2.4.4/gtk/gtktreeview.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c 2004-07-10 05:02:11.000000000 +0100
++++ gtk+-2.4.4/gtk/gtktreeview.c 2004-09-18 13:49:23.000000000 +0100
+@@ -2180,7 +2180,8 @@
+ tree_view->priv->focus_column = column;
+
+ /* decide if we edit */
+- if (event->type == GDK_BUTTON_PRESS && event->button == 1 &&
++ /* Changed from button 1 to 2 so as not to conflict with the single-click activation */
++ if (event->type == GDK_BUTTON_PRESS && event->button == 2 &&
+ !(event->state & gtk_accelerator_get_default_mod_mask ()))
+ {
+ GtkTreePath *anchor;
+@@ -2305,16 +2306,13 @@
+ /* Test if a double click happened on the same row. */
+ if (event->button == 1)
+ {
+- /* We also handle triple clicks here, because a user could have done
+- * a first click and a second double click on different rows.
++ /* Replaced double/triple click with single-click for PDAs.
+ */
+- if ((event->type == GDK_2BUTTON_PRESS
+- || event->type == GDK_3BUTTON_PRESS)
+- && tree_view->priv->last_button_press)
++ if (event->type == GDK_BUTTON_PRESS)
+ {
+ GtkTreePath *lsc;
+
+- lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
++ lsc = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
+
+ if (lsc)
+ {
diff --git a/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.4.4/spinbutton.patch b/packages/gtk+/gtk+-2.4.4/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/packages/gtk+/gtk+-2.4.4/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.4.4/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.6.0/.mtn2git_empty b/packages/gtk+/gtk+-2.6.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.0/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.6.0/automake-lossage.patch b/packages/gtk+/gtk+-2.6.0/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.6.0/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.6.0/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.6.0/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.0/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.6.0/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.6.0/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.6.0/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.0/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.6.0/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.6.0/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.6.0/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.0/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/packages/gtk+/gtk+-2.6.0/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.6.0/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.0/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.0/hardcoded_libtool.patch
index e69de29bb2..b2afddcc61 100644
--- a/packages/gtk+/gtk+-2.6.0/hardcoded_libtool.patch
+++ b/packages/gtk+/gtk+-2.6.0/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000
++++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000
+@@ -360,7 +360,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -688,7 +688,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1512,7 +1512,7 @@
+ #
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.6.0/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.0/menu-deactivate.patch
index e69de29bb2..29e665fbf3 100644
--- a/packages/gtk+/gtk+-2.6.0/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.6.0/menu-deactivate.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004
++++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004
+@@ -37,7 +37,7 @@
+ #include "gtktearoffmenuitem.h"
+ #include "gtkwindow.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ enum {
+ DEACTIVATE,
+@@ -156,6 +156,7 @@
+ static GtkContainerClass *parent_class = NULL;
+ static guint menu_shell_signals[LAST_SIGNAL] = { 0 };
+
++static int last_crossing_time;
+
+ GType
+ gtk_menu_shell_get_type (void)
+@@ -418,6 +419,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -545,6 +547,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -597,6 +606,8 @@
+ if (menu_shell->active)
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
++
++ last_crossing_time = event->time;
+
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
diff --git a/packages/gtk+/gtk+-2.6.0/no-demos.patch b/packages/gtk+/gtk+-2.6.0/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/packages/gtk+/gtk+-2.6.0/no-demos.patch
+++ b/packages/gtk+/gtk+-2.6.0/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000
++++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.6.0/scroll-timings.patch b/packages/gtk+/gtk+-2.6.0/scroll-timings.patch
index e69de29bb2..a38b21dcc2 100644
--- a/packages/gtk+/gtk+-2.6.0/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.6.0/scroll-timings.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100
+@@ -35,9 +35,9 @@
+ #include "gtkintl.h"
+ #include "gtkscrollbar.h"
+
+-#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */
+-#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */
++#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.6.0/single-click.patch b/packages/gtk+/gtk+-2.6.0/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/packages/gtk+/gtk+-2.6.0/single-click.patch
+++ b/packages/gtk+/gtk+-2.6.0/single-click.patch
@@ -0,0 +1,48 @@
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c gtk+-2.4.4/gtk/gtkcalendar.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkcalendar.c 2004-09-18 12:41:28.000000000 +0100
+@@ -1026,9 +1026,8 @@
+ private_data->drag_start_y = y;
+
+ gtk_calendar_select_and_focus_day (calendar, day);
+- }
+- else if (event->type == GDK_2BUTTON_PRESS)
+- {
++
++ // Double-click action follows
+ private_data->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c gtk+-2.4.4/gtk/gtktreeview.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c 2004-07-10 05:02:11.000000000 +0100
++++ gtk+-2.4.4/gtk/gtktreeview.c 2004-09-18 13:49:23.000000000 +0100
+@@ -2180,7 +2180,8 @@
+ tree_view->priv->focus_column = column;
+
+ /* decide if we edit */
+- if (event->type == GDK_BUTTON_PRESS && event->button == 1 &&
++ /* Changed from button 1 to 2 so as not to conflict with the single-click activation */
++ if (event->type == GDK_BUTTON_PRESS && event->button == 2 &&
+ !(event->state & gtk_accelerator_get_default_mod_mask ()))
+ {
+ GtkTreePath *anchor;
+@@ -2305,16 +2306,13 @@
+ /* Test if a double click happened on the same row. */
+ if (event->button == 1)
+ {
+- /* We also handle triple clicks here, because a user could have done
+- * a first click and a second double click on different rows.
++ /* Replaced double/triple click with single-click for PDAs.
+ */
+- if ((event->type == GDK_2BUTTON_PRESS
+- || event->type == GDK_3BUTTON_PRESS)
+- && tree_view->priv->last_button_press)
++ if (event->type == GDK_BUTTON_PRESS)
+ {
+ GtkTreePath *lsc;
+
+- lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
++ lsc = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
+
+ if (lsc)
+ {
diff --git a/packages/gtk+/gtk+-2.6.0/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.0/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.6.0/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.6.0/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.6.0/spinbutton.patch b/packages/gtk+/gtk+-2.6.0/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/packages/gtk+/gtk+-2.6.0/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.6.0/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.6.0/xsettings.patch b/packages/gtk+/gtk+-2.6.0/xsettings.patch
index e69de29bb2..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.6.0/xsettings.patch
+++ b/packages/gtk+/gtk+-2.6.0/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.1/.mtn2git_empty b/packages/gtk+/gtk+-2.6.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.1/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.6.1/automake-lossage.patch b/packages/gtk+/gtk+-2.6.1/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.6.1/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.6.1/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.6.1/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.1/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.6.1/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.6.1/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.6.1/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.1/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.6.1/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.6.1/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.6.1/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.1/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/packages/gtk+/gtk+-2.6.1/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.6.1/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.1/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.1/hardcoded_libtool.patch
index e69de29bb2..b2afddcc61 100644
--- a/packages/gtk+/gtk+-2.6.1/hardcoded_libtool.patch
+++ b/packages/gtk+/gtk+-2.6.1/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000
++++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000
+@@ -360,7 +360,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -688,7 +688,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1512,7 +1512,7 @@
+ #
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.6.1/ltr.patch b/packages/gtk+/gtk+-2.6.1/ltr.patch
index e69de29bb2..cb65f124d3 100644
--- a/packages/gtk+/gtk+-2.6.1/ltr.patch
+++ b/packages/gtk+/gtk+-2.6.1/ltr.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.6.1/gdk/x11/gdkkeys-x11.c.old 2005-01-15 00:16:21.000000000 +0000
++++ gtk+-2.6.1/gdk/x11/gdkkeys-x11.c 2005-01-15 00:16:29.000000000 +0000
+@@ -604,7 +604,7 @@
+ }
+ else
+ #endif /* HAVE_XKB */
+- return PANGO_DIRECTION_NEUTRAL;
++ return PANGO_DIRECTION_LTR;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.6.1/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.1/menu-deactivate.patch
index e69de29bb2..29e665fbf3 100644
--- a/packages/gtk+/gtk+-2.6.1/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.6.1/menu-deactivate.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004
++++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004
+@@ -37,7 +37,7 @@
+ #include "gtktearoffmenuitem.h"
+ #include "gtkwindow.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ enum {
+ DEACTIVATE,
+@@ -156,6 +156,7 @@
+ static GtkContainerClass *parent_class = NULL;
+ static guint menu_shell_signals[LAST_SIGNAL] = { 0 };
+
++static int last_crossing_time;
+
+ GType
+ gtk_menu_shell_get_type (void)
+@@ -418,6 +419,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -545,6 +547,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -597,6 +606,8 @@
+ if (menu_shell->active)
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
++
++ last_crossing_time = event->time;
+
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
diff --git a/packages/gtk+/gtk+-2.6.1/no-demos.patch b/packages/gtk+/gtk+-2.6.1/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/packages/gtk+/gtk+-2.6.1/no-demos.patch
+++ b/packages/gtk+/gtk+-2.6.1/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000
++++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.6.1/no-xwc.patch b/packages/gtk+/gtk+-2.6.1/no-xwc.patch
index e69de29bb2..affb4a303e 100644
--- a/packages/gtk+/gtk+-2.6.1/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.6.1/no-xwc.patch
@@ -0,0 +1,151 @@
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00
+@@ -576,12 +576,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -613,6 +615,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -633,6 +636,7 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00
++++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00
+@@ -525,10 +525,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -578,6 +580,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -595,6 +598,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -667,6 +671,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -681,6 +686,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -753,6 +759,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -780,6 +787,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00
+@@ -48,6 +48,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -93,7 +94,8 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
+-
++#endif
++
+ return;
+ }
+
+@@ -136,6 +138,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -178,6 +181,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -210,6 +214,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -242,6 +247,7 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
diff --git a/packages/gtk+/gtk+-2.6.1/scroll-timings.patch b/packages/gtk+/gtk+-2.6.1/scroll-timings.patch
index e69de29bb2..a38b21dcc2 100644
--- a/packages/gtk+/gtk+-2.6.1/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.6.1/scroll-timings.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100
+@@ -35,9 +35,9 @@
+ #include "gtkintl.h"
+ #include "gtkscrollbar.h"
+
+-#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */
+-#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */
++#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.6.1/single-click.patch b/packages/gtk+/gtk+-2.6.1/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/packages/gtk+/gtk+-2.6.1/single-click.patch
+++ b/packages/gtk+/gtk+-2.6.1/single-click.patch
@@ -0,0 +1,48 @@
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c gtk+-2.4.4/gtk/gtkcalendar.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkcalendar.c 2004-09-18 12:41:28.000000000 +0100
+@@ -1026,9 +1026,8 @@
+ private_data->drag_start_y = y;
+
+ gtk_calendar_select_and_focus_day (calendar, day);
+- }
+- else if (event->type == GDK_2BUTTON_PRESS)
+- {
++
++ // Double-click action follows
+ private_data->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c gtk+-2.4.4/gtk/gtktreeview.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c 2004-07-10 05:02:11.000000000 +0100
++++ gtk+-2.4.4/gtk/gtktreeview.c 2004-09-18 13:49:23.000000000 +0100
+@@ -2180,7 +2180,8 @@
+ tree_view->priv->focus_column = column;
+
+ /* decide if we edit */
+- if (event->type == GDK_BUTTON_PRESS && event->button == 1 &&
++ /* Changed from button 1 to 2 so as not to conflict with the single-click activation */
++ if (event->type == GDK_BUTTON_PRESS && event->button == 2 &&
+ !(event->state & gtk_accelerator_get_default_mod_mask ()))
+ {
+ GtkTreePath *anchor;
+@@ -2305,16 +2306,13 @@
+ /* Test if a double click happened on the same row. */
+ if (event->button == 1)
+ {
+- /* We also handle triple clicks here, because a user could have done
+- * a first click and a second double click on different rows.
++ /* Replaced double/triple click with single-click for PDAs.
+ */
+- if ((event->type == GDK_2BUTTON_PRESS
+- || event->type == GDK_3BUTTON_PRESS)
+- && tree_view->priv->last_button_press)
++ if (event->type == GDK_BUTTON_PRESS)
+ {
+ GtkTreePath *lsc;
+
+- lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
++ lsc = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
+
+ if (lsc)
+ {
diff --git a/packages/gtk+/gtk+-2.6.1/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.1/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.6.1/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.6.1/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.6.1/spinbutton.patch b/packages/gtk+/gtk+-2.6.1/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/packages/gtk+/gtk+-2.6.1/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.6.1/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.6.1/xsettings.patch b/packages/gtk+/gtk+-2.6.1/xsettings.patch
index e69de29bb2..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.6.1/xsettings.patch
+++ b/packages/gtk+/gtk+-2.6.1/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.2/.mtn2git_empty b/packages/gtk+/gtk+-2.6.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.2/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.6.2/automake-lossage.patch b/packages/gtk+/gtk+-2.6.2/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.6.2/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.6.2/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.6.2/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.2/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.6.2/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.6.2/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.6.2/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.2/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.6.2/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.6.2/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.6.2/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.2/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/packages/gtk+/gtk+-2.6.2/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.6.2/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.2/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.2/hardcoded_libtool.patch
index e69de29bb2..b2afddcc61 100644
--- a/packages/gtk+/gtk+-2.6.2/hardcoded_libtool.patch
+++ b/packages/gtk+/gtk+-2.6.2/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000
++++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000
+@@ -360,7 +360,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -688,7 +688,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1512,7 +1512,7 @@
+ #
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.6.2/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.2/menu-deactivate.patch
index e69de29bb2..29e665fbf3 100644
--- a/packages/gtk+/gtk+-2.6.2/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.6.2/menu-deactivate.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004
++++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004
+@@ -37,7 +37,7 @@
+ #include "gtktearoffmenuitem.h"
+ #include "gtkwindow.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ enum {
+ DEACTIVATE,
+@@ -156,6 +156,7 @@
+ static GtkContainerClass *parent_class = NULL;
+ static guint menu_shell_signals[LAST_SIGNAL] = { 0 };
+
++static int last_crossing_time;
+
+ GType
+ gtk_menu_shell_get_type (void)
+@@ -418,6 +419,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -545,6 +547,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -597,6 +606,8 @@
+ if (menu_shell->active)
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
++
++ last_crossing_time = event->time;
+
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
diff --git a/packages/gtk+/gtk+-2.6.2/no-demos.patch b/packages/gtk+/gtk+-2.6.2/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/packages/gtk+/gtk+-2.6.2/no-demos.patch
+++ b/packages/gtk+/gtk+-2.6.2/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000
++++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.6.2/no-xwc.patch b/packages/gtk+/gtk+-2.6.2/no-xwc.patch
index e69de29bb2..affb4a303e 100644
--- a/packages/gtk+/gtk+-2.6.2/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.6.2/no-xwc.patch
@@ -0,0 +1,151 @@
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00
+@@ -576,12 +576,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -613,6 +615,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -633,6 +636,7 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00
++++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00
+@@ -525,10 +525,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -578,6 +580,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -595,6 +598,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -667,6 +671,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -681,6 +686,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -753,6 +759,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -780,6 +787,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00
+@@ -48,6 +48,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -93,7 +94,8 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
+-
++#endif
++
+ return;
+ }
+
+@@ -136,6 +138,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -178,6 +181,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -210,6 +214,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -242,6 +247,7 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
diff --git a/packages/gtk+/gtk+-2.6.2/scroll-timings.patch b/packages/gtk+/gtk+-2.6.2/scroll-timings.patch
index e69de29bb2..a38b21dcc2 100644
--- a/packages/gtk+/gtk+-2.6.2/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.6.2/scroll-timings.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100
+@@ -35,9 +35,9 @@
+ #include "gtkintl.h"
+ #include "gtkscrollbar.h"
+
+-#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */
+-#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */
++#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.6.2/single-click.patch b/packages/gtk+/gtk+-2.6.2/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/packages/gtk+/gtk+-2.6.2/single-click.patch
+++ b/packages/gtk+/gtk+-2.6.2/single-click.patch
@@ -0,0 +1,48 @@
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c gtk+-2.4.4/gtk/gtkcalendar.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkcalendar.c 2004-09-18 12:41:28.000000000 +0100
+@@ -1026,9 +1026,8 @@
+ private_data->drag_start_y = y;
+
+ gtk_calendar_select_and_focus_day (calendar, day);
+- }
+- else if (event->type == GDK_2BUTTON_PRESS)
+- {
++
++ // Double-click action follows
+ private_data->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+ g_signal_emit (calendar,
+diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c gtk+-2.4.4/gtk/gtktreeview.c
+--- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c 2004-07-10 05:02:11.000000000 +0100
++++ gtk+-2.4.4/gtk/gtktreeview.c 2004-09-18 13:49:23.000000000 +0100
+@@ -2180,7 +2180,8 @@
+ tree_view->priv->focus_column = column;
+
+ /* decide if we edit */
+- if (event->type == GDK_BUTTON_PRESS && event->button == 1 &&
++ /* Changed from button 1 to 2 so as not to conflict with the single-click activation */
++ if (event->type == GDK_BUTTON_PRESS && event->button == 2 &&
+ !(event->state & gtk_accelerator_get_default_mod_mask ()))
+ {
+ GtkTreePath *anchor;
+@@ -2305,16 +2306,13 @@
+ /* Test if a double click happened on the same row. */
+ if (event->button == 1)
+ {
+- /* We also handle triple clicks here, because a user could have done
+- * a first click and a second double click on different rows.
++ /* Replaced double/triple click with single-click for PDAs.
+ */
+- if ((event->type == GDK_2BUTTON_PRESS
+- || event->type == GDK_3BUTTON_PRESS)
+- && tree_view->priv->last_button_press)
++ if (event->type == GDK_BUTTON_PRESS)
+ {
+ GtkTreePath *lsc;
+
+- lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press);
++ lsc = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
+
+ if (lsc)
+ {
diff --git a/packages/gtk+/gtk+-2.6.2/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.2/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.6.2/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.6.2/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.6.2/spinbutton.patch b/packages/gtk+/gtk+-2.6.2/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/packages/gtk+/gtk+-2.6.2/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.6.2/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.6.2/xsettings.patch b/packages/gtk+/gtk+-2.6.2/xsettings.patch
index e69de29bb2..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.6.2/xsettings.patch
+++ b/packages/gtk+/gtk+-2.6.2/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.3/.mtn2git_empty b/packages/gtk+/gtk+-2.6.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.3/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.6.3/automake-lossage.patch b/packages/gtk+/gtk+-2.6.3/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.6.3/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.6.3/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch
+++ b/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch
index e69de29bb2..b2afddcc61 100644
--- a/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch
+++ b/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000
++++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000
+@@ -360,7 +360,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -688,7 +688,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1512,7 +1512,7 @@
+ #
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch
index e69de29bb2..29e665fbf3 100644
--- a/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch
+++ b/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004
++++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004
+@@ -37,7 +37,7 @@
+ #include "gtktearoffmenuitem.h"
+ #include "gtkwindow.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ enum {
+ DEACTIVATE,
+@@ -156,6 +156,7 @@
+ static GtkContainerClass *parent_class = NULL;
+ static guint menu_shell_signals[LAST_SIGNAL] = { 0 };
+
++static int last_crossing_time;
+
+ GType
+ gtk_menu_shell_get_type (void)
+@@ -418,6 +419,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -545,6 +547,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -597,6 +606,8 @@
+ if (menu_shell->active)
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
++
++ last_crossing_time = event->time;
+
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
diff --git a/packages/gtk+/gtk+-2.6.3/no-demos.patch b/packages/gtk+/gtk+-2.6.3/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/packages/gtk+/gtk+-2.6.3/no-demos.patch
+++ b/packages/gtk+/gtk+-2.6.3/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000
++++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.6.3/no-xwc.patch b/packages/gtk+/gtk+-2.6.3/no-xwc.patch
index e69de29bb2..affb4a303e 100644
--- a/packages/gtk+/gtk+-2.6.3/no-xwc.patch
+++ b/packages/gtk+/gtk+-2.6.3/no-xwc.patch
@@ -0,0 +1,151 @@
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00
+@@ -576,12 +576,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -613,6 +615,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XWC
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -633,6 +636,7 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00
++++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00
+@@ -525,10 +525,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -578,6 +580,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -595,6 +598,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -667,6 +671,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -681,6 +686,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -753,6 +759,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XWC
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -780,6 +787,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c
+--- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00
++++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00
+@@ -48,6 +48,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XWC
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -93,7 +94,8 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
+-
++#endif
++
+ return;
+ }
+
+@@ -136,6 +138,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -178,6 +181,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -210,6 +214,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XWC
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -242,6 +247,7 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
diff --git a/packages/gtk+/gtk+-2.6.3/scroll-timings.patch b/packages/gtk+/gtk+-2.6.3/scroll-timings.patch
index e69de29bb2..a38b21dcc2 100644
--- a/packages/gtk+/gtk+-2.6.3/scroll-timings.patch
+++ b/packages/gtk+/gtk+-2.6.3/scroll-timings.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100
+@@ -35,9 +35,9 @@
+ #include "gtkintl.h"
+ #include "gtkscrollbar.h"
+
+-#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */
+-#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */
++#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch
+++ b/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.6.3/spinbutton.patch b/packages/gtk+/gtk+-2.6.3/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/packages/gtk+/gtk+-2.6.3/spinbutton.patch
+++ b/packages/gtk+/gtk+-2.6.3/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.6.3/xsettings.patch b/packages/gtk+/gtk+-2.6.3/xsettings.patch
index e69de29bb2..b63e262d34 100644
--- a/packages/gtk+/gtk+-2.6.3/xsettings.patch
+++ b/packages/gtk+/gtk+-2.6.3/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/.mtn2git_empty b/packages/gtk+/gtk+-2.6.4-1.osso7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch
index e69de29bb2..736473696f 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch
@@ -0,0 +1,26 @@
+diff -ruN gtk+-2.0.6.orig/configure gtk+-2.0.6/configure
+--- gtk+-2.0.6.orig/configure 2002-08-31 03:49:07.000000000 +0900
++++ gtk+-2.0.6/configure 2002-08-31 03:52:45.000000000 +0900
+@@ -7904,7 +7904,8 @@
+ if test "$os_win32" != yes; then
+ # libtool option to control which symbols are exported
+ # right now, symbols starting with _ are not exported
+- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[^_].*"'
++ # Disabled until -export-symbols-regex works (RH patch)
++ LIBTOOL_EXPORT_OPTIONS=
+ else
+ # We currently use .def files on Windows (for gdk-pixbuf, gdk and gtk)
+ LIBTOOL_EXPORT_OPTIONS=
+diff -ruN gtk+-2.0.6.orig/configure.in gtk+-2.0.6/configure.in
+--- gtk+-2.0.6.orig/configure.in 2002-08-31 03:49:07.000000000 +0900
++++ gtk+-2.0.6/configure.in 2002-08-31 03:51:22.000000000 +0900
+@@ -273,7 +273,8 @@
+ if test "$os_win32" != yes; then
+ # libtool option to control which symbols are exported
+ # right now, symbols starting with _ are not exported
+- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
++ # Disabled until -export-symbols-regex works (RH patch)
++ LIBTOOL_EXPORT_OPTIONS=
+ else
+ # We currently use .def files on Windows (for gdk-pixbuf, gdk and gtk)
+ LIBTOOL_EXPORT_OPTIONS=
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch
index e69de29bb2..5d80daf0bc 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch
@@ -0,0 +1,33 @@
+diff -ruN gtk+-2.2.0.orig/modules/input/Makefile.am gtk+-2.2.0/modules/input/Makefile.am
+--- gtk+-2.2.0.orig/modules/input/Makefile.am 2003-01-06 23:40:37.000000000 +0900
++++ gtk+-2.2.0/modules/input/Makefile.am 2003-01-06 23:46:35.000000000 +0900
+@@ -118,7 +118,12 @@
+ im-viqr.la
+
+ gtk.immodules: Makefile.am $(module_LTLIBRARIES)
+- $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules
++ @if $(RUN_QUERY_IMMODULES_TEST) ; then \
++ $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules ; \
++ else \
++ touch $@ ; \
++ fi
++
+
+ CLEANFILES = gtk.immodules
+
+diff -ruN gtk+-2.2.0.orig/modules/input/Makefile.in gtk+-2.2.0/modules/input/Makefile.in
+--- gtk+-2.2.0.orig/modules/input/Makefile.in 2003-01-06 23:39:08.000000000 +0900
++++ gtk+-2.2.0/modules/input/Makefile.in 2003-01-06 23:46:44.000000000 +0900
+@@ -785,7 +785,11 @@
+ rm -f $(DESTDIR)$(sysconfdir)/gtk-2.0/gtk.immodules
+
+ gtk.immodules: Makefile.am $(module_LTLIBRARIES)
+- $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules
++ @if $(RUN_QUERY_IMMODULES_TEST) ; then \
++ $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules ; \
++ else \
++ touch $@ ; \
++ fi
+
+ @CROSS_COMPILING_FALSE@all-local: gtk.immodules
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch
index e69de29bb2..21500db65a 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch
@@ -0,0 +1,18 @@
+diff -Nur gtk+-2.4.9.orig/gdk-pixbuf/io-ico.c gtk+-2.4.9/gdk-pixbuf/io-ico.c
+--- gtk+-2.4.9.orig/gdk-pixbuf/io-ico.c 2004-08-25 18:52:18.000000000 +0200
++++ gtk+-2.4.9/gdk-pixbuf/io-ico.c 2004-09-15 00:40:17.000000000 +0200
+@@ -210,6 +210,14 @@
+
+ State->HeaderSize = 6 + IconCount*16;
+
++ if (State->HeaderSize < 0) {
++ g_set_error (error,
++ GDK_PIXBUF_ERROR,
++ GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
++ _("Invalid header in icon"));
++ return;
++ }
++
+ if (State->HeaderSize>State->BytesInHeaderBuf) {
+ guchar *tmp=g_try_realloc(State->HeaderBuf,State->HeaderSize);
+ if (!tmp) {
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch
index e69de29bb2..e579c8e208 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch
@@ -0,0 +1,11 @@
+--- gtk/updateiconcache.c.orig 2005-02-06 21:08:09.638762480 +0100
++++ gtk+-2.6.2/gtk/updateiconcache.c 2005-02-06 21:15:13.639304600 +0100
+@@ -53,7 +53,7 @@
+ gchar *cache_path;
+ int retval;
+
+- retval = g_stat (path, &path_stat);
++ retval = stat (path, &path_stat);
+
+ if (retval < 0)
+ {
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff
index e69de29bb2..77cda1ce27 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff
@@ -0,0 +1,1885 @@
+--- gtk+-2.6.4/configure 2005-03-30 15:05:06.000000000 +0300
++++ gtk+-2.6.4/configure 2005-03-30 15:07:58.000000000 +0300
+@@ -1057,6 +1057,7 @@
+ --enable-xkb support XKB [default=maybe]
+ --disable-rebuilds disable all source autogeneration rules
+ --disable-visibility don't use ELF visibility attributes
++ --disable-shortcuts disable keyboard shortcuts
+ --disable-shadowfb disable shadowfb support for linux-fb
+ --enable-fbmanager enable framebuffer manager support (GtkFB)
+ --enable-explicit-deps=[yes/no/auto]
+@@ -1197,7 +1198,7 @@
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+- cd $ac_popdir
++ cd "$ac_popdir"
+ done
+ fi
+
+@@ -2663,8 +2664,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -2722,8 +2722,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -2839,8 +2838,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -2894,8 +2892,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -2940,8 +2937,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -2985,8 +2981,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -3759,7 +3754,7 @@
+ ;;
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 3762 "configure"' > conftest.$ac_ext
++ echo '#line 3757 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -3879,8 +3874,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4189,8 +4183,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4360,8 +4353,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4428,8 +4420,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4689,8 +4680,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4748,8 +4738,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4820,8 +4809,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4865,8 +4853,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -5331,7 +5318,7 @@
+
+
+ # Provide some information about the compiler.
+-echo "$as_me:5334:" \
++echo "$as_me:5321:" \
+ "checking for Fortran 77 compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+ { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+@@ -5377,8 +5364,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_f77_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -5427,8 +5413,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_f77_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -6388,11 +6373,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:6391: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6376: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:6395: \$? = $ac_status" >&5
++ echo "$as_me:6380: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -6631,11 +6616,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:6634: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6619: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:6638: \$? = $ac_status" >&5
++ echo "$as_me:6623: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -6691,11 +6676,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:6694: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:6679: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:6698: \$? = $ac_status" >&5
++ echo "$as_me:6683: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -7082,8 +7067,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -7143,8 +7127,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8026,7 +8009,7 @@
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+- echo '#line 8029 "configure"' > conftest.$ac_ext
++ echo '#line 8012 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -8357,8 +8340,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8461,8 +8443,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8527,8 +8508,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8621,8 +8601,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8687,8 +8666,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8754,8 +8732,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8821,8 +8798,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -8897,7 +8873,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 8900 "configure"
++#line 8876 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -8995,7 +8971,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 8998 "configure"
++#line 8974 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -10032,8 +10008,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -10094,8 +10069,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -11188,11 +11162,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:11191: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:11165: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:11195: \$? = $ac_status" >&5
++ echo "$as_me:11169: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -11248,11 +11222,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:11251: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:11225: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:11255: \$? = $ac_status" >&5
++ echo "$as_me:11229: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -11759,7 +11733,7 @@
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+- echo '#line 11762 "configure"' > conftest.$ac_ext
++ echo '#line 11736 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -12090,8 +12064,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12194,8 +12167,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12260,8 +12232,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12354,8 +12325,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12420,8 +12390,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12487,8 +12456,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12554,8 +12522,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -12630,7 +12597,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 12633 "configure"
++#line 12600 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -12728,7 +12695,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 12731 "configure"
++#line 12698 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -13565,11 +13532,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:13568: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13535: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:13572: \$? = $ac_status" >&5
++ echo "$as_me:13539: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -13625,11 +13592,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:13628: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:13595: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:13632: \$? = $ac_status" >&5
++ echo "$as_me:13599: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -14006,8 +13973,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_f77_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -14057,8 +14023,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_f77_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -14940,7 +14905,7 @@
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+- echo '#line 14943 "configure"' > conftest.$ac_ext
++ echo '#line 14908 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -15681,11 +15646,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:15684: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:15649: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:15688: \$? = $ac_status" >&5
++ echo "$as_me:15653: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -15924,11 +15889,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:15927: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:15892: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:15931: \$? = $ac_status" >&5
++ echo "$as_me:15896: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -15984,11 +15949,11 @@
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:15987: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:15952: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:15991: \$? = $ac_status" >&5
++ echo "$as_me:15956: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -16375,8 +16340,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -16436,8 +16400,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -17319,7 +17282,7 @@
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+- echo '#line 17322 "configure"' > conftest.$ac_ext
++ echo '#line 17285 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -17650,8 +17613,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -17754,8 +17716,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -17820,8 +17781,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -17914,8 +17874,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -17980,8 +17939,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -18047,8 +18005,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -18114,8 +18071,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -18190,7 +18146,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 18193 "configure"
++#line 18149 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -18288,7 +18244,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 18291 "configure"
++#line 18247 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -19354,8 +19310,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -19384,8 +19339,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -19455,8 +19409,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -19508,8 +19461,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -19580,8 +19532,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -19633,8 +19584,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -19849,6 +19799,18 @@
+ else
+ enable_visibility=yes
+ fi;
++# modification for Device to disable keyboard shortcuts
++# Check whether --enable-shortcuts or --disable-shortcuts was given.
++if test "${enable_shortcuts+set}" = set; then
++ enableval="$enable_shortcuts"
++
++else
++ enable_shortcuts=yes
++fi;
++
++if test "x$enable_shortcuts" = "xno"; then
++ GTK_EXTRA_CFLAGS="$GTK_EXTRA_CFLAGS -DDISABLE_KEYBOARD_SHORTCUTS"
++fi;
+
+
+ # Check whether --with-xinput or --without-xinput was given.
+@@ -20018,8 +19980,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -20124,8 +20085,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -20652,8 +20612,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -20716,8 +20675,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -20753,7 +20711,7 @@
+ # sure that both po/ and po-properties/ have .po files that correspond
+ # to your language. If you only add one to po/, the build will break
+ # in po-properties/.
+-ALL_LINGUAS="af am ar az az_IR be bg bn br bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu ia id is it ja ko li lt lv mi mk ml mn mr ms nb ne nl nn no nso pa pl pt pt_BR ro ru rw sk sl sq sr sr@ije sr@Latn sv ta th tk tr uk uz uz@Latn vi wa xh yi zh_CN zh_TW"
++ALL_LINGUAS=""
+
+
+ for ac_header in locale.h
+@@ -20789,8 +20747,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -20935,8 +20892,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21007,8 +20963,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21152,8 +21107,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21211,8 +21165,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21309,8 +21262,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21389,8 +21341,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21454,8 +21405,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21519,8 +21469,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21597,8 +21546,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21662,8 +21610,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21779,8 +21726,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -21947,8 +21893,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -22081,8 +22026,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -22167,8 +22111,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -22469,8 +22412,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -22514,8 +22456,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -22822,8 +22763,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -22949,8 +22889,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23018,8 +22957,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23171,8 +23109,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23324,8 +23261,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23486,8 +23422,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23572,8 +23507,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23666,8 +23600,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23876,8 +23809,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -23949,8 +23881,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24014,8 +23945,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24199,8 +24129,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24477,8 +24406,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24579,8 +24507,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24678,8 +24605,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24896,8 +24822,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -24962,8 +24887,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25037,8 +24961,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25249,8 +25172,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25306,8 +25228,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25460,8 +25381,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25517,8 +25437,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25671,8 +25590,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25728,8 +25646,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -25905,8 +25822,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26022,8 +25938,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26127,8 +26042,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26184,8 +26098,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26330,8 +26243,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26488,8 +26400,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26560,8 +26471,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26881,8 +26791,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -26939,8 +26848,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27183,8 +27091,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27295,8 +27202,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27347,8 +27253,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27424,8 +27329,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27480,8 +27384,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27549,8 +27452,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27658,8 +27560,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27723,8 +27624,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27792,8 +27692,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27897,8 +27796,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -27962,8 +27860,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28060,8 +27957,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28125,8 +28021,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28223,8 +28118,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28288,8 +28182,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28368,8 +28261,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28462,8 +28354,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28537,8 +28428,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28609,8 +28499,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28709,8 +28598,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28766,8 +28654,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28856,8 +28743,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28907,8 +28793,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -28999,8 +28884,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29043,8 +28927,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29119,8 +29002,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29198,8 +29080,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29272,8 +29153,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29350,8 +29230,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29447,8 +29326,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29558,8 +29436,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29609,8 +29486,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29809,8 +29685,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -29860,8 +29735,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -30015,6 +29889,116 @@
+ GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS"
+ fi
+
++ # Checks for XFixes extension
++
++ have_xfixes=false
++
++ succeeded=no
++
++ if test -z "$PKG_CONFIG"; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
++fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
++if test -n "$PKG_CONFIG"; then
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ fi
++
++ if test "$PKG_CONFIG" = "no" ; then
++ echo "*** The pkg-config script could not be found. Make sure it is"
++ echo "*** in your path, or set the PKG_CONFIG environment variable"
++ echo "*** to the full path to pkg-config."
++ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
++ else
++ PKG_CONFIG_MIN_VERSION=0.9.0
++ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
++ echo "$as_me:$LINENO: checking for xfixes" >&5
++echo $ECHO_N "checking for xfixes... $ECHO_C" >&6
++
++ if $PKG_CONFIG --exists "xfixes" ; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++ succeeded=yes
++
++ echo "$as_me:$LINENO: checking XFIXES_CFLAGS" >&5
++echo $ECHO_N "checking XFIXES_CFLAGS... $ECHO_C" >&6
++ XFIXES_CFLAGS=`$PKG_CONFIG --cflags "xfixes"`
++ echo "$as_me:$LINENO: result: $XFIXES_CFLAGS" >&5
++echo "${ECHO_T}$XFIXES_CFLAGS" >&6
++
++ echo "$as_me:$LINENO: checking XFIXES_LIBS" >&5
++echo $ECHO_N "checking XFIXES_LIBS... $ECHO_C" >&6
++ XFIXES_LIBS=`$PKG_CONFIG --libs "xfixes"`
++ echo "$as_me:$LINENO: result: $XFIXES_LIBS" >&5
++echo "${ECHO_T}$XFIXES_LIBS" >&6
++ else
++ XFIXES_CFLAGS=""
++ XFIXES_LIBS=""
++ ## If we have a custom action on failure, don't print errors, but
++ ## do set a variable so people can do so.
++ XFIXES_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xfixes"`
++
++ fi
++
++
++
++ else
++ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
++ echo "*** See http://www.freedesktop.org/software/pkgconfig"
++ fi
++ fi
++
++ if test $succeeded = yes; then
++ have_xfixes=true
++ else
++ :
++ fi
++
++
++ if $have_xfixes ; then
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_XFIXES 1
++_ACEOF
++
++ GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS"
++ GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS"
++ fi
++
+ # Xshm checks
+
+ if test "x$enable_shm" = "xyes"; then
+@@ -30049,8 +30033,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -30196,8 +30179,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -30355,8 +30337,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -30651,8 +30632,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -30765,8 +30745,7 @@
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -30798,7 +30777,6 @@
+
+ GTK_PACKAGES=atk
+ GTK_EXTRA_LIBS=
+-GTK_EXTRA_CFLAGS=
+ GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
+ GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
+
+@@ -32514,11 +32492,6 @@
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+@@ -32557,6 +32530,12 @@
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
++
++ if test x"$ac_file" != x-; then
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ rm -f "$ac_file"
++ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff
index e69de29bb2..8573b11739 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff
@@ -0,0 +1,53 @@
+--- gtk+-2.6.4/configure.in 2005-03-30 15:05:06.000000000 +0300
++++ gtk+-2.6.4/configure.in 2005-03-30 15:07:36.000000000 +0300
+@@ -202,6 +202,15 @@
+ [AC_HELP_STRING([--disable-visibility],
+ [don't use ELF visibility attributes])],,
+ [enable_visibility=yes])
++# modification for Device to disable keyboard shortcuts
++AC_ARG_ENABLE(shortcuts,
++ [AC_HELP_STRING([--disable-shortcuts],
++ [disable keyboard shortcuts])],,
++ [enable_shortcuts=yes])
++
++if test "x$enable_shortcuts" = "xno"; then
++ GTK_EXTRA_CFLAGS="$GTK_EXTRA_CFLAGS -DDISABLE_KEYBOARD_SHORTCUTS"
++fi;
+
+ AC_ARG_WITH(xinput,
+ [AC_HELP_STRING([--with-xinput=@<:@no/yes@:>@], [support XInput])])
+@@ -418,7 +427,7 @@
+ # sure that both po/ and po-properties/ have .po files that correspond
+ # to your language. If you only add one to po/, the build will break
+ # in po-properties/.
+-ALL_LINGUAS="af am ar az az_IR be bg bn br bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu ia id is it ja ko li lt lv mi mk ml mn mr ms nb ne nl nn no nso pa pl pt pt_BR ro ru rw sk sl sq sr sr@ije sr@Latn sv ta th tk tr uk uz uz@Latn vi wa xh yi zh_CN zh_TW"
++ALL_LINGUAS=""
+ AM_GLIB_GNU_GETTEXT
+ LIBS="$LIBS $INTLLIBS"
+ AC_OUTPUT_COMMANDS([case "$CONFIG_FILES" in *po-properties/Makefile.in*)
+@@ -1283,6 +1292,17 @@
+ GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS"
+ GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS"
+ fi
++
++ # Checks for XFixes extension
++
++ have_xfixes=false
++ PKG_CHECK_MODULES(XFIXES, xfixes, have_xfixes=true, :)
++
++ if $have_xfixes ; then
++ AC_DEFINE(HAVE_XFIXES, 1, Have the XFIXES X extension)
++ GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS"
++ GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS"
++ fi
+
+ # Xshm checks
+
+@@ -1492,7 +1512,6 @@
+
+ GTK_PACKAGES=atk
+ GTK_EXTRA_LIBS=
+-GTK_EXTRA_CFLAGS=
+ GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
+ GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
+
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff
index e69de29bb2..8104eb8559 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff
@@ -0,0 +1,38 @@
+--- gtk+-2.6.4/gdk/x11/gdkwindow-x11.c 2005-01-25 20:51:36.000000000 +0200
++++ gtk+-2.6.4/gdk/x11/gdkwindow-x11.c 2005-04-06 16:19:35.350164320 +0300
+@@ -1286,6 +1286,7 @@
+ GdkToplevelX11 *toplevel;
+ Atom atoms[7];
+ gint i;
++ gint propmode;
+
+ private = (GdkWindowObject*) window;
+ toplevel = _gdk_x11_window_get_toplevel (window);
+@@ -1295,6 +1296,12 @@
+
+ update_wm_hints (window, TRUE);
+
++ /* If the window has _NET_WM_STATE key specified, use it as the property mode */
++ propmode = (gint)g_object_get_data (G_OBJECT (window), "_NET_WM_STATE");
++
++ if (!propmode)
++ propmode = PropModeReplace;
++
+ /* We set the spec hints regardless of whether the spec is supported,
+ * since it can't hurt and it's kind of expensive to check whether
+ * it's supported.
+@@ -1366,10 +1373,11 @@
+ XChangeProperty (xdisplay,
+ xwindow,
+ gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"),
+- XA_ATOM, 32, PropModeReplace,
++ XA_ATOM, 32, propmode,
+ (guchar*) atoms, i);
+- }
+- else
++ }
++ /* Don't delete the property, unless we are replacing it */
++ else if (propmode == PropModeReplace )
+ {
+ XDeleteProperty (xdisplay,
+ xwindow,
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch
@@ -0,0 +1,236 @@
+--- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000
+@@ -29,7 +29,7 @@
+ #include "gtkarrow.h"
+ #include "gtkintl.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -53,6 +53,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -111,6 +113,7 @@
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -166,13 +169,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000
+@@ -340,6 +340,9 @@
+ static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
+ guint day);
+
++static void gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day);
++
+ static void gtk_calendar_paint_arrow (GtkWidget *widget,
+ guint arrow);
+ static void gtk_calendar_paint_day_num (GtkWidget *widget,
+@@ -861,13 +864,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -908,10 +911,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -939,10 +942,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -974,10 +977,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ gtk_calendar_do_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ gtk_calendar_do_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+@@ -2480,9 +2483,9 @@
+ return TRUE;
+ }
+
+-void
+-gtk_calendar_select_day (GtkCalendar *calendar,
+- guint day)
++static void
++gtk_calendar_do_select_day (GtkCalendar *calendar,
++ guint day)
+ {
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+@@ -2499,6 +2502,13 @@
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
+ }
++}
++
++void
++gtk_calendar_select_day (GtkCalendar *calendar,
++ guint day)
++{
++ gtk_calendar_do_select_day (calendar, day);
+
+ calendar->selected_day = day;
+
+--- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000
++++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000
+@@ -557,6 +557,15 @@
+ 0.0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1124,7 +1133,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1140,9 +1149,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100
++++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000
+@@ -180,6 +180,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -220,6 +221,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -815,6 +819,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1186,7 +1196,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1364,7 +1374,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff
index e69de29bb2..090d0da0eb 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff
@@ -0,0 +1,10 @@
+--- gtk+-2.6.4/gtk/gtk.h 2004-09-27 21:37:33.000000000 +0300
++++ gtk+-2.6.4/gtk/gtk.h 2005-04-06 16:19:35.812094096 +0300
+@@ -156,6 +156,7 @@
+ #include <gtk/gtktearoffmenuitem.h>
+ #include <gtk/gtktext.h>
+ #include <gtk/gtktextbuffer.h>
++#include <gtk/gtktextbufferserialize.h>
+ #include <gtk/gtktextview.h>
+ #include <gtk/gtktipsquery.h>
+ #include <gtk/gtktoggleaction.h>
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff
index e69de29bb2..0672df19b0 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff
@@ -0,0 +1,27 @@
+--- gtk+-2.6.4/gtk/Makefile.am 2005-01-13 17:18:21.000000000 +0200
++++ gtk+-2.6.4/gtk/Makefile.am 2005-04-06 16:19:35.806095008 +0300
+@@ -246,6 +246,7 @@
+ gtktearoffmenuitem.h \
+ gtktext.h \
+ gtktextbuffer.h \
++ gtktextbufferserialize.h\
+ gtktextchild.h \
+ gtktextdisplay.h \
+ gtktextiter.h \
+@@ -387,6 +388,8 @@
+ gtkframe.c \
+ gtkgamma.c \
+ gtkgc.c \
++ gtkhashtable.c \
++ gtkhashtable.h \
+ gtkhandlebox.c \
+ gtkhbbox.c \
+ gtkhbox.c \
+@@ -470,6 +473,7 @@
+ gtktext.c \
+ gtktextbtree.c \
+ gtktextbuffer.c \
++ gtktextbufferserialize.c\
+ gtktextchild.c \
+ gtktextdisplay.c \
+ gtktextiter.c \
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff
index e69de29bb2..56eca02b03 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff
@@ -0,0 +1,292 @@
+--- gtk+-2.6.4/gtk/Makefile.in 2005-03-01 17:31:32.000000000 +0200
++++ gtk+-2.6.4/gtk/Makefile.in 2005-04-06 16:19:35.808094704 +0300
+@@ -485,6 +485,7 @@
+ gtktearoffmenuitem.h \
+ gtktext.h \
+ gtktextbuffer.h \
++ gtktextbufferserialize.h\
+ gtktextchild.h \
+ gtktextdisplay.h \
+ gtktextiter.h \
+@@ -629,6 +630,8 @@
+ gtkframe.c \
+ gtkgamma.c \
+ gtkgc.c \
++ gtkhashtable.c \
++ gtkhashtable.h \
+ gtkhandlebox.c \
+ gtkhbbox.c \
+ gtkhbox.c \
+@@ -712,6 +715,7 @@
+ gtktext.c \
+ gtktextbtree.c \
+ gtktextbuffer.c \
++ gtktextbufferserialize.c\
+ gtktextchild.c \
+ gtktextdisplay.c \
+ gtktextiter.c \
+@@ -927,14 +931,14 @@
+ gtkfilechooserdefault.c gtkfilechooserutils.c \
+ gtkfilechooserwidget.c gtkfilefilter.c gtkfilesel.c \
+ gtkfilesystem.c gtkfilesystemmodel.c gtkfixed.c gtkfontbutton.c \
+- gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhandlebox.c \
+- gtkhbbox.c gtkhbox.c gtkhpaned.c gtkhruler.c gtkhscale.c \
+- gtkhscrollbar.c gtkhseparator.c gtkhsv.c gtkhsv.h \
+- gtkiconfactory.c gtkiconcache.c gtkicontheme.c gtkiconview.c \
+- gtkimage.c gtkimagemenuitem.c gtkimcontext.c \
+- gtkimcontextsimple.c gtkimmodule.c gtkimmulticontext.c \
+- gtkinputdialog.c gtkintl.h gtkinvisible.c gtkitem.c \
+- gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \
++ gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhashtable.c \
++ gtkhashtable.h gtkhandlebox.c gtkhbbox.c gtkhbox.c gtkhpaned.c \
++ gtkhruler.c gtkhscale.c gtkhscrollbar.c gtkhseparator.c \
++ gtkhsv.c gtkhsv.h gtkiconfactory.c gtkiconcache.c \
++ gtkicontheme.c gtkiconview.c gtkimage.c gtkimagemenuitem.c \
++ gtkimcontext.c gtkimcontextsimple.c gtkimmodule.c \
++ gtkimmulticontext.c gtkinputdialog.c gtkintl.h gtkinvisible.c \
++ gtkitem.c gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \
+ gtklayout.c gtklist.c gtklistitem.c gtkliststore.c gtkmain.c \
+ gtkmarshal.c gtkmarshalers.c gtkmenu.c gtkmenubar.c \
+ gtkmenuitem.c gtkmenushell.c gtkmenutoolbutton.c \
+@@ -949,21 +953,21 @@
+ gtkseparatortoolitem.c gtksettings.c gtksignal.c gtksizegroup.c \
+ gtkspinbutton.c gtkstatusbar.c gtkstock.c gtkstyle.c gtktable.c \
+ gtktearoffmenuitem.c gtktext.c gtktextbtree.c gtktextbuffer.c \
+- gtktextchild.c gtktextdisplay.c gtktextiter.c \
+- gtktextiterprivate.h gtktextlayout.c gtktextmark.c \
+- gtktextmarkprivate.h gtktextsegment.c gtktexttag.c \
+- gtktexttagtable.c gtktexttypes.c gtktextutil.c gtktextview.c \
+- gtkthemes.c gtktipsquery.c gtktoggleaction.c gtktogglebutton.c \
+- gtktoggletoolbutton.c gtktoolbar.c gtktoolbutton.c \
+- gtktoolitem.c gtktooltips.c gtktree.c gtktreedatalist.c \
+- gtktreednd.c gtktreeitem.c gtktreemodel.c gtktreemodelfilter.c \
+- gtktreemodelsort.c gtktreeselection.c gtktreesortable.c \
+- gtktreestore.c gtktreeview.c gtktreeviewcolumn.c \
+- gtktypebuiltins.c gtktypeutils.c gtkuimanager.c gtkvbbox.c \
+- gtkvbox.c gtkviewport.c gtkvpaned.c gtkvruler.c gtkvscale.c \
+- gtkvscrollbar.c gtkvseparator.c gtkwidget.c \
+- gtkwindow-decorate.c gtkwindow.c xembed.h gtkfilesystemunix.c \
+- gtkfilesystemwin32.c
++ gtktextbufferserialize.c gtktextchild.c gtktextdisplay.c \
++ gtktextiter.c gtktextiterprivate.h gtktextlayout.c \
++ gtktextmark.c gtktextmarkprivate.h gtktextsegment.c \
++ gtktexttag.c gtktexttagtable.c gtktexttypes.c gtktextutil.c \
++ gtktextview.c gtkthemes.c gtktipsquery.c gtktoggleaction.c \
++ gtktogglebutton.c gtktoggletoolbutton.c gtktoolbar.c \
++ gtktoolbutton.c gtktoolitem.c gtktooltips.c gtktree.c \
++ gtktreedatalist.c gtktreednd.c gtktreeitem.c gtktreemodel.c \
++ gtktreemodelfilter.c gtktreemodelsort.c gtktreeselection.c \
++ gtktreesortable.c gtktreestore.c gtktreeview.c \
++ gtktreeviewcolumn.c gtktypebuiltins.c gtktypeutils.c \
++ gtkuimanager.c gtkvbbox.c gtkvbox.c gtkviewport.c gtkvpaned.c \
++ gtkvruler.c gtkvscale.c gtkvscrollbar.c gtkvseparator.c \
++ gtkwidget.c gtkwindow-decorate.c gtkwindow.c xembed.h \
++ gtkfilesystemunix.c gtkfilesystemwin32.c
+ @OS_UNIX_TRUE@am__objects_1 = gtkfilesystemunix.lo
+ @OS_WIN32_TRUE@am__objects_2 = gtkfilesystemwin32.lo
+ am__objects_3 = fnmatch.lo gtkaboutdialog.lo gtkaccelgroup.lo \
+@@ -986,16 +990,16 @@
+ gtkfilechooserutils.lo gtkfilechooserwidget.lo gtkfilefilter.lo \
+ gtkfilesel.lo gtkfilesystem.lo gtkfilesystemmodel.lo \
+ gtkfixed.lo gtkfontbutton.lo gtkfontsel.lo gtkframe.lo \
+- gtkgamma.lo gtkgc.lo gtkhandlebox.lo gtkhbbox.lo gtkhbox.lo \
+- gtkhpaned.lo gtkhruler.lo gtkhscale.lo gtkhscrollbar.lo \
+- gtkhseparator.lo gtkhsv.lo gtkiconfactory.lo gtkiconcache.lo \
+- gtkicontheme.lo gtkiconview.lo gtkimage.lo gtkimagemenuitem.lo \
+- gtkimcontext.lo gtkimcontextsimple.lo gtkimmodule.lo \
+- gtkimmulticontext.lo gtkinputdialog.lo gtkinvisible.lo \
+- gtkitem.lo gtkitemfactory.lo gtkkeyhash.lo gtklabel.lo \
+- gtklayout.lo gtklist.lo gtklistitem.lo gtkliststore.lo \
+- gtkmain.lo gtkmarshal.lo gtkmarshalers.lo gtkmenu.lo \
+- gtkmenubar.lo gtkmenuitem.lo gtkmenushell.lo \
++ gtkgamma.lo gtkgc.lo gtkhashtable.lo gtkhandlebox.lo \
++ gtkhbbox.lo gtkhbox.lo gtkhpaned.lo gtkhruler.lo gtkhscale.lo \
++ gtkhscrollbar.lo gtkhseparator.lo gtkhsv.lo gtkiconfactory.lo \
++ gtkiconcache.lo gtkicontheme.lo gtkiconview.lo gtkimage.lo \
++ gtkimagemenuitem.lo gtkimcontext.lo gtkimcontextsimple.lo \
++ gtkimmodule.lo gtkimmulticontext.lo gtkinputdialog.lo \
++ gtkinvisible.lo gtkitem.lo gtkitemfactory.lo gtkkeyhash.lo \
++ gtklabel.lo gtklayout.lo gtklist.lo gtklistitem.lo \
++ gtkliststore.lo gtkmain.lo gtkmarshal.lo gtkmarshalers.lo \
++ gtkmenu.lo gtkmenubar.lo gtkmenuitem.lo gtkmenushell.lo \
+ gtkmenutoolbutton.lo gtkmessagedialog.lo gtkmisc.lo \
+ gtkmnemonichash.lo gtkmodules.lo gtknotebook.lo gtkobject.lo \
+ gtkoldeditable.lo gtkoptionmenu.lo gtkpaned.lo gtkpathbar.lo \
+@@ -1007,14 +1011,15 @@
+ gtkseparatormenuitem.lo gtkseparatortoolitem.lo gtksettings.lo \
+ gtksignal.lo gtksizegroup.lo gtkspinbutton.lo gtkstatusbar.lo \
+ gtkstock.lo gtkstyle.lo gtktable.lo gtktearoffmenuitem.lo \
+- gtktext.lo gtktextbtree.lo gtktextbuffer.lo gtktextchild.lo \
+- gtktextdisplay.lo gtktextiter.lo gtktextlayout.lo \
+- gtktextmark.lo gtktextsegment.lo gtktexttag.lo \
+- gtktexttagtable.lo gtktexttypes.lo gtktextutil.lo \
+- gtktextview.lo gtkthemes.lo gtktipsquery.lo gtktoggleaction.lo \
+- gtktogglebutton.lo gtktoggletoolbutton.lo gtktoolbar.lo \
+- gtktoolbutton.lo gtktoolitem.lo gtktooltips.lo gtktree.lo \
+- gtktreedatalist.lo gtktreednd.lo gtktreeitem.lo gtktreemodel.lo \
++ gtktext.lo gtktextbtree.lo gtktextbuffer.lo \
++ gtktextbufferserialize.lo gtktextchild.lo gtktextdisplay.lo \
++ gtktextiter.lo gtktextlayout.lo gtktextmark.lo \
++ gtktextsegment.lo gtktexttag.lo gtktexttagtable.lo \
++ gtktexttypes.lo gtktextutil.lo gtktextview.lo gtkthemes.lo \
++ gtktipsquery.lo gtktoggleaction.lo gtktogglebutton.lo \
++ gtktoggletoolbutton.lo gtktoolbar.lo gtktoolbutton.lo \
++ gtktoolitem.lo gtktooltips.lo gtktree.lo gtktreedatalist.lo \
++ gtktreednd.lo gtktreeitem.lo gtktreemodel.lo \
+ gtktreemodelfilter.lo gtktreemodelsort.lo gtktreeselection.lo \
+ gtktreesortable.lo gtktreestore.lo gtktreeview.lo \
+ gtktreeviewcolumn.lo gtktypebuiltins.lo gtktypeutils.lo \
+@@ -1042,14 +1047,14 @@
+ gtkfilechooserdefault.c gtkfilechooserutils.c \
+ gtkfilechooserwidget.c gtkfilefilter.c gtkfilesel.c \
+ gtkfilesystem.c gtkfilesystemmodel.c gtkfixed.c gtkfontbutton.c \
+- gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhandlebox.c \
+- gtkhbbox.c gtkhbox.c gtkhpaned.c gtkhruler.c gtkhscale.c \
+- gtkhscrollbar.c gtkhseparator.c gtkhsv.c gtkhsv.h \
+- gtkiconfactory.c gtkiconcache.c gtkicontheme.c gtkiconview.c \
+- gtkimage.c gtkimagemenuitem.c gtkimcontext.c \
+- gtkimcontextsimple.c gtkimmodule.c gtkimmulticontext.c \
+- gtkinputdialog.c gtkintl.h gtkinvisible.c gtkitem.c \
+- gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \
++ gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhashtable.c \
++ gtkhashtable.h gtkhandlebox.c gtkhbbox.c gtkhbox.c gtkhpaned.c \
++ gtkhruler.c gtkhscale.c gtkhscrollbar.c gtkhseparator.c \
++ gtkhsv.c gtkhsv.h gtkiconfactory.c gtkiconcache.c \
++ gtkicontheme.c gtkiconview.c gtkimage.c gtkimagemenuitem.c \
++ gtkimcontext.c gtkimcontextsimple.c gtkimmodule.c \
++ gtkimmulticontext.c gtkinputdialog.c gtkintl.h gtkinvisible.c \
++ gtkitem.c gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \
+ gtklayout.c gtklist.c gtklistitem.c gtkliststore.c gtkmain.c \
+ gtkmarshal.c gtkmarshalers.c gtkmenu.c gtkmenubar.c \
+ gtkmenuitem.c gtkmenushell.c gtkmenutoolbutton.c \
+@@ -1064,21 +1069,21 @@
+ gtkseparatortoolitem.c gtksettings.c gtksignal.c gtksizegroup.c \
+ gtkspinbutton.c gtkstatusbar.c gtkstock.c gtkstyle.c gtktable.c \
+ gtktearoffmenuitem.c gtktext.c gtktextbtree.c gtktextbuffer.c \
+- gtktextchild.c gtktextdisplay.c gtktextiter.c \
+- gtktextiterprivate.h gtktextlayout.c gtktextmark.c \
+- gtktextmarkprivate.h gtktextsegment.c gtktexttag.c \
+- gtktexttagtable.c gtktexttypes.c gtktextutil.c gtktextview.c \
+- gtkthemes.c gtktipsquery.c gtktoggleaction.c gtktogglebutton.c \
+- gtktoggletoolbutton.c gtktoolbar.c gtktoolbutton.c \
+- gtktoolitem.c gtktooltips.c gtktree.c gtktreedatalist.c \
+- gtktreednd.c gtktreeitem.c gtktreemodel.c gtktreemodelfilter.c \
+- gtktreemodelsort.c gtktreeselection.c gtktreesortable.c \
+- gtktreestore.c gtktreeview.c gtktreeviewcolumn.c \
+- gtktypebuiltins.c gtktypeutils.c gtkuimanager.c gtkvbbox.c \
+- gtkvbox.c gtkviewport.c gtkvpaned.c gtkvruler.c gtkvscale.c \
+- gtkvscrollbar.c gtkvseparator.c gtkwidget.c \
+- gtkwindow-decorate.c gtkwindow.c xembed.h gtkfilesystemunix.c \
+- gtkfilesystemwin32.c
++ gtktextbufferserialize.c gtktextchild.c gtktextdisplay.c \
++ gtktextiter.c gtktextiterprivate.h gtktextlayout.c \
++ gtktextmark.c gtktextmarkprivate.h gtktextsegment.c \
++ gtktexttag.c gtktexttagtable.c gtktexttypes.c gtktextutil.c \
++ gtktextview.c gtkthemes.c gtktipsquery.c gtktoggleaction.c \
++ gtktogglebutton.c gtktoggletoolbutton.c gtktoolbar.c \
++ gtktoolbutton.c gtktoolitem.c gtktooltips.c gtktree.c \
++ gtktreedatalist.c gtktreednd.c gtktreeitem.c gtktreemodel.c \
++ gtktreemodelfilter.c gtktreemodelsort.c gtktreeselection.c \
++ gtktreesortable.c gtktreestore.c gtktreeview.c \
++ gtktreeviewcolumn.c gtktypebuiltins.c gtktypeutils.c \
++ gtkuimanager.c gtkvbbox.c gtkvbox.c gtkviewport.c gtkvpaned.c \
++ gtkvruler.c gtkvscale.c gtkvscrollbar.c gtkvseparator.c \
++ gtkwidget.c gtkwindow-decorate.c gtkwindow.c xembed.h \
++ gtkfilesystemunix.c gtkfilesystemwin32.c
+ am_libgtk_win32_2_0_la_OBJECTS = $(am__objects_3)
+ libgtk_win32_2_0_la_OBJECTS = $(am_libgtk_win32_2_0_la_OBJECTS)
+ @OS_UNIX_TRUE@libgtk_x11_2_0_la_DEPENDENCIES = \
+@@ -1106,14 +1111,14 @@
+ gtkfilechooserdefault.c gtkfilechooserutils.c \
+ gtkfilechooserwidget.c gtkfilefilter.c gtkfilesel.c \
+ gtkfilesystem.c gtkfilesystemmodel.c gtkfixed.c gtkfontbutton.c \
+- gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhandlebox.c \
+- gtkhbbox.c gtkhbox.c gtkhpaned.c gtkhruler.c gtkhscale.c \
+- gtkhscrollbar.c gtkhseparator.c gtkhsv.c gtkhsv.h \
+- gtkiconfactory.c gtkiconcache.c gtkicontheme.c gtkiconview.c \
+- gtkimage.c gtkimagemenuitem.c gtkimcontext.c \
+- gtkimcontextsimple.c gtkimmodule.c gtkimmulticontext.c \
+- gtkinputdialog.c gtkintl.h gtkinvisible.c gtkitem.c \
+- gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \
++ gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhashtable.c \
++ gtkhashtable.h gtkhandlebox.c gtkhbbox.c gtkhbox.c gtkhpaned.c \
++ gtkhruler.c gtkhscale.c gtkhscrollbar.c gtkhseparator.c \
++ gtkhsv.c gtkhsv.h gtkiconfactory.c gtkiconcache.c \
++ gtkicontheme.c gtkiconview.c gtkimage.c gtkimagemenuitem.c \
++ gtkimcontext.c gtkimcontextsimple.c gtkimmodule.c \
++ gtkimmulticontext.c gtkinputdialog.c gtkintl.h gtkinvisible.c \
++ gtkitem.c gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \
+ gtklayout.c gtklist.c gtklistitem.c gtkliststore.c gtkmain.c \
+ gtkmarshal.c gtkmarshalers.c gtkmenu.c gtkmenubar.c \
+ gtkmenuitem.c gtkmenushell.c gtkmenutoolbutton.c \
+@@ -1128,22 +1133,22 @@
+ gtkseparatortoolitem.c gtksettings.c gtksignal.c gtksizegroup.c \
+ gtkspinbutton.c gtkstatusbar.c gtkstock.c gtkstyle.c gtktable.c \
+ gtktearoffmenuitem.c gtktext.c gtktextbtree.c gtktextbuffer.c \
+- gtktextchild.c gtktextdisplay.c gtktextiter.c \
+- gtktextiterprivate.h gtktextlayout.c gtktextmark.c \
+- gtktextmarkprivate.h gtktextsegment.c gtktexttag.c \
+- gtktexttagtable.c gtktexttypes.c gtktextutil.c gtktextview.c \
+- gtkthemes.c gtktipsquery.c gtktoggleaction.c gtktogglebutton.c \
+- gtktoggletoolbutton.c gtktoolbar.c gtktoolbutton.c \
+- gtktoolitem.c gtktooltips.c gtktree.c gtktreedatalist.c \
+- gtktreednd.c gtktreeitem.c gtktreemodel.c gtktreemodelfilter.c \
+- gtktreemodelsort.c gtktreeselection.c gtktreesortable.c \
+- gtktreestore.c gtktreeview.c gtktreeviewcolumn.c \
+- gtktypebuiltins.c gtktypeutils.c gtkuimanager.c gtkvbbox.c \
+- gtkvbox.c gtkviewport.c gtkvpaned.c gtkvruler.c gtkvscale.c \
+- gtkvscrollbar.c gtkvseparator.c gtkwidget.c \
+- gtkwindow-decorate.c gtkwindow.c xembed.h gtkfilesystemunix.c \
+- gtkfilesystemwin32.c gtkplug.c gtksocket.c gtkxembed.c \
+- gtkxembed.h
++ gtktextbufferserialize.c gtktextchild.c gtktextdisplay.c \
++ gtktextiter.c gtktextiterprivate.h gtktextlayout.c \
++ gtktextmark.c gtktextmarkprivate.h gtktextsegment.c \
++ gtktexttag.c gtktexttagtable.c gtktexttypes.c gtktextutil.c \
++ gtktextview.c gtkthemes.c gtktipsquery.c gtktoggleaction.c \
++ gtktogglebutton.c gtktoggletoolbutton.c gtktoolbar.c \
++ gtktoolbutton.c gtktoolitem.c gtktooltips.c gtktree.c \
++ gtktreedatalist.c gtktreednd.c gtktreeitem.c gtktreemodel.c \
++ gtktreemodelfilter.c gtktreemodelsort.c gtktreeselection.c \
++ gtktreesortable.c gtktreestore.c gtktreeview.c \
++ gtktreeviewcolumn.c gtktypebuiltins.c gtktypeutils.c \
++ gtkuimanager.c gtkvbbox.c gtkvbox.c gtkviewport.c gtkvpaned.c \
++ gtkvruler.c gtkvscale.c gtkvscrollbar.c gtkvseparator.c \
++ gtkwidget.c gtkwindow-decorate.c gtkwindow.c xembed.h \
++ gtkfilesystemunix.c gtkfilesystemwin32.c gtkplug.c gtksocket.c \
++ gtkxembed.c gtkxembed.h
+ am__objects_4 = gtkplug.lo gtksocket.lo gtkxembed.lo
+ am_libgtk_x11_2_0_la_OBJECTS = $(am__objects_3) $(am__objects_4)
+ libgtk_x11_2_0_la_OBJECTS = $(am_libgtk_x11_2_0_la_OBJECTS)
+@@ -1224,6 +1229,7 @@
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtkfontsel.Plo ./$(DEPDIR)/gtkframe.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtkgamma.Plo ./$(DEPDIR)/gtkgc.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtkhandlebox.Plo \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtkhashtable.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtkhbbox.Plo ./$(DEPDIR)/gtkhbox.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtkhpaned.Plo ./$(DEPDIR)/gtkhruler.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtkhscale.Plo \
+@@ -1292,6 +1298,7 @@
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtktext.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtktextbtree.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtktextbuffer.Plo \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtktextbufferserialize.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtktextchild.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtktextdisplay.Plo \
+ @AMDEP_TRUE@ ./$(DEPDIR)/gtktextiter.Plo \
+@@ -1524,6 +1531,7 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkgamma.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkgc.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhandlebox.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhashtable.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhbbox.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhbox.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhpaned.Plo@am__quote@
+@@ -1604,6 +1612,7 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktext.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextbtree.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextbuffer.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextbufferserialize.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextchild.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextdisplay.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextiter.Plo@am__quote@
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff
index e69de29bb2..8c87424ce8 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff
@@ -0,0 +1,17 @@
+--- gtk+-2.6.4/gtk/gtkalias.h 2005-03-01 17:58:16.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkalias.h 2005-04-06 16:19:36.020062480 +0300
+@@ -5782,6 +5782,14 @@
+ extern __typeof (gtk_menu_shell_select_item) gtk_menu_shell_select_item __attribute((alias("IA__gtk_menu_shell_select_item"), visibility("default")));
+ #define gtk_menu_shell_select_item IA__gtk_menu_shell_select_item
+
++extern __typeof (gtk_menu_shell_set_take_focus) IA__gtk_menu_shell_set_take_focus __attribute((visibility("hidden")));
++extern __typeof (gtk_menu_shell_set_take_focus) gtk_menu_shell_set_take_focus __attribute((alias("IA__gtk_menu_shell_set_take_focus"), visibility("default")));
++#define gtk_menu_shell_set_take_focus IA__gtk_menu_shell_set_take_focus
++
++extern __typeof (gtk_menu_shell_get_take_focus) IA__gtk_menu_shell_get_take_focus __attribute((visibility("hidden")));
++extern __typeof (gtk_menu_shell_get_take_focus) gtk_menu_shell_get_take_focus __attribute((alias("IA__gtk_menu_shell_get_take_focus"), visibility("default")));
++#define gtk_menu_shell_get_take_focus IA__gtk_menu_shell_get_take_focus
++
+ extern __typeof (gtk_menu_tool_button_get_menu) IA__gtk_menu_tool_button_get_menu __attribute((visibility("hidden")));
+ extern __typeof (gtk_menu_tool_button_get_menu) gtk_menu_tool_button_get_menu __attribute((alias("IA__gtk_menu_tool_button_get_menu"), visibility("default")));
+ #define gtk_menu_tool_button_get_menu IA__gtk_menu_tool_button_get_menu
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff
index e69de29bb2..e5a007372a 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff
@@ -0,0 +1,471 @@
+--- gtk+-2.6.4/gtk/gtkbutton.c 2005-01-25 22:54:43.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkbutton.c 2005-04-06 16:19:36.249027672 +0300
+@@ -24,6 +24,10 @@
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
++/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list
++ * of changes.
++ */
++
+ #include <config.h>
+ #include <string.h>
+ #include "gtkalias.h"
+@@ -38,8 +42,33 @@
+ #include "gtkiconfactory.h"
+ #include "gtkintl.h"
+
++/* Osso addition:
++ * Here are the details for each attach
++ * bitmask combination. */
++const gchar *osso_gtk_button_attach_details [OSSO_GTK_BUTTON_ATTACH_ENUM_END] =
++ { "osso_button",
++ "osso_button_n",
++ "osso_button_e",
++ "osso_button_ne",
++ "osso_button_s",
++ "osso_button_ns",
++ "osso_button_es",
++ "osso_button_nes",
++ "osso_button_w",
++ "osso_button_nw",
++ "osso_button_ew",
++ "osso_button_new",
++ "osso_button_sw",
++ "osso_button_nsw",
++ "osso_button_esw",
++ "osso_button_nesw",
++ };
++
+ #define CHILD_SPACING 1
+
++/* Take this away after font drawing is fixed */
++#define OSSO_FONT_HACK TRUE
++
+ static const GtkBorder default_default_border = { 1, 1, 1, 1 };
+ static const GtkBorder default_default_outside_border = { 0, 0, 0, 0 };
+
+@@ -68,6 +97,9 @@
+ PROP_FOCUS_ON_CLICK,
+ PROP_XALIGN,
+ PROP_YALIGN,
++ PROP_DETAIL,
++ PROP_AUTOMATIC_DETAIL,
++ PROP_KEYBOARD_BUTTON
+ };
+
+ #define GTK_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_BUTTON, GtkButtonPrivate))
+@@ -80,6 +112,10 @@
+ GtkWidget *image;
+ guint align_set : 1;
+ guint image_is_stock : 1;
++ gchar *detail;
++ gboolean automatic_detail;
++ gboolean keyboard_button;
++ GtkLabel *keyboard_label;
+ };
+
+ static void gtk_button_class_init (GtkButtonClass *klass);
+@@ -231,6 +267,14 @@
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (gobject_class,
++ PROP_KEYBOARD_BUTTON,
++ g_param_spec_boolean ("keyboard_button",
++ P_("Keyboard button"),
++ P_("If set, label foo"),
++ FALSE,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
++
++ g_object_class_install_property (gobject_class,
+ PROP_USE_STOCK,
+ g_param_spec_boolean ("use_stock",
+ P_("Use stock"),
+@@ -418,6 +462,77 @@
+ P_("Whether stock icons should be shown in buttons"),
+ TRUE,
+ G_PARAM_READWRITE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("child_spacing",
++ _("Child spacing"),
++ _("Spacing between button edges and child."),
++ 0,
++ G_MAXINT,
++ CHILD_SPACING,
++ G_PARAM_READABLE));
++ /* Osso additions below */
++ g_object_class_install_property (gobject_class,
++ PROP_DETAIL,
++ g_param_spec_string ("detail",
++ P_("Detail"),
++ P_("The detail the button is drawn with."),
++ "buttondefault",
++ G_PARAM_READWRITE));
++
++ g_object_class_install_property (gobject_class,
++ PROP_AUTOMATIC_DETAIL,
++ g_param_spec_boolean ("automatic_detail",
++ P_("Automatic Detail"),
++ P_("Whether setting detail is automatic based on GtkTable/GtkHButtonBox."),
++ TRUE,
++ G_PARAM_READWRITE));
++
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("child_offset_y",
++ _("Child Y Offset"),
++ _("Enable hack how many pixels to add/take away from GtkButton's child size allocation."),
++ G_MININT,
++ G_MAXINT,
++ 0,
++ G_PARAM_READABLE));
++
++ /* OSSO: This is used to find out whether
++ * button is a GtkTreeView column Listbox
++ * header or not */
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("listboxheader",
++ P_( "Listbox header" ),
++ P_( "Listbox header ( FALSE / TRUE )" ),
++ FALSE,
++ G_PARAM_READABLE));
++
++ /* OSSO: Column Listbox header separator height */
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("separator-height",
++ P_( "Separator height" ),
++ P_( "Listbox header separator height ( FALSE / TRUE )" ),
++ 0,
++ G_MAXINT,
++ 0,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boxed ("padding",
++ P_("Padding"),
++ P_("Paddings around the button child"),
++ GTK_TYPE_BORDER,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("minimum_width",
++ P_("Minimum Width"),
++ P_("Minimum width of the button"),
++ 0,
++ G_MAXINT,
++ 0,
++ G_PARAM_READABLE));
+
+ g_type_class_add_private (gobject_class, sizeof (GtkButtonPrivate));
+ }
+@@ -445,7 +560,14 @@
+ priv->xalign = 0.5;
+ priv->yalign = 0.5;
+ priv->align_set = 0;
++ priv->detail = g_strdup("buttondefault");
++ priv->automatic_detail = TRUE;
++ priv->keyboard_button = FALSE;
++ priv->keyboard_label = NULL;
+ priv->image_is_stock = TRUE;
++
++ g_object_set (G_OBJECT (button), "tap_and_hold_state",
++ GTK_STATE_ACTIVE, NULL);
+ }
+
+ static void
+@@ -560,6 +682,18 @@
+ case PROP_YALIGN:
+ gtk_button_set_alignment (button, priv->xalign, g_value_get_float (value));
+ break;
++ case PROP_DETAIL:
++ if (priv->detail)
++ g_free (priv->detail);
++ priv->detail = g_strdup (g_value_get_string (value));
++ gtk_widget_queue_draw (GTK_WIDGET (button));
++ break;
++ case PROP_AUTOMATIC_DETAIL:
++ priv->automatic_detail = g_value_get_boolean (value);
++ break;
++ case PROP_KEYBOARD_BUTTON:
++ priv->keyboard_button = g_value_get_boolean (value);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -601,6 +735,15 @@
+ case PROP_YALIGN:
+ g_value_set_float (value, priv->yalign);
+ break;
++ case PROP_DETAIL:
++ g_value_set_string (value, priv->detail);
++ break;
++ case PROP_AUTOMATIC_DETAIL:
++ g_value_set_boolean (value, priv->automatic_detail);
++ break;
++ case PROP_KEYBOARD_BUTTON:
++ g_value_set_boolean (value, priv->keyboard_button);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -641,6 +784,26 @@
+ if (button->label_text == NULL)
+ return;
+
++ if (priv->keyboard_button)
++ {
++ if (priv->keyboard_label)
++ {
++ gtk_label_set_label (priv->keyboard_label, button->label_text);
++ }
++ else
++ {
++ GtkWidget *label = gtk_label_new (button->label_text);
++ priv->keyboard_label = GTK_LABEL (label);
++
++ if (priv->align_set)
++ gtk_misc_set_alignment (GTK_MISC (label),
++ priv->xalign, priv->yalign);
++ gtk_widget_show (priv->keyboard_label);
++ gtk_container_add (GTK_CONTAINER (button), label);
++ }
++ return;
++ }
++
+ if (GTK_BIN (button)->child)
+ {
+ if (priv->image && !priv->image_is_stock)
+@@ -944,16 +1107,20 @@
+ GtkBorder default_border;
+ gint focus_width;
+ gint focus_pad;
++ gint child_spacing;
++ gint separator_height;
+
+ gtk_button_get_props (button, &default_border, NULL, NULL);
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
++ "child-spacing", &child_spacing,
++ "separator-height", &separator_height,
+ NULL);
+
+- requisition->width = (GTK_CONTAINER (widget)->border_width + CHILD_SPACING +
++ requisition->width = (GTK_CONTAINER (widget)->border_width + child_spacing +
+ GTK_WIDGET (widget)->style->xthickness) * 2;
+- requisition->height = (GTK_CONTAINER (widget)->border_width + CHILD_SPACING +
++ requisition->height = (GTK_CONTAINER (widget)->border_width + child_spacing +
+ GTK_WIDGET (widget)->style->ythickness) * 2;
+
+ if (GTK_WIDGET_CAN_DEFAULT (widget))
+@@ -965,15 +1132,35 @@
+ if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child))
+ {
+ GtkRequisition child_requisition;
++ GtkBorder *padding;
++ gint minimum_width;
+
+ gtk_widget_size_request (GTK_BIN (button)->child, &child_requisition);
+
++ gtk_widget_style_get (widget,
++ "padding",
++ &padding,
++ "minimum_width",
++ &minimum_width,
++ NULL);
++
++ if ( padding )
++ {
++ requisition->width += padding->left + padding->right;
++ requisition->height += padding->top + padding->bottom;
++ }
++
+ requisition->width += child_requisition.width;
+ requisition->height += child_requisition.height;
++
++ if (requisition->width < minimum_width)
++ requisition->width = minimum_width;
+ }
+
+ requisition->width += 2 * (focus_width + focus_pad);
+ requisition->height += 2 * (focus_width + focus_pad);
++
++ requisition->height += separator_height;
+ }
+
+ static void
+@@ -989,14 +1176,15 @@
+ GtkBorder default_border;
+ gint focus_width;
+ gint focus_pad;
++ gint child_spacing;
+
+ gtk_button_get_props (button, &default_border, NULL, NULL);
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
++ "child-spacing", &child_spacing,
+ NULL);
+-
+-
++
+ widget->allocation = *allocation;
+
+ if (GTK_WIDGET_REALIZED (widget))
+@@ -1008,14 +1196,27 @@
+
+ if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child))
+ {
+- child_allocation.x = widget->allocation.x + border_width + CHILD_SPACING + xthickness;
+- child_allocation.y = widget->allocation.y + border_width + CHILD_SPACING + ythickness;
++ child_allocation.x = widget->allocation.x + border_width + child_spacing + xthickness;
++ child_allocation.y = widget->allocation.y + border_width + child_spacing + ythickness;
+
+- child_allocation.width = MAX (1, widget->allocation.width - (CHILD_SPACING + xthickness) * 2 -
++ child_allocation.width = MAX (1, widget->allocation.width - (child_spacing + xthickness) * 2 -
+ border_width * 2);
+- child_allocation.height = MAX (1, widget->allocation.height - (CHILD_SPACING + ythickness) * 2 -
++ child_allocation.height = MAX (1, widget->allocation.height - (child_spacing + ythickness) * 2 -
+ border_width * 2);
+
++#ifdef OSSO_FONT_HACK
++ {
++ gint child_offset_y;
++
++ gtk_widget_style_get (widget, "child_offset_y", &child_offset_y, NULL);
++
++ if( GTK_IS_LABEL(GTK_BIN (button)->child) )
++ {
++ child_allocation.y += child_offset_y;
++ }
++ }
++#endif
++
+ if (GTK_WIDGET_CAN_DEFAULT (button))
+ {
+ child_allocation.x += default_border.left;
+@@ -1066,7 +1267,14 @@
+ gboolean interior_focus;
+ gint focus_width;
+ gint focus_pad;
+-
++ gint separator_height;
++ gboolean listboxheader;
++ GtkButtonPrivate *priv;
++
++ g_return_if_fail (GTK_IS_BUTTON (button));
++
++ priv = GTK_BUTTON_GET_PRIVATE (button);
++
+ if (GTK_WIDGET_DRAWABLE (button))
+ {
+ widget = GTK_WIDGET (button);
+@@ -1076,6 +1284,8 @@
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
++ "listboxheader", &listboxheader,
++ "separator-height", &separator_height,
+ NULL);
+
+ x = widget->allocation.x + border_width;
+@@ -1083,13 +1293,55 @@
+ width = widget->allocation.width - border_width * 2;
+ height = widget->allocation.height - border_width * 2;
+
++ if (listboxheader)
++ {
++ /* this changes everything! */
++ PangoLayout *layout;
++ int layout_height;
++
++ /* construct layout - see get_layout in gtkcellrenderertext.c */
++ layout = gtk_widget_create_pango_layout (widget, /* use parent treeview instead? */
++ button->label_text);
++ pango_layout_set_width (layout, -1);
++ pango_layout_get_pixel_size (layout, NULL, &layout_height);
++
++ /* render text */
++ gtk_paint_layout (widget->style,
++ widget->window,
++ GTK_STATE_NORMAL,
++ TRUE,
++ area,
++ widget,
++ "listboxheader",
++ x,
++ y,
++ layout);
++
++ g_object_unref (layout);
++
++ /* draw separator */
++ gtk_paint_hline (widget->style,
++ widget->window,
++ GTK_STATE_NORMAL,
++ area,
++ widget,
++ "listboxseparator",
++ area->x - focus_width - focus_pad,
++ area->x + area->width + focus_width + focus_pad,
++ layout_height + separator_height * 2);
++ return;
++ }
++
+ if (GTK_WIDGET_HAS_DEFAULT (widget) &&
+ GTK_BUTTON (widget)->relief == GTK_RELIEF_NORMAL)
+ {
+- gtk_paint_box (widget->style, widget->window,
++ /* This comment is here because it's part of the
++ * normal GtkButton
++ */
++ /* gtk_paint_box (widget->style, widget->window,
+ GTK_STATE_NORMAL, GTK_SHADOW_IN,
+ area, widget, "buttondefault",
+- x, y, width, height);
++ x, y, width, height); */
+
+ x += default_border.left;
+ y += default_border.top;
+@@ -1116,7 +1368,7 @@
+ GTK_WIDGET_STATE(widget) == GTK_STATE_PRELIGHT)
+ gtk_paint_box (widget->style, widget->window,
+ state_type,
+- shadow_type, area, widget, "button",
++ shadow_type, area, widget, priv->detail,
+ x, y, width, height);
+
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+@@ -1151,10 +1403,14 @@
+ x += child_displacement_x;
+ y += child_displacement_y;
+ }
+-
++ /* Comment exists, because it is part of normal GtkButton
+ gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),
+ area, widget, "button",
+ x, y, width, height);
++ */
++ gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),
++ area, widget, priv->detail,
++ x, y, width, height);
+ }
+ }
+ }
+@@ -1786,5 +2042,13 @@
+
+ return priv->image;
+ }
+-
+-
++void osso_gtk_button_set_detail_from_attach_flags (GtkButton *button,OssoGtkButtonAttachFlags flags)
++{
++ g_return_if_fail (GTK_IS_BUTTON (button));
++ g_object_set (G_OBJECT (button),
++ "automatic_detail",
++ FALSE,
++ "detail",
++ osso_gtk_button_attach_details[flags],
++ NULL);
++}
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff
index e69de29bb2..4c233f905b 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff
@@ -0,0 +1,23 @@
+--- gtk+-2.6.4/gtk/gtkbutton.h 2004-11-15 22:56:28.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkbutton.h 2005-04-06 16:19:36.264025392 +0300
+@@ -134,6 +134,20 @@
+ const gchar *main_detail,
+ const gchar *default_detail);
+
++/* Osso addition : Button attach flags */
++typedef enum {
++ OSSO_GTK_BUTTON_ATTACH_NORTH = 1 << 0,
++ OSSO_GTK_BUTTON_ATTACH_EAST = 1 << 1,
++ OSSO_GTK_BUTTON_ATTACH_SOUTH = 1 << 2,
++ OSSO_GTK_BUTTON_ATTACH_WEST = 1 << 3,
++ OSSO_GTK_BUTTON_ATTACH_ENUM_END = 1 << 4
++} OssoGtkButtonAttachFlags;
++
++extern const gchar *osso_gtk_button_attach_details [OSSO_GTK_BUTTON_ATTACH_ENUM_END];
++
++void osso_gtk_button_set_detail_from_attach_flags (GtkButton *button,
++ OssoGtkButtonAttachFlags flags);
++
+ #ifdef __cplusplus
+ }
+ #endif /* __cplusplus */
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff
index e69de29bb2..e32c05452d 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff
@@ -0,0 +1,2464 @@
+--- gtk+-2.6.4/gtk/gtkcalendar.c 2004-11-12 19:51:58.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkcalendar.c 2005-04-06 16:19:36.267024936 +0300
+@@ -169,14 +169,23 @@
+
+ /*** END OF lib_date routines ********************************************/
+
++/* HILDON: Spacings modified */
++
++#define HILDON_ARROW_WIDTH 20
++#define HILDON_ARROW_HEIGHT 27
++#define HILDON_ARROW_SEP 5 /* Space between arrows and data */
++
++#define HILDON_DAY_WIDTH 26
++#define HILDON_DAY_HEIGHT 25
++
+ /* Spacing around day/week headers and main area, inside those windows */
+ #define CALENDAR_MARGIN 0
+ /* Spacing around day/week headers and main area, outside those windows */
+-#define INNER_BORDER 4
++#define INNER_BORDER 0 /* 4 */
+ /* Separation between day headers and main area */
+-#define CALENDAR_YSEP 4
++#define CALENDAR_YSEP 3 /* 4 */
+ /* Separation between week headers and main area */
+-#define CALENDAR_XSEP 4
++#define CALENDAR_XSEP 6 /* 4 */
+
+ #define DAY_XSEP 0 /* not really good for small calendar */
+ #define DAY_YSEP 0 /* not really good for small calendar */
+@@ -193,6 +202,10 @@
+ #define BACKGROUND_COLOR(widget) (& (widget)->style->base[GTK_WIDGET_STATE (widget)])
+ #define HIGHLIGHT_BACK_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)])
+
++/* Default Min/Max years for hildon calendar */
++#define HILDON_MIN_YEAR 0
++#define HILDON_MAX_YEAR 2999
++
+ enum {
+ ARROW_YEAR_LEFT,
+ ARROW_YEAR_RIGHT,
+@@ -214,6 +227,8 @@
+ NEXT_MONTH_SIGNAL,
+ PREV_YEAR_SIGNAL,
+ NEXT_YEAR_SIGNAL,
++ ERRONEOUS_DATE_SIGNAL,
++ SELECTED_DATE_SIGNAL,
+ LAST_SIGNAL
+ };
+
+@@ -238,16 +253,19 @@
+ struct _GtkCalendarPrivateData
+ {
+ GdkWindow *header_win;
++ GdkWindow *footer_win; /* HILDON: Added below calendar */
+ GdkWindow *day_name_win;
+ GdkWindow *main_win;
+ GdkWindow *week_win;
+ GdkWindow *arrow_win[4];
+
++ gint year_before;
+ guint header_h;
+ guint day_name_h;
+ guint main_h;
+
+ guint arrow_state[4];
++ /* guint arrow_width; This is now defined constant. Even normal Gtk don't allow to change this */
+ guint arrow_width;
+ guint max_month_width;
+ guint max_year_width;
+@@ -271,7 +289,7 @@
+ guint dirty_main : 1;
+ guint dirty_week : 1;
+
+- guint year_before : 1;
++/* guint year_before : 1;*/
+
+ guint need_timer : 1;
+
+@@ -281,6 +299,27 @@
+ guint32 timer;
+ gint click_child;
+
++ /* Following variables are for current date */
++ guint current_day;
++ guint current_month;
++ guint current_year;
++
++ /* Keep track of day and month
++ * where mouse button was pressed
++ */
++ guint pressed_day;
++ guint pressed_month;
++
++ /* Boolean value to indicate if
++ * out of bound day was selected
++ */
++ gboolean is_bad_day;
++
++ /* Must check if we are sliding stylus */
++ gboolean slide_stylus;
++ gint prev_row;
++ gint prev_col;
++
+ gint week_start;
+
+ gint drag_start_x;
+@@ -336,6 +375,8 @@
+ static void gtk_calendar_style_set (GtkWidget *widget,
+ GtkStyle *previous_style);
+ static void gtk_calendar_paint_header (GtkWidget *widget);
++static void gtk_calendar_paint_footer (GtkWidget *widget);
++
+ static void gtk_calendar_paint_day_names (GtkWidget *widget);
+ static void gtk_calendar_paint_week_numbers (GtkWidget *widget);
+ static void gtk_calendar_paint_main (GtkWidget *widget);
+@@ -381,7 +422,13 @@
+ gint x,
+ gint y,
+ guint time);
+-
++
++/* This function was added because we need to mark current day according to
++ * specifications
++ */
++static void
++gtk_calendar_check_current_date (GtkCalendar *calendar, gint x, gint y);
++
+ static char *default_abbreviated_dayname[7];
+ static char *default_monthname[12];
+
+@@ -461,6 +508,8 @@
+ class->next_month = NULL;
+ class->prev_year = NULL;
+ class->next_year = NULL;
++ class->erroneous_date = NULL;
++ class->selected_date = NULL;
+
+ g_object_class_install_property (gobject_class,
+ PROP_YEAR,
+@@ -543,6 +592,31 @@
+ FALSE,
+ G_PARAM_READWRITE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min-year",
++ P_("Minimum year for calendar"),
++ P_("Set minimum year calendar accepts"),
++ 0,
++ G_MAXINT,
++ HILDON_MIN_YEAR,
++ G_PARAM_READWRITE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("max-year",
++ P_("Maximum year for calendar"),
++ P_("Set max year that calendar accepts"),
++ 0,
++ G_MAXINT,
++ HILDON_MAX_YEAR,
++ G_PARAM_READWRITE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("hildonlike",
++ _("Size request"),
++ _("Size allocate"),
++ FALSE,
++ G_PARAM_READABLE));
++
+ gtk_calendar_signals[MONTH_CHANGED_SIGNAL] =
+ g_signal_new ("month_changed",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -599,6 +673,22 @@
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
++ gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL] =
++ g_signal_new ("erroneous_date",
++ G_OBJECT_CLASS_TYPE(gobject_class),
++ G_SIGNAL_RUN_FIRST,
++ G_STRUCT_OFFSET (GtkCalendarClass, erroneous_date),
++ NULL, NULL,
++ _gtk_marshal_VOID__VOID,
++ G_TYPE_NONE, 0);
++ gtk_calendar_signals[SELECTED_DATE_SIGNAL] =
++ g_signal_new ("selected_date",
++ G_OBJECT_CLASS_TYPE(gobject_class),
++ G_SIGNAL_RUN_FIRST,
++ G_STRUCT_OFFSET (GtkCalendarClass, selected_date),
++ NULL, NULL,
++ _gtk_marshal_VOID__VOID,
++ G_TYPE_NONE, 0);
+ }
+
+ static void
+@@ -611,8 +701,10 @@
+ time_t tmp_time;
+ GtkWidget *widget;
+ GtkCalendarPrivateData *private_data;
+- gchar *year_before;
++/* gchar *year_before;*/
+ gchar *week_start;
++/* gint row;
++ gint col; */
+
+ widget = GTK_WIDGET (calendar);
+ GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS);
+@@ -645,16 +737,29 @@
+ for (i=0;i<31;i++)
+ calendar->marked_date[i] = FALSE;
+ calendar->num_marked_dates = 0;
+- calendar->selected_day = tm->tm_mday;
+-
++ calendar->selected_day = tm->tm_mday;
++
+ calendar->display_flags = ( GTK_CALENDAR_SHOW_HEADING |
+ GTK_CALENDAR_SHOW_DAY_NAMES );
+
++ /* Hildon: we should mark current day and we need to store current date */
++ private_data->current_day = tm->tm_mday;
++ private_data->current_month = tm->tm_mon;
++ private_data->current_year = tm->tm_year + 1900;
++
++ /* Hildon: following lines are for stylus sliding */
++ private_data->slide_stylus = FALSE;
++ private_data->prev_row = -1;
++ private_data->prev_col = -1;
++
++ /* Hildon: is_bad_day indicate if day was selected out of legal range */
++ private_data->is_bad_day = FALSE;
++
+ calendar->highlight_row = -1;
+- calendar->highlight_col = -1;
++ calendar->highlight_col = -1;
+
+ calendar->focus_row = -1;
+- calendar->focus_col = -1;
++ calendar->focus_col = -1;
+ calendar->xor_gc = NULL;
+
+ private_data->max_year_width = 0;
+@@ -667,7 +772,7 @@
+ private_data->max_label_char_ascent = 0;
+ private_data->max_label_char_descent = 0;
+
+- private_data->arrow_width = 10;
++/* private_data->arrow_width = 10;*/
+
+ private_data->freeze_count = 0;
+
+@@ -686,6 +791,7 @@
+ gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_COPY);
+ gtk_drag_dest_add_text_targets (widget);
+
++#if 0
+ private_data->year_before = 0;
+
+ /* Translate to calendar:YM if you want years to be displayed
+@@ -702,11 +808,13 @@
+ private_data->year_before = 1;
+ else if (strcmp (year_before, "calendar:MY") != 0)
+ g_warning ("Whoever translated calendar:MY did so wrongly.\n");
++#endif
+
+ /* Translate to calendar:week_start:0 if you want Sunday to be the
+ * first day of the week to calendar:week_start:1 if you want Monday
+ * to be the first day of the week, and so on.
+ */
++
+ week_start = _("calendar:week_start:0");
+
+ if (strncmp (week_start, "calendar:week_start:", 20) == 0)
+@@ -752,7 +860,7 @@
+
+ return column;
+ }
+-
++#if 0
+ static gint
+ row_height (GtkCalendar *calendar)
+ {
+@@ -760,7 +868,7 @@
+ - ((calendar->display_flags & GTK_CALENDAR_SHOW_DAY_NAMES)
+ ? CALENDAR_YSEP : CALENDAR_MARGIN)) / 6;
+ }
+-
++#endif
+
+ /* row_from_y: returns the row 0-5 that the
+ * y pixel of the xwindow is in */
+@@ -769,16 +877,15 @@
+ gint event_y)
+ {
+ gint r, row;
+- gint height;
++ /*gint height;*/
+ gint y_top, y_bottom;
+
+- height = row_height (calendar);
+ row = -1;
+
+ for (r = 0; r < 6; r++)
+ {
+ y_top = top_y_for_row (calendar, r);
+- y_bottom = y_top + height;
++ y_bottom = y_top + HILDON_DAY_HEIGHT /*height*/;
+
+ if (event_y >= y_top && event_y < y_bottom)
+ {
+@@ -796,16 +903,16 @@
+ {
+ gint width;
+ gint x_left;
+-
++
+ if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL)
+ column = 6 - column;
+-
++
+ width = GTK_CALENDAR_PRIVATE_DATA (calendar)->day_width;
+ if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
+ x_left = CALENDAR_XSEP + (width + DAY_XSEP) * column;
+ else
+ x_left = CALENDAR_MARGIN + (width + DAY_XSEP) * column;
+-
++
+ return x_left;
+ }
+
+@@ -818,25 +925,41 @@
+
+ return (GTK_CALENDAR_PRIVATE_DATA (calendar)->main_h
+ - (CALENDAR_MARGIN + (6 - row)
+- * row_height (calendar)));
++ * HILDON_DAY_HEIGHT));
+ }
+
+ static void
+ gtk_calendar_set_month_prev (GtkCalendar *calendar)
+ {
+ gint month_len;
+-
++ gint min_year;
++ gboolean hildonlike;
++
++ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike,
++ "min-year", &min_year, NULL);
++
+ if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+ return;
+
+ if (calendar->month == 0)
+- {
+- calendar->month = 11;
+- calendar->year--;
+- }
+- else
+- calendar->month--;
+-
++ {
++ if (hildonlike)
++ {
++ if (calendar->year > min_year)
++ {
++ calendar->month = 11;
++ calendar->year--;
++ }
++ }
++ else
++ {
++ calendar->month = 11;
++ calendar->year--;
++ }
++ }
++ else
++ calendar->month--;
++
+ month_len = month_length[leap (calendar->year)][calendar->month + 1];
+
+ gtk_calendar_freeze (calendar);
+@@ -870,17 +993,32 @@
+ gtk_calendar_set_month_next (GtkCalendar *calendar)
+ {
+ gint month_len;
++ gint max_year;
++ gboolean hildonlike;
+
+ g_return_if_fail (GTK_IS_WIDGET (calendar));
+
++ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike,
++ "max-year", &max_year, NULL);
++
+ if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+ return;
+
+-
+ if (calendar->month == 11)
+ {
+- calendar->month = 0;
+- calendar->year++;
++ if (hildonlike)
++ {
++ if (calendar->year < max_year)
++ {
++ calendar->month = 0;
++ calendar->year++;
++ }
++ }
++ else
++ {
++ calendar->month = 0;
++ calendar->year++;
++ }
+ }
+ else
+ calendar->month++;
+@@ -912,10 +1050,22 @@
+ gtk_calendar_set_year_prev (GtkCalendar *calendar)
+ {
+ gint month_len;
+-
++ gint min_year;
++ gboolean hildonlike;
++
+ g_return_if_fail (GTK_IS_WIDGET (calendar));
+
+- calendar->year--;
++ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike,
++ "min-year", &min_year, NULL);
++
++ if (hildonlike)
++ {
++ if (calendar->year > min_year)
++ calendar->year--;
++ }
++ else
++ calendar->year--;
++
+ gtk_calendar_freeze (calendar);
+ gtk_calendar_compute_days (calendar);
+ g_signal_emit (calendar,
+@@ -944,14 +1094,26 @@
+ {
+ gint month_len;
+ GtkWidget *widget;
++ gint max_year;
++ gboolean hildonlike;
+
+ g_return_if_fail (GTK_IS_WIDGET (calendar));
+
+ widget = GTK_WIDGET (calendar);
++
++ gtk_widget_style_get(widget, "hildonlike", &hildonlike,
++ "max-year", &max_year, NULL);
+
+ gtk_calendar_freeze (calendar);
+
+- calendar->year++;
++ if (hildonlike)
++ {
++ if (calendar->year < max_year)
++ calendar->year++;
++ }
++ else
++ calendar->year++;
++
+ gtk_calendar_compute_days (calendar);
+ g_signal_emit (calendar,
+ gtk_calendar_signals[NEXT_YEAR_SIGNAL],
+@@ -969,7 +1131,6 @@
+ }
+ else
+ gtk_calendar_select_day (calendar, calendar->selected_day);
+-
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ gtk_calendar_thaw (calendar);
+ }
+@@ -984,6 +1145,8 @@
+ gint row, col;
+ gint day_month;
+ gint day;
++ gint max_year, min_year;
++ gboolean hildonlike;
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+@@ -997,20 +1160,36 @@
+ /* If row or column isn't found, just return. */
+ if (row == -1 || col == -1)
+ return;
+-
+- day_month = calendar->day_month[row][col];
+
+- if (event->type == GDK_BUTTON_PRESS)
++ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike,
++ "max-year", &max_year, "min-year", &min_year, NULL);
++ day_month = calendar->day_month[row][col];
++
++ if (hildonlike)
++ {
++ if ((calendar->year == min_year && calendar->month == 0 && day_month == MONTH_PREV)
++ || (calendar->year == max_year && calendar->month == 11 && day_month == MONTH_NEXT))
++ {
++ private_data->is_bad_day = TRUE;
++ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0);
++ return;
++ }
++ }
++ if (event->type == (hildonlike ? GDK_BUTTON_RELEASE : GDK_BUTTON_PRESS))
+ {
+ day = calendar->day[row][col];
+
+ if (day_month == MONTH_PREV)
+- gtk_calendar_set_month_prev (calendar);
++ {
++ gtk_calendar_set_month_prev (calendar);
++ }
+ else if (day_month == MONTH_NEXT)
+- gtk_calendar_set_month_next (calendar);
++ {
++ gtk_calendar_set_month_next (calendar);
++ }
+
+ if (!GTK_WIDGET_HAS_FOCUS (widget))
+- gtk_widget_grab_focus (widget);
++ gtk_widget_grab_focus (widget);
+
+ if (event->button == 1)
+ {
+@@ -1025,9 +1204,8 @@
+ {
+ private_data->in_drag = 0;
+ if (day_month == MONTH_CURRENT)
+- g_signal_emit (calendar,
+- gtk_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL],
+- 0);
++ g_signal_emit (calendar,
++ gtk_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL], 0);
+ }
+ }
+
+@@ -1039,18 +1217,18 @@
+ GdkWindowAttr attributes;
+ gint attributes_mask;
+ gint i;
+- gboolean year_left;
++ /*gboolean year_left;*/
+
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+-
++/*
+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+ year_left = private_data->year_before;
+ else
+ year_left = !private_data->year_before;
+-
++*/
+ /* Arrow windows ------------------------------------- */
+ if (! (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+ && (calendar->display_flags & GTK_CALENDAR_SHOW_HEADING))
+@@ -1063,10 +1241,26 @@
+ | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+- attributes.y = 3;
+- attributes.width = private_data->arrow_width;
+- attributes.height = private_data->header_h - 7;
+- for (i = 0; i < 4; i++)
++ attributes.y = 0;
++ attributes.width = HILDON_ARROW_WIDTH;
++ attributes.height = HILDON_ARROW_HEIGHT;
++
++ attributes.x = (widget->allocation.width - private_data->max_year_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP;
++ private_data->arrow_win[ARROW_YEAR_LEFT] = gdk_window_new (private_data->header_win,
++ &attributes, attributes_mask);
++
++ attributes.x = (widget->allocation.width + private_data->max_year_width) / 2 + HILDON_ARROW_SEP;
++ private_data->arrow_win[ARROW_YEAR_RIGHT] = gdk_window_new (private_data->header_win,
++ &attributes, attributes_mask);
++ attributes.x = (widget->allocation.width - private_data->max_month_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP;
++ private_data->arrow_win[ARROW_MONTH_LEFT] = gdk_window_new (private_data->footer_win,
++ &attributes, attributes_mask);
++ attributes.x = (widget->allocation.width + private_data->max_month_width) / 2 + HILDON_ARROW_SEP;
++ private_data->arrow_win[ARROW_MONTH_RIGHT] = gdk_window_new (private_data->footer_win,
++ &attributes, attributes_mask);
++
++/*
++for (i = 0; i < 4; i++)
+ {
+ switch (i)
+ {
+@@ -1105,7 +1299,10 @@
+ }
+ private_data->arrow_win[i] = gdk_window_new (private_data->header_win,
+ &attributes,
+- attributes_mask);
++ attributes_mask);*/
++
++ for (i = 0; i < 4; i++)
++ {
+ if (GTK_WIDGET_IS_SENSITIVE (widget))
+ private_data->arrow_state[i] = GTK_STATE_NORMAL;
+ else
+@@ -1145,23 +1342,33 @@
+ attributes.colormap = gtk_widget_get_colormap (widget);
+ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+- attributes.x = widget->style->xthickness;
+- attributes.y = widget->style->ythickness;
+- attributes.width = widget->allocation.width - 2 * attributes.x;
+- attributes.height = private_data->header_h - 2 * attributes.y;
++ attributes.x = 0 /*widget->style->xthickness*/;
++ attributes.y = 0 /*widget->style->ythickness*/;
++ attributes.width = widget->allocation.width; /* - 2 * attributes.x */;
++ attributes.height = HILDON_ARROW_HEIGHT /*private_data->header_h - 2 * attributes.y*/;
+ private_data->header_win = gdk_window_new (widget->window,
+ &attributes, attributes_mask);
+-
++
++ attributes.y = HILDON_ARROW_HEIGHT + 2 * CALENDAR_YSEP + private_data->main_h + private_data->day_name_h;
++
++ private_data->footer_win = gdk_window_new(widget->window,
++ &attributes, attributes_mask);
++
+ gdk_window_set_background (private_data->header_win,
+- HEADER_BG_COLOR (GTK_WIDGET (calendar)));
++ HEADER_BG_COLOR (widget));
++ gdk_window_set_background (private_data->footer_win,
++ HEADER_BG_COLOR (widget));
++
+ gdk_window_show (private_data->header_win);
++ gdk_window_show (private_data->footer_win);
+ gdk_window_set_user_data (private_data->header_win, widget);
+-
++ gdk_window_set_user_data (private_data->footer_win, widget);
+ }
+ else
+ {
+ private_data->header_win = NULL;
+- }
++ private_data->footer_win = NULL;
++ }
+ gtk_calendar_realize_arrows (widget);
+ }
+
+@@ -1172,7 +1379,7 @@
+ GtkCalendarPrivateData *private_data;
+ GdkWindowAttr attributes;
+ gint attributes_mask;
+-
++
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+
+ calendar = GTK_CALENDAR (widget);
+@@ -1187,18 +1394,16 @@
+ attributes.colormap = gtk_widget_get_colormap (widget);
+ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+- attributes.x = (widget->style->xthickness + INNER_BORDER);
+- attributes.y = private_data->header_h + (widget->style->ythickness
+- + INNER_BORDER);
+- attributes.width = (widget->allocation.width
+- - (widget->style->xthickness + INNER_BORDER)
+- * 2);
++ attributes.x = /*private_data->week_width*/ (widget->style->xthickness + INNER_BORDER);
++ attributes.y = private_data->header_h;
++ attributes.width = widget->allocation.width - attributes.x;
+ attributes.height = private_data->day_name_h;
+ private_data->day_name_win = gdk_window_new (widget->window,
+ &attributes,
+ attributes_mask);
+ gdk_window_set_background (private_data->day_name_win,
+- BACKGROUND_COLOR ( GTK_WIDGET ( calendar)));
++ BACKGROUND_COLOR ( GTK_WIDGET (calendar)));
++
+ gdk_window_show (private_data->day_name_win);
+ gdk_window_set_user_data (private_data->day_name_win, widget);
+ }
+@@ -1215,7 +1420,7 @@
+ GtkCalendarPrivateData *private_data;
+ GdkWindowAttr attributes;
+ gint attributes_mask;
+-
++
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+
+ calendar = GTK_CALENDAR (widget);
+@@ -1231,15 +1436,15 @@
+ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
+
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+- attributes.x = widget->style->xthickness + INNER_BORDER;
+- attributes.y = (private_data->header_h + private_data->day_name_h
+- + (widget->style->ythickness + INNER_BORDER));
+- attributes.width = private_data->week_width;
+- attributes.height = private_data->main_h;
++ attributes.x = 0 /*widget->style->xthickness + INNER_BORDER*/;
++ attributes.y = private_data->header_h;
++ /*+ (widget->style->ythickness + INNER_BORDER))*/;
++ attributes.width = HILDON_DAY_WIDTH;
++ attributes.height = private_data->main_h + private_data->day_name_h;
+ private_data->week_win = gdk_window_new (widget->window,
+- &attributes, attributes_mask);
++ &attributes, attributes_mask);
+ gdk_window_set_background (private_data->week_win,
+- BACKGROUND_COLOR (GTK_WIDGET (calendar)));
++ BACKGROUND_COLOR (GTK_WIDGET (calendar)));
+ gdk_window_show (private_data->week_win);
+ gdk_window_set_user_data (private_data->week_win, widget);
+ }
+@@ -1318,7 +1523,6 @@
+ GDK_GC_FOREGROUND |
+ GDK_GC_FUNCTION);
+ }
+-
+ static void
+ gtk_calendar_unrealize (GtkWidget *widget)
+ {
+@@ -1343,7 +1547,10 @@
+ gdk_window_set_user_data (private_data->header_win, NULL);
+ gdk_window_destroy (private_data->header_win);
+ private_data->header_win = NULL;
+- }
++ gdk_window_set_user_data (private_data->footer_win, NULL);
++ gdk_window_destroy (private_data->footer_win);
++ private_data->footer_win = NULL;
++ }
+
+ if (private_data->week_win)
+ {
+@@ -1382,10 +1589,10 @@
+ PangoLayout *layout;
+ PangoRectangle logical_rect;
+
+- gint height;
++ /*gint height;*/
+ gint i;
+ gchar buffer[255];
+- gint calendar_margin = CALENDAR_MARGIN;
++ /*gint calendar_margin = CALENDAR_MARGIN;*/
+ gint header_width, main_width;
+ gint max_header_height = 0;
+ gint focus_width;
+@@ -1401,20 +1608,20 @@
+ layout = gtk_widget_create_pango_layout (widget, NULL);
+
+ /*
+- * Calculate the requisition width for the widget.
++ * Calculate the requisition width for the widget.
+ */
+
+ /* Header width */
+-
++
+ if (calendar->display_flags & GTK_CALENDAR_SHOW_HEADING)
+- {
++ {
+ private_data->max_month_width = 0;
+ for (i = 0; i < 12; i++)
+ {
+ pango_layout_set_text (layout, default_monthname[i], -1);
+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+ private_data->max_month_width = MAX (private_data->max_month_width,
+- logical_rect.width + 8);
++ logical_rect.width +8 );
+ max_header_height = MAX (max_header_height, logical_rect.height);
+ }
+ private_data->max_year_width = 0;
+@@ -1427,13 +1634,13 @@
+ logical_rect.width + 8);
+ max_header_height = MAX (max_header_height, logical_rect.height);
+ }
+- }
++ }
+ else
+ {
+ private_data->max_month_width = 0;
+ private_data->max_year_width = 0;
+ }
+-
++
+ if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+ header_width = (private_data->max_month_width
+ + private_data->max_year_width
+@@ -1494,45 +1701,30 @@
+ + (private_data->max_week_char_width
+ ? private_data->max_week_char_width * 2 + (focus_padding + focus_width) * 2 + CALENDAR_XSEP * 2
+ : 0));
+-
+-
++
+ requisition->width = MAX (header_width, main_width + INNER_BORDER * 2) + widget->style->xthickness * 2;
++ /* FIXME: header_width is broken, when Calendar is themed !
++ * Next line is workaround for this bug
++ */
++ requisition->width = (main_width + INNER_BORDER * 2) + widget->style->xthickness * 2;
+
+ /*
+ * Calculate the requisition height for the widget.
++ * This is Hildon calculation
+ */
+-
++
+ if (calendar->display_flags & GTK_CALENDAR_SHOW_HEADING)
+- {
+- private_data->header_h = (max_header_height + CALENDAR_YSEP * 2);
+- }
++ private_data->header_h = HILDON_ARROW_HEIGHT + CALENDAR_YSEP;
+ else
+- {
+ private_data->header_h = 0;
+- }
+-
++
+ if (calendar->display_flags & GTK_CALENDAR_SHOW_DAY_NAMES)
+- {
+- private_data->day_name_h = (private_data->max_label_char_ascent
+- + private_data->max_label_char_descent
+- + 2 * (focus_padding + focus_width) + calendar_margin);
+- calendar_margin = CALENDAR_YSEP;
+- }
++ private_data->day_name_h = HILDON_DAY_HEIGHT;
+ else
+- {
+ private_data->day_name_h = 0;
+- }
+
+- private_data->main_h = (CALENDAR_MARGIN + calendar_margin
+- + 6 * (private_data->max_day_char_ascent
+- + private_data->max_day_char_descent
+- + 2 * (focus_padding + focus_width))
+- + DAY_YSEP * 5);
+-
+- height = (private_data->header_h + private_data->day_name_h
+- + private_data->main_h);
+-
+- requisition->height = height + (widget->style->ythickness + INNER_BORDER) * 2;
++ private_data->main_h = 6 * HILDON_DAY_HEIGHT;
++ requisition->height = 2 * private_data->header_h + private_data->day_name_h + private_data->main_h;
+
+ g_object_unref (layout);
+ }
+@@ -1544,7 +1736,7 @@
+ GtkCalendar *calendar;
+ GtkCalendarPrivateData *private_data;
+ gint xthickness = widget->style->xthickness;
+- gint ythickness = widget->style->xthickness;
++ /*gint ythickness = widget->style->xthickness;*/
+ gboolean year_left;
+
+ widget->allocation = *allocation;
+@@ -1569,58 +1761,24 @@
+ }
+ else
+ {
+- private_data->day_width = (allocation->width
++ private_data->day_width = (allocation->width
+ - (xthickness + INNER_BORDER) * 2
+ - (CALENDAR_MARGIN * 2)
+ - (DAY_XSEP * 6))/7;
+ private_data->week_width = 0;
+ }
+-
++
+ if (GTK_WIDGET_REALIZED (widget))
+ {
+ gdk_window_move_resize (widget->window,
+- allocation->x, allocation->y,
+- allocation->width, allocation->height);
++ widget->allocation.x, widget->allocation.y,
++ widget->allocation.width, widget->allocation.height);
+ if (private_data->header_win)
+ gdk_window_move_resize (private_data->header_win,
+- xthickness, ythickness,
+- allocation->width - 2 * xthickness, private_data->header_h);
+- if (private_data->arrow_win[ARROW_MONTH_LEFT])
+- {
+- if (year_left)
+- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT],
+- (allocation->width - 2 * xthickness
+- - (3 + 2*private_data->arrow_width
+- + private_data->max_month_width)),
+- 3,
+- private_data->arrow_width,
+- private_data->header_h - 7);
+- else
+- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT],
+- 3, 3,
+- private_data->arrow_width,
+- private_data->header_h - 7);
+- }
+- if (private_data->arrow_win[ARROW_MONTH_RIGHT])
+- {
+- if (year_left)
+- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT],
+- (allocation->width - 2 * xthickness
+- - 3 - private_data->arrow_width),
+- 3,
+- private_data->arrow_width,
+- private_data->header_h - 7);
+- else
+- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT],
+- (private_data->arrow_width
+- + private_data->max_month_width),
+- 3,
+- private_data->arrow_width,
+- private_data->header_h - 7);
+- }
++ 0, 0, widget->allocation.width, HILDON_ARROW_HEIGHT);
+ if (private_data->arrow_win[ARROW_YEAR_LEFT])
+ {
+- if (year_left)
++ /* if (year_left)
+ gdk_window_move_resize (private_data->arrow_win[ARROW_YEAR_LEFT],
+ 3, 3,
+ private_data->arrow_width,
+@@ -1632,11 +1790,14 @@
+ + private_data->max_year_width)),
+ 3,
+ private_data->arrow_width,
+- private_data->header_h - 7);
++ private_data->header_h - 7);*/
++
++ gdk_window_move (private_data->arrow_win[ARROW_YEAR_LEFT],
++ (widget->allocation.width - private_data->max_year_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP, 0);
+ }
+ if (private_data->arrow_win[ARROW_YEAR_RIGHT])
+ {
+- if (year_left)
++/* if (year_left)
+ gdk_window_move_resize (private_data->arrow_win[ARROW_YEAR_RIGHT],
+ (private_data->arrow_width
+ + private_data->max_year_width),
+@@ -1649,55 +1810,102 @@
+ - 3 - private_data->arrow_width),
+ 3,
+ private_data->arrow_width,
++ private_data->header_h - 7);*/
++ gdk_window_move (private_data->arrow_win[ARROW_YEAR_RIGHT],
++ (widget->allocation.width + private_data->max_year_width) / 2 + HILDON_ARROW_SEP, 0);
++ }
++ if (private_data->footer_win)
++ gdk_window_move_resize (private_data->footer_win,
++ 0, private_data->header_h + private_data->day_name_h + private_data->main_h + CALENDAR_YSEP,
++ widget->allocation.width, HILDON_ARROW_HEIGHT);
++
++ if (private_data->arrow_win[ARROW_MONTH_LEFT])
++ {
++/* if (year_left)
++ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT],
++ (allocation->width - 2 * xthickness
++ - (3 + 2*private_data->arrow_width
++ + private_data->max_month_width)),
++ 3,
++ private_data->arrow_width,
+ private_data->header_h - 7);
++ else
++ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT],
++ 3, 3,
++ private_data->arrow_width,
++ private_data->header_h - 7);
++*/
++
++ gdk_window_move (private_data->arrow_win[ARROW_MONTH_LEFT],
++ (widget->allocation.width - private_data->max_month_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP, 0);
++ }
++ if (private_data->arrow_win[ARROW_MONTH_RIGHT])
++ {
++/* if (year_left)
++ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT],
++ (allocation->width - 2 * xthickness
++ - 3 - private_data->arrow_width),
++ 3,
++ private_data->arrow_width,
++ private_data->header_h - 7);
++ else
++ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT],
++ (private_data->arrow_width
++ + private_data->max_month_width),
++ 3,
++ private_data->arrow_width,
++ private_data->header_h - 7);*/
++ gdk_window_move (private_data->arrow_win[ARROW_MONTH_RIGHT],
++ (widget->allocation.width + private_data->max_month_width) / 2 + HILDON_ARROW_SEP, 0);
+ }
++
++
+ if (private_data->day_name_win)
+ gdk_window_move_resize (private_data->day_name_win,
+- xthickness + INNER_BORDER,
+- private_data->header_h + (widget->style->ythickness + INNER_BORDER),
+- allocation->width - (xthickness + INNER_BORDER) * 2,
++ private_data->week_width, /*xthickness + INNER_BORDER*/
++ private_data->header_h /*+ (widget->style->ythickness + INNER_BORDER)*/,
++ widget->allocation.width - private_data->week_width /*- (xthickness + INNER_BORDER) * 2*/,
+ private_data->day_name_h);
+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+ {
+ if (private_data->week_win)
+ gdk_window_move_resize (private_data->week_win,
+- (xthickness + INNER_BORDER),
+- private_data->header_h + private_data->day_name_h
+- + (widget->style->ythickness + INNER_BORDER),
+- private_data->week_width,
+- private_data->main_h);
++ 0 /*(xthickness + INNER_BORDER)*/,
++ private_data->header_h /*+ (widget->style->ythickness + INNER_BORDER)*/,
++ HILDON_DAY_WIDTH,
++ private_data->main_h + private_data->day_name_h);
+ gdk_window_move_resize (private_data->main_win,
+- private_data->week_width + (xthickness + INNER_BORDER),
++ private_data->week_width /* + (xthickness + INNER_BORDER)*/,
+ private_data->header_h + private_data->day_name_h
+- + (widget->style->ythickness + INNER_BORDER),
+- allocation->width
+- - private_data->week_width
+- - (xthickness + INNER_BORDER) * 2,
++ /*+ (widget->style->ythickness + INNER_BORDER)*/,
++ widget->allocation.width - private_data->week_width
++ /*- (xthickness + INNER_BORDER) * 2*/,
+ private_data->main_h);
+ }
+ else
+ {
+ gdk_window_move_resize (private_data->main_win,
+- (xthickness + INNER_BORDER),
++ 0 /*(xthickness + INNER_BORDER)*/,
+ private_data->header_h + private_data->day_name_h
+- + (widget->style->ythickness + INNER_BORDER),
+- allocation->width
++ /*+ (widget->style->ythickness + INNER_BORDER)*/,
++ widget->allocation.width
+ - private_data->week_width
+- - (xthickness + INNER_BORDER) * 2,
++ /*- (xthickness + INNER_BORDER) * 2*/,
+ private_data->main_h);
+ if (private_data->week_win)
+ gdk_window_move_resize (private_data->week_win,
+- allocation->width
++ widget->allocation.width
+ - private_data->week_width
+- - (xthickness + INNER_BORDER),
++ /*- (xthickness + INNER_BORDER)*/,
+ private_data->header_h + private_data->day_name_h
+- + (widget->style->ythickness + INNER_BORDER),
++ /*+ (widget->style->ythickness + INNER_BORDER)*/,
+ private_data->week_width,
+ private_data->main_h);
+ }
+ }
+ }
+
++
+ static gboolean
+ gtk_calendar_expose (GtkWidget *widget,
+ GdkEventExpose *event)
+@@ -1711,22 +1919,24 @@
+ if (GTK_WIDGET_DRAWABLE (widget))
+ {
+ if (event->window == private_data->main_win)
+- gtk_calendar_paint_main (widget);
++ gtk_calendar_paint_main (widget);
+
+ if (event->window == private_data->header_win)
+- gtk_calendar_paint_header (widget);
+-
+- if (event->window == private_data->day_name_win)
+- gtk_calendar_paint_day_names (widget);
+-
+- if (event->window == private_data->week_win)
+- gtk_calendar_paint_week_numbers (widget);
+- if (event->window == widget->window)
++ gtk_calendar_paint_header (widget);
++ if (event->window == private_data->footer_win)
++ gtk_calendar_paint_footer(widget);
++
++ if (event->window == private_data->day_name_win)
++ gtk_calendar_paint_day_names (widget);
++
++ if (event->window == private_data->week_win)
++ gtk_calendar_paint_week_numbers (widget);
++/* if (event->window == widget->window)
+ {
+ gtk_paint_shadow (widget->style, widget->window, GTK_WIDGET_STATE (widget),
+ GTK_SHADOW_IN, NULL, widget, "calendar",
+ 0, 0, widget->allocation.width, widget->allocation.height);
+- }
++ }*/
+ }
+
+ return FALSE;
+@@ -1740,12 +1950,12 @@
+ char buffer[255];
+ int x, y;
+ gint header_width, cal_height;
+- gint max_month_width;
++/* gint max_month_width;*/
+ gint max_year_width;
+ GtkCalendarPrivateData *private_data;
+ PangoLayout *layout;
+ PangoRectangle logical_rect;
+- gboolean year_left;
++/* gboolean year_left;*/
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+@@ -1755,29 +1965,29 @@
+ private_data->dirty_header = 1;
+ return;
+ }
+-
++/*
+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+ year_left = private_data->year_before;
+ else
+ year_left = !private_data->year_before;
+-
++*/
+ private_data->dirty_header = 0;
+ gc = calendar->gc;
+
+ /* Clear window */
+ gdk_window_clear (private_data->header_win);
+
+- header_width = widget->allocation.width - 2 * widget->style->xthickness;
++ header_width = widget->allocation.width /*- 2 * widget->style->xthickness*/;
+ cal_height = widget->allocation.height;
+
+- max_month_width = private_data->max_month_width;
++ /*max_month_width = private_data->max_month_width;*/
+ max_year_width = private_data->max_year_width;
+
+- gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));
+- gtk_paint_shadow (widget->style, private_data->header_win,
++/* gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));*/
++ /*gtk_paint_shadow (widget->style, private_data->header_win,
+ GTK_STATE_NORMAL, GTK_SHADOW_OUT,
+ NULL, widget, "calendar",
+- 0, 0, header_width, private_data->header_h);
++ 0, 0, header_width, private_data->header_h);*/
+
+
+ g_snprintf (buffer, sizeof (buffer), "%d", calendar->year);
+@@ -1785,55 +1995,118 @@
+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+
+ /* Draw title */
+- y = (private_data->header_h - logical_rect.height) / 2;
+-
++ y = (HILDON_ARROW_HEIGHT /*private_data->header_h*/ - logical_rect.height) / 2;
++ x = (widget->allocation.width - logical_rect.width) / 2;
++
+ /* Draw year and its arrows */
+-
++#if 0
+ if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+- if (year_left)
+- x = 3 + (max_year_width - logical_rect.width)/2;
+- else
++/* if (year_left) */
++ x = /*3+*/(widget->allocation.width - logical_rect.width)/2;
++/* else
+ x = header_width - (3 + max_year_width
+- - (max_year_width - logical_rect.width)/2);
++ - (max_year_width - logical_rect.width)/2);*/
+ else
+- if (year_left)
+- x = 3 + private_data->arrow_width + (max_year_width - logical_rect.width)/2;
+- else
++/* if (year_left)*/
++ x = 3 + HILDON_ARROW_WIDTH /*private_data->arrow_width*/ + (max_year_width - logical_rect.width)/2;
++ /* else
+ x = header_width - (3 + private_data->arrow_width + max_year_width
+ - (max_year_width - logical_rect.width)/2);
++ */
++ #endif
++ gdk_gc_set_foreground (gc, HEADER_FG_COLOR (GTK_WIDGET (calendar)));
++ gdk_draw_layout (private_data->header_win, gc, x, y, layout);
++
++ gtk_calendar_paint_arrow (widget, ARROW_YEAR_LEFT);
++ gtk_calendar_paint_arrow (widget, ARROW_YEAR_RIGHT);
++
++ g_object_unref (layout);
++}
++
++static void
++gtk_calendar_paint_footer (GtkWidget *widget)
++{
++GtkCalendar *calendar;
++ GdkGC *gc;
++ char buffer[255];
++ int x, y;
++ gint header_width, cal_height;
++/* gint max_month_width;
++ gint max_year_width;*/
++ GtkCalendarPrivateData *private_data;
++ PangoLayout *layout;
++ PangoRectangle logical_rect;
++/* gboolean year_left;*/
++
++ calendar = GTK_CALENDAR (widget);
++ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
++
++ if (private_data->freeze_count)
++ {
++ private_data->dirty_header = 1;
++ return;
++ }
++/*
++ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
++ year_left = private_data->year_before;
++ else
++ year_left = !private_data->year_before;
++*/
++ private_data->dirty_header = 0;
++ gc = calendar->gc;
+
++ /* Clear window */
++ gdk_window_clear (private_data->footer_win);
++
++ header_width = widget->allocation.width - 2 * widget->style->xthickness;
++ cal_height = widget->allocation.height;
++
++ /*max_month_width = private_data->max_month_width;*/
++ /*max_year_width = private_data->max_year_width;*/
++
++ /*gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));*/
++ /*gtk_paint_shadow (widget->style, private_data->footer_win,
++ GTK_STATE_NORMAL, GTK_SHADOW_OUT,
++ NULL, widget, "calendar",
++ 0, 0, header_width, private_data->header_h);*/
+
+- gdk_gc_set_foreground (gc, HEADER_FG_COLOR (GTK_WIDGET (calendar)));
+- gdk_draw_layout (private_data->header_win, gc, x, y, layout);
+
++ /*g_snprintf (buffer, sizeof (buffer), "%d", calendar->year);*/
++
++/* pango_layout_get_pixel_extents (layout, NULL, &logical_rect);*/
++
++ /* Draw title */
++
++
+ /* Draw month */
+ g_snprintf (buffer, sizeof (buffer), "%s", default_monthname[calendar->month]);
+- pango_layout_set_text (layout, buffer, -1);
++ layout = gtk_widget_create_pango_layout (widget, buffer);
+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+-
++#if 0
+ if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+- if (year_left)
++/* if (year_left)*/
+ x = header_width - (3 + max_month_width
+ - (max_month_width - logical_rect.width)/2);
+- else
+- x = 3 + (max_month_width - logical_rect.width) / 2;
++ /* else
++ x = 3 + (max_month_width - logical_rect.width) / 2;*/
+ else
+- if (year_left)
+- x = header_width - (3 + private_data->arrow_width + max_month_width
++/* if (year_left)*/
++ x = header_width - (3 + HILDON_ARROW_WIDTH /*private_data->arrow_width*/ + max_month_width
+ - (max_month_width - logical_rect.width)/2);
+- else
++/* else
+ x = 3 + private_data->arrow_width + (max_month_width - logical_rect.width)/2;
++*/
++#endif
++ x = (widget->allocation.width - logical_rect.width) / 2;
++ y = (HILDON_ARROW_HEIGHT - logical_rect.height) / 2;
++
++ gdk_gc_set_foreground (gc, HEADER_FG_COLOR(GTK_WIDGET (calendar)));
++ gdk_draw_layout (private_data->footer_win, gc, x, y, layout);
+
+- gdk_draw_layout (private_data->header_win, gc, x, y, layout);
+-
+- gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));
+-
+ gtk_calendar_paint_arrow (widget, ARROW_MONTH_LEFT);
+ gtk_calendar_paint_arrow (widget, ARROW_MONTH_RIGHT);
+- gtk_calendar_paint_arrow (widget, ARROW_YEAR_LEFT);
+- gtk_calendar_paint_arrow (widget, ARROW_YEAR_RIGHT);
+
+- g_object_unref (layout);
++ g_object_unref(layout);
+ }
+
+ static void
+@@ -1851,15 +2124,17 @@
+ GtkCalendarPrivateData *private_data;
+ gint focus_padding;
+ gint focus_width;
++ gboolean hildonlike;
+
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+ gc = calendar->gc;
+-
++
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_padding,
++ "hildonlike", &hildonlike,
+ NULL);
+ /*
+ * Handle freeze/thaw functionality
+@@ -1887,18 +2162,22 @@
+ * Draw rectangles as inverted background for the labels.
+ */
+
+- gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
+- gdk_draw_rectangle (private_data->day_name_win, gc, TRUE,
+- CALENDAR_MARGIN, CALENDAR_MARGIN,
+- cal_width-CALENDAR_MARGIN * 2,
+- private_data->day_name_h - CALENDAR_MARGIN);
+-
+- if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
+- gdk_draw_rectangle (private_data->day_name_win, gc, TRUE,
+- CALENDAR_MARGIN,
+- private_data->day_name_h - CALENDAR_YSEP,
+- private_data->week_width - CALENDAR_YSEP - CALENDAR_MARGIN,
+- CALENDAR_YSEP);
++ /* Hildon: don't paint dayname window */
++ if (!hildonlike)
++ {
++ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
++ gdk_draw_rectangle (private_data->day_name_win, gc, TRUE,
++ CALENDAR_MARGIN, CALENDAR_MARGIN,
++ cal_width-CALENDAR_MARGIN * 2,
++ private_data->day_name_h - CALENDAR_MARGIN);
++
++ if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
++ gdk_draw_rectangle (private_data->day_name_win, gc, TRUE,
++ CALENDAR_MARGIN,
++ private_data->day_name_h - CALENDAR_YSEP,
++ private_data->week_width - CALENDAR_YSEP - CALENDAR_MARGIN,
++ CALENDAR_YSEP);
++ }
+
+ /*
+ * Write the labels
+@@ -1908,28 +2187,43 @@
+
+ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget));
+ for (i = 0; i < 7; i++)
+- {
++ {
+ if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL)
+- day = 6 - i;
++ day = 6 - i;
+ else
+- day = i;
+- day = (day + private_data->week_start) % 7;
+- g_snprintf (buffer, sizeof (buffer), "%s", default_abbreviated_dayname[day]);
++ day = i;
++ day = (day + private_data->week_start) % 7;
++ g_snprintf (buffer, sizeof (buffer), "%s", default_abbreviated_dayname[day]);
++
++ pango_layout_set_text (layout, buffer, -1);
++ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+
+- pango_layout_set_text (layout, buffer, -1);
+- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
++ /* Hildon: draw passive focus for day name */
++ if (hildonlike && calendar->focus_col == i)
++ {
++ guint x = left_x_for_column (calendar, calendar->focus_col);
+
+- gdk_draw_layout (private_data->day_name_win, gc,
+- (CALENDAR_MARGIN +
+- + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
+- (private_data->week_width + (private_data->week_width ? CALENDAR_XSEP : 0))
+- : 0)
+- + day_wid_sep * i
+- + (day_width - logical_rect.width)/2),
+- CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y,
+- layout);
++ gtk_paint_box( GTK_WIDGET (calendar)->style,
++ private_data->day_name_win,
++ GTK_STATE_NORMAL,
++ GTK_SHADOW_OUT, NULL,
++ GTK_WIDGET (calendar), "passive-focus",
++ (x + 4) + HILDON_DAY_WIDTH, 0,
++ day_wid_sep + 2,
++ HILDON_DAY_HEIGHT);
++ }
++ gdk_draw_layout (private_data->day_name_win, gc,
++ (CALENDAR_MARGIN +
++ + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
++ (private_data->week_width + (private_data->week_width ? CALENDAR_XSEP : 0))
++ : 0)
++ + day_wid_sep * i
++ + (day_width - logical_rect.width)/2),
++ CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y,
++ layout);
++
++
+ }
+-
+ g_object_unref (layout);
+ }
+
+@@ -1940,14 +2234,15 @@
+ GdkGC *gc;
+ gint row, week = 0, year;
+ gint x_loc;
+- char buffer[3];
+- gint y_loc, day_height;
++ char buffer[10];
++ gint y_loc /*, day_height*/;
+ GtkCalendarPrivateData *private_data;
+ PangoLayout *layout;
+ PangoRectangle logical_rect;
+ gint focus_padding;
+ gint focus_width;
+-
++ gboolean hildonlike;
++
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+ g_return_if_fail (widget->window != NULL);
+ calendar = GTK_CALENDAR (widget);
+@@ -1968,6 +2263,7 @@
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_padding,
++ "hildonlike", &hildonlike,
+ NULL);
+
+ /*
+@@ -1981,18 +2277,23 @@
+ */
+
+ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget));
+- if (private_data->day_name_win)
+- gdk_draw_rectangle (private_data->week_win, gc, TRUE,
+- CALENDAR_MARGIN,
+- 0,
+- private_data->week_width - CALENDAR_MARGIN,
+- private_data->main_h - CALENDAR_MARGIN);
+- else
+- gdk_draw_rectangle (private_data->week_win, gc, TRUE,
+- CALENDAR_MARGIN,
+- CALENDAR_MARGIN,
+- private_data->week_width - CALENDAR_MARGIN,
+- private_data->main_h - 2 * CALENDAR_MARGIN);
++
++ /* Hildon: don't paint background for weekday window */
++ if (!hildonlike)
++ {
++ if (private_data->day_name_win)
++ gdk_draw_rectangle (private_data->week_win, gc, TRUE,
++ CALENDAR_MARGIN,
++ 0,
++ private_data->week_width - CALENDAR_MARGIN,
++ private_data->main_h + private_data->day_name_h- CALENDAR_MARGIN);
++ else
++ gdk_draw_rectangle (private_data->week_win, gc, TRUE,
++ CALENDAR_MARGIN,
++ CALENDAR_MARGIN,
++ private_data->week_width - CALENDAR_MARGIN,
++ private_data->main_h - 2 * CALENDAR_MARGIN);
++ }
+
+ /*
+ * Write the labels
+@@ -2001,10 +2302,13 @@
+ layout = gtk_widget_create_pango_layout (widget, NULL);
+
+ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget));
+- day_height = row_height (calendar);
++ gdk_draw_line(private_data->week_win, gc,
++ HILDON_DAY_WIDTH - 1, 0, HILDON_DAY_WIDTH - 1, private_data->main_h + private_data->day_name_h);
++
++ /*day_height = row_height (calendar)*/;
+ for (row = 0; row < 6; row++)
+ {
+- year = calendar->year;
++ year = calendar->year;
+ if (calendar->day[row][6] < 15 && row > 3 && calendar->month == 11)
+ year++;
+
+@@ -2012,15 +2316,30 @@
+ ((calendar->day[row][6] < 15 && row > 3 ? 1 : 0)
+ + calendar->month) % 12 + 1, calendar->day[row][6]));
+
+- g_snprintf (buffer, sizeof (buffer), "%d", week);
+- pango_layout_set_text (layout, buffer, -1);
+- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+-
+- y_loc = top_y_for_row (calendar, row) + (day_height - logical_rect.height) / 2;
+-
+- x_loc = (private_data->week_width
++ g_snprintf (buffer, sizeof (buffer), "%d", week);
++ pango_layout_set_text (layout, buffer, -1);
++ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
++
++ /* Hildon: draw passive focus for week */
++ if (hildonlike && calendar->focus_row == row)
++ {
++ guint y = top_y_for_row (calendar, calendar->focus_row + 1);
++
++ gtk_paint_box( GTK_WIDGET (calendar)->style,
++ private_data->week_win,
++ GTK_STATE_NORMAL,
++ GTK_SHADOW_OUT, NULL,
++ GTK_WIDGET (calendar), "passive-focus",
++ 0, y,
++ private_data->week_width - 4,
++ HILDON_DAY_HEIGHT);
++ }
++
++ y_loc = private_data->day_name_h + top_y_for_row (calendar, row) + (HILDON_DAY_HEIGHT - logical_rect.height) / 2;
++ x_loc = (HILDON_DAY_WIDTH - logical_rect.width) / 2;
++ /*(private_data->week_width
+ - logical_rect.width
+- - CALENDAR_XSEP - focus_padding - focus_width);
++ - CALENDAR_XSEP - focus_padding - focus_width);*/
+
+ gdk_draw_layout (private_data->week_win, gc, x_loc, y_loc, layout);
+ }
+@@ -2034,11 +2353,13 @@
+ {
+ GtkCalendar *calendar;
+ gint r, c, row, col;
+-
++ GtkCalendarPrivateData *private_data;
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+
+ calendar = GTK_CALENDAR (widget);
+-
++
++ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
++
+ row = -1;
+ col = -1;
+ for (r = 0; r < 6; r++)
+@@ -2054,6 +2375,7 @@
+ g_return_if_fail (col != -1);
+
+ gtk_calendar_paint_day (widget, row, col);
++
+ }
+
+ static void
+@@ -2065,13 +2387,14 @@
+ GdkGC *gc;
+ gchar buffer[255];
+ gint day;
+- gint day_height;
++ /*gint day_height;*/
+ gint x_left;
+ gint x_loc;
+ gint y_top;
+ gint y_loc;
+- gint day_xspace;
++ /*gint day_xspace;*/
+ gint focus_width;
++ gboolean hildonlike;
+
+ GtkCalendarPrivateData *private_data;
+ PangoLayout *layout;
+@@ -2083,6 +2406,8 @@
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+
++ if (private_data->main_win == NULL) return;
++
+ /*
+ * Handle freeze/thaw functionality
+ */
+@@ -2092,25 +2417,25 @@
+ private_data->dirty_main = 1;
+ return;
+ }
+-
+- gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL);
+
+- day_height = row_height (calendar);
+-
+- day_xspace = private_data->day_width - private_data->max_day_char_width*2;
++ gtk_widget_style_get (widget, "focus-line-width", &focus_width,
++ "hildonlike", &hildonlike, NULL);
++
++ /*day_height = row_height (calendar)*/;
++ /*day_xspace = HILDON_DAY_WIDTH private_data->day_width - private_data->max_day_char_width*2*/;
+
+ day = calendar->day[row][col];
+-
++
+ x_left = left_x_for_column (calendar, col);
+- x_loc = x_left + private_data->day_width / 2 + private_data->max_day_char_width;
++ /*x_loc = x_left + private_data->day_width / 2 + private_data->max_day_char_width;*/
+
+ y_top = top_y_for_row (calendar, row);
+
+ gdk_window_clear_area (private_data->main_win, x_left, y_top,
+- private_data->day_width, day_height);
++ HILDON_DAY_WIDTH, HILDON_DAY_HEIGHT);
+
+ gc = calendar->gc;
+-
++
+ if (calendar->day_month[row][col] == MONTH_PREV)
+ {
+ gdk_gc_set_foreground (gc, PREV_MONTH_COLOR (GTK_WIDGET (calendar)));
+@@ -2123,44 +2448,43 @@
+ {
+ /*
+ if (calendar->highlight_row == row && calendar->highlight_col == col)
+- {
+- gdk_gc_set_foreground (gc, HIGHLIGHT_BACK_COLOR (GTK_WIDGET (calendar)));
+- gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
++ {
++ gdk_gc_set_foreground (gc, HIGHLIGHT_BACK_COLOR (GTK_WIDGET (calendar)));
++ gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
+ private_data->day_width, day_height);
+- }
++ }
+ */
+ if (calendar->selected_day == day)
+- {
+- gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar)));
+- gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
+- private_data->day_width, day_height);
+- }
+-
++ {
++ /* Hildon: use custom graphics */
++ if (hildonlike)
++ {
++ gtk_paint_box( GTK_WIDGET (calendar)->style,
++ private_data->main_win,
++ GTK_STATE_NORMAL,
++ GTK_SHADOW_NONE, NULL,
++ GTK_WIDGET (calendar), "active-day",
++ x_left, y_top,
++ HILDON_DAY_WIDTH,
++ HILDON_DAY_HEIGHT);
++ }
++ else
++ {
++ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar)));
++ gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
++ HILDON_DAY_WIDTH, HILDON_DAY_HEIGHT);
++ }
++ }
+ if (calendar->marked_date[day-1])
+- gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar)));
++ gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar)));
+ else
+- gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar)));
+-
++ gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar)));
+ if (calendar->selected_day == day)
+- gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar)));
++ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar)));
+ else
+- gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_WIDGET_STATE (calendar)]));
+- }
+-
+-
+- g_snprintf (buffer, sizeof (buffer), "%d", day);
+- layout = gtk_widget_create_pango_layout (widget, buffer);
+- pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
++ gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_WIDGET_STATE (calendar)]));
+
+- x_loc -= logical_rect.width;
+-
+- y_loc = y_top + (day_height - logical_rect.height) / 2;
+- gdk_draw_layout (private_data->main_win, gc,
+- x_loc, y_loc, layout);
+- if (calendar->marked_date[day-1]
+- && calendar->day_month[row][col] == MONTH_CURRENT)
+- gdk_draw_layout (private_data->main_win, gc,
+- x_loc-1, y_loc, layout);
++ }
+
+ if (GTK_WIDGET_HAS_FOCUS (calendar)
+ && calendar->focus_row == row && calendar->focus_col == col)
+@@ -2168,9 +2492,9 @@
+ GtkStateType state;
+
+ if (calendar->selected_day == day)
+- state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE;
++ state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE;
+ else
+- state = GTK_STATE_NORMAL;
++ state = GTK_STATE_NORMAL;
+
+ gtk_paint_focus (widget->style,
+ private_data->main_win,
+@@ -2178,10 +2502,29 @@
+ ? GTK_STATE_SELECTED : GTK_STATE_NORMAL,
+ NULL, widget, "calendar-day",
+ x_left, y_top,
+- private_data->day_width,
+- day_height);
++ HILDON_DAY_WIDTH,
++ HILDON_DAY_HEIGHT);
+ }
+
++ /* Hildon: paint green indicator for current day */
++ if (hildonlike && (day == private_data->current_day && calendar->selected_day !=
++ private_data->current_day) && (calendar->day_month[row][col] == MONTH_CURRENT))
++ gtk_calendar_check_current_date (calendar, x_left, y_top);
++
++ g_snprintf (buffer, sizeof (buffer), "%d", day);
++ layout = gtk_widget_create_pango_layout (widget, buffer);
++ pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
++
++ x_loc = x_left + (HILDON_DAY_WIDTH - logical_rect.width) / 2;
++ y_loc = y_top + (HILDON_DAY_HEIGHT - logical_rect.height) / 2;
++
++ gdk_draw_layout (private_data->main_win, gc,
++ x_loc, y_loc, layout);
++ if (calendar->marked_date[day-1]
++ && calendar->day_month[row][col] == MONTH_CURRENT)
++ gdk_draw_layout (private_data->main_win, gc,
++ x_loc-1, y_loc, layout);
++
+ g_object_unref (layout);
+ }
+
+@@ -2195,7 +2538,7 @@
+
+ g_return_if_fail (GTK_IS_CALENDAR (widget));
+ g_return_if_fail (widget->window != NULL);
+-
++
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+
+@@ -2208,7 +2551,7 @@
+ gdk_window_clear (private_data->main_win);
+
+ /* gtk_calendar_compute_days (calendar); */ /* REMOVE later */
+-
++
+ for (col = 0; col < 7; col++)
+ for (row = 0; row < 6; row++)
+ gtk_calendar_paint_day (widget, row, col);
+@@ -2453,9 +2796,24 @@
+ guint month,
+ guint year)
+ {
++ gboolean hildonlike;
++ guint min_year, max_year;
++
+ g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE);
+ g_return_val_if_fail (month <= 11, FALSE);
+
++ gtk_widget_style_get(GTK_WIDGET (calendar), "hildonlike", &hildonlike,
++ "max-year", &max_year, "min-year",
++ &min_year, NULL);
++
++ if (hildonlike)
++ {
++ if (year >= max_year)
++ year = max_year;
++ else if (year <= min_year)
++ year = min_year;
++ }
++
+ calendar->month = month;
+ calendar->year = year;
+
+@@ -2478,12 +2836,30 @@
+ gtk_calendar_select_day (GtkCalendar *calendar,
+ guint day)
+ {
+- g_return_if_fail (GTK_IS_CALENDAR (calendar));
+- g_return_if_fail (day <= 31);
+-
+- /* gtk_calendar_compute_days (calendar); */
+-
+- /* Deselect the old day */
++ gint row, col;
++ GtkCalendarPrivateData *priv;
++ g_return_if_fail (GTK_IS_CALENDAR (calendar));
++ g_return_if_fail (day <= 31);
++ priv = GTK_CALENDAR_PRIVATE_DATA (calendar);
++
++ for (row = 0; row < 6; row ++)
++ for (col = 0; col < 7; col++)
++ {
++ if (calendar->day_month[row][col] == MONTH_CURRENT
++ && calendar->day[row][col] == day)
++ {
++ calendar->focus_row = row;
++ calendar->focus_col = col;
++ }
++ }
++
++ /* gtk_calendar_compute_days (calendar); */
++
++ if (calendar->month != priv->current_month ||
++ calendar->year != priv->current_year)
++ gtk_calendar_unmark_day (calendar, priv->current_day);
++
++ /* Deselect the old day */
+ if (calendar->selected_day > 0)
+ {
+ gint selected_day;
+@@ -2491,20 +2867,25 @@
+ selected_day = calendar->selected_day;
+ calendar->selected_day = 0;
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+- gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
++ {
++ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
++ }
+ }
+
+ calendar->selected_day = day;
+
++ /*printf("Selected day = %d\n", day);*/
++
+ /* Select the new day */
+ if (day != 0)
+ {
+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+- gtk_calendar_paint_day_num (GTK_WIDGET (calendar), day);
++ {
++ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), day);
++ }
+ }
+-
++
+ g_object_notify (G_OBJECT (calendar), "day");
+-
+ g_signal_emit (calendar,
+ gtk_calendar_signals[DAY_SELECTED_SIGNAL],
+ 0);
+@@ -2560,17 +2941,16 @@
+ gtk_calendar_mark_day (GtkCalendar *calendar,
+ guint day)
+ {
+- g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE);
+-
+- if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == FALSE)
+- {
+- calendar->marked_date[day - 1] = TRUE;
+- calendar->num_marked_dates++;
+- }
+- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+- {
+- gtk_calendar_paint_main (GTK_WIDGET (calendar));
+- }
++ g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE);
++ if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == FALSE)
++ {
++ calendar->marked_date[day - 1] = TRUE;
++ calendar->num_marked_dates++;
++ }
++ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
++ {
++ gtk_calendar_paint_main (GTK_WIDGET (calendar));
++ }
+
+ return TRUE;
+ }
+@@ -2629,14 +3009,15 @@
+ gtk_calendar_set_year_next (calendar);
+ break;
+ case ARROW_MONTH_LEFT:
+- gtk_calendar_set_month_prev (calendar);
+- break;
++ gtk_calendar_set_month_prev (calendar);
++ break;
+ case ARROW_MONTH_RIGHT:
+ gtk_calendar_set_month_next (calendar);
+ break;
+ default:;
+ /* do nothing */
+ }
++ gtk_calendar_select_and_focus_day(calendar, calendar->selected_day);
+ }
+
+ static gboolean
+@@ -2645,6 +3026,11 @@
+ GtkCalendar *calendar = data;
+ GtkCalendarPrivateData *private_data = GTK_CALENDAR_PRIVATE_DATA (calendar);
+ gboolean retval = FALSE;
++ GtkSettings *settings;
++ guint timeout;
++
++ settings = gtk_settings_get_default ();
++ g_object_get (settings, "gtk-update-timeout", &timeout, NULL);
+
+ GDK_THREADS_ENTER ();
+
+@@ -2655,7 +3041,7 @@
+ if (private_data->need_timer)
+ {
+ private_data->need_timer = FALSE;
+- private_data->timer = g_timeout_add (CALENDAR_TIMER_DELAY,
++ private_data->timer = g_timeout_add (/*CALENDAR_TIMER_DELAY*/timeout,
+ (GSourceFunc) calendar_timer,
+ (gpointer) calendar);
+ }
+@@ -2673,13 +3059,18 @@
+ gint click_child)
+ {
+ GtkCalendarPrivateData *private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
++ GtkSettings *settings;
++ guint timeout;
+
++ settings = gtk_settings_get_default ();
++ g_object_get (settings, "gtk-initial-timeout", &timeout, NULL);
++
+ private_data->click_child = click_child;
+
+ if (!private_data->timer)
+ {
+ private_data->need_timer = TRUE;
+- private_data->timer = g_timeout_add (CALENDAR_INITIAL_TIMER_DELAY,
++ private_data->timer = g_timeout_add (/*CALENDAR_INITIAL_TIMER_DELAY*/timeout,
+ calendar_timer,
+ (gpointer) widget);
+ }
+@@ -2738,12 +3129,38 @@
+ GtkCalendar *calendar;
+ GtkCalendarPrivateData *private_data;
+ gint arrow = -1;
+-
++ gboolean hildonlike;
++ gint min_year, max_year;
++
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
++
++ gtk_widget_style_get(widget, "hildonlike", &hildonlike,
++ "min-year", &min_year, "max-year", &max_year, NULL);
+
+- if (event->window == private_data->main_win)
+- gtk_calendar_main_button (widget, event);
++ if (!hildonlike)
++ {
++ if (event->window == private_data->main_win)
++ gtk_calendar_main_button (widget, event);
++ }
++ else if (hildonlike && (event->window == private_data->main_win))
++ {
++ gint x = (gint) (event->x);
++ gint y = (gint) (event->y);
++ gint row = row_from_y (calendar, y);
++ gint col = column_from_x (calendar, x);
++ private_data->pressed_day = calendar->day[row][col];
++
++ if ((calendar->year == min_year && calendar->month == 0 && calendar->day_month[row][col] == MONTH_PREV) ||
++ (calendar->year == max_year && calendar->month == 11 && calendar->day_month[row][col] == MONTH_NEXT))
++ {}
++ else if (calendar->day_month[row][col] == MONTH_CURRENT)
++ gtk_calendar_select_and_focus_day (calendar, private_data->pressed_day);
++
++ /* Remember month where button was pressed */
++ private_data->pressed_month = calendar->month;
++ private_data->slide_stylus = TRUE;
++ }
+
+ if (!GTK_WIDGET_HAS_FOCUS (widget))
+ gtk_widget_grab_focus (widget);
+@@ -2766,7 +3183,7 @@
+ }
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ static gboolean
+@@ -2775,16 +3192,45 @@
+ {
+ GtkCalendar *calendar;
+ GtkCalendarPrivateData *private_data;
++ gboolean hildonlike;
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+
++ gtk_widget_style_get(widget, "hildonlike", &hildonlike,
++ NULL);
++
++ if (hildonlike && (event->window == private_data->main_win))
++ {
++ gtk_calendar_main_button (widget, event);
++ gint x = (gint) (event->x);
++ gint y = (gint) (event->y);
++ gint row = row_from_y (calendar, y);
++ gint col = column_from_x (calendar, x);
++ private_data->prev_col = -1;
++ private_data->prev_row = -1;
++
++ if ((private_data->pressed_day == calendar->day[row][col]) &&
++ (private_data->pressed_month == calendar->month))
++ {
++ if (!private_data->is_bad_day)
++ {
++ g_signal_emit (calendar, gtk_calendar_signals[SELECTED_DATE_SIGNAL], 0);
++ }
++ else
++ {
++ private_data->is_bad_day = FALSE;
++ }
++ }
++ private_data->slide_stylus = FALSE;
++ }
++
+ if (event->button == 1)
+ {
+ stop_spinning (widget);
+
+ if (private_data->in_drag)
+- private_data->in_drag = 0;
++ private_data->in_drag = 0;
+ }
+
+ return TRUE;
+@@ -2799,15 +3245,42 @@
+ gint event_x, event_y;
+ gint row, col;
+ gint old_row, old_col;
++ gboolean hildonlike;
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+ event_x = (gint) (event->x);
+ event_y = (gint) (event->y);
+-
++
++ gtk_widget_style_get(widget, "hildonlike", &hildonlike,
++ NULL);
++
+ if (event->window == private_data->main_win)
+ {
+-
++ if (hildonlike)
++ {
++ /* Hildon: make active day to move, when stylus is slided */
++ if (private_data->slide_stylus)
++ {
++ gint c_row = row_from_y (calendar, event_y);
++ gint c_col = column_from_x (calendar, event_x);
++
++ if (calendar->day_month[c_row][c_col] == MONTH_PREV ||
++ calendar->day_month[c_row][c_col] == MONTH_NEXT)
++ { }
++ else if ((private_data->prev_row != c_row || private_data->prev_col != c_col) &&
++ (calendar->highlight_row != -1 && calendar->highlight_col != -1))
++ {
++ gtk_calendar_select_and_focus_day (calendar,
++ calendar->day[c_row][c_col]);
++ /* Update passive focus indicators work weekday number and name */
++ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar));
++ gtk_calendar_paint_day_names (GTK_WIDGET (calendar));
++ }
++ private_data->prev_col = c_col;
++ private_data->prev_row = c_row;
++ }
++ }
+ if (private_data->in_drag)
+ {
+ if (gtk_drag_check_threshold (widget,
+@@ -2847,7 +3320,7 @@
+ calendar->highlight_col = col;
+
+ if (row > -1 && col > -1)
+- gtk_calendar_paint_day (widget, row, col);
++ gtk_calendar_paint_day (widget, row, col);
+ }
+ }
+ }
+@@ -2863,7 +3336,7 @@
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+-
++
+ if (event->window == private_data->arrow_win[ARROW_MONTH_LEFT])
+ {
+ private_data->arrow_state[ARROW_MONTH_LEFT] = GTK_STATE_PRELIGHT;
+@@ -2902,7 +3375,7 @@
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
+-
++
+ if (event->window == private_data->main_win)
+ {
+ row = calendar->highlight_row;
+@@ -2910,7 +3383,7 @@
+ calendar->highlight_row = -1;
+ calendar->highlight_col = -1;
+ if (row > -1 && col > -1)
+- gtk_calendar_paint_day (widget, row, col);
++ gtk_calendar_paint_day (widget, row, col);
+ }
+
+ if (event->window == private_data->arrow_win[ARROW_MONTH_LEFT])
+@@ -2949,10 +3422,14 @@
+ GdkGC *gc;
+ GtkCalendar *calendar;
+ gint state;
+- gint width, height;
++ gint max_year, min_year;
++ gboolean hildonlike;
++/* gint width, height;*/
+
+ calendar = GTK_CALENDAR (widget);
+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget);
++ gtk_widget_style_get (widget, "hildonlike", &hildonlike, "max-year",
++ &max_year, "min-year", &min_year, NULL);
+
+ if (private_data->freeze_count)
+ {
+@@ -2965,23 +3442,81 @@
+ state = private_data->arrow_state[arrow];
+ gc = calendar->gc;
+
+- gdk_window_clear (window);
++/* gdk_window_clear (window);*/
+ gdk_window_set_background (window, &(widget)->style->bg[state]);
+- gdk_drawable_get_size (window, &width, &height);
+- gdk_window_clear_area (window,
++/* gdk_drawable_get_size (window, &width, &height);*/
++/* gdk_window_clear_area (window,
+ 0,0,
+- width,height);
+- if (arrow == ARROW_MONTH_LEFT || arrow == ARROW_YEAR_LEFT)
+- gtk_paint_arrow (widget->style, window, state,
++ width,height);*/
++
++ gdk_window_clear(window);
++
++ /* Hildon: added support for dimmed arrows */
++ if (hildonlike && (calendar->year <= min_year || calendar->year >= max_year))
++ {
++ if (calendar->year <= min_year)
++ {
++ if (arrow == ARROW_YEAR_LEFT)
++ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_LEFT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else if (arrow == ARROW_YEAR_RIGHT || arrow == ARROW_MONTH_RIGHT)
++ gtk_paint_arrow (widget->style, window, state,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_RIGHT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else if (arrow == ARROW_MONTH_LEFT && calendar->month != 0)
++ gtk_paint_arrow (widget->style, window, state,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_LEFT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else if (arrow == ARROW_MONTH_LEFT && !calendar->month)
++ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_LEFT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ }
++ else if (calendar->year >= max_year)
++ {
++ if (arrow == ARROW_YEAR_RIGHT)
++ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_RIGHT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else if (arrow == ARROW_YEAR_LEFT || arrow == ARROW_MONTH_LEFT)
++ gtk_paint_arrow (widget->style, window, state,
+ GTK_SHADOW_OUT, NULL, widget, "calendar",
+ GTK_ARROW_LEFT, TRUE,
+- width/2 - 3, height/2 - 4, 8, 8);
+- else
+- gtk_paint_arrow (widget->style, window, state,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else if (arrow == ARROW_MONTH_RIGHT && calendar->month != 11)
++ gtk_paint_arrow (widget->style, window, state,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_RIGHT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else if (arrow == ARROW_MONTH_RIGHT && calendar->month == 11)
++ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_RIGHT, TRUE,
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ }
++ }
++ else
++ {
++ if (arrow == ARROW_MONTH_LEFT || arrow == ARROW_YEAR_LEFT)
++ gtk_paint_arrow (widget->style, window, state,
++ GTK_SHADOW_OUT, NULL, widget, "calendar",
++ GTK_ARROW_LEFT, TRUE,
++ /* width/2 - 3, height/2 - 4, 8, 8);*/
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ else
++ gtk_paint_arrow (widget->style, window, state,
+ GTK_SHADOW_OUT, NULL, widget, "calendar",
+ GTK_ARROW_RIGHT, TRUE,
+- width/2 - 2, height/2 - 4, 8, 8);
+- }
++ /* width/2 - 2, height/2 - 4, 8, 8);*/
++ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT);
++ }
++ }
+ }
+
+ void
+@@ -3159,17 +3694,26 @@
+ GdkEventKey *event)
+ {
+ GtkCalendar *calendar;
++ GtkSettings *settings;
+ gint return_val;
+ gint old_focus_row;
+ gint old_focus_col;
+ gint row, col, day;
+-
++ gint min_year, max_year;
++ gboolean knav;
++
+ calendar = GTK_CALENDAR (widget);
+ return_val = FALSE;
+
+ old_focus_row = calendar->focus_row;
+ old_focus_col = calendar->focus_col;
+
++ gtk_widget_style_get (widget, "max-year", &max_year,
++ "min-year", &min_year, NULL);
++
++ settings = gtk_settings_get_default ();
++ g_object_get (settings, "hildon-keyboard-navigation", &knav, NULL);
++
+ switch (event->keyval)
+ {
+ case GDK_KP_Left:
+@@ -3179,10 +3723,41 @@
+ gtk_calendar_set_month_prev (calendar);
+ else
+ {
+- move_focus (calendar, -1);
+- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
+- gtk_calendar_paint_day (widget, calendar->focus_row,
+- calendar->focus_col);
++ /* if we are at the first allowed day of the minimum year/month then do nothing */
++ if (calendar->year == min_year && calendar->month == 0 && calendar->day_month[old_focus_row][old_focus_col-1] == MONTH_PREV)
++ {
++ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0);
++ return TRUE;
++ }
++ else /* else normal */
++ {
++ move_focus (calendar, -1);
++ if (!knav)
++ {
++ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
++ gtk_calendar_paint_day (widget, calendar->focus_row,
++ calendar->focus_col);
++ }
++ else if (knav)
++ {
++ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col];
++ if (day_month == MONTH_CURRENT && calendar->selected_day != 1)
++ {
++ gtk_calendar_select_day(calendar, calendar->selected_day - 1);
++ }
++ else
++ {
++ if (calendar->month != 0) {
++ calendar->selected_day = month_length[leap (calendar->year)][calendar->month];
++ } else {
++ calendar->selected_day = month_length[leap (calendar->year -1)][12];
++ }
++ gtk_calendar_set_month_prev (calendar);
++ }
++ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar));
++ gtk_calendar_paint_day_names (GTK_WIDGET (calendar));
++ }
++ }
+ }
+ break;
+ case GDK_KP_Right:
+@@ -3192,10 +3767,36 @@
+ gtk_calendar_set_month_next (calendar);
+ else
+ {
+- move_focus (calendar, 1);
+- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
+- gtk_calendar_paint_day (widget, calendar->focus_row,
+- calendar->focus_col);
++ if (calendar->year == max_year && calendar->month == 11 && calendar->day_month[old_focus_row][old_focus_col+1] == MONTH_NEXT)
++ {
++ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0);
++ return TRUE;
++ }
++ else
++ {
++ move_focus (calendar, 1);
++ if (!knav)
++ {
++ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
++ gtk_calendar_paint_day (widget, calendar->focus_row,
++ calendar->focus_col);
++ }
++ else if (knav)
++ {
++ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col];
++ if (day_month == MONTH_CURRENT)
++ {
++ gtk_calendar_select_day (calendar, calendar->selected_day + 1);
++ }
++ else
++ {
++ calendar->selected_day = 1;
++ gtk_calendar_set_month_next (calendar);
++ }
++ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar));
++ gtk_calendar_paint_day_names (GTK_WIDGET (calendar));
++ }
++ }
+ }
+ break;
+ case GDK_KP_Up:
+@@ -3205,11 +3806,48 @@
+ gtk_calendar_set_year_prev (calendar);
+ else
+ {
+- if (calendar->focus_row > 0)
+- calendar->focus_row--;
+- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
+- gtk_calendar_paint_day (widget, calendar->focus_row,
+- calendar->focus_col);
++ if (calendar->year == min_year && calendar->month == 0 && calendar->day_month[old_focus_row-1][old_focus_col] == MONTH_PREV)
++ {
++ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0);
++ return TRUE;
++ }
++ else
++ {
++ if (calendar->focus_row > 0)
++ calendar->focus_row--;
++ if (!knav)
++ {
++ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
++ gtk_calendar_paint_day (widget, calendar->focus_row,
++ calendar->focus_col);
++ }
++ else if (knav)
++ {
++ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col];
++ if (day_month == MONTH_CURRENT)
++ {
++ if ((calendar->selected_day - 7) <= 0)
++ {
++ if (calendar->month != 0)
++ calendar->selected_day = month_length[leap (calendar->year)][calendar->month];
++ else
++ calendar->selected_day = month_length[leap (calendar->year - 1)][12];
++ gtk_calendar_set_month_prev (calendar);
++ }
++ else
++ {
++ gtk_calendar_select_day (calendar, calendar->selected_day - 7);
++ }
++ }
++ else
++ {
++ calendar->selected_day = calendar->day[calendar->focus_row][calendar->focus_col];
++ gtk_calendar_set_month_prev (calendar);
++ }
++ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar));
++ gtk_calendar_paint_day_names (GTK_WIDGET (calendar));
++ }
++ }
+ }
+ break;
+ case GDK_KP_Down:
+@@ -3219,12 +3857,49 @@
+ gtk_calendar_set_year_next (calendar);
+ else
+ {
+- if (calendar->focus_row < 5)
+- calendar->focus_row++;
+- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
+- gtk_calendar_paint_day (widget, calendar->focus_row,
+- calendar->focus_col);
++ if (calendar->year == max_year && calendar->month == 11 && calendar->day_month[old_focus_row+1][old_focus_col] == MONTH_NEXT)
++ {
++ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0);
++ return TRUE;
++ }
++ else
++ {
++
++ if (calendar->focus_row < 5)
++ calendar->focus_row++;
++ if (!knav)
++ {
++ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col);
++ gtk_calendar_paint_day (widget, calendar->focus_row,
++ calendar->focus_col);
++ }
++ else if (knav)
++ {
++ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col];
++ if (day_month == MONTH_CURRENT)
++ {
++ if ((calendar->selected_day + 7) >
++ month_length[leap (calendar->year)][calendar->month + 1])
++ {
++ calendar->selected_day = 1;
++ gtk_calendar_set_month_next (calendar);
++ }
++ else
++ {
++ gtk_calendar_select_day (calendar, calendar->selected_day + 7);
++ }
++ }
++ else
++ {
++ calendar->selected_day = calendar->day[calendar->focus_row][calendar->focus_col];
++ gtk_calendar_set_month_next (calendar);
++ }
++ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar));
++ gtk_calendar_paint_day_names (GTK_WIDGET (calendar));
++ }
++ }
+ }
++
+ break;
+ case GDK_KP_Space:
+ case GDK_space:
+@@ -3545,3 +4220,27 @@
+ gtk_calendar_select_day (calendar, day);
+ g_object_thaw_notify (G_OBJECT (calendar));
+ }
++
++/* This function return TRUE if we should mark date and FALSE
++ * otherwise
++ */
++static void
++gtk_calendar_check_current_date (GtkCalendar *calendar, gint x, gint y)
++{
++ GtkCalendarPrivateData *private_data;
++
++ private_data = GTK_CALENDAR_PRIVATE_DATA (calendar);
++
++ if (calendar->month == private_data->current_month &&
++ calendar->year == private_data->current_year)
++ {
++ gtk_paint_box( GTK_WIDGET (calendar)->style,
++ private_data->main_win,
++ GTK_STATE_NORMAL,
++ GTK_SHADOW_NONE, NULL,
++ GTK_WIDGET (calendar), "current-day",
++ x, y,
++ HILDON_DAY_WIDTH,
++ HILDON_DAY_HEIGHT);
++ }
++}
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff
index e69de29bb2..185d27e8a2 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff
@@ -0,0 +1,12 @@
+--- gtk+-2.6.4/gtk/gtkcalendar.h 2003-05-08 03:25:48.000000000 +0300
++++ gtk+-2.6.4/gtk/gtkcalendar.h 2005-04-06 16:19:36.267024936 +0300
+@@ -111,6 +111,9 @@
+ void (* next_month) (GtkCalendar *calendar);
+ void (* prev_year) (GtkCalendar *calendar);
+ void (* next_year) (GtkCalendar *calendar);
++ /* Hildon signals */
++ void (* erroneous_date) (GtkCalendar *calendar);
++ void (* selected_date) (GtkCalendar *calendar);
+
+ };
+
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff
index e69de29bb2..b24c26120a 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff
@@ -0,0 +1,66 @@
+--- gtk+-2.6.4/gtk/gtkcellrenderertext.c 2005-01-09 19:32:25.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkcellrenderertext.c 2005-04-06 16:19:36.274023872 +0300
+@@ -182,8 +182,8 @@
+
+ GTK_CELL_RENDERER (celltext)->xalign = 0.0;
+ GTK_CELL_RENDERER (celltext)->yalign = 0.5;
+- GTK_CELL_RENDERER (celltext)->xpad = 2;
+- GTK_CELL_RENDERER (celltext)->ypad = 2;
++ GTK_CELL_RENDERER (celltext)->xpad = 0;
++ GTK_CELL_RENDERER (celltext)->ypad = 0;
+ celltext->fixed_height_rows = -1;
+ celltext->font = pango_font_description_new ();
+
+@@ -1429,7 +1429,7 @@
+ /* The minimum size for ellipsized labels is ~ 3 chars */
+ if (width)
+ {
+- if (priv->ellipsize || priv->width_chars > 0)
++ /*if (priv->ellipsize || priv->width_chars > 0)
+ {
+ PangoContext *context;
+ PangoFontMetrics *metrics;
+@@ -1444,9 +1444,9 @@
+ *width += (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3));
+ }
+ else
+- {
++ {*/
+ *width = GTK_CELL_RENDERER (celltext)->xpad * 2 + rect.width;
+- }
++ /*} */
+ }
+
+ if (cell_area)
+@@ -1501,6 +1501,7 @@
+ gint x_offset;
+ gint y_offset;
+ GtkCellRendererTextPrivate *priv;
++ PangoRectangle logical_rect;
+
+ priv = GTK_CELL_RENDERER_TEXT_GET_PRIVATE (cell);
+
+@@ -1521,7 +1522,7 @@
+ else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT &&
+ GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
+ {
+- state = GTK_STATE_PRELIGHT;
++ state = GTK_STATE_NORMAL;
+ }
+ else
+ {
+@@ -1559,6 +1560,14 @@
+ g_object_unref (gc);
+ }
+
++ /* Dirty Hildon hack to force ellipsation */
++ pango_layout_get_extents (layout, NULL, &logical_rect);
++ if (PANGO_PIXELS (logical_rect.width) > MIN (background_area->width, expose_area->width))
++ {
++ priv->ellipsize = PANGO_ELLIPSIZE_END;
++ priv->ellipsize_set = TRUE;
++ }
++
+ if (priv->ellipsize)
+ pango_layout_set_width (layout,
+ (cell_area->width - x_offset - 2 * cell->xpad) * PANGO_SCALE);
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff
index e69de29bb2..f6d47f2174 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff
@@ -0,0 +1,11 @@
+--- gtk+-2.6.4/gtk/gtkcellrenderertoggle.c 2004-08-09 19:59:51.000000000 +0300
++++ gtk+-2.6.4/gtk/gtkcellrenderertoggle.c 2005-04-06 16:19:36.274023872 +0300
+@@ -71,7 +71,7 @@
+ PROP_INCONSISTENT
+ };
+
+-#define TOGGLE_WIDTH 12
++#define TOGGLE_WIDTH 26
+
+ static guint toggle_cell_signals[LAST_SIGNAL] = { 0 };
+
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff
index e69de29bb2..a6dbfc6a4a 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff
@@ -0,0 +1,19 @@
+--- gtk+-2.6.4/gtk/gtkcellview.c 2004-12-15 18:27:30.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkcellview.c 2005-04-06 16:19:36.275023720 +0300
+@@ -82,7 +82,6 @@
+ GValue *value);
+ static GtkCellViewCellInfo *gtk_cell_view_get_cell_info (GtkCellView *cellview,
+ GtkCellRenderer *renderer);
+-static void gtk_cell_view_set_cell_data (GtkCellView *cell_view);
+
+
+ static void gtk_cell_view_cell_layout_pack_start (GtkCellLayout *layout,
+@@ -536,7 +535,7 @@
+ return NULL;
+ }
+
+-static void
++void
+ gtk_cell_view_set_cell_data (GtkCellView *cell_view)
+ {
+ GList *i;
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff
index e69de29bb2..eb46720a90 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff
@@ -0,0 +1,10 @@
+--- gtk+-2.6.4/gtk/gtkcellview.h 2004-12-15 18:27:30.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkcellview.h 2005-04-06 16:19:36.317017336 +0300
+@@ -67,6 +67,7 @@
+
+ void gtk_cell_view_set_background_color (GtkCellView *cell_view,
+ const GdkColor *color);
++void gtk_cell_view_set_cell_data (GtkCellView *cellview);
+ GList *gtk_cell_view_get_cell_renderers (GtkCellView *cell_view);
+
+ G_END_DECLS
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff
index e69de29bb2..c6922ddc16 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff
@@ -0,0 +1,520 @@
+--- gtk+-2.6.4/gtk/gtkcheckbutton.c 2004-08-09 19:59:51.000000000 +0300
++++ gtk+-2.6.4/gtk/gtkcheckbutton.c 2005-04-06 16:19:36.317017336 +0300
+@@ -31,27 +31,44 @@
+ #include "gtklabel.h"
+
+
+-#define INDICATOR_SIZE 13
++#define INDICATOR_SIZE 24
+ #define INDICATOR_SPACING 2
+
++/* maJiK numbers for indicator */
++#define INDICATOR_SIDE_PADDING 5
++#define FOCUS_TOP_PADDING 7
++#define FOCUS_DOWN_PADDING 1
++
++/* spacing to take account of the 1 pixel
++ transparency of the widgetfocus.png
++*/
++#define HILDON_SPACING 1
++
++#define TOGGLE_ON_CLICK "toggle-on-click"
+
+-static void gtk_check_button_class_init (GtkCheckButtonClass *klass);
+-static void gtk_check_button_init (GtkCheckButton *check_button);
+-static void gtk_check_button_size_request (GtkWidget *widget,
+- GtkRequisition *requisition);
+-static void gtk_check_button_size_allocate (GtkWidget *widget,
+- GtkAllocation *allocation);
+-static gint gtk_check_button_expose (GtkWidget *widget,
+- GdkEventExpose *event);
+-static void gtk_check_button_paint (GtkWidget *widget,
+- GdkRectangle *area);
+-static void gtk_check_button_draw_indicator (GtkCheckButton *check_button,
+- GdkRectangle *area);
+-static void gtk_real_check_button_draw_indicator (GtkCheckButton *check_button,
+- GdkRectangle *area);
++static void gtk_check_button_class_init (GtkCheckButtonClass *klass);
++static void gtk_check_button_init (GtkCheckButton *check_button);
++static void gtk_check_button_size_request (GtkWidget *widget,
++ GtkRequisition *requisition);
++static void gtk_check_button_size_allocate (GtkWidget *widget,
++ GtkAllocation *allocation);
++static gint gtk_check_button_expose (GtkWidget *widget,
++ GdkEventExpose *event);
++static void gtk_check_button_paint (GtkWidget *widget,
++ GdkRectangle *area);
++static void gtk_check_button_draw_indicator (GtkCheckButton *check_button,
++ GdkRectangle *area);
++static void gtk_real_check_button_draw_indicator
++ (GtkCheckButton *check_button,
++ GdkRectangle *area);
+
+-static GtkToggleButtonClass *parent_class = NULL;
++static void gtk_check_button_calc_indicator_size( GtkCheckButton *button,
++ GdkRectangle *rect );
++
++static void gtk_check_button_clicked (GtkButton *button);
++static void gtk_check_button_update_state (GtkButton *button);
+
++static GtkToggleButtonClass *parent_class = NULL;
+
+ GType
+ gtk_check_button_get_type (void)
+@@ -85,32 +102,36 @@
+ gtk_check_button_class_init (GtkCheckButtonClass *class)
+ {
+ GtkWidgetClass *widget_class;
+-
++ GtkButtonClass *button_class;
++
+ widget_class = (GtkWidgetClass*) class;
++ button_class = (GtkButtonClass*) class;
+ parent_class = g_type_class_peek_parent (class);
+
+ widget_class->size_request = gtk_check_button_size_request;
+ widget_class->size_allocate = gtk_check_button_size_allocate;
+ widget_class->expose_event = gtk_check_button_expose;
+
++ button_class->clicked = gtk_check_button_clicked;
++
+ class->draw_indicator = gtk_real_check_button_draw_indicator;
+
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("indicator_size",
+- P_("Indicator Size"),
+- P_("Size of check or radio indicator"),
+- 0,
+- G_MAXINT,
+- INDICATOR_SIZE,
+- G_PARAM_READABLE));
++ P_("Indicator Size"),
++ P_("Size of check or radio indicator"),
++ 0,
++ G_MAXINT,
++ INDICATOR_SIZE,
++ G_PARAM_READABLE));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("indicator_spacing",
+- P_("Indicator Spacing"),
+- P_("Spacing around check or radio indicator"),
+- 0,
+- G_MAXINT,
+- INDICATOR_SPACING,
+- G_PARAM_READABLE));
++ P_("Indicator Spacing"),
++ P_("Spacing around check or radio indicator"),
++ 0,
++ G_MAXINT,
++ INDICATOR_SPACING,
++ G_PARAM_READABLE));
+ }
+
+ static void
+@@ -148,7 +169,8 @@
+ GtkWidget*
+ gtk_check_button_new_with_mnemonic (const gchar *label)
+ {
+- return g_object_new (GTK_TYPE_CHECK_BUTTON, "label", label, "use_underline", TRUE, NULL);
++ return g_object_new (GTK_TYPE_CHECK_BUTTON, "label", label,
++ "use_underline", TRUE, NULL);
+ }
+
+
+@@ -163,39 +185,70 @@
+
+ if (GTK_WIDGET_DRAWABLE (widget))
+ {
+- gint border_width;
+- gint interior_focus;
+- gint focus_width;
+- gint focus_pad;
+-
++ gint border_width = 0;
++ gint interior_focus = 0;
++ gint focus_width = 0;
++ gint focus_pad = 0;
++ gint indicator_size = 0;
++ gint indicator_spacing = 0;
++
+ gtk_widget_style_get (widget,
+ "interior-focus", &interior_focus,
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
++ "indicator-size", &indicator_size,
++ "indicator-spacing", &indicator_spacing,
+ NULL);
+-
+- gtk_check_button_draw_indicator (check_button, area);
+
+ border_width = GTK_CONTAINER (widget)->border_width;
++
++ /* Hildon: change the focus so that it draws around the entire
++ * widget - including both the indicator *and* the label
++ */
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+ {
+ GtkWidget *child = GTK_BIN (widget)->child;
+
++ int w = indicator_size + 2 * indicator_spacing +
++ 2 * (focus_width + focus_pad);
++ int h = indicator_size + 2 * indicator_spacing +
++ 2 * (focus_width + focus_pad) + 2 * HILDON_SPACING
++ - FOCUS_TOP_PADDING;
++ int x = widget->allocation.x;
++ int y = widget->allocation.y + (widget->allocation.height - h)/2
++ + FOCUS_DOWN_PADDING;
++
++ if (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL)
++ x = widget->allocation.x + widget->allocation.width -
++ (2 * HILDON_SPACING) - (indicator_size + 2) -
++ (indicator_spacing + 2);
++
+ if (interior_focus && child && GTK_WIDGET_VISIBLE (child))
+- gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),
+- NULL, widget, "checkbutton",
+- child->allocation.x - focus_width - focus_pad,
+- child->allocation.y - focus_width - focus_pad,
+- child->allocation.width + 2 * (focus_width + focus_pad),
+- child->allocation.height + 2 * (focus_width + focus_pad));
++ {
++ if (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL)
++ {
++ /* Move the "x" to the left, and enlarge the width,
++ both accounting for the child
++ */
++ x += - child->allocation.width - HILDON_SPACING -
++ (widget->style->xthickness);
++ w += child->allocation.width + HILDON_SPACING +
++ (widget->style->xthickness);
++ } else {
++ w = child->allocation.x + child->allocation.width +
++ 2 * widget->style->xthickness - x;
++ }
++
++ gtk_paint_focus (widget->style, widget->window,
++ GTK_WIDGET_STATE (widget),
++ NULL, widget, "checkbutton", x, y, w, h);
++ }
+ else
+- gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),
+- NULL, widget, "checkbutton",
+- border_width + widget->allocation.x,
+- border_width + widget->allocation.y,
+- widget->allocation.width - 2 * border_width,
+- widget->allocation.height - 2 * border_width);
++ gtk_paint_focus (widget->style, widget->window,
++ GTK_WIDGET_STATE (widget),
++ NULL, widget, "checkbutton", x, y, w, h);
+ }
++ gtk_check_button_draw_indicator (check_button, area);
+ }
+ }
+
+@@ -205,10 +258,10 @@
+ gint *indicator_spacing)
+ {
+ GtkWidget *widget = GTK_WIDGET (check_button);
+-
++
+ if (indicator_size)
+ gtk_widget_style_get (widget, "indicator_size", indicator_size, NULL);
+-
++
+ if (indicator_spacing)
+ gtk_widget_style_get (widget, "indicator_spacing", indicator_spacing, NULL);
+ }
+@@ -233,7 +286,7 @@
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
+ NULL);
+-
++
+ requisition->width = border_width * 2;
+ requisition->height = border_width * 2;
+
+@@ -246,15 +299,19 @@
+ GtkRequisition child_requisition;
+
+ gtk_widget_size_request (child, &child_requisition);
+-
+- requisition->width += child_requisition.width + indicator_spacing;
++
++ requisition->width += child_requisition.width +
++ 2 * widget->style->xthickness;
+ requisition->height += child_requisition.height;
++ requisition->width += 2 * widget->style->xthickness;
+ }
+
+- requisition->width += (indicator_size + indicator_spacing * 2 + 2 * (focus_width + focus_pad));
++ requisition->width += (indicator_size + indicator_spacing * 2 +
++ 2 * (focus_width + focus_pad));
+
+ temp = indicator_size + indicator_spacing * 2;
+- requisition->height = MAX (requisition->height, temp) + 2 * (focus_width + focus_pad);
++ requisition->height = MAX (requisition->height, temp) +
++ 2 * (focus_width + focus_pad);
+ }
+ else
+ (* GTK_WIDGET_CLASS (parent_class)->size_request) (widget, requisition);
+@@ -280,45 +337,59 @@
+ gint focus_width;
+ gint focus_pad;
+
+- _gtk_check_button_get_props (check_button, &indicator_size, &indicator_spacing);
++ _gtk_check_button_get_props (check_button,
++ &indicator_size, &indicator_spacing);
+ gtk_widget_style_get (widget,
+ "focus-line-width", &focus_width,
+ "focus-padding", &focus_pad,
+ NULL);
+-
++
+ widget->allocation = *allocation;
+ if (GTK_WIDGET_REALIZED (widget))
+ gdk_window_move_resize (button->event_window,
+ allocation->x, allocation->y,
+ allocation->width, allocation->height);
+
+- if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child))
++ if (GTK_BIN (button)->child &&
++ GTK_WIDGET_VISIBLE (GTK_BIN (button)->child))
+ {
+ GtkRequisition child_requisition;
+ gint border_width = GTK_CONTAINER (widget)->border_width;
+-
+- gtk_widget_get_child_requisition (GTK_BIN (button)->child, &child_requisition);
++
++ gtk_widget_get_child_requisition (GTK_BIN (button)->child,
++ &child_requisition);
+
+- child_allocation.width = MIN (child_requisition.width,
++ child_allocation.width = MIN (
++ child_requisition.width,
+ allocation->width -
+- ((border_width + focus_width + focus_pad) * 2
+- + indicator_size + indicator_spacing * 3));
+- child_allocation.width = MAX (child_allocation.width, 1);
++ ((border_width + focus_width +
++ focus_pad) * 2
++ - 2 * widget->style->xthickness +
++ indicator_size +
++ indicator_spacing * 2 ) );
+
++ child_allocation.width = MAX (child_allocation.width, 1);
++
+ child_allocation.height = MIN (child_requisition.height,
+- allocation->height - (border_width + focus_width + focus_pad) * 2);
++ allocation->height -
++ (border_width + focus_width +
++ focus_pad) * 2);
+ child_allocation.height = MAX (child_allocation.height, 1);
+
+- child_allocation.x = (border_width + indicator_size + indicator_spacing * 3 +
+- widget->allocation.x + focus_width + focus_pad);
++ child_allocation.x = (border_width + indicator_size +
++ indicator_spacing * 2 +
++ widget->style->xthickness +
++ widget->allocation.x +
++ focus_width + focus_pad);
+ child_allocation.y = widget->allocation.y +
+- (allocation->height - child_allocation.height) / 2;
+-
++ (allocation->height - child_allocation.height) / 2;
++
+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- child_allocation.x = allocation->x + allocation->width
+- - (child_allocation.x - allocation->x + child_allocation.width);
++ child_allocation.x = allocation->x + allocation->width -
++ (child_allocation.x - allocation->x + child_allocation.width);
+
+- gtk_widget_size_allocate (GTK_BIN (button)->child, &child_allocation);
++ gtk_widget_size_allocate (GTK_BIN (button)->child,
++ &child_allocation);
+ }
+ }
+ else
+@@ -375,45 +446,33 @@
+ GdkRectangle *area)
+ {
+ GtkWidget *widget;
+- GtkWidget *child;
+ GtkButton *button;
+ GtkToggleButton *toggle_button;
+ GtkStateType state_type;
+ GtkShadowType shadow_type;
+- gint x, y;
+- gint indicator_size;
+- gint indicator_spacing;
+- gint focus_width;
+- gint focus_pad;
+- gboolean interior_focus;
++
++ GdkRectangle indicator = {0, 0, 0, 0};
+
+ if (GTK_WIDGET_DRAWABLE (check_button))
+ {
+ widget = GTK_WIDGET (check_button);
+ button = GTK_BUTTON (check_button);
+ toggle_button = GTK_TOGGLE_BUTTON (check_button);
+-
+- gtk_widget_style_get (widget, "interior_focus", &interior_focus,
+- "focus-line-width", &focus_width,
+- "focus-padding", &focus_pad, NULL);
+-
+- _gtk_check_button_get_props (check_button, &indicator_size, &indicator_spacing);
+-
+- x = widget->allocation.x + indicator_spacing + GTK_CONTAINER (widget)->border_width;
+- y = widget->allocation.y + (widget->allocation.height - indicator_size) / 2;
+-
+- child = GTK_BIN (check_button)->child;
+- if (!interior_focus || !(child && GTK_WIDGET_VISIBLE (child)))
+- x += focus_width + focus_pad;
+-
++ gtk_check_button_calc_indicator_size( check_button, &indicator );
++
++ /* move indicator to root coordinates */
++ indicator.x += widget->allocation.x;
++ indicator.y += widget->allocation.y;
++
+ if (toggle_button->inconsistent)
+ shadow_type = GTK_SHADOW_ETCHED_IN;
+ else if (toggle_button->active)
+ shadow_type = GTK_SHADOW_IN;
+ else
+ shadow_type = GTK_SHADOW_OUT;
+-
+- if (button->activate_timeout || (button->button_down && button->in_button))
++
++ if (button->activate_timeout ||
++ (button->button_down && button->in_button))
+ state_type = GTK_STATE_ACTIVE;
+ else if (button->in_button)
+ state_type = GTK_STATE_PRELIGHT;
+@@ -422,32 +481,107 @@
+ else
+ state_type = GTK_STATE_NORMAL;
+
+- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = widget->allocation.x + widget->allocation.width - (indicator_size + x - widget->allocation.x);
++ /* Hildon change. We want to draw active image always when we have
++ * focus. */
++ if (GTK_WIDGET_HAS_FOCUS (widget))
++ state_type = GTK_STATE_ACTIVE;
+
+- if (GTK_WIDGET_STATE (toggle_button) == GTK_STATE_PRELIGHT)
++ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+ {
+- GdkRectangle restrict_area;
+- GdkRectangle new_area;
+-
+- restrict_area.x = widget->allocation.x + GTK_CONTAINER (widget)->border_width;
+- restrict_area.y = widget->allocation.y + GTK_CONTAINER (widget)->border_width;
+- restrict_area.width = widget->allocation.width - (2 * GTK_CONTAINER (widget)->border_width);
+- restrict_area.height = widget->allocation.height - (2 * GTK_CONTAINER (widget)->border_width);
++ indicator.x = widget->allocation.x + widget->allocation.width
++ - (indicator.width + indicator.x - widget->allocation.x);
+
+- if (gdk_rectangle_intersect (area, &restrict_area, &new_area))
+- {
+- gtk_paint_flat_box (widget->style, widget->window, GTK_STATE_PRELIGHT,
+- GTK_SHADOW_ETCHED_OUT,
+- area, widget, "checkbutton",
+- new_area.x, new_area.y,
+- new_area.width, new_area.height);
+- }
+ }
+
+ gtk_paint_check (widget->style, widget->window,
+ state_type, shadow_type,
+ area, widget, "checkbutton",
+- x, y, indicator_size, indicator_size);
++ indicator.x, indicator.y,
++ indicator.width, indicator.height);
++ }
++}
++
++
++/* calculates the size and position of the indicator
++ * relative to the origin of the check button.
++ */
++static void gtk_check_button_calc_indicator_size( GtkCheckButton *button,
++ GdkRectangle *rect )
++{
++ gint indicator_size;
++ gint indicator_spacing;
++ gint focus_width;
++ gint focus_pad;
++ gboolean interior_focus;
++ GtkWidget *child;
++ GtkWidget *widget = GTK_WIDGET(button);
++
++
++ gtk_widget_style_get (widget, "interior_focus", &interior_focus,
++ "focus-line-width", &focus_width,
++ "focus-padding", &focus_pad,
++ "indicator-size", &indicator_size,
++ "indicator-spacing", &indicator_spacing,
++ NULL
++ );
++
++
++ /* HILDON: We want the indicator to be positioned according to the spec.
++ *
++ * NOTE: INDICATOR_SIDE_PADDING and INDICATOR_TOP_PADDING
++ * are maJiKal numbers that make the indicator to be drawn
++ * to correct coordinates, 1337 \o/
++ */
++ rect->x = INDICATOR_SIDE_PADDING;
++ rect->y = ( widget->allocation.height - indicator_size ) / 2;
++
++ /* Hildon: we always add space for the focus */
++ rect->x += focus_width + focus_pad;
++
++ child = GTK_BIN (widget)->child;
++ if (interior_focus && child && GTK_WIDGET_VISIBLE (child))
++ {
++ rect->y += HILDON_SPACING;
+ }
++
++ rect->width = indicator_size;
++ rect->height = indicator_size;
+ }
++
++static void
++gtk_check_button_clicked (GtkButton *button)
++{
++ GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button);
++
++ toggle_button->active = !toggle_button->active;
++ gtk_toggle_button_toggled (toggle_button);
++
++ gtk_check_button_update_state (button);
++
++ g_object_notify (G_OBJECT (toggle_button), "active");
++}
++
++static void
++gtk_check_button_update_state (GtkButton *button)
++{
++ GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button);
++ gboolean depressed;
++ GtkStateType new_state;
++
++ if (toggle_button->inconsistent)
++ depressed = FALSE;
++ else if (button->in_button && button->button_down)
++ depressed = TRUE;
++ else
++ depressed = toggle_button->active;
++
++ if (button->in_button &&
++ (!button->button_down || toggle_button->draw_indicator))
++ new_state = GTK_STATE_PRELIGHT;
++ else
++ new_state = depressed ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL;
++
++ _gtk_button_set_depressed (button, depressed);
++ gtk_widget_set_state (GTK_WIDGET (toggle_button), new_state);
++}
++
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff
index e69de29bb2..2376beaeaa 100644
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff
+++ b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff
@@ -0,0 +1,950 @@
+--- gtk+-2.6.4/gtk/gtkcombobox.c 2005-02-25 21:11:08.000000000 +0200
++++ gtk+-2.6.4/gtk/gtkcombobox.c 2005-04-06 16:19:36.406003808 +0300
+@@ -17,6 +17,10 @@
+ * Boston, MA 02111-1307, USA.
+ */
+
++/*
++ * Modified for Nokia Oyj during 2002-2004.
++ */
++
+ #include <config.h>
+ #include "gtkalias.h"
+ #include "gtkcombobox.h"
+@@ -39,6 +43,8 @@
+ #include "gtktreeselection.h"
+ #include "gtkvseparator.h"
+ #include "gtkwindow.h"
++#include "gtkcomboboxentry.h"
++#include "gtktoolbar.h"
+
+ #include <gdk/gdkkeysyms.h>
+
+@@ -52,6 +58,13 @@
+
+ #include "gtktreeprivate.h"
+
++#define HILDON_MAX_WIDTH 406
++#define HILDON_MAX_HEIGHT 305
++#define HILDON_MAX_ITEMS 8
++/* this is also defined in gtkmenu.c and should be replaced with
++ a style property */
++#define MENU_SCROLL_ARROW_HEIGHT 20
++
+ /* WELCOME, to THE house of evil code */
+
+ typedef struct _ComboCellInfo ComboCellInfo;
+@@ -119,6 +132,9 @@
+ GtkTreeViewRowSeparatorFunc row_separator_func;
+ gpointer row_separator_data;
+ GtkDestroyNotify row_separator_destroy;
++
++ /* Hildon hack: state of our style property */
++ gboolean autodimmed_button;
+ };
+
+ /* While debugging this evil code, I have learned that
+@@ -201,6 +217,7 @@
+
+ #define BONUS_PADDING 4
+ #define SCROLL_TIME 100
++#define HILDON_PADDING 25
+
+ /* common */
+ static void gtk_combo_box_class_init (GtkComboBoxClass *klass);
+@@ -273,6 +290,14 @@
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data);
++static gboolean gtk_combo_box_focus_in (GtkWidget *widget,
++ GdkEventFocus *event);
++static gint gtk_combo_box_focus (GtkWidget *widget,
++ GtkDirectionType dir);
++static void gtk_combo_box_child_focus_in (GtkWidget *widget,
++ GdkEventFocus *event);
++static void gtk_combo_box_child_focus_out (GtkWidget *widget,
++ GdkEventFocus *event);
+ static gboolean gtk_combo_box_expose_event (GtkWidget *widget,
+ GdkEventExpose *event);
+ static gboolean gtk_combo_box_scroll_event (GtkWidget *widget,
+@@ -285,6 +310,12 @@
+
+ static void gtk_combo_box_check_appearance (GtkComboBox *combo_box);
+
++/* <Hildon addition> */
++extern void gtk_grab_combo_box_entry_focus (GtkComboBoxEntry *entry_box);
++
++static void gtk_combo_box_grab_focus (GtkWidget *focus_widget);
++/* </hildon addition> */
++
+ /* listening to the model */
+ static void gtk_combo_box_model_row_inserted (GtkTreeModel *model,
+ GtkTreePath *path,
+@@ -424,6 +455,9 @@
+ static void gtk_combo_box_start_editing (GtkCellEditable *cell_editable,
+ GdkEvent *event);
+
++static void gtk_combo_box_menu_position_above (GtkMenu *menu, gint *x,
++ gint *y, gboolean *push_in,
++ gpointer user_data);
+
+ GType
+ gtk_combo_box_get_type (void)
+@@ -479,6 +513,25 @@
+ return combo_box_type;
+ }
+
++/* Hildon addition: Check if the button needs to be dimmed */
++static void hildon_check_autodim(GtkComboBox *combo_box)
++{
++ GtkWidget *widget;
++ GtkTreeModel *model;
++ GtkTreeIter iter;
++
++ widget = combo_box->priv->button;
++ model = combo_box->priv->model;
++
++ if (combo_box->priv->autodimmed_button && widget != NULL)
++ {
++ if (model && gtk_tree_model_get_iter_first(model, &iter))
++ gtk_widget_set_sensitive(widget, TRUE);
++ else
++ gtk_widget_set_sensitive(widget, FALSE);
++ }
++}
++
+ /* common */
+ static void
+ gtk_combo_box_class_init (GtkComboBoxClass *klass)
+@@ -504,6 +557,11 @@
+ widget_class->mnemonic_activate = gtk_combo_box_mnemonic_activate;
+ widget_class->style_set = gtk_combo_box_style_set;
+ widget_class->state_changed = gtk_combo_box_state_changed;
++
++ /* Hildon addition */
++ widget_class->grab_focus = gtk_combo_box_grab_focus;
++ widget_class->focus_in_event = gtk_combo_box_focus_in;
++ widget_class->focus = gtk_combo_box_focus;
+
+ gtk_object_class = (GtkObjectClass *)klass;
+ gtk_object_class->destroy = gtk_combo_box_destroy;
+@@ -687,6 +745,41 @@
+ FALSE,
+ G_PARAM_READABLE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("hildonlike",
++ _("Size request"),
++ _("Size allocate"),
++ FALSE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("arrow-height",
++ P_("Arrow height for option menu"),
++ P_("Sets arrow height"),
++ 0,
++ G_MAXINT,
++ 28,
++ G_PARAM_READWRITE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("arrow-width",
++ P_("Arrow width for option menu"),
++ P_("Sets arrow width"),
++ 0,
++ G_MAXINT,
++ 26,
++ G_PARAM_READWRITE));
++
++
++ /* Hildon hack: style property for enabling the autodimming hack */
++ gtk_widget_class_install_style_property (
++ widget_class,
++ g_param_spec_boolean ("autodimmed_button",
++ _("Autodimmed button"),
++ _("Automatically dims the button if the list is empty"),
++ FALSE,
++ G_PARAM_READABLE));
++
+ g_type_class_add_private (object_class, sizeof (GtkComboBoxPrivate));
+ }
+
+@@ -731,6 +824,11 @@
+ combo_box->priv->editing_canceled = FALSE;
+ combo_box->priv->auto_scroll = FALSE;
+ combo_box->priv->focus_on_click = TRUE;
++
++ /* Hildon hack: default value for our style property if it is queried before
++ * the style is set */
++ combo_box->priv->autodimmed_button = FALSE;
++ GTK_WIDGET_SET_FLAGS ( combo_box, GTK_CAN_FOCUS );
+ }
+
+ static void
+@@ -911,7 +1009,19 @@
+ {
+ GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
+
++ /* Hildon hack: read the state of our style property */
++ gtk_widget_style_get (GTK_WIDGET(combo_box),
++ "autodimmed_button", &(combo_box->priv->autodimmed_button), NULL);
++
+ gtk_combo_box_check_appearance (combo_box);
++
++ /* Hildon hack: handle the dimmed state of the button in regards whether
++ * the list is empty or not. This has to be done here because
++ * in the callback functions of GtkTreeModel the button widget
++ * may have not yet been set. However, we repeat this stuff in
++ * those functions, because later the button will be set and
++ * we want to update our state. */
++ hildon_check_autodim(combo_box);
+
+ if (combo_box->priv->tree_view && combo_box->priv->cell_view)
+ gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
+@@ -922,10 +1032,17 @@
+ gtk_combo_box_button_toggled (GtkWidget *widget,
+ gpointer data)
+ {
++ gboolean hildonlike;
+ GtkComboBox *combo_box = GTK_COMBO_BOX (data);
++
++ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", &hildonlike, NULL);
+
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+ {
++ if (hildonlike) {
++ gtk_combo_box_grab_focus(GTK_WIDGET(combo_box));
++ }
++
+ if (!combo_box->priv->popup_in_progress)
+ gtk_combo_box_popup (combo_box);
+ }
+@@ -1103,7 +1220,7 @@
+ {
+ gtk_container_remove (GTK_CONTAINER (combo_box->priv->popup_frame),
+ combo_box->priv->popup_widget);
+- g_object_unref (combo_box->priv->popup_widget);
++ g_object_unref (G_OBJECT (combo_box->priv->popup_widget));
+ combo_box->priv->popup_widget = NULL;
+ }
+
+@@ -1175,7 +1292,7 @@
+ popup);
+
+ gtk_widget_show (popup);
+- g_object_ref (popup);
++ g_object_ref (G_OBJECT (popup));
+ combo_box->priv->popup_widget = popup;
+ }
+ }
+@@ -1250,9 +1367,13 @@
+ GtkRequisition requisition;
+ GList *children;
+ gint screen_width;
++ gint screen_height;
+ gint menu_xpos;
+ gint menu_ypos;
+- gint menu_width;
++ gint menu_width, menu_height;
++ gint counter = 0;