aboutsummaryrefslogtreecommitdiffstats
path: root/gtk+
diff options
context:
space:
mode:
Diffstat (limited to 'gtk+')
-rw-r--r--gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix689
-rw-r--r--gtk+/gtk+-1.2-1.2.10/no-xwc267
-rw-r--r--gtk+/gtk+-2.2.4/configure-lossage.patch12
-rw-r--r--gtk+/gtk+-2.2.4/glib-2.0.m4212
-rw-r--r--gtk+/gtk+-2.2.4/glib-gettext.m4380
-rw-r--r--gtk+/gtk+-2.2.4/libtool-lossage.patch20
-rw-r--r--gtk+/gtk+-2.2.4/no-demos.patch15
-rw-r--r--gtk+/gtk+-2.4.1/automake-lossage.patch24
-rw-r--r--gtk+/gtk+-2.4.1/gtk-doc.m453
-rw-r--r--gtk+/gtk+-2.4.1/hardcoded_libtool.patch29
-rw-r--r--gtk+/gtk+-2.4.1/no-demos.patch10
-rw-r--r--gtk+/gtk+-2.4.1/no-xwc.patch148
-rw-r--r--gtk+/gtk+-2.4.13/automake-lossage.patch24
-rw-r--r--gtk+/gtk+-2.4.13/disable-tooltips.patch11
-rw-r--r--gtk+/gtk+-2.4.13/error-dialog.patch11
-rw-r--r--gtk+/gtk+-2.4.13/gtk+-handhelds.patch236
-rw-r--r--gtk+/gtk+-2.4.13/gtk-doc.m453
-rw-r--r--gtk+/gtk+-2.4.13/gtklabel-resize-patch10
-rw-r--r--gtk+/gtk+-2.4.13/hardcoded_libtool.patch29
-rw-r--r--gtk+/gtk+-2.4.13/menu-deactivate.patch50
-rw-r--r--gtk+/gtk+-2.4.13/my-documents.patch19
-rw-r--r--gtk+/gtk+-2.4.13/no-demos.patch10
-rw-r--r--gtk+/gtk+-2.4.13/no-xwc.patch148
-rw-r--r--gtk+/gtk+-2.4.13/scroll-timings.patch15
-rw-r--r--gtk+/gtk+-2.4.13/single-click.patch48
-rw-r--r--gtk+/gtk+-2.4.13/small-gtkfilesel.patch267
-rw-r--r--gtk+/gtk+-2.4.13/spinbutton.patch128
-rw-r--r--gtk+/gtk+-2.4.13/xsettings.patch16
-rw-r--r--gtk+/gtk+-2.4.3/automake-lossage.patch24
-rw-r--r--gtk+/gtk+-2.4.3/disable-tooltips.patch11
-rw-r--r--gtk+/gtk+-2.4.3/gtk+-handhelds.patch236
-rw-r--r--gtk+/gtk+-2.4.3/gtk-doc.m453
-rw-r--r--gtk+/gtk+-2.4.3/gtklabel-resize-patch10
-rw-r--r--gtk+/gtk+-2.4.3/hardcoded_libtool.patch29
-rw-r--r--gtk+/gtk+-2.4.3/no-demos.patch10
-rw-r--r--gtk+/gtk+-2.4.3/no-xwc.patch148
-rw-r--r--gtk+/gtk+-2.4.3/spinbutton.patch128
-rw-r--r--gtk+/gtk+-2.4.4/automake-lossage.patch24
-rw-r--r--gtk+/gtk+-2.4.4/disable-tooltips.patch11
-rw-r--r--gtk+/gtk+-2.4.4/gtk+-handhelds.patch236
-rw-r--r--gtk+/gtk+-2.4.4/gtk-doc.m453
-rw-r--r--gtk+/gtk+-2.4.4/gtklabel-resize-patch10
-rw-r--r--gtk+/gtk+-2.4.4/hardcoded_libtool.patch29
-rw-r--r--gtk+/gtk+-2.4.4/no-demos.patch10
-rw-r--r--gtk+/gtk+-2.4.4/no-xwc.patch148
-rw-r--r--gtk+/gtk+-2.4.4/single-click.patch48
-rw-r--r--gtk+/gtk+-2.4.4/small-gtkfilesel.patch267
-rw-r--r--gtk+/gtk+-2.4.4/spinbutton.patch128
48 files changed, 4547 insertions, 0 deletions
diff --git a/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix b/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix
index e69de29bb2..a406235bae 100644
--- a/gtk+/gtk+-1.2-1.2.10/gtk+1.2-reconf-fix
+++ b/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/gtk+/gtk+-1.2-1.2.10/no-xwc b/gtk+/gtk+-1.2-1.2.10/no-xwc
index e69de29bb2..e26bba8ed3 100644
--- a/gtk+/gtk+-1.2-1.2.10/no-xwc
+++ b/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/gtk+/gtk+-2.2.4/configure-lossage.patch b/gtk+/gtk+-2.2.4/configure-lossage.patch
index e69de29bb2..04b789675d 100644
--- a/gtk+/gtk+-2.2.4/configure-lossage.patch
+++ b/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/gtk+/gtk+-2.2.4/glib-2.0.m4 b/gtk+/gtk+-2.2.4/glib-2.0.m4
index e69de29bb2..28ccef4a5f 100644
--- a/gtk+/gtk+-2.2.4/glib-2.0.m4
+++ b/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/gtk+/gtk+-2.2.4/glib-gettext.m4 b/gtk+/gtk+-2.2.4/glib-gettext.m4
index e69de29bb2..862db40a93 100644
--- a/gtk+/gtk+-2.2.4/glib-gettext.m4
+++ b/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/gtk+/gtk+-2.2.4/libtool-lossage.patch b/gtk+/gtk+-2.2.4/libtool-lossage.patch
index e69de29bb2..d291cbdd69 100644
--- a/gtk+/gtk+-2.2.4/libtool-lossage.patch
+++ b/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/gtk+/gtk+-2.2.4/no-demos.patch b/gtk+/gtk+-2.2.4/no-demos.patch
index e69de29bb2..7a44943d4a 100644
--- a/gtk+/gtk+-2.2.4/no-demos.patch
+++ b/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/gtk+/gtk+-2.4.1/automake-lossage.patch b/gtk+/gtk+-2.4.1/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/gtk+/gtk+-2.4.1/automake-lossage.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.1/gtk-doc.m4 b/gtk+/gtk+-2.4.1/gtk-doc.m4
index e69de29bb2..3ec41666b2 100644
--- a/gtk+/gtk+-2.4.1/gtk-doc.m4
+++ b/gtk+/gtk+-2.4.1/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/gtk+/gtk+-2.4.1/hardcoded_libtool.patch b/gtk+/gtk+-2.4.1/hardcoded_libtool.patch
index e69de29bb2..9da8dd8cf1 100644
--- a/gtk+/gtk+-2.4.1/hardcoded_libtool.patch
+++ b/gtk+/gtk+-2.4.1/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/gtk+/gtk+-2.4.1/no-demos.patch b/gtk+/gtk+-2.4.1/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/gtk+/gtk+-2.4.1/no-demos.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.1/no-xwc.patch b/gtk+/gtk+-2.4.1/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/gtk+/gtk+-2.4.1/no-xwc.patch
+++ b/gtk+/gtk+-2.4.1/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/gtk+/gtk+-2.4.13/automake-lossage.patch b/gtk+/gtk+-2.4.13/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/gtk+/gtk+-2.4.13/automake-lossage.patch
+++ b/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/gtk+/gtk+-2.4.13/disable-tooltips.patch b/gtk+/gtk+-2.4.13/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/gtk+/gtk+-2.4.13/disable-tooltips.patch
+++ b/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/gtk+/gtk+-2.4.13/error-dialog.patch b/gtk+/gtk+-2.4.13/error-dialog.patch
index e69de29bb2..9a6d7f86a1 100644
--- a/gtk+/gtk+-2.4.13/error-dialog.patch
+++ b/gtk+/gtk+-2.4.13/error-dialog.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.4/gtk/gtkstock.c.old Fri Aug 20 09:33:22 2004
++++ gtk+-2.4.4/gtk/gtkstock.c Fri Aug 20 09:34:17 2004
+@@ -284,7 +284,7 @@
+
+ { GTK_STOCK_DIALOG_INFO, N_("Information"), 0, 0, GETTEXT_PACKAGE },
+ { GTK_STOCK_DIALOG_WARNING, N_("Warning"), 0, 0, GETTEXT_PACKAGE },
+- { GTK_STOCK_DIALOG_ERROR, N_("Error"), 0, 0, GETTEXT_PACKAGE },
++ { GTK_STOCK_DIALOG_ERROR, N_("Information"), 0, 0, GETTEXT_PACKAGE },
+ { GTK_STOCK_DIALOG_QUESTION, N_("Question"), 0, 0, GETTEXT_PACKAGE },
+
+ /* FIXME these need accelerators when appropriate, and
diff --git a/gtk+/gtk+-2.4.13/gtk+-handhelds.patch b/gtk+/gtk+-2.4.13/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/gtk+/gtk+-2.4.13/gtk+-handhelds.patch
+++ b/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/gtk+/gtk+-2.4.13/gtk-doc.m4 b/gtk+/gtk+-2.4.13/gtk-doc.m4
index e69de29bb2..3ec41666b2 100644
--- a/gtk+/gtk+-2.4.13/gtk-doc.m4
+++ b/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/gtk+/gtk+-2.4.13/gtklabel-resize-patch b/gtk+/gtk+-2.4.13/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/gtk+/gtk+-2.4.13/gtklabel-resize-patch
+++ b/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/gtk+/gtk+-2.4.13/hardcoded_libtool.patch b/gtk+/gtk+-2.4.13/hardcoded_libtool.patch
index e69de29bb2..9da8dd8cf1 100644
--- a/gtk+/gtk+-2.4.13/hardcoded_libtool.patch
+++ b/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/gtk+/gtk+-2.4.13/menu-deactivate.patch b/gtk+/gtk+-2.4.13/menu-deactivate.patch
index e69de29bb2..29e665fbf3 100644
--- a/gtk+/gtk+-2.4.13/menu-deactivate.patch
+++ b/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/gtk+/gtk+-2.4.13/my-documents.patch b/gtk+/gtk+-2.4.13/my-documents.patch
index e69de29bb2..18710406aa 100644
--- a/gtk+/gtk+-2.4.13/my-documents.patch
+++ b/gtk+/gtk+-2.4.13/my-documents.patch
@@ -0,0 +1,19 @@
+--- gtk+-2.4.4/gtk/gtkfilechooserdefault.c.old Sat Aug 14 00:23:16 2004
++++ gtk+-2.4.4/gtk/gtkfilechooserdefault.c Sat Aug 14 00:26:11 2004
+@@ -1061,12 +1061,14 @@
+ static void
+ shortcuts_append_home (GtkFileChooserDefault *impl)
+ {
+- const char *home;
++ const char *home, *docs;
+ GtkFilePath *home_path;
+ GError *error;
+
+ home = g_get_home_dir ();
+- home_path = gtk_file_system_filename_to_path (impl->file_system, home);
++ docs = g_strdup_printf ("%s/My Documents", home);
++ home_path = gtk_file_system_filename_to_path (impl->file_system, docs);
++ g_free (docs);
+
+ error = NULL;
+ impl->has_home = shortcuts_insert_path (impl, -1, FALSE, NULL, home_path, _("Home"), FALSE, &error);
diff --git a/gtk+/gtk+-2.4.13/no-demos.patch b/gtk+/gtk+-2.4.13/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/gtk+/gtk+-2.4.13/no-demos.patch
+++ b/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/gtk+/gtk+-2.4.13/no-xwc.patch b/gtk+/gtk+-2.4.13/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/gtk+/gtk+-2.4.13/no-xwc.patch
+++ b/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/gtk+/gtk+-2.4.13/scroll-timings.patch b/gtk+/gtk+-2.4.13/scroll-timings.patch
index e69de29bb2..a38b21dcc2 100644
--- a/gtk+/gtk+-2.4.13/scroll-timings.patch
+++ b/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/gtk+/gtk+-2.4.13/single-click.patch b/gtk+/gtk+-2.4.13/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/gtk+/gtk+-2.4.13/single-click.patch
+++ b/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/gtk+/gtk+-2.4.13/small-gtkfilesel.patch b/gtk+/gtk+-2.4.13/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/gtk+/gtk+-2.4.13/small-gtkfilesel.patch
+++ b/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/gtk+/gtk+-2.4.13/spinbutton.patch b/gtk+/gtk+-2.4.13/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/gtk+/gtk+-2.4.13/spinbutton.patch
+++ b/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/gtk+/gtk+-2.4.13/xsettings.patch b/gtk+/gtk+-2.4.13/xsettings.patch
index e69de29bb2..b63e262d34 100644
--- a/gtk+/gtk+-2.4.13/xsettings.patch
+++ b/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/gtk+/gtk+-2.4.3/automake-lossage.patch b/gtk+/gtk+-2.4.3/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/gtk+/gtk+-2.4.3/automake-lossage.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.3/disable-tooltips.patch b/gtk+/gtk+-2.4.3/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/gtk+/gtk+-2.4.3/disable-tooltips.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.3/gtk+-handhelds.patch b/gtk+/gtk+-2.4.3/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/gtk+/gtk+-2.4.3/gtk+-handhelds.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.3/gtk-doc.m4 b/gtk+/gtk+-2.4.3/gtk-doc.m4
index e69de29bb2..3ec41666b2 100644
--- a/gtk+/gtk+-2.4.3/gtk-doc.m4
+++ b/gtk+/gtk+-2.4.3/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/gtk+/gtk+-2.4.3/gtklabel-resize-patch b/gtk+/gtk+-2.4.3/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/gtk+/gtk+-2.4.3/gtklabel-resize-patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.3/hardcoded_libtool.patch b/gtk+/gtk+-2.4.3/hardcoded_libtool.patch
index e69de29bb2..9da8dd8cf1 100644
--- a/gtk+/gtk+-2.4.3/hardcoded_libtool.patch
+++ b/gtk+/gtk+-2.4.3/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/gtk+/gtk+-2.4.3/no-demos.patch b/gtk+/gtk+-2.4.3/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/gtk+/gtk+-2.4.3/no-demos.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.3/no-xwc.patch b/gtk+/gtk+-2.4.3/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/gtk+/gtk+-2.4.3/no-xwc.patch
+++ b/gtk+/gtk+-2.4.3/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/gtk+/gtk+-2.4.3/spinbutton.patch b/gtk+/gtk+-2.4.3/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/gtk+/gtk+-2.4.3/spinbutton.patch
+++ b/gtk+/gtk+-2.4.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/gtk+/gtk+-2.4.4/automake-lossage.patch b/gtk+/gtk+-2.4.4/automake-lossage.patch
index e69de29bb2..0d423ddbb9 100644
--- a/gtk+/gtk+-2.4.4/automake-lossage.patch
+++ b/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/gtk+/gtk+-2.4.4/disable-tooltips.patch b/gtk+/gtk+-2.4.4/disable-tooltips.patch
index e69de29bb2..d71d839c3c 100644
--- a/gtk+/gtk+-2.4.4/disable-tooltips.patch
+++ b/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/gtk+/gtk+-2.4.4/gtk+-handhelds.patch b/gtk+/gtk+-2.4.4/gtk+-handhelds.patch
index e69de29bb2..20481f059b 100644
--- a/gtk+/gtk+-2.4.4/gtk+-handhelds.patch
+++ b/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/gtk+/gtk+-2.4.4/gtk-doc.m4 b/gtk+/gtk+-2.4.4/gtk-doc.m4
index e69de29bb2..3ec41666b2 100644
--- a/gtk+/gtk+-2.4.4/gtk-doc.m4
+++ b/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/gtk+/gtk+-2.4.4/gtklabel-resize-patch b/gtk+/gtk+-2.4.4/gtklabel-resize-patch
index e69de29bb2..df29656343 100644
--- a/gtk+/gtk+-2.4.4/gtklabel-resize-patch
+++ b/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/gtk+/gtk+-2.4.4/hardcoded_libtool.patch b/gtk+/gtk+-2.4.4/hardcoded_libtool.patch
index e69de29bb2..9da8dd8cf1 100644
--- a/gtk+/gtk+-2.4.4/hardcoded_libtool.patch
+++ b/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/gtk+/gtk+-2.4.4/no-demos.patch b/gtk+/gtk+-2.4.4/no-demos.patch
index e69de29bb2..2f10a30dda 100644
--- a/gtk+/gtk+-2.4.4/no-demos.patch
+++ b/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/gtk+/gtk+-2.4.4/no-xwc.patch b/gtk+/gtk+-2.4.4/no-xwc.patch
index e69de29bb2..e1ee5cb5c8 100644
--- a/gtk+/gtk+-2.4.4/no-xwc.patch
+++ b/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/gtk+/gtk+-2.4.4/single-click.patch b/gtk+/gtk+-2.4.4/single-click.patch
index e69de29bb2..21adb9b7b0 100644
--- a/gtk+/gtk+-2.4.4/single-click.patch
+++ b/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/gtk+/gtk+-2.4.4/small-gtkfilesel.patch b/gtk+/gtk+-2.4.4/small-gtkfilesel.patch
index e69de29bb2..20bf4cf366 100644
--- a/gtk+/gtk+-2.4.4/small-gtkfilesel.patch
+++ b/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/gtk+/gtk+-2.4.4/spinbutton.patch b/gtk+/gtk+-2.4.4/spinbutton.patch
index e69de29bb2..8ad7507af0 100644
--- a/gtk+/gtk+-2.4.4/spinbutton.patch
+++ b/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