summaryrefslogtreecommitdiffstats
path: root/x11-libs/gtk+/files
diff options
context:
space:
mode:
Diffstat (limited to 'x11-libs/gtk+/files')
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch19
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch85
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch696
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-automake.diff293
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch66
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch24
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch29
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch17
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch28
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch133
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-m4.patch9
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch19
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch46
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch62
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch371
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch88
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch29
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch30
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch140
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch188
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch148
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch41
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch52
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch20
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch33
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch14
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch14
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch74
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch1407
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.9-be.patch506
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.9-rc.patch105
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch27
-rw-r--r--x11-libs/gtk+/files/gtk+-ds-gentooalt.patch597
-rw-r--r--x11-libs/gtk+/files/gtkrc39
39 files changed, 5504 insertions, 0 deletions
diff --git a/x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch b/x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch
new file mode 100644
index 0000000..a3fd198
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch
@@ -0,0 +1,19 @@
+--- gtk/gtkrc.c.~1.40.2.17.~ 2001-07-10 20:06:35.000000000 +0200
++++ gtk/gtkrc.c 2003-03-05 16:56:10.000000000 +0100
+@@ -453,7 +453,7 @@
+
+ if (!initted)
+ {
+- char *locale = setlocale (LC_CTYPE, NULL);
++ char *locale = g_strdup (setlocale (LC_CTYPE, NULL));
+ char *p;
+
+ initted = TRUE;
+@@ -558,6 +558,7 @@
+
+ if (tmp) g_free (tmp);
+ }
++ g_free (locale);
+ }
+
+ i = 0;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch b/x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch
new file mode 100644
index 0000000..04a967c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch
@@ -0,0 +1,85 @@
+diff -uprk.orig gtk+-1.2.10.orig/gdk.pc.in gtk+-1.2.10/gdk.pc.in
+--- gtk+-1.2.10.orig/gdk.pc.in 2000-11-30 04:18:35 +0300
++++ gtk+-1.2.10/gdk.pc.in 2004-08-26 18:05:20 +0400
+@@ -7,5 +7,5 @@ Name: GDK
+ Description: GIMP Drawing Kit
+ Version: @VERSION@
+ Requires: glib
+-Libs: -L${libdir} @x_ldflags@ -lgdk @INTLLIBS@ @GDK_WLIBS@ @x_libs@ -lm
++Libs: -L${libdir} @x_ldflags@ -lgdk
+ Cflags: -I${includedir}/gtk-1.2 @x_cflags@
+diff -uprk.orig gtk+-1.2.10.orig/gtk/Makefile.am gtk+-1.2.10/gtk/Makefile.am
+--- gtk+-1.2.10.orig/gtk/Makefile.am 2004-08-26 17:09:34 +0400
++++ gtk+-1.2.10/gtk/Makefile.am 2004-08-26 18:05:20 +0400
+@@ -32,7 +32,7 @@ libgtk_la_LDFLAGS = @STRIP_BEGIN@ \
+ @x_libs@ \
+ -lm \
+ @STRIP_END@
+-# $(top_builddir)/gdk/libgdk.la
++libgtk_la_LIBADD = $(top_builddir)/gdk/libgdk.la
+
+
+ #
+@@ -424,10 +424,9 @@ uninstall-local:
+ # test programs, not to be installed
+ #
+ noinst_PROGRAMS = testgtk testinput testselection testrgb testdnd simple # testthreads
+-DEPS = libgtk.la $(top_builddir)/gdk/libgdk.la
++DEPS = libgtk.la
+ LDADDS = @STRIP_BEGIN@ \
+ libgtk.la \
+- $(top_builddir)/gdk/libgdk.la \
+ @x_ldflags@ \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+diff -uprk.orig gtk+-1.2.10.orig/gtk/Makefile.in gtk+-1.2.10/gtk/Makefile.in
+--- gtk+-1.2.10.orig/gtk/Makefile.in 2004-08-26 17:09:34 +0400
++++ gtk+-1.2.10/gtk/Makefile.in 2004-08-26 18:10:32 +0400
+@@ -137,7 +137,6 @@ lib_LTLIBRARIES = libgtk.la
+ libgtkincludedir = $(includedir)/gtk-1.2/gtk
+ libgtk_la_LDFLAGS = @STRIP_BEGIN@ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE) -export-dynamic @GLIB_DEPLIBS@ @x_ldflags@ @x_libs@ -lm @STRIP_END@
+
+-# $(top_builddir)/gdk/libgdk.la
+
+ #
+ # setup source file variables
+@@ -198,8 +197,8 @@ gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.e
+ # test programs, not to be installed
+ #
+ noinst_PROGRAMS = testgtk testinput testselection testrgb testdnd simple # testthreads
+-DEPS = libgtk.la $(top_builddir)/gdk/libgdk.la
+-LDADDS = @STRIP_BEGIN@ libgtk.la $(top_builddir)/gdk/libgdk.la @x_ldflags@ @x_libs@ @GDK_WLIBS@ @GLIB_LIBS@ -lm @STRIP_END@
++DEPS = libgtk.la
++LDADDS = @STRIP_BEGIN@ libgtk.la @x_ldflags@ @x_libs@ @GDK_WLIBS@ @GLIB_LIBS@ -lm @STRIP_END@
+
+ testgtk_DEPENDENCIES = $(DEPS)
+ testinput_DEPENDENCIES = $(DEPS)
+@@ -228,7 +227,8 @@ X_CFLAGS = @X_CFLAGS@
+ X_LIBS = @X_LIBS@
+ X_EXTRA_LIBS = @X_EXTRA_LIBS@
+ X_PRE_LIBS = @X_PRE_LIBS@
+-libgtk_la_LIBADD =
++libgtk_la_LIBADD = $(top_builddir)/gdk/libgdk.la
++libgtk_la_DEPENDENCIES = $(top_builddir)/gdk/libgdk.la
+ libgtk_la_OBJECTS = gtkaccelgroup.lo gtkaccellabel.lo gtkadjustment.lo \
+ gtkalignment.lo gtkarg.lo gtkarrow.lo gtkaspectframe.lo gtkbin.lo \
+ gtkbindings.lo gtkbbox.lo gtkbox.lo gtkbutton.lo gtkcalendar.lo \
+diff -uprk.orig gtk+-1.2.10.orig/gtk-config.in gtk+-1.2.10/gtk-config.in
+--- gtk+-1.2.10.orig/gtk-config.in 2000-10-21 22:20:40 +0400
++++ gtk+-1.2.10/gtk-config.in 2004-08-26 18:18:31 +0400
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+
+-glib_libs="@glib_libs@"
++glib_libs=
+ glib_cflags="@glib_cflags@"
+ glib_thread_libs="@glib_thread_libs@"
+ glib_thread_cflags="@glib_thread_cflags@"
+@@ -107,6 +107,6 @@ if test "$echo_libs" = "yes"; then
+ fi
+ done
+
+- echo $libdirs @x_ldflags@ -lgtk -lgdk $my_glib_libs @INTLLIBS@ @x_libs@ @GDK_WLIBS@ -lm
++ echo $libdirs @x_ldflags@ -lgtk $my_glib_libs
+ fi
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch b/x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch
new file mode 100644
index 0000000..aa295f2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch
@@ -0,0 +1,696 @@
+--- gtk+-1.2.10/acinclude.m4.orig 2006-05-24 23:23:51.000000000 -0700
++++ gtk+-1.2.10/acinclude.m4 2006-05-24 23:23:19.000000000 -0700
+@@ -672,7 +672,7 @@
+ AC_DEFINE(HAVE_STPCPY)
+ fi
+
+- AM_LC_MESSAGES
++ gt_LC_MESSAGES
+ AM_GTK_WITH_NLS
+
+ if test "x$CATOBJEXT" != "x"; then
+--- gtk+-1.2.10/gtk.m4.orig 2006-05-24 23:32:00.000000000 -0700
++++ gtk+-1.2.10/gtk.m4 2006-05-24 23:36:16.000000000 -0700
+@@ -1,6 +1,11 @@
+ # Configure paths for GTK+
+ # Owen Taylor 97-11-3
+-
++AC_DEFUN([GTK_AC_DIVERT_BEFORE_HELP],
++[ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])],
++ [ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])],
++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++$1
++AC_DIVERT_POP()])])])
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
+--- gtk+-1.2.10/configure.in.orig 2006-05-25 05:45:06.000000000 -0700
++++ gtk+-1.2.10/configure.in 2006-05-25 05:44:08.000000000 -0700
+@@ -1,6 +1,8 @@
++builtin(include,gtk.m4)
++
++
+ # Process this file with autoconf to produce a configure script.
+ AC_INIT(gdk/gdktypes.h)
+-
+ # In the following, there are a the following variants
+ # of GLib cflags and libs variables
+ #
+@@ -12,12 +14,11 @@
+ # glib_thread_cflags: cflags to store in gtk-config for gtk-config gthread
+ # glib_thread_libs: libs to store in gtk-config for gtk-config gthread
+
++AC_CANONICAL_TARGET
+ # Save this value here, since automake will set cflags later
+ cflags_set=${CFLAGS+set}
+
+-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
++GTK_AC_DIVERT_BEFORE_HELP([
+ #
+ # Making releases:
+ # GTK_MICRO_VERSION += 1;
+@@ -32,9 +33,8 @@
+ GTK_MICRO_VERSION=10
+ GTK_INTERFACE_AGE=1
+ GTK_BINARY_AGE=10
+-GTK_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION
+-dnl
+-AC_DIVERT_POP()dnl
++GTK_VERSION="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION"
++])
+
+ AC_SUBST(GTK_MAJOR_VERSION)
+ AC_SUBST(GTK_MINOR_VERSION)
+@@ -44,9 +44,9 @@
+ AC_SUBST(GTK_VERSION)
+
+ # libtool versioning
+-LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
++LT_RELEASE="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION"
+ LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
+-LT_REVISION=$GTK_INTERFACE_AGE
++LT_REVISION="$GTK_INTERFACE_AGE"
+ LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
+ AC_SUBST(LT_RELEASE)
+ AC_SUBST(LT_CURRENT)
+@@ -54,11 +54,8 @@
+ AC_SUBST(LT_AGE)
+
+ # For automake.
+-VERSION=$GTK_VERSION
+-PACKAGE=gtk+
+-
+-# Save this value here, since automake will set cflags later
+-cflags_set=${CFLAGS+set}
++VERSION="$GTK_VERSION"
++PACKAGE="gtk+"
+
+ dnl Initialize automake stuff
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
+@@ -67,42 +64,40 @@
+ AM_CONFIG_HEADER(config.h)
+
+ dnl Initialize libtool
+-AM_PROG_LIBTOOL
++AC_PROG_LIBTOOL
+
+ dnl Initialize maintainer mode
+ AM_MAINTAINER_MODE
+
+-AC_CANONICAL_HOST
+-
+ dnl figure debugging default, prior to $ac_help setup
+-dnl
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++
++GTK_AC_DIVERT_BEFORE_HELP([
+ if test `expr $GTK_MINOR_VERSION \% 2` = 1 ; then
+- debug_default=yes
++ debug_default="yes"
+ else
+- debug_default=minimum
++ debug_default="minimum"
+ fi
+-AC_DIVERT_POP()dnl
+-
++])
+ dnl declare --enable-* args and collect ac_help strings
+-AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
++AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,
++ [enable_debug="$debug_default"])
+ AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]],
+- echo $enable_shm, enable_shm="yes")
+-AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
+- , enable_ansi=no)
++ [echo "$enable_shm"],[enable_shm="yes"])
++AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],,[enable_ansi="no"])
+ AC_ARG_WITH(glib, [ --with-glib=DIR Use uninstalled copy of glib])
+-AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
+- , enable_xim="yes")
+-AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],
+- , enable_xim_inst="maybe")
+-AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
++AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],,[enable_xim="yes"])
++AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],,
++ [enable_xim_inst="maybe"])
++AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,
++ [enable_rebuilds="yes"])
+ AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ])
+-
+ AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ])
+-AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,with_native_locale=no)
++AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,
++ [with_native_locale="no"])
++
+
+ if test "x$enable_debug" = "xyes"; then
+- test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
++ test "$cflags_set" = "set" || CFLAGS="$CFLAGS -g"
+ GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
+ else
+ if test "x$enable_debug" = "xno"; then
+@@ -113,16 +108,14 @@
+ fi
+
+ AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}")
+-
+ # Build time sanity check...
+ AM_SANITY_CHECK
+
+ # Checks for programs.
+ AC_PROG_CC
+ AC_ISC_POSIX
+-AM_PROG_CC_STDC
++AC_PROG_CC_STDC
+ AC_PROG_INSTALL
+-AC_PROG_MAKE_SET
+
+ changequote(,)dnl
+ if test "x$GCC" = "xyes"; then
+@@ -144,7 +137,6 @@
+ fi
+ fi
+ changequote([,])dnl
+-
+ # Honor aclocal flags
+ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+@@ -158,8 +150,7 @@
+ AC_CHECK_PROG(INDENT, indent, indent)
+
+ REBUILD=\#
+-if test "x$enable_rebuilds" = "xyes" && \
+- test -n "$PERL" && \
++if test "x$enable_rebuilds" = "xyes" && test -n "$PERL" && \
+ $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
+ test -n "$AWK" ; then
+ REBUILD=
+@@ -194,55 +185,58 @@
+
+ dnl Check for nl_langinfo and CODESET
+ AC_MSG_CHECKING([for nl_langinfo (CODESET)])
+-AC_TRY_COMPILE([#include <langinfo.h>],
++AC_TRY_COMPILE([#include <langinfo.h>
++ ],
+ [char *codeset = nl_langinfo (CODESET);],
+ AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
+- have_codeset=yes,
+- have_codeset=no)
++ have_codeset="yes",
++ have_codeset="no"
++)
+ AC_MSG_RESULT($have_codeset)
+
+ dnl The DU4 header files don't provide library prototypes unless
+ dnl -std1 is given to the native cc.
+ AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
+
+-gtk_save_LIBS=$LIBS
++gtk_save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_RUN([#include <math.h>
+ int main (void) { return (log(1) != log(1.)); }],
+ AC_MSG_RESULT(none needed),
+- gtk_save_CFLAGS=$CFLAGS
++ [gtk_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -std1"
+ AC_TRY_RUN([#include <math.h>
+ int main (void) { return (log(1) != log(1.)); }],
+ AC_MSG_RESULT(-std1),
+ AC_MSG_RESULT()
+- CFLAGS=$gtk_save_CFLAGS
+- AC_MSG_WARN(
+- [No ANSI prototypes found in library. (-std1 didn't work.)]),
+- true
+- ),
++ CFLAGS="$gtk_save_CFLAGS"
++ AC_MSG_WARN([No ANSI prototypes found in library. (-std1 didn't work.)]),
++ true)],
+ AC_MSG_RESULT(none needed)
+ )
+-LIBS=$gtk_save_LIBS
++LIBS="$gtk_save_LIBS"
+
+ dnl NeXTStep cc seems to need this
+ AC_MSG_CHECKING([for extra flags for POSIX compliance])
+-AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
++AC_TRY_COMPILE([#include <dirent.h>
++ ],[DIR *dir;],
+ AC_MSG_RESULT(none needed),
+- gtk_save_CFLAGS=$CFLAGS
++ [gtk_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -posix"
+- AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
++ AC_TRY_COMPILE([#include <dirent.h>
++ ],[DIR *dir;],
+ AC_MSG_RESULT(-posix),
+ AC_MSG_RESULT()
+- CFLAGS=$gtk_save_CFLAGS
+- AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
++ CFLAGS="$gtk_save_CFLAGS"
++ AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])]))
+
+-if test x$with_glib = xyes ; then
+- AC_MSG_ERROR([
+-*** Directory must be specified for --with-glib])
++
++
++if test "x$with_glib" = "xyes" ; then
++ AC_MSG_ERROR([*** Directory must be specified for --with-glib])
+ fi
+
+-if test x$with_glib = x ; then
++if test "x$with_glib" = "x" ; then
+ # Look for separately installed glib
+
+ AM_PATH_GLIB(1.2.8,,
+@@ -261,7 +255,7 @@
+ else
+ # Use uninstalled glib (assume they got the version right)
+
+- GLIB_CONFIG=$with_glib/glib-config
++ GLIB_CONFIG="$with_glib/glib-config"
+ if test -x $GLIB_CONFIG ; then
+ :
+ else
+@@ -277,9 +271,9 @@
+ glib_release=`$GLIB_CONFIG --version | sed 's%\\.[[0-9]]*$%%'`
+
+ # canonicalize relative paths
+- case $with_glib in
++ case "$with_glib" in
+ /*)
+- glib_dir=$with_glib
++ glib_dir="$with_glib"
+ ;;
+ *)
+ glib_dir="\$(top_builddir)/$with_glib"
+@@ -312,61 +306,56 @@
+ saved_ldflags="$LDFLAGS"
+
+ CFLAGS="$CFLAGS $X_CFLAGS"
+-LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
++LDFLAGS="$LDFLAGS $X_LDFLAGS"
+
+ if test "x$no_x" = "xyes"; then
+ AC_MSG_ERROR([
+ *** X libraries or include files not found. Check 'config.log' for
+ *** more details.])
+ fi
+-
+ # Checks for libraries.
+ # Check for the X11 library
+-AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS",
++AC_CHECK_LIB(X11,XOpenDisplay,
++ x_libs="-lX11 $X_EXTRA_LIBS",
+ AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]),
+- $X_EXTRA_LIBS)
+-
++ $X_EXTRA_LIBS
++)
+ if test "x$enable_shm" = "xyes"; then
+ # Check for the Xext library (needed for XShm extention)
+ AC_CHECK_LIB(Xext, XShmAttach,
+ x_libs="-lXext $x_libs",
+ # On AIX, it is in XextSam instead, but we still need -lXext
+- AC_CHECK_LIB(XextSam, XShmAttach,
++ [AC_CHECK_LIB(XextSam, XShmAttach,
+ x_libs="-lXextSam -lXext $x_libs",
+- no_xext_lib=yes, $x_libs),
+- $x_libs)
++ no_xext_lib="yes",
++ $x_libs
++ )],
++ $x_libs
++ )
+ fi
+-
+ # Check for shaped window extension
+-
+ AC_CHECK_LIB(Xext, XShapeCombineMask,
+- if test -z "`echo $x_libs | grep "\-lXext" 2> /dev/null`"; then
++ if test -z "`echo $x_libs | grep \-lXext 2> /dev/null`"; then
+ x_libs="-lXext $x_libs"
+ fi
+- AC_DEFINE(HAVE_SHAPE_EXT),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_SHAPE_EXT),,
++ $x_libs
++)
+ # Check for XConvertCase (X11R6 specific)
+-
+ AC_CHECK_LIB(X11, XConvertCase,
+- AC_DEFINE(HAVE_XCONVERTCASE),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_XCONVERTCASE),,
++ $x_libs
++)
+ # Check for XIM support.
+-
+-AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,
+- : ,
++AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,,
+ enable_xim_inst="no",
+- $x_libs)
+-
++ $x_libs
++)
+ # On Solaris, calling XRegisterIMInstantiateCallback seems to
+ # cause an immediate segfault, so we disable it, unless
+ # the user specifically forces it to be on.
+-
+-if test x$enable_xim_inst = xmaybe ; then
+- case host in
++if test "x$enable_xim_inst" = "xmaybe" ; then
++ case "$host" in
+ *-*-solaris*)
+ enable_xim_inst="no"
+ ;;
+@@ -384,16 +373,15 @@
+ fi
+
+ x_cflags="$X_CFLAGS"
+-x_ldflags="$X_LDFLAGS $X_LIBS"
++x_ldflags="$X_LDFLAGS"
+
+ # set up things for XInput
+-
+ if test "x$with_xinput" = "xgxi"; then
+ AC_MSG_WARN([
+ *** The generic XInput support has not been tested for several years
+ *** and is not known to work with any currently available X servers])
+ AC_DEFINE(XINPUT_GXI)
+- xinput_progs=gxid
++ xinput_progs="gxid"
+ x_libs="-lXi $x_libs"
+ elif test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then
+ AC_DEFINE(XINPUT_XFREE)
+@@ -413,77 +401,72 @@
+
+ if test "x$enable_shm" = "xyes"; then
+ # Check for shared memory
+- AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
+- AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
++ AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc="yes")
++ AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm="yes")
+
+ # Check for the X shared memory extension header file
+ AC_MSG_CHECKING(X11/extensions/XShm.h)
+ if test "x$no_xext_lib" = "xyes"; then
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ else
+ if test -f "$x_includes/X11/extensions/XShm.h"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_XSHM_H)
+ else
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ fi
+ fi
+ fi
+-
+ # Check if X_LOCALE definition is necessary
+-
+ AC_MSG_CHECKING(need -DX_LOCALE)
+
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <locale.h>
+-
+-int
+-main ()
++ int main ()
+ {
+ return setlocale (LC_ALL, "${with_locale}") == NULL;
+ }],
+-need_x_locale=no,
+-need_x_locale=yes,
+-need_x_locale=no)
++ need_x_locale="no",
++ need_x_locale="yes",
++ need_x_locale="no"
++)
+ AC_MSG_RESULT($need_x_locale)
+
+-use_native_locale=no
+-if test $need_x_locale = yes; then
++use_native_locale="no"
++if test "$need_x_locale" = "yes"; then
+ GTK_LOCALE_FLAGS="-DX_LOCALE"
+ else
+- if test x$with_native_locale = xyes ; then
++ if test "x$with_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(functioning locale support)
+
+- AC_TRY_COMPILE([#include <stdlib.h>],[
+- char c;
++ AC_TRY_COMPILE([#include <stdlib.h>],
++ [char c;
+ if (MB_CUR_MAX == 1) {
+ wctomb(&c, 42);
+- }
+- ],use_native_locale=yes,)
+-
++ }],
++ use_native_locale="yes"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+ fi
+
+-if test x$use_native_locale = xyes ; then
++if test "x$use_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(if sizeof(wchar_t) == 4)
+
+- AC_TRY_RUN([
+- #include <stdlib.h>
+-
+- int
+- main ()
++ AC_TRY_RUN([#include <stdlib.h>
++ int main ()
+ {
+ return (sizeof(wchar_t) == 4) ? 0 : 1;
+- }],
+- ,use_native_locale=no,:)
++ }],,
++ use_native_locale="no"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+
+-if test $use_native_locale = yes ; then
++if test "$use_native_locale" = "yes" ; then
+ AC_DEFINE(USE_NATIVE_LOCALE)
+ fi
+
+@@ -502,13 +485,17 @@
+
+ # Check if <sys/select.h> needs to be included for fd_set
+ AC_MSG_CHECKING([for fd_set])
+-AC_TRY_COMPILE([#include <sys/types.h>],
+- [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_COMPILE([#include <sys/types.h>
++ ],
++ [fd_set readMask, writeMask;],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_MSG_RESULT([yes, found in sys/types.h])
+ else
+- AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
+- if test $gtk_ok = yes; then
++ AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok="yes")
++ if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_SYS_SELECT_H)
+ AC_MSG_RESULT([yes, found in sys/select.h])
+ else
+@@ -520,30 +507,35 @@
+ # Duplicate `widechar' tests from `glib'.
+ # Check for wchar.h
+ AC_MSG_CHECKING(for wchar.h)
+-AC_TRY_CPP([#include <wchar.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wchar.h>
++ ],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCHAR_H,1,[Define if wchar.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # Check for wctype.h (for iswalnum)
+ AC_MSG_CHECKING(for wctype.h)
+-AC_TRY_CPP([#include <wctype.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wctype.h>], gtk_ok="yes", gtk_ok="no")
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCTYPE_H,1,[Define if wctype.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # in Solaris 2.5, `iswalnum' is in -lw
+ GDK_WLIBS=
+-AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS=-lw)])
++AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS="-lw")])
+
+ # The following is necessary for Linux libc-5.4.38
+ oLIBS="$LIBS"
+ LIBS="$LIBS $GDK_WLIBS"
+ AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
+-AC_TRY_LINK([#include <stdlib.h>],[
+-#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
++AC_TRY_LINK([#include <stdlib.h>
++ ],
++ [#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
+ # ifdef HAVE_WCTYPE_H
+ # include <wctype.h>
+ # else
+@@ -554,11 +546,13 @@
+ #else
+ # define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
+ #endif
+-iswalnum((wchar_t) 0);
+-], gtk_ok=yes, gtk_ok=no)
++ iswalnum((wchar_t) 0);],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
+ LIBS="$oLIBS"
+
+-if test $gtk_ok = no; then
++if test "$gtk_ok" = "no"; then
+ AC_DEFINE(HAVE_BROKEN_WCTYPE,1,[Define if the wctype function is broken])
+ GDK_WLIBS=
+ fi
+@@ -580,5 +574,5 @@
+ gtk/Makefile
+ gtk/gtkfeatures.h
+ gdk.pc
+-gtk+.pc
+-], [chmod +x gtk-config])
++gtk+.pc],
++[chmod +x gtk-config])
+--- gtk+-1.2.10/gdk/Makefile.am.orig 2006-05-19 02:41:18.000000000 -0700
++++ gtk+-1.2.10/gdk/Makefile.am 2006-05-19 02:11:54.000000000 -0700
+@@ -21,12 +21,11 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+
++libgdk_la_LIBADD = @GLIB_DEPLIBS@ @x_libs@ -lm
++
+ #
+ # setup source file variables
+ #
+@@ -104,14 +103,13 @@
+ EXTRA_PROGRAMS = gxid
+ bin_PROGRAMS = @xinput_progs@
+ LDADDS = @STRIP_BEGIN@ \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+ -lm \
+ @STRIP_END@
+ gxid_SOURCES = gxid.c
+ gxid_LDADD = $(LDADDS)
+-
++gxid_LDFLAGS = @x_ldflags@
+
+ .PHONY: files
+
+--- gtk+-1.2.10/gtk/Makefile.am.orig 2006-05-25 07:40:45.000000000 -0700
++++ gtk+-1.2.10/gtk/Makefile.am 2006-05-25 07:43:20.000000000 -0700
+@@ -27,13 +27,15 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+-# $(top_builddir)/gdk/libgdk.la
+-
++libgtk_la_LIBADD = @STRIP_BEGIN@ \
++ $(top_builddir)/gdk/libgdk.la \
++ @x_libs@ \
++ @GDK_WLIBS@ \
++ @GLIB_LIBS@ \
++ -lm \
++ @STRIP_END@
+
+ #
+ # setup source file variables
+@@ -374,14 +376,17 @@
+
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja \
++# removed references to non-existent gtkrc files - tsh
++gtkconf_DATA = \
++ gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja \
+ gtkrc.ko gtkrc.ru gtkrc.th gtkrc.uk \
+- gtkrc.utf-8 gtkrc.iso-8859-2 \
+- gtkrc.iso-8859-3 gtkrc.iso-8859-5 gtkrc.iso-8859-7 \
+- gtkrc.iso-8859-9 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+- gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+- gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps \
+- gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++ gtkrc.iso-8859-2 gtkrc.iso-8859-5 \
++ gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
++ gtkrc.iso-8859-15 gtkrc.zh_TW.big5 \
++ gtkrc.zh_CN gtkrc.cp1251 gtkrc.cp1255 \
++ gtkrc.ka_GE.georgianacademy \
++ gtkrc.ka_GE.georgianps \
++ gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii
+
+ # We create a dummy theme for the default GTK+ theme
+ install-data-local:
+@@ -428,7 +433,6 @@
+ LDADDS = @STRIP_BEGIN@ \
+ libgtk.la \
+ $(top_builddir)/gdk/libgdk.la \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+@@ -441,12 +445,20 @@
+ testdnd_DEPENDENCIES = $(DEPS)
+ simple_DEPENDENCIES = $(DEPS)
+ #testthreads_DEPENDENCIES = $(DEPS)
++
+ testgtk_LDADD = $(LDADDS)
++testgtk_LDFLAGS=@x_ldflags@
+ testinput_LDADD = $(LDADDS)
++testinput_LDFLAGS = @x_ldflags@
+ testselection_LDADD = $(LDADDS)
++testselection_LDFLAGS = @x_ldflags@
+ testrgb_LDADD = $(LDADDS)
++testrgb_LDFLAGS = @x_ldflags@
+ testdnd_LDADD = $(LDADDS)
++testdnd_LDFLAGS = @x_ldflags@
+ simple_LDADD = $(LDADDS)
++simple_LDFLAGS = @x_ldflags@
++
+ #testthreads_LDADD = $(LDADDS)
+
+ .PHONY: files test test-debug
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-automake.diff b/x11-libs/gtk+/files/gtk+-1.2.10-automake.diff
new file mode 100644
index 0000000..e089f56
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-automake.diff
@@ -0,0 +1,293 @@
+diff -dPNur gtk+-1.2.10/docs/Makefile.am gtk+-1.2.10-ds/docs/Makefile.am
+--- gtk+-1.2.10/docs/Makefile.am 2014-10-01 19:39:24.369668923 +0200
++++ gtk+-1.2.10-ds/docs/Makefile.am 2014-10-01 19:42:46.667975511 +0200
+@@ -166,7 +166,7 @@
+ echo $$p; \
+ done
+
+-EXTRA_DIST += \
++EXTRA_DIST = \
+ Changes-1.2.txt \
+ debugging.txt \
+ developers.txt \
+diff -dPNur gtk+-1.2.10/gdk/Makefile.am gtk+-1.2.10-ds/gdk/Makefile.am
+--- gtk+-1.2.10/gdk/Makefile.am 2014-10-01 19:39:24.364668816 +0200
++++ gtk+-1.2.10-ds/gdk/Makefile.am 2014-10-01 19:44:27.190115302 +0200
+@@ -1,14 +1,13 @@
+ ## Makefile.am for gtk+/gdk
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DG_LOG_DOMAIN=\"Gdk\" \
+ -I$(top_srcdir) \
+ @GTK_DEBUG_FLAGS@ \
+ @GTK_XIM_FLAGS@ \
+ @GTK_LOCALE_FLAGS@ \
+ @GLIB_CFLAGS@ \
+- @x_cflags@ \
+-@STRIP_END@
++ @x_cflags@
+
+ #
+ # libraries to compile and install
+@@ -17,12 +16,11 @@
+
+ # libtool stuff: set version and export symbols for resolving
+ libgdkincludedir = $(includedir)/gtk-1.2/gdk
+-libgdk_la_LDFLAGS = @STRIP_BEGIN@ \
++libgdk_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @x_ldflags@ \
+-@STRIP_END@
++ @x_ldflags@
+
+ libgdk_la_LIBADD = @GLIB_DEPLIBS@ @x_libs@ -lm
+
+@@ -30,7 +28,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 \
+@@ -38,9 +36,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 \
+@@ -71,17 +69,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 +=
++MAINTAINERCLEANFILES =
++EXTRA_HEADERS =
++EXTRA_DIST =
+ EXTRA_DIST +=
+
+ #
+@@ -102,11 +99,10 @@
+ #
+ EXTRA_PROGRAMS = gxid
+ bin_PROGRAMS = @xinput_progs@
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+- -lm \
+-@STRIP_END@
++ -lm
+ gxid_SOURCES = gxid.c
+ gxid_LDADD = $(LDADDS)
+ gxid_LDFLAGS = @x_ldflags@
+diff -dPNur gtk+-1.2.10/gtk/Makefile.am gtk+-1.2.10-ds/gtk/Makefile.am
+--- gtk+-1.2.10/gtk/Makefile.am 2014-10-01 19:39:24.394669455 +0200
++++ gtk+-1.2.10-ds/gtk/Makefile.am 2014-10-01 19:45:06.767957759 +0200
+@@ -1,6 +1,6 @@
+ ## Makefile.am for gtk+/gtk
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DG_LOG_DOMAIN=\"Gtk\" \
+ -DGTK_DISABLE_COMPAT_H \
+ -DGTK_LIBDIR=\"$(libdir)\" \
+@@ -12,8 +12,7 @@
+ @GTK_XIM_FLAGS@ \
+ @GTK_LOCALE_FLAGS@ \
+ @GLIB_CFLAGS@ \
+- @x_cflags@ \
+-@STRIP_END@
++ @x_cflags@
+
+
+ #
+@@ -23,25 +22,23 @@
+
+ # libtool stuff: set version and export symbols for resolving
+ libgtkincludedir = $(includedir)/gtk-1.2/gtk
+-libgtk_la_LDFLAGS = @STRIP_BEGIN@ \
++libgtk_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @x_ldflags@ \
+-@STRIP_END@
+-libgtk_la_LIBADD = @STRIP_BEGIN@ \
++ @x_ldflags@
++libgtk_la_LIBADD = \
+ $(top_builddir)/gdk/libgdk.la \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+- -lm \
+- @STRIP_END@
++ -lm
+
+ #
+ # 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 \
+@@ -150,13 +147,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 \
+@@ -264,8 +261,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
+@@ -273,7 +270,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 \
+@@ -281,17 +278,17 @@
+ 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 \
+@@ -300,22 +297,21 @@
+ 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_headers = \
+ ../gdk/gdktypes.h \
+- ../gdk/gdkrgb.h \
+-@STRIP_END@
++ ../gdk/gdkrgb.h
+
+ #
+ # setup GTK+ sources and their dependancies
+ #
+ 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)
+
+ #
+@@ -323,7 +319,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
+@@ -430,14 +426,14 @@
+ #
+ noinst_PROGRAMS = testgtk testinput testselection testrgb testdnd simple # testthreads
+ DEPS = libgtk.la $(top_builddir)/gdk/libgdk.la
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ libgtk.la \
+ $(top_builddir)/gdk/libgdk.la \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+- -lm \
+-@STRIP_END@
++ -lm
++
+ testgtk_DEPENDENCIES = $(DEPS)
+ testinput_DEPENDENCIES = $(DEPS)
+ testselection_DEPENDENCIES = $(DEPS)
+@@ -478,7 +474,7 @@
+ cd $$builddir; cd $(srcdir); \
+ $(SHELL) $$top_builddir/libtool --mode=execute gdb $$builddir/testgtk
+
+-EXTRA_DIST += @STRIP_BEGIN@ \
++EXTRA_DIST += \
+ testgtk.1 \
+ testgtkrc \
+ testgtkrc2 \
+@@ -499,5 +495,4 @@
+ check-y.xpm \
+ check-n.xpm \
+ test.xpm \
+- $(gtkconf_DATA) \
+-@STRIP_END@
++ $(gtkconf_DATA)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch
new file mode 100644
index 0000000..c165f7a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch
@@ -0,0 +1,66 @@
+--- gtk+-1.2.10/gtk/gtkoptionmenu.c.border Mon Feb 12 21:36:37 2001
++++ gtk+-1.2.10/gtk/gtkoptionmenu.c Wed Feb 13 18:26:17 2002
+@@ -342,30 +342,26 @@
+ GtkWidget *child;
+ GtkAllocation child_allocation;
+ GtkOptionMenuProps props;
++ gint border_width;
+
+- g_return_if_fail (widget != NULL);
+- g_return_if_fail (GTK_IS_OPTION_MENU (widget));
+- g_return_if_fail (allocation != NULL);
+-
+ gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
++ border_width = GTK_CONTAINER (widget)->border_width;
+
+ widget->allocation = *allocation;
+ if (GTK_WIDGET_REALIZED (widget))
+ gdk_window_move_resize (widget->window,
+- allocation->x, allocation->y,
+- allocation->width, allocation->height);
++ allocation->x + border_width, allocation->y + border_width,
++ allocation->width - 2 * border_width, allocation->height - 2 * border_width);
+
+ child = GTK_BIN (widget)->child;
+ if (child && GTK_WIDGET_VISIBLE (child))
+ {
+- child_allocation.x = (GTK_CONTAINER (widget)->border_width +
+- GTK_WIDGET (widget)->style->klass->xthickness) + 1;
+- child_allocation.y = (GTK_CONTAINER (widget)->border_width +
+- GTK_WIDGET (widget)->style->klass->ythickness) + 1;
+- child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2 -
++ child_allocation.x = GTK_WIDGET (widget)->style->klass->xthickness + 1;
++ child_allocation.y = GTK_WIDGET (widget)->style->klass->ythickness + 1;
++ child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2 - border_width * 2 -
+ props.indicator_width - props.indicator_left_spacing - props.indicator_right_spacing -
+ CHILD_LEFT_SPACING - CHILD_RIGHT_SPACING - 2);
+- child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2 -
++ child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2 - border_width * 2 -
+ CHILD_TOP_SPACING - CHILD_BOTTOM_SPACING - 2);
+ child_allocation.x += CHILD_LEFT_SPACING;
+ child_allocation.y += CHILD_TOP_SPACING;
+@@ -380,6 +376,7 @@
+ {
+ GdkRectangle button_area;
+ GtkOptionMenuProps props;
++ gint border_width;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_OPTION_MENU (widget));
+@@ -388,11 +385,12 @@
+ if (GTK_WIDGET_DRAWABLE (widget))
+ {
+ gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
++ border_width = GTK_CONTAINER (widget)->border_width;
+
+- button_area.x = GTK_CONTAINER (widget)->border_width + 1;
+- button_area.y = GTK_CONTAINER (widget)->border_width + 1;
+- button_area.width = widget->allocation.width - button_area.x * 2;
+- button_area.height = widget->allocation.height - button_area.y * 2;
++ button_area.x = 1;
++ button_area.y = 1;
++ button_area.width = widget->allocation.width - button_area.x * 2 - border_width * 2;
++ button_area.height = widget->allocation.height - button_area.y * 2 - border_width * 2;
+
+ /* This is evil, and should be elimated here and in the button
+ * code. The point is to clear the focus, and make it
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch
new file mode 100644
index 0000000..f3b8071
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch
@@ -0,0 +1,24 @@
+--- gtk+-1.2.10/gdk/gdkdnd.c.newwindow Tue Mar 14 00:41:53 2000
++++ gtk+-1.2.10/gdk/gdkdnd.c Wed Feb 13 18:40:04 2002
+@@ -275,12 +275,16 @@
+ GUINT_TO_POINTER (xce->above));
+ if (above_node && node->prev != above_node)
+ {
++ /* Put the window above (before in the list) above_node
++ */
+ cache->children = g_list_remove_link (cache->children, node);
+- node->next = above_node->next;
+- if (node->next)
+- node->next->prev = node;
+- node->prev = above_node;
+- above_node->next = node;
++ node->prev = above_node->prev;
++ if (node->prev)
++ node->prev->next = node;
++ else
++ cache->children = node;
++ node->next = above_node;
++ above_node->prev = node;
+ }
+ }
+ }
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch
new file mode 100644
index 0000000..7fa625a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch
@@ -0,0 +1,29 @@
+--- gtk+-1.2.10/gdk/gdkevents.c.expose Sun Dec 3 17:02:49 2000
++++ gtk+-1.2.10/gdk/gdkevents.c Wed Feb 13 17:53:38 2002
+@@ -383,6 +383,7 @@
+ struct _GdkExposeInfo
+ {
+ Window window;
++ Window toplevel_window;
+ gboolean seen_nonmatching;
+ };
+
+@@ -401,7 +402,9 @@
+ * expose events.
+ */
+ if (xevent->xany.type != Expose &&
+- xevent->xany.type != GravityNotify)
++ xevent->xany.type != GravityNotify &&
++ (xevent->xany.type != ConfigureNotify ||
++ xevent->xany.window == info->toplevel_window))
+ {
+ info->seen_nonmatching = TRUE;
+ }
+@@ -429,6 +432,7 @@
+ GdkEvent event;
+
+ info.window = xevent->xany.window;
++ info.toplevel_window = GDK_WINDOW_XWINDOW (gdk_window_get_toplevel (window));
+ info.seen_nonmatching = FALSE;
+
+ rect1.x = xevent->xexpose.x;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch
new file mode 100644
index 0000000..96c3662
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch
@@ -0,0 +1,17 @@
+--- gtk-1.2.10/gtk/gtkwindow.c.orig Sat Mar 10 00:39:16 2001
++++ gtk-1.2.10/gtk/gtkwindow.c Thu Apr 26 00:30:52 2001
+@@ -985,7 +985,13 @@
+ break;
+ case EnterNotify:
+ case LeaveNotify:
+- if (xev->xcrossing.detail != NotifyInferior &&
++ /* We only track the actual destination of keyboard events for real
++ * toplevels, not for embedded toplevels such as GtkPlug. The reason for
++ * this is that GtkPlug redirects events so the widget may effectively not
++ * have the focus even if it actually has the focus.
++ */
++ if (gdk_window_get_parent (GTK_WIDGET (window)->window) == GDK_ROOT_PARENT () &&
++ xev->xcrossing.detail != NotifyInferior &&
+ xev->xcrossing.focus && !window->window_has_focus)
+ {
+ window->window_has_pointer_focus = (xev->xany.type == EnterNotify) ? TRUE : FALSE;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch
new file mode 100644
index 0000000..5fa0e0b
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gtk/gtklabel.c.labelvariable Mon Apr 2 05:12:38 2001
++++ gtk+-1.2.10/gtk/gtklabel.c Wed Feb 13 17:57:15 2002
+@@ -1004,7 +1004,7 @@
+ *r = 0;
+
+ result_str = gdk_wcstombs (string_wc);
+- if (string)
++ if (result_str)
+ {
+ gtk_label_set_text_internal (label, result_str, string_wc);
+ gtk_label_set_pattern (label, pattern);
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch
new file mode 100644
index 0000000..a9c7bbf
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch
@@ -0,0 +1,28 @@
+--- gtk-1.2.10/gdkwindow.c Tue Jan 22 16:42:19 2002
++++ gtk/gdk/gdkwindow.c Sat Oct 13 17:10:16 2001
+@@ -28,6 +28,9 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xatom.h>
+ #include <netinet/in.h>
++#include <sys/types.h>
++#include <unistd.h>
++
+ #include "gdk.h"
+ #include "config.h"
+ #include "gdkinput.h"
+@@ -488,6 +491,15 @@
+ XFree (class_hint);
+ }
+
++ {
++ gulong pid = getpid ();
++
++ XChangeProperty (private->xdisplay, private->xwindow,
++ gdk_atom_intern ("_NET_WM_PID", FALSE),
++ XA_CARDINAL, 32,
++ PropModeReplace,
++ (guchar *)&pid, 1);
++ }
+
+ return window;
+ }
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch
new file mode 100644
index 0000000..2340efd
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch
@@ -0,0 +1,133 @@
+--- gtk+-1.2.10/gtk/gtkrc.c.encoding Thu Mar 15 13:41:40 2001
++++ gtk+-1.2.10/gtk/gtkrc.c Thu Jul 5 12:48:48 2001
+@@ -33,6 +33,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <langinfo.h>
+
+ #include "gtkrc.h"
+ #include "gtkbindings.h"
+@@ -440,7 +441,7 @@
+ void
+ gtk_rc_init (void)
+ {
+- static gchar *locale_suffixes[3];
++ static gchar *locale_suffixes[8];
+ static gint n_locale_suffixes = 0;
+
+ gint i, j;
+@@ -449,9 +450,7 @@
+
+ if (!initted)
+ {
+- gint length;
+-
+- char *locale = setlocale (LC_CTYPE, NULL);
++ char *locale = g_strdup (setlocale (LC_CTYPE, NULL));
+ char *p;
+
+ initted = TRUE;
+@@ -470,39 +469,84 @@
+ * We normalize the charset into a standard form,
+ * which has all '-' and '_' characters removed,
+ * and is lowercase.
++ *
++ * the search is done in that order:
++ * gtkrc.ll_cc.lowercasecodeset
++ * gtkrc.ll_cc.normalizedcodeset
++ * gtkrc.ll.lowercasecodeset
++ * gtkrc.ll.normalizedcodeset
++ * gtkrc.lowercasecodeset
++ * gtkrc.normalizedcodeset
++ * gtkrc.ll_cc
++ * gtkrc.ll
++ *
+ */
+- gchar *normalized_locale;
++ char *codeset = NULL;
++ char *normalized_codeset = NULL;
++ char *cc = NULL;
++ char *ll;
+
+ p = strchr (locale, '@');
+- length = p ? (p -locale) : strlen (locale);
++ if (p)
++ *p = '\0';
+
++ codeset = nl_langinfo (CODESET);
++
+ p = strchr (locale, '.');
++ if (!codeset && p)
++ codeset = p + 1;
+ if (p)
++ *p = '\0';
++
++ if (codeset)
+ {
+- gchar *tmp1 = g_strndup (locale, p - locale + 1);
+- gchar *tmp2 = _gtk_normalize_codeset (p + 1, length - (p - locale + 1));
++ codeset = g_strdup (codeset);
+
+- normalized_locale = g_strconcat (tmp1, tmp2, NULL);
+- g_free (tmp1);
+- g_free (tmp2);
+-
+- locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_locale);
+- length = p - locale;
++ p = codeset;
++ while (*p)
++ {
++ /* tolower not used, because some locales are not
++ * compatible with C locale in lowercasing ascii
++ */
++ if (*p >= 'A' && *p <= 'Z')
++ *p = (*p) - 'A' + 'a';
++ p++;
++ }
++
++ normalized_codeset = _gtk_normalize_codeset(codeset, strlen (codeset));
++ if (strcmp (normalized_codeset, codeset) == 0)
++ normalized_codeset = NULL;
+ }
+- else
+- normalized_locale = g_strndup (locale, length);
+
+- p = strchr (normalized_locale, '_');
++ p = strchr (locale, '_');
+ if (p)
+ {
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+- length = p - normalized_locale;
++ cc = p + 1;
++ *p = '\0';
+ }
+-
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+
+- g_free (normalized_locale);
++ ll = locale;
++
++ if (cc && codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", codeset, NULL);
++ if (cc && normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", codeset, NULL);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (codeset);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_codeset);
++ if (cc)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, NULL);
++ locale_suffixes[n_locale_suffixes++] = g_strdup (ll);
++
++ g_free (codeset);
+ }
++
++ g_free (locale);
+ }
+
+ i = 0;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-m4.patch b/x11-libs/gtk+/files/gtk+-1.2.10-m4.patch
new file mode 100644
index 0000000..37fb7c2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-m4.patch
@@ -0,0 +1,9 @@
+Fix aclocal warnings:
+/usr/share/aclocal/gtk.m4:7: warning: underquoted definition of AM_PATH_GTK
+--- gtk+-1.2.10/gtk.m4
++++ gtk+-1.2.10/gtk.m4
+@@ -6,3 +6,3 @@
+ dnl
+-AC_DEFUN(AM_PATH_GTK,
++AC_DEFUN([AM_PATH_GTK],
+ [dnl
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch
new file mode 100644
index 0000000..de4a3cf
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gdk/gdk.c.argb 2006-07-25 18:30:47.000000000 +0200
++++ gtk+-1.2.10/gdk/gdk.c 2006-07-25 18:32:24.000000000 +0200
+@@ -408,6 +408,8 @@
+ }
+
+ GDK_NOTE (MISC, g_message ("progname: \"%s\"", g_get_prgname ()));
++
++ putenv("XLIB_SKIP_ARGB_VISUALS=1");
+
+ gdk_display = XOpenDisplay (gdk_display_name);
+ if (!gdk_display)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch
new file mode 100644
index 0000000..14ebbb2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch
@@ -0,0 +1,19 @@
+--- gtk+-1.2.10/gtk/gtkstyle.c.orig 2003-01-22 15:41:57.000000000 +0100
++++ gtk+-1.2.10/gtk/gtkstyle.c 2003-01-22 16:27:31.000000000 +0100
+@@ -326,11 +326,11 @@
+ static GdkColor gtk_default_selected_fg = { 0, 0xffff, 0xffff, 0xffff };
+ static GdkColor gtk_default_insensitive_fg = { 0, 0x7530, 0x7530, 0x7530 };
+
+-static GdkColor gtk_default_normal_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };
+-static GdkColor gtk_default_active_bg = { 0, 0xc350, 0xc350, 0xc350 };
+-static GdkColor gtk_default_prelight_bg = { 0, 0xea60, 0xea60, 0xea60 };
+-static GdkColor gtk_default_selected_bg = { 0, 0, 0, 0x9c40 };
+-static GdkColor gtk_default_insensitive_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };
++static GdkColor gtk_default_normal_bg = { 0, 0xdcdc, 0xdada, 0xd5d5 };
++static GdkColor gtk_default_active_bg = { 0, 0xbaba, 0xb5b5, 0xabab };
++static GdkColor gtk_default_prelight_bg = { 0, 0xeeee, 0xebeb, 0xe7e7 };
++static GdkColor gtk_default_selected_bg = { 0, 0x4b4b, 0x6969, 0x8383 };
++static GdkColor gtk_default_insensitive_bg = { 0, 0xdcdc, 0xdada, 0xd5d5 };
+
+ GtkStyle*
+ gtk_style_copy (GtkStyle *style)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch
new file mode 100644
index 0000000..c2d895c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch
@@ -0,0 +1,46 @@
+--- gtk+-1.2.10/gtk/gtkfilesel.c.fileselectorfallback 2002-09-11 11:25:27.000000000 +0200
++++ gtk+-1.2.10/gtk/gtkfilesel.c 2002-09-11 13:05:39.000000000 +0200
+@@ -1578,6 +1578,7 @@
+ {
+ gchar getcwd_buf[2*MAXPATHLEN];
+ CompletionState *new_state;
++ gint fallback = 0;
+
+ new_state = g_new (CompletionState, 1);
+
+@@ -1594,6 +1595,7 @@
+ * a root directory, right? Right? (Probably not portable to non-Unix)
+ */
+ strcpy (getcwd_buf, "/");
++ fallback = 1;
+ }
+
+ tryagain:
+@@ -1616,7 +1618,26 @@
+ if (!new_state->reference_dir)
+ {
+ /* Directories changing from underneath us, grumble */
+- strcpy (getcwd_buf, "/");
++ if (fallback == 0) {
++ strcpy (getcwd_buf, "/");
++ fallback = 1;
++ }
++ else {
++ if (fallback == 1) { /* last try with user home dir */
++ if (g_get_home_dir ()) {
++ strcpy (getcwd_buf, g_get_home_dir ());
++ }
++ fallback = 2;
++ }
++ else {
++ g_error ("no readable fallback directory found for GtkFileSelector, exiting");
++ }
++ }
++ /* don't leak updated_text and the_completion.text */
++ if (new_state->the_completion.text)
++ g_free (new_state->the_completion.text);
++ if (new_state->updated_text)
++ g_free (new_state->updated_text);
+ goto tryagain;
+ }
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch
new file mode 100644
index 0000000..c07447b
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch
@@ -0,0 +1,62 @@
+--- gtk+-1.2.10/gtk/gtklist.c.gtklist Wed Jan 31 22:19:29 2001
++++ gtk+-1.2.10/gtk/gtklist.c Wed Feb 13 18:19:31 2002
+@@ -1299,7 +1299,7 @@
+ if (start_list->prev)
+ new_focus_child = start_list->prev->data;
+ else if (list->children)
+- new_focus_child = list->children->prev->data;
++ new_focus_child = list->children->data;
+
+ if (GTK_WIDGET_HAS_FOCUS (container->focus_child))
+ grab_focus = TRUE;
+@@ -1312,16 +1312,20 @@
+ widget = tmp_list->data;
+ tmp_list = tmp_list->next;
+
++ gtk_widget_ref (widget);
++
+ if (widget->state == GTK_STATE_SELECTED)
+ gtk_list_unselect_child (list, widget);
+
++ gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
++ gtk_widget_unparent (widget);
++
+ if (widget == list->undo_focus_child)
+ list->undo_focus_child = NULL;
+ if (widget == list->last_focus_child)
+ list->last_focus_child = NULL;
+
+- gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
+- gtk_widget_unparent (widget);
++ gtk_widget_unref (widget);
+ }
+
+ g_list_free (start_list);
+@@ -1431,6 +1435,7 @@
+ widget = tmp_list->data;
+ tmp_list = tmp_list->next;
+
++ gtk_widget_ref (widget);
+ if (no_unref)
+ gtk_widget_ref (widget);
+
+@@ -1449,14 +1454,16 @@
+ }
+ }
+
++ gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
++ list->children = g_list_remove (list->children, widget);
++ gtk_widget_unparent (widget);
++
+ if (widget == list->undo_focus_child)
+ list->undo_focus_child = NULL;
+ if (widget == list->last_focus_child)
+ list->last_focus_child = NULL;
+
+- gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
+- list->children = g_list_remove (list->children, widget);
+- gtk_widget_unparent (widget);
++ gtk_widget_unref (widget);
+ }
+
+ if (new_focus_child && new_focus_child != old_focus_child)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch
new file mode 100644
index 0000000..d7018b7
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch
@@ -0,0 +1,371 @@
+--- gtk+-1.2.10/gtk/gtkrc.hy_AM.utf8.rclocale Thu Feb 14 17:16:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.hy_AM.utf8 Thu Feb 14 17:19:33 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-armnet helvetica-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-artsounk-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.ja_JP.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.ja_JP.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-sazanami mincho-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-kochi mincho-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.tg_TJ.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.tg_TJ.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,9 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-bookman-light-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-urw bookman l-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.tr.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.tr Wed Feb 13 16:52:34 2002
+@@ -1,8 +0,0 @@
+-style "gtk-default-tr" {
+- fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-tr"
+-
+--- gtk+-1.2.10/gtk/gtkrc.zh_TW.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.zh_TW.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-AR PL Mingti2L Big5-medium-r-normal--16-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.utf-8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.utf-8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-nimbus sans l-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.ko_KR.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.ko_KR.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-baekmuk gulim-medium-r-normal--16-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.zh_CN.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.zh_CN Wed Feb 13 16:52:34 2002
+@@ -7,7 +7,7 @@
+ #
+
+ style "gtk-default-zh-cn" {
+- fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
+ -*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0,*-r-*"
+ }
+ class "GtkWidget" style "gtk-default-zh-cn"
+--- gtk+-1.2.10/gtk/gtkrc.az.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.az Wed Feb 13 16:52:34 2002
+@@ -2,7 +2,9 @@
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9e,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9e,*-r-*"
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9e,\
++ -*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -urw-nimbus sans l-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
+ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso10646-1,\
+ -*-arial-medium-r-normal--12-*-*-*-*-*-iso10646-1,*-r-*"
+ }
+--- gtk+-1.2.10/gtk/gtkrc.az_AZ.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.az_AZ.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -urw-nimbus sans l-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.el_GR.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.el_GR.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-kerkis-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.iso-8859-9.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso-8859-9 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default-tr" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9,*-r-*"
++}
++class "GtkWidget" style "gtk-default-tr"
++
+--- gtk+-1.2.10/gtk/gtkrc.eo.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.eo Wed Feb 13 16:52:34 2002
+@@ -1,8 +0,0 @@
+-style "gtk-default-eo" {
+- fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-3,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-3,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-eo"
+-
+--- gtk+-1.2.10/gtk/gtkrc.ru.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.ru Wed Feb 13 16:52:34 2002
+@@ -1,8 +1,9 @@
+ style "gtk-default-ru" {
+- fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -cronyx-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,*-r-*"
++ fontset = "-*-arial-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
++ -adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-*,\
++ -*-arial-medium-r-normal--14-*-*-*-*-*-koi8-r,\
++ -cronyx-helvetica-medium-r-normal--14-*-*-*-*-*-koi8-r,\
++ *-r-*"
+ }
+ class "GtkWidget" style "gtk-default-ru"
+
+--- gtk+-1.2.10/gtk/gtkrc.th_TH.utf8.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.th_TH.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,15 @@
++# $(gtkconfigdir)/gtkrc.th
++#
++# This file defines the fontsets for Thai language (th) using
++# the UTF-8 charset encoding.
++#
++# 2004, Pablo Saratxaga <pablo@mandrakesoft.com>
++#
++
++style "gtk-default-th" {
++ fontset = "-*-norasi-medium-r-normal--18-*-*-*-*-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default-th"
++
+--- gtk+-1.2.10/gtk/gtkrc.th.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.th Wed Feb 13 16:52:34 2002
+@@ -8,8 +8,8 @@
+
+ style "gtk-default-th" {
+- fontset = "-*-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
+- -*-phaisarn-medium-r-normal--14-*-*-*-*-*-tis620.2533-1,\
+- -*-*-medium-r-normal--14-*-*-*-*-*-tis620.2533-1,*-r-*"
++ fontset = "-*-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
++ -*-norasi-medium-r-normal--18-*-*-*-*-*-tis620-0,\
++ -*-*-medium-r-normal--16-*-*-*-*-*-tis620-0,*-r-*"
+ }
+ class "GtkWidget" style "gtk-default-th"
+
+--- gtk+-1.2.10/gtk/Makefile.am.rclocale Fri Feb 2 18:09:02 2001
++++ gtk+-1.2.10/gtk/Makefile.am Wed Feb 13 16:52:34 2002
+@@ -374,11 +374,16 @@
+
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
+- gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
+- gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
++gtkconf_DATA = gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja \
++ gtkrc.ko gtkrc.ru gtkrc.th gtkrc.th_TH.utf8 gtkrc.uk \
++ gtkrc.utf-8 gtkrc.iso-8859-2 \
++ gtkrc.iso-8859-3 gtkrc.iso-8859-5 gtkrc.iso-8859-7 \
++ gtkrc.iso-8859-9 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+ gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+ gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps \
++ gtkrc.az_AZ.utf8 gtkrc.ja_JP.utf8 gtkrc.ko_KR.utf8 gtkrc.hy_AM.utf8 \
++ gtkrc.tg_TJ.utf8 gtkrc.zh_CN.utf8 gtkrc.zh_TW.utf8 gtkrc.ka_GE.utf8 \
++ gtkrc.el_GR.utf8 gtkrc.am_ET.utf8 gtkrc.vi_VN.utf8 \
+ gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+
+ # We create a dummy theme for the default GTK+ theme
+@@ -409,9 +414,13 @@
+ ln -s gtkrc.iso-8859-14 gtkrc.cy ; \
+ ln -s gtkrc.iso-8859-14 gtkrc.ga ; \
+ ln -s gtkrc.iso-8859-15 gtkrc.et ; \
+- ln -s gtkrc.ka_GE.georgianps gtkrc.ka ; \
++ ln -s gtkrc.ka_GE.utf8 gtkrc.ka ; \
+ ln -s gtkrc.vi_VN.viscii gtkrc.vi_VN.viscii111 ; \
+- ln -s gtkrc.vi_VN.tcvn gtkrc.vi ; \
++ ln -s gtkrc.vi_VN.utf8 gtkrc.vi ; \
++ ln -s gtkrc.zh_CN gtkrc.zh_SG ; \
++ ln -s gtkrc.zh_CN.utf8 gtkrc.zh_SG.utf8 ; \
++ ln -s gtkrc.zh_TW.big5 gtkrc.zh_HK ; \
++ ln -s gtkrc.zh_TW.utf8 gtkrc.zh_TW.utf8 ; \
+ ln -s gtkrc.cp1251 gtkrc.be ; \
+ ln -s gtkrc.cp1251 gtkrc.bg
+
+--- gtk+-1.2.10/gtk/gtkrc.ja.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.ja Wed Feb 13 16:52:34 2002
+@@ -1,5 +1,5 @@
+ style "gtk-default-ja" {
+- fontset = "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1,\
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
+ -ricoh-ms mincho-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,\
+ -misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,\
+ *-r-*"
+--- gtk+-1.2.10/gtk/gtkrc.el.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.el Wed Feb 13 16:52:34 2002
+@@ -1,8 +0,0 @@
+-style "gtk-default-el" {
+- fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-7,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-7,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-el"
+-
+--- gtk+-1.2.10/gtk/gtkrc.vi_VN.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.vi_VN.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -urw-nimbus sans l-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.am_ET.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.am_ET.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-gf zemen unicode-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.ka_GE.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.ka_GE.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/Makefile.in.rclocale Mon Apr 2 05:14:13 2001
++++ gtk+-1.2.10/gtk/Makefile.in Wed Feb 13 16:52:34 2002
+@@ -191,8 +191,7 @@
+ CLEANFILES = $(gen_sources)
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+-
++gtkconf_DATA = gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.th gtkrc.th_TH.utf8 gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.utf8 gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255 gtkrc.utf-8 gtkrc.iso-8859-3 gtkrc.iso-8859-7 gtkrc.iso-8859-9 gtkrc.az_AZ.utf8 gtkrc.ja_JP.utf8 gtkrc.ko_KR.utf8 gtkrc.tg_TJ.utf8 gtkrc.zh_CN.utf8 gtkrc.zh_TW.utf8 gtkrc.ka_GE.utf8 gtkrc.hy_AM.utf8 gtkrc.el_GR.utf8 gtkrc.am_ET.utf8
+
+ #
+ # test programs, not to be installed
+@@ -1505,9 +1504,13 @@
+ ln -s gtkrc.iso-8859-14 gtkrc.cy ; \
+ ln -s gtkrc.iso-8859-14 gtkrc.ga ; \
+ ln -s gtkrc.iso-8859-15 gtkrc.et ; \
+- ln -s gtkrc.ka_GE.georgianps gtkrc.ka ; \
++ ln -s gtkrc.ka_GE.utf8 gtkrc.ka ; \
+ ln -s gtkrc.vi_VN.viscii gtkrc.vi_VN.viscii111 ; \
+- ln -s gtkrc.vi_VN.tcvn gtkrc.vi ; \
++ ln -s gtkrc.vi_VN.utf8 gtkrc.vi ; \
++ ln -s gtkrc.zh_CN gtkrc.zh_SG ; \
++ ln -s gtkrc.zh_CN.utf8 gtkrc.zh_SG.utf8 ; \
++ ln -s gtkrc.zh_TW.big5 gtkrc.zh_HK ; \
++ ln -s gtkrc.zh_TW.utf8 gtkrc.zh_TW.utf8 ; \
+ ln -s gtkrc.cp1251 gtkrc.be ; \
+ ln -s gtkrc.cp1251 gtkrc.bg
+
+--- gtk+-1.2.10/gtk/gtkrc.zh_CN.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.zh_CN.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset ="-*-AR PL SungtiL GB-medium-r-normal--16-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.zh_TW.big5.rclocale Fri Nov 3 23:40:27 2000
++++ gtk+-1.2.10/gtk/gtkrc.zh_TW.big5 Wed Feb 13 16:52:34 2002
+@@ -10,8 +10,8 @@
+ # the lowercasing of "big5" is done on purpose, if you change it it won't work
+
+ style "gtk-default-zh-tw" {
+- fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
+- -taipei-*-medium-r-normal--*-*-*-*-*-*-big5-0,\
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
++ -taipei-*-medium-r-normal--16-*-*-*-*-*-big5-0,\
+ -*-*-medium-r-normal--16-*-*-*-*-*-big5-0,*-r-*"
+ }
+ class "GtkWidget" style "gtk-default-zh-tw"
+--- gtk+-1.2.10/gtk/gtkrc.iso-8859-7.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso-8859-7 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,9 @@
++style "gtk-default-el" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso8859-7,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-7,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-7,*-r-*"
++}
++class "GtkWidget" style "gtk-default-el"
++
+--- gtk+-1.2.10/gtk/gtkrc.ko.rclocale Tue Oct 19 13:39:25 1999
++++ gtk+-1.2.10/gtk/gtkrc.ko Wed Feb 13 16:52:34 2002
+@@ -1,8 +1,8 @@
+ style "gtk-default-ko" {
+- fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,\
+- -*-gulim-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,\
+- -*-kodig-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,\
+- -*-*-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,*"
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
++ -*-gulim-medium-r-normal--*-140-*-*-*-*-ksc5601.1987-0,\
++ -*-kodig-medium-r-normal--*-140-*-*-*-*-ksc5601.1987-0,\
++ -*-*-medium-r-normal--*-140-*-*-*-*-ksc5601.1987-0,*"
+ }
+ class "GtkWidget" style "gtk-default-ko"
+
+--- gtk+-1.2.10/gtk/gtkrc.iso-8859-3.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso-8859-3 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,10 @@
++style "gtk-default-eo" {
++ fontset = "-*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso8859-3,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-3,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-3,*-r-*"
++}
++class "GtkWidget" style "gtk-default-eo"
++
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch
new file mode 100644
index 0000000..b32cbdb
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gtk-config.in.libdir 2002-06-17 18:07:31.000000000 +0200
++++ gtk+-1.2.10/gtk-config.in 2002-06-17 18:07:50.000000000 +0200
+@@ -96,7 +96,7 @@
+
+ if test "$echo_libs" = "yes"; then
+ my_glib_libs=
+- libdirs=-L@libdir@
++ libdirs=
+ for i in $glib_libs ; do
+ if test $i != -L@libdir@ ; then
+ if test -z "$my_glib_libs" ; then
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch
new file mode 100644
index 0000000..5bf8490
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch
@@ -0,0 +1,88 @@
+--- gtk+-1.2.10/gtk/gtkwindow.c.themeswitch Mon Aug 13 13:42:05 2001
++++ gtk+-1.2.10/gtk/gtkwindow.c Mon Aug 13 13:42:05 2001
+@@ -859,13 +859,60 @@
+ GTK_OBJECT_CLASS(parent_class)->finalize (object);
+ }
+
++
++static void
++reread_rc_files ()
++{
++ if (gtk_rc_reparse_all ())
++ {
++ /* If the above returned true, some of our RC files are out
++ * of date, so we need to reset all our widgets. Our other
++ * toplevel windows will also get the message, but by
++ * then, the RC file will up to date, so we have to tell
++ * them now.
++ */
++ GList *toplevels;
++
++ toplevels = gtk_container_get_toplevels();
++ while (toplevels)
++ {
++ gtk_widget_reset_rc_styles (toplevels->data);
++ toplevels = toplevels->next;
++ }
++ }
++}
++
+ static void
+ gtk_window_show (GtkWidget *widget)
+ {
+ GtkWindow *window = GTK_WINDOW (widget);
+ GtkContainer *container = GTK_CONTAINER (window);
+ gboolean need_resize;
++ GList *toplevels;
++ gboolean had_visible = FALSE;
+
++ /* If we have no windows shown at this point, then check for
++ * theme changes before showing the window. We really should
++ * be checking realized, not shown, but shown => realized,
++ * and checking in realize might cause reentrancy problems.
++ *
++ * Plus, this allows us to get the new size right before
++ * realizing.
++ */
++ toplevels = gtk_container_get_toplevels ();
++ while (toplevels)
++ {
++ if (GTK_WIDGET_VISIBLE (toplevels->data))
++ {
++ had_visible = TRUE;
++ break;
++ }
++ toplevels = toplevels->next;
++ }
++
++ if (!had_visible)
++ reread_rc_files ();
++
+ GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE);
+
+ need_resize = container->need_resize || !GTK_WIDGET_REALIZED (widget);
+@@ -1480,23 +1527,7 @@
+ }
+ }
+
+- if (gtk_rc_reparse_all ())
+- {
+- /* If the above returned true, some of our RC files are out
+- * of date, so we need to reset all our widgets. Our other
+- * toplevel windows will also get the message, but by
+- * then, the RC file will up to date, so we have to tell
+- * them now.
+- */
+- GList *toplevels;
+-
+- toplevels = gtk_container_get_toplevels();
+- while (toplevels)
+- {
+- gtk_widget_reset_rc_styles (toplevels->data);
+- toplevels = toplevels->next;
+- }
+- }
++ reread_rc_files ();
+ }
+
+ static gint
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch
new file mode 100644
index 0000000..7d90898
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch
@@ -0,0 +1,29 @@
+--- gtk+-1.2.10/gtk/gtktypeutils.h.alignment Fri Aug 18 17:36:34 2000
++++ gtk+-1.2.10/gtk/gtktypeutils.h Tue Jul 3 21:07:40 2001
+@@ -191,6 +191,13 @@
+ GtkTypeClass *klass;
+ };
+
++#ifdef __GNUC__
++struct _GtkTypeClassDummyAlign
++{
++ GtkType type;
++ guint *signals;
++};
++#endif /* __GNUC__ */
+
+ /* A GtkTypeClass defines the minimum structure requirements for
+ * a types class. Classes returned from gtk_type_class () and
+@@ -203,7 +210,11 @@
+ * one unique identifier per class.
+ */
+ GtkType type;
+-};
++}
++#ifdef __GNUC__
++__attribute__ ((aligned (__alignof (struct _GtkTypeClassDummyAlign))))
++#endif /* __GNUC__ */
++;
+
+
+ struct _GtkArg
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch
new file mode 100644
index 0000000..c64293c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gdk/gdk.c.bellvolume Wed Jan 15 12:32:25 2003
++++ gtk+-1.2.10/gdk/gdk.c Wed Jan 15 12:32:28 2003
+@@ -989,7 +989,7 @@
+ void
+ gdk_beep (void)
+ {
+- XBell(gdk_display, 100);
++ XBell(gdk_display, 0);
+ }
+
+ /*
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch
new file mode 100644
index 0000000..afae023
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch
@@ -0,0 +1,30 @@
+Index: gtk/gtkclist.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkclist.c,v
+retrieving revision 1.156.2.25
+retrieving revision 1.156.2.26
+diff -u -p -r1.156.2.25 -r1.156.2.26
+--- gtk/gtkclist.c 1 Mar 2001 00:18:20 -0000 1.156.2.25
++++ gtk/gtkclist.c 14 Dec 2002 04:17:03 -0000 1.156.2.26
+@@ -2800,10 +2800,6 @@ real_remove_row (GtkCList *clist,
+ clist->row_list_end = g_list_previous (list);
+ g_list_remove (list, clist_row);
+
+- /*if (clist->focus_row >=0 &&
+- (row <= clist->focus_row || clist->focus_row >= clist->rows))
+- clist->focus_row--;*/
+-
+ if (row < ROW_FROM_YPIXEL (clist, 0))
+ clist->voffset += clist->row_height + CELL_SPACING;
+
+@@ -4331,7 +4327,9 @@ sync_selection (GtkCList *clist,
+ clist->focus_row += d;
+ if (clist->focus_row == -1 && clist->rows >= 1)
+ clist->focus_row = 0;
+- else if (clist->focus_row >= clist->rows)
++ else if (d < 0 && clist->focus_row >= clist->rows - 1)
++ clist->focus_row = clist->rows - 2;
++ else if (clist->focus_row >= clist->rows) /* Paranoia */
+ clist->focus_row = clist->rows - 1;
+ }
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch
new file mode 100644
index 0000000..28fca0c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch
@@ -0,0 +1,140 @@
+--- gtk+-1.2.10/gdk/gdkselection.c.ctext Thu Jul 5 12:41:42 2001
++++ gtk+-1.2.10/gdk/gdkselection.c Thu Jul 5 12:45:25 2001
+@@ -191,73 +191,6 @@
+ gdk_send_xevent (requestor, False, NoEventMask, (XEvent*) &xevent);
+ }
+
+-
+-/* The output of XmbTextPropertyToTextList may include stuff not valid
+- * for COMPOUND_TEXT. This routine tries to correct this by:
+- *
+- * a) Canonicalizing CR LF and CR to LF
+- * b) Stripping out all other non-allowed control characters
+- *
+- * See the COMPOUND_TEXT spec distributed with X for explanations
+- * what is allowed.
+- */
+-static gchar *
+-sanitize_ctext (const char *str,
+- gint *length)
+-{
+- gchar *result = g_malloc (*length + 1);
+- gint out_length = 0;
+- gint i;
+- const guchar *ustr = (const guchar *)str;
+-
+- for (i=0; i < *length; i++)
+- {
+- guchar c = ustr[i];
+-
+- if (c == '\r')
+- {
+- result[out_length++] = '\n';
+- if (i + 1 < *length && ustr[i + 1] == '\n')
+- i++;
+- }
+- else if (c == 27 /* ESC */)
+- {
+- /* Check for "extended segments, which can contain arbitrary
+- * octets. See CTEXT spec, section 6.
+- */
+-
+- if (i + 5 < *length &&
+- ustr[i + 1] == '%' &&
+- ustr[i + 2] == '/' &&
+- (ustr[i + 3] >= 48 && ustr[i + 3] <= 52) &&
+- ustr[i + 4] >= 128 &&
+- ustr[i + 5] >= 128)
+- {
+- int extra_len = 6 + (ustr[i + 4] - 128) * 128 + ustr[i + 5] - 128;
+- extra_len = MAX (extra_len, *length - i);
+-
+- memcpy (result + out_length, ustr + i, extra_len);
+- out_length += extra_len;
+- i += extra_len - 1;
+- }
+- else
+- result[out_length++] = c;
+- }
+- else if (c == '\n' || c == '\t' || c == 27 /* ESC */ ||
+- (c >= 32 && c <= 127) || /* GL */
+- c == 155 /* CONTROL SEQUENCE INTRODUCER */ ||
+- (c >= 160 && c <= 255)) /* GR */
+- {
+- result[out_length++] = c;
+- }
+- }
+-
+- result[out_length] = '\0';
+- *length = out_length;
+-
+- return result;
+-}
+-
+ gint
+ gdk_text_property_to_text_list (GdkAtom encoding, gint format,
+ guchar *text, gint length,
+@@ -266,32 +199,16 @@
+ XTextProperty property;
+ gint count = 0;
+ gint res;
+- gchar *sanitized_text = NULL;
+
+ if (!list)
+ return 0;
+
+ property.encoding = encoding;
+ property.format = format;
+-
+- if (encoding == gdk_atom_intern ("COMPOUND_TEXT", FALSE) && format == 8)
+- {
+- gint sanitized_text_length = length;
+-
+- property.value = sanitized_text = sanitize_ctext (text, &sanitized_text_length);
+- property.nitems = sanitized_text_length;
+- }
+- else
+- {
+- property.value = text;
+- property.nitems = length;
+- }
+-
++ property.value = text;
++ property.nitems = length;
+ res = XmbTextPropertyToTextList (GDK_DISPLAY(), &property, list, &count);
+
+- if (sanitized_text)
+- g_free (sanitized_text);
+-
+ if (res == XNoMemory || res == XLocaleNotSupported ||
+ res == XConverterNotFound)
+ return 0;
+@@ -314,8 +231,6 @@
+ {
+ gint res;
+ XTextProperty property;
+- gint sanitized_text_length;
+- gchar *sanitized_text;
+
+ res = XmbTextListToTextProperty (GDK_DISPLAY(),
+ (char **)&str, 1, XCompoundTextStyle,
+@@ -334,17 +249,10 @@
+ *encoding = property.encoding;
+ if (format)
+ *format = property.format;
+-
+- sanitized_text_length = property.nitems;
+- sanitized_text = sanitize_ctext (property.value, &sanitized_text_length);
+-
+ if (ctext)
+- *ctext = sanitized_text;
+- else
+- g_free (sanitized_text);
+-
++ *ctext = g_strdup (property.value);
+ if (length)
+- *length = sanitized_text_length;
++ *length = property.nitems;
+
+ if (property.value)
+ XFree (property.value);
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch
new file mode 100644
index 0000000..7a1151c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch
@@ -0,0 +1,188 @@
+--- gtk+-1.2.10/gtk/gtkfilesel.c.deletedir Thu Feb 15 23:36:19 2001
++++ gtk+-1.2.10/gtk/gtkfilesel.c Wed Apr 17 20:36:25 2002
+@@ -325,7 +325,8 @@
+
+ static void gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+- gint try_complete);
++ gboolean try_complete,
++ gboolean reset_entry);
+ static void gtk_file_selection_abort (GtkFileSelection *fs);
+
+ static void gtk_file_selection_update_history_menu (GtkFileSelection *fs,
+@@ -522,7 +523,7 @@
+ }
+ else
+ {
+- gtk_file_selection_populate (filesel, "", FALSE);
++ gtk_file_selection_populate (filesel, "", FALSE, TRUE);
+ }
+
+ gtk_widget_grab_focus (filesel->selection_entry);
+@@ -637,7 +638,7 @@
+ name = last_slash + 1;
+ }
+
+- gtk_file_selection_populate (filesel, buf, FALSE);
++ gtk_file_selection_populate (filesel, buf, FALSE, TRUE);
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), name);
+@@ -673,7 +674,7 @@
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
+- gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
++ gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE, TRUE);
+ }
+
+ static void
+@@ -806,7 +807,7 @@
+ g_free (full_path);
+
+ gtk_widget_destroy (fs->fileop_dialog);
+- gtk_file_selection_populate (fs, "", FALSE);
++ gtk_file_selection_populate (fs, "", FALSE, FALSE);
+ }
+
+ static void
+@@ -903,7 +904,7 @@
+ g_free (full_path);
+
+ gtk_widget_destroy (fs->fileop_dialog);
+- gtk_file_selection_populate (fs, "", FALSE);
++ gtk_file_selection_populate (fs, "", FALSE, TRUE);
+ }
+
+ static void
+@@ -1009,8 +1010,9 @@
+ g_free (new_filename);
+ g_free (old_filename);
+
++ gtk_file_selection_populate (fs, "", FALSE, FALSE);
++ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), file);
+ gtk_widget_destroy (fs->fileop_dialog);
+- gtk_file_selection_populate (fs, "", FALSE);
+ }
+
+ static void
+@@ -1112,7 +1114,7 @@
+
+ text = g_strdup (text);
+
+- gtk_file_selection_populate (fs, text, TRUE);
++ gtk_file_selection_populate (fs, text, TRUE, TRUE);
+
+ g_free (text);
+
+@@ -1124,7 +1126,6 @@
+ return FALSE;
+ }
+
+-
+ static void
+ gtk_file_selection_history_callback (GtkWidget *widget, gpointer data)
+ {
+@@ -1142,7 +1143,7 @@
+
+ if (callback_arg->menu_item == widget)
+ {
+- gtk_file_selection_populate (fs, callback_arg->directory, FALSE);
++ gtk_file_selection_populate (fs, callback_arg->directory, FALSE, FALSE);
+ break;
+ }
+
+@@ -1272,7 +1273,7 @@
+ gpointer user_data)
+ {
+ GtkFileSelection *fs = NULL;
+- gchar *filename, *temp = NULL;
++ gchar *filename = NULL;
+
+ g_return_if_fail (GTK_IS_CLIST (widget));
+
+@@ -1280,39 +1281,23 @@
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+- gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp);
+- filename = g_strdup (temp);
+-
+- if (filename)
+- {
+- if (bevent)
+- switch (bevent->type)
+- {
+- case GDK_2BUTTON_PRESS:
+- gtk_file_selection_populate (fs, filename, FALSE);
+- break;
+-
+- default:
+- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+- break;
+- }
+- else
+- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+-
+- g_free (filename);
+- }
++ gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &filename);
++
++ if (filename && bevent && bevent->type == GDK_2BUTTON_PRESS)
++ gtk_file_selection_populate (fs, filename, FALSE, FALSE);
+ }
+
+ static void
+ gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+- gint try_complete)
++ gboolean try_complete,
++ gboolean reset_entry)
+ {
+ CompletionState *cmpl_state;
+ PossibleCompletion* poss;
+ gchar* filename;
+ gint row;
+- gchar* rem_path = rel_path;
++ gchar* rem_path;
+ gchar* sel_text;
+ gchar* text[2];
+ gint did_recurse = FALSE;
+@@ -1323,6 +1308,8 @@
+
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
++
++ rem_path = rel_path = g_strdup (rel_path);
+
+ cmpl_state = (CompletionState*) fs->cmpl_state;
+ poss = cmpl_completion_matches (rel_path, &rem_path, cmpl_state);
+@@ -1422,7 +1409,7 @@
+
+ did_recurse = TRUE;
+
+- gtk_file_selection_populate (fs, dir_name, TRUE);
++ gtk_file_selection_populate (fs, dir_name, TRUE, TRUE);
+
+ g_free (dir_name);
+ }
+@@ -1441,7 +1428,7 @@
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), rem_path);
+ }
+ }
+- else
++ else if (reset_entry)
+ {
+ if (fs->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
+@@ -1466,8 +1453,9 @@
+ {
+ gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
+ }
+-
+ }
++
++ g_free (rel_path);
+ }
+
+ static void
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch
new file mode 100644
index 0000000..ca645f3
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch
@@ -0,0 +1,148 @@
+--- gtk+-1.2.10/gtk/gtkrc.c.encoding Thu Mar 15 13:41:40 2001
++++ gtk+-1.2.10/gtk/gtkrc.c Fri Jul 26 16:49:24 2002
+@@ -33,6 +33,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <langinfo.h>
+
+ #include "gtkrc.h"
+ #include "gtkbindings.h"
+@@ -440,7 +441,7 @@
+ void
+ gtk_rc_init (void)
+ {
+- static gchar *locale_suffixes[3];
++ static gchar *locale_suffixes[8];
+ static gint n_locale_suffixes = 0;
+
+ gint i, j;
+@@ -449,9 +450,7 @@
+
+ if (!initted)
+ {
+- gint length;
+-
+- char *locale = setlocale (LC_CTYPE, NULL);
++ char *locale = g_strdup (setlocale (LC_CTYPE, NULL));
+ char *p;
+
+ initted = TRUE;
+@@ -470,39 +469,88 @@
+ * We normalize the charset into a standard form,
+ * which has all '-' and '_' characters removed,
+ * and is lowercase.
++ *
++ * the search is done in that order:
++ * gtkrc.ll_cc.lowercasecodeset
++ * gtkrc.ll_cc.normalizedcodeset
++ * gtkrc.ll.lowercasecodeset
++ * gtkrc.ll.normalizedcodeset
++ * gtkrc.lowercasecodeset
++ * gtkrc.normalizedcodeset
++ * gtkrc.ll_cc
++ * gtkrc.ll
++ *
+ */
+- gchar *normalized_locale;
++ char *codeset = NULL;
++ char *normalized_codeset = NULL;
++ char *cc = NULL;
++ char *ll;
+
+ p = strchr (locale, '@');
+- length = p ? (p -locale) : strlen (locale);
++ if (p)
++ *p = '\0';
+
++ codeset = nl_langinfo (CODESET);
++
+ p = strchr (locale, '.');
++ if (!codeset && p)
++ codeset = p + 1;
+ if (p)
++ *p = '\0';
++
++ if (codeset)
+ {
+- gchar *tmp1 = g_strndup (locale, p - locale + 1);
+- gchar *tmp2 = _gtk_normalize_codeset (p + 1, length - (p - locale + 1));
++ codeset = g_strdup (codeset);
+
+- normalized_locale = g_strconcat (tmp1, tmp2, NULL);
+- g_free (tmp1);
+- g_free (tmp2);
+-
+- locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_locale);
+- length = p - locale;
++ p = codeset;
++ while (*p)
++ {
++ /* tolower not used, because some locales are not
++ * compatible with C locale in lowercasing ascii
++ */
++ if (*p >= 'A' && *p <= 'Z')
++ *p = (*p) - 'A' + 'a';
++ p++;
++ }
++
++ normalized_codeset = _gtk_normalize_codeset(codeset, strlen (codeset));
++ if (strcmp (normalized_codeset, codeset) == 0)
++ {
++ g_free (normalized_codeset);
++ normalized_codeset = NULL;
++ }
+ }
+- else
+- normalized_locale = g_strndup (locale, length);
+
+- p = strchr (normalized_locale, '_');
++ p = strchr (locale, '_');
+ if (p)
+ {
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+- length = p - normalized_locale;
++ cc = p + 1;
++ *p = '\0';
+ }
+-
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+
+- g_free (normalized_locale);
++ ll = locale;
++
++ if (cc && codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", codeset, NULL);
++ if (cc && normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", codeset, NULL);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (codeset);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_codeset);
++ if (cc)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, NULL);
++ locale_suffixes[n_locale_suffixes++] = g_strdup (ll);
++
++ g_free (normalized_codeset);
++ g_free (codeset);
+ }
++
++ g_free (locale);
+ }
+
+ i = 0;
+--- gtk+-1.2.10/gtk/gtkrc.iso88599.encoding Fri Jul 26 16:47:04 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso88599 Fri Jul 26 16:47:04 2002
+@@ -0,0 +1,8 @@
++style "gtk-default-iso-8859-9" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9,*-r-*"
++}
++class "GtkWidget" style "gtk-default-iso-8859-9"
++
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch
new file mode 100644
index 0000000..c3f6b27
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch
@@ -0,0 +1,41 @@
+--- gtk+-1.2.10/gdk/gdkfont.c.fontwarning 2002-07-30 15:38:52.000000000 +0200
++++ gtk+-1.2.10/gdk/gdkfont.c 2002-07-30 15:43:43.000000000 +0200
+@@ -26,6 +26,8 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/Xos.h>
++#include <langinfo.h>
++#include <locale.h>
+ #include "gdk.h"
+ #include "gdkprivate.h"
+
+@@ -173,9 +175,26 @@
+ if (missing_charset_count)
+ {
+ gint i;
+- g_warning ("Missing charsets in FontSet creation\n");
+- for (i=0;i<missing_charset_count;i++)
+- g_warning (" %s\n", missing_charset_list[i]);
++ const char *codeset;
++
++ codeset = nl_langinfo (CODESET);
++
++ /* Hack - UTF-8 is likely to be rendered with a list of
++ * possible legacy fallback charsets, so a failure here
++ * shouldn't be warned about. But we don't want to suppress
++ * this warning in general, since for other character sets
++ * it gives a useful indication of what went wrong.
++ */
++ if (g_strcasecmp (codeset, "utf-8") != 0 &&
++ g_strcasecmp (codeset, "utf8") != 0)
++ {
++ g_printerr ("The font \"%s\" does not support all the required character sets for the current locale \"%s\"\n",
++ fontset_name, setlocale (LC_ALL, NULL));
++ for (i=0;i<missing_charset_count;i++)
++ g_printerr (" (Missing character set \"%s\")\n",
++ missing_charset_list[i]);
++ }
++
+ XFreeStringList (missing_charset_list);
+ }
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch
new file mode 100644
index 0000000..a72fcb2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch
@@ -0,0 +1,52 @@
+--- gtk+-1.2.10/gtk/gtkentry.c.kpenter Sat Jul 21 20:27:08 2001
++++ gtk+-1.2.10/gtk/gtkentry.c Sat Jul 21 20:27:16 2001
+@@ -1184,6 +1184,7 @@
+ }
+ break;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ return_val = TRUE;
+ gtk_widget_activate (widget);
+ break;
+--- gtk+-1.2.10/gtk/gtktext.c.kpenter Sat Jul 21 20:28:56 2001
++++ gtk+-1.2.10/gtk/gtktext.c Sat Jul 21 20:29:17 2001
+@@ -2055,6 +2055,7 @@
+ case GDK_Up: scroll_int (text, -KEY_SCROLL_PIXELS); break;
+ case GDK_Down: scroll_int (text, +KEY_SCROLL_PIXELS); break;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ if (event->state & GDK_CONTROL_MASK)
+ gtk_signal_emit_by_name (GTK_OBJECT (text), "activate");
+ else
+@@ -2161,6 +2162,7 @@
+ gtk_editable_insert_text (editable, "\t", 1, &position);
+ break;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ if (event->state & GDK_CONTROL_MASK)
+ gtk_signal_emit_by_name (GTK_OBJECT (text), "activate");
+ else
+--- gtk+-1.2.10/gtk/gtkmenushell.c.kpenter Sat Jul 21 20:27:59 2001
++++ gtk+-1.2.10/gtk/gtkmenushell.c Sat Jul 21 20:28:05 2001
+@@ -258,6 +258,11 @@
+ GTK_TYPE_BOOL,
+ TRUE);
+ gtk_binding_entry_add_signal (binding_set,
++ GDK_KP_Enter, 0,
++ "activate_current", 1,
++ GTK_TYPE_BOOL,
++ TRUE);
++ gtk_binding_entry_add_signal (binding_set,
+ GDK_space, 0,
+ "activate_current", 1,
+ GTK_TYPE_BOOL,
+--- gtk+-1.2.10/gtk/gtknotebook.c.kpenter Sat Jul 21 20:28:30 2001
++++ gtk+-1.2.10/gtk/gtknotebook.c Sat Jul 21 20:28:38 2001
+@@ -1369,6 +1369,7 @@
+ gtk_notebook_switch_focus_tab (notebook, list);
+ return TRUE;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ case GDK_space:
+ gtk_notebook_page_select (GTK_NOTEBOOK (widget));
+ return TRUE;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch
new file mode 100644
index 0000000..368380b
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch
@@ -0,0 +1,20 @@
+--- gtk+-1.2.10/gdk/gdkselection.c.localecrash Thu Aug 22 16:50:01 2002
++++ gtk+-1.2.10/gdk/gdkselection.c Thu Aug 22 17:50:46 2002
+@@ -238,12 +238,14 @@
+ if (res != Success)
+ {
+ property.encoding = None;
+- property.format = None;
++ property.format = 8;
+ property.value = NULL;
+ property.nitems = 0;
+- }
+
+- g_assert (property.encoding == gdk_atom_intern ("COMPOUND_TEXT", FALSE) && property.format == 8);
++ g_warning ("Error converting string to compound text.\n"
++ "This might mean that your locale setting is supported\n"
++ "by the C library but not by Xlib.");
++ }
+
+ if (encoding)
+ *encoding = property.encoding;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch
new file mode 100644
index 0000000..3e7ae15
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gtk.m4.underquoted 2004-08-15 22:20:34.253447389 +0100
++++ gtk+-1.2.10/gtk.m4 2004-08-15 22:20:47.874844660 +0100
+@@ -4,7 +4,7 @@
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
+-AC_DEFUN(AM_PATH_GTK,
++AC_DEFUN([AM_PATH_GTK],
+ [dnl
+ dnl Get the cflags and libraries from the gtk-config script
+ dnl
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch
new file mode 100644
index 0000000..0d76f93
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch
@@ -0,0 +1,33 @@
+--- gtk+-1.2.10/gdk/gdkfont.c.missingchar Mon Aug 13 13:37:52 2001
++++ gtk+-1.2.10/gdk/gdkfont.c Mon Aug 13 13:39:30 2001
+@@ -461,7 +461,6 @@
+ GdkFontPrivate *private;
+ XCharStruct *chars;
+ gint width;
+- guint ch = character & 0xff; /* get rid of sign-extension */
+ XFontStruct *xfont;
+ XFontSet fontset;
+
+@@ -474,21 +473,7 @@
+ case GDK_FONT_FONT:
+ /* only 8 bits characters are considered here */
+ xfont = (XFontStruct *) private->xfont;
+- if ((xfont->min_byte1 == 0) &&
+- (xfont->max_byte1 == 0) &&
+- (ch >= xfont->min_char_or_byte2) &&
+- (ch <= xfont->max_char_or_byte2))
+- {
+- chars = xfont->per_char;
+- if (chars)
+- width = chars[ch - xfont->min_char_or_byte2].width;
+- else
+- width = xfont->min_bounds.width;
+- }
+- else
+- {
+- width = XTextWidth (xfont, &character, 1);
+- }
++ width = XTextWidth (xfont, &character, 1);
+ break;
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch
new file mode 100644
index 0000000..0a6c3b2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch
@@ -0,0 +1,14 @@
+--- gtk+-1.2.10/gtk/gtkstyle.c.pixmapref Tue Feb 20 11:46:58 2001
++++ gtk+-1.2.10/gtk/gtkstyle.c Sun Aug 12 15:42:06 2001
+@@ -348,8 +348,9 @@
+ new_style->bg[i] = style->bg[i];
+ new_style->text[i] = style->text[i];
+ new_style->base[i] = style->base[i];
+-
+- new_style->bg_pixmap[i] = style->bg_pixmap[i];
++
++ if (style->bg_pixmap[i] && !(style->rc_style && style->rc_style->bg_pixmap_name[i]))
++ new_style->bg_pixmap[i] = gdk_pixmap_ref (style->bg_pixmap[i]);
+ }
+
+ gdk_font_unref (new_style->font);
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch
new file mode 100644
index 0000000..6c01495
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch
@@ -0,0 +1,14 @@
+--- gtk+/gtk/gtkrange.c 22 Feb 2001 20:38:14 -0000 1.26.2.3
++++ gtk+/gtk/gtkrange.c 19 Jul 2002 15:41:58 -0000
+@@ -829,7 +828,10 @@ gtk_range_expose (GtkWidget *widget
+ (event->area.x + event->area.width <=
+ widget->allocation.width - trough_border) &&
+ (event->area.y + event->area.height <=
+- widget->allocation.height - trough_border)))
++ widget->allocation.height - trough_border)) ||
++ gtk_style_get_prop_experimental (widget->style,
++ "GtkRange::always_draw_trough",
++ 0))
+ gtk_range_draw_trough (range);
+ }
+ else if (event->window == widget->window)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch b/x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch
new file mode 100644
index 0000000..296a80e
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch
@@ -0,0 +1,74 @@
+--- gtk+-1.2.6/gtk/gtkmenubar.c.noborder Tue Feb 1 02:41:57 2000
++++ gtk+-1.2.6/gtk/gtkmenubar.c Tue Feb 1 02:42:11 2000
+@@ -217,6 +217,8 @@
+ GList *children;
+ gint nchildren;
+ GtkRequisition child_requisition;
++ gint xthickness;
++ gint ythickness;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_MENU_BAR (widget));
+@@ -256,12 +258,21 @@
+ }
+ }
+
++ if (menu_bar->shadow_type == GTK_SHADOW_NONE)
++ {
++ xthickness = 0;
++ ythickness = 0;
++ }
++ else
++ {
++ xthickness = widget->style->klass->xthickness;
++ ythickness = widget->style->klass->ythickness;
++ }
++
+ requisition->width += (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->xthickness +
+- BORDER_SPACING) * 2;
++ xthickness + BORDER_SPACING) * 2;
+ requisition->height += (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->ythickness +
+- BORDER_SPACING) * 2;
++ ythickness + BORDER_SPACING) * 2;
+
+ if (nchildren > 0)
+ requisition->width += 2 * CHILD_SPACING * (nchildren - 1);
+@@ -279,6 +290,8 @@
+ GtkAllocation child_allocation;
+ GtkRequisition child_requisition;
+ guint offset;
++ gint xthickness;
++ gint ythickness;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_MENU_BAR (widget));
+@@ -295,14 +308,23 @@
+
+ if (menu_shell->children)
+ {
++ if (menu_bar->shadow_type == GTK_SHADOW_NONE)
++ {
++ xthickness = 0;
++ ythickness = 0;
++ }
++ else
++ {
++ xthickness = widget->style->klass->xthickness;
++ ythickness = widget->style->klass->ythickness;
++ }
++
+ child_allocation.x = (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->xthickness +
+- BORDER_SPACING);
++ xthickness + BORDER_SPACING);
+ offset = child_allocation.x; /* Window edge to menubar start */
+
+ child_allocation.y = (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->ythickness +
+- BORDER_SPACING);
++ ythickness + BORDER_SPACING);
+ child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2);
+
+ children = menu_shell->children;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch b/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
new file mode 100644
index 0000000..278e99a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
@@ -0,0 +1,1407 @@
+*** ../old/gtk+-1.2.8/gtk/gtkfilesel.h Sun Feb 13 01:59:45 2000
+--- gtk/gtkfilesel.h Wed Jul 26 10:19:19 2000
+***************
+*** 57,69 ****
+--- 57,73 ----
+ GtkWidget *selection_text;
+ GtkWidget *main_vbox;
+ GtkWidget *ok_button;
+ GtkWidget *cancel_button;
+ GtkWidget *help_button;
++
++ /* These are not used. Just fillers in the class structure */
+ GtkWidget *history_pulldown;
+ GtkWidget *history_menu;
+ GList *history_list;
++ /* ***************** */
++
+ GtkWidget *fileop_dialog;
+ GtkWidget *fileop_entry;
+ gchar *fileop_file;
+ gpointer cmpl_state;
+
+***************
+*** 71,81 ****
+ GtkWidget *fileop_del_file;
+ GtkWidget *fileop_ren_file;
+
+ GtkWidget *button_area;
+ GtkWidget *action_area;
+!
+ };
+
+ struct _GtkFileSelectionClass
+ {
+ GtkWindowClass parent_class;
+--- 75,92 ----
+ GtkWidget *fileop_del_file;
+ GtkWidget *fileop_ren_file;
+
+ GtkWidget *button_area;
+ GtkWidget *action_area;
+!
+! GtkWidget *history_combo;
+! GList *prev_history;
+! GList *next_history;
+! GtkWidget *mask_entry;
+! gchar *mask;
+! gchar *saved_entry;
+!
+ };
+
+ struct _GtkFileSelectionClass
+ {
+ GtkWindowClass parent_class;
+*** ../old/gtk+-1.2.8/gtk/gtkfilesel.c Thu Jan 27 09:39:54 2000
+--- gtk/gtkfilesel.c Wed Jul 26 10:19:19 2000
+***************
+*** 52,61 ****
+--- 52,63 ----
+ #include "gtkmenu.h"
+ #include "gtkmenuitem.h"
+ #include "gtkoptionmenu.h"
+ #include "gtkclist.h"
+ #include "gtkdialog.h"
++ #include "gtkcombo.h"
++ #include "gtkframe.h"
+ #include "gtkintl.h"
+
+ #define DIR_LIST_WIDTH 180
+ #define DIR_LIST_HEIGHT 180
+ #define FILE_LIST_WIDTH 180
+***************
+*** 150,159 ****
+--- 152,165 ----
+ */
+ gchar *text;
+ gint is_a_completion;
+ gint is_directory;
+
++ gint file_size;
++ gint file_time;
++ gint uid;
++ gint gid;
+ /* Private fields
+ */
+ gint text_alloc;
+ };
+
+***************
+*** 304,318 ****
+ gint column,
+ GdkEventButton *bevent,
+ gpointer user_data);
+
+ static void gtk_file_selection_dir_button (GtkWidget *widget,
+! gint row,
+! gint column,
+ GdkEventButton *bevent,
+ gpointer data);
+
+ static void gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+ gint try_complete);
+ static void gtk_file_selection_abort (GtkFileSelection *fs);
+
+--- 310,330 ----
+ gint column,
+ GdkEventButton *bevent,
+ gpointer user_data);
+
+ static void gtk_file_selection_dir_button (GtkWidget *widget,
+! gint row,
+! gint column,
+ GdkEventButton *bevent,
+ gpointer data);
+
++ static void gtk_file_selection_undir_button (GtkWidget *widget,
++ gint row,
++ gint column,
++ GdkEventButton *bevent,
++ gpointer data);
++
+ static void gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+ gint try_complete);
+ static void gtk_file_selection_abort (GtkFileSelection *fs);
+
+***************
+*** 321,337 ****
+--- 333,447 ----
+
+ 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 gboolean gtk_file_selection_history_combo_callback (GtkWidget *widget, GdkEventKey *event, gpointer data);
++ static gboolean gtk_file_selection_history_combo_list_key_handler(GtkWidget *widget,
++ GdkEventKey *event,
++ gpointer user_data);
++ static gboolean gtk_file_selection_history_combo_list_callback (GtkWidget *thelist,
++ GdkEventButton *event,
++ gpointer user_data);
++ static void gtk_file_selection_mask_entry_callback (GtkWidget *widget, gpointer data);
++ 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_home_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_up_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_prev_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_next_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_refresh_button (GtkWidget *widget, gpointer data);
++
++ static gint gtk_file_selection_match_char (gchar, gchar *mask);
++ static gint gtk_file_selection_match_mask (gchar *,gchar *);
+
+
+ static GtkWindowClass *parent_class = NULL;
+
+ /* Saves errno when something cmpl does fails. */
+ static gint cmpl_errno;
+
++ /* General notes:
++ * Make prev and next inactive if their respective *
++ * histories are empty.
++ * Add facilities for handling hidden files and *
++ * directories *
++ * Add an api to access the mask, and hidden files *
++ * check box? (prob not in 1.2.x series) *
++ */
++
++ /* Routine for applying mask to filenames *
++ * Need to be optimized to minimize recursion *
++ * help the for loop by looking for the next *
++ * instance of the mask character following *
++ * the '*'. ei *.c -- look for '.' *
++ * Also, swap all *? pairs (-> ?*), as that *
++ * will make it possible to look ahead (? *
++ * makes it very nondeterministic as in *?.c *
++ * which really is ?*.c *
++ * Allow multiply masks, separted by commas *
++ * Allow more flexible [] handling (ie [a-zA-Z] *
++ * *
++ */
++ static gint gtk_file_selection_match_char (gchar text, gchar *mask){
++ gchar *maskc;
++ gint x;
++ gint s;
++
++ if (mask[0] == '[')
++ {
++ if (!strchr (mask,']')) return 0;
++ maskc = g_strdup(mask + 1); /* get the portion of mask inside []*/
++
++ (*(strchr (maskc,']'))) = 0;
++ s = strlen ((char *)maskc);
++
++ for (x = 0; x < s; x++){
++ if (text == maskc[x])
++ {
++ g_free (maskc);
++ return s + 2;
++ }
++ }
++ g_free (maskc);
++ return 0;
++ }
++
++ if (mask[0] == '?') return 1;
++ if (mask[0] == text) return 1;
++
++ return 0;
++ }
++
++
++ static gint gtk_file_selection_match_mask (gchar *text, gchar *mask){
++
++ int mc;
++ int tc;
++
++ tc = 0; mc = 0;
++
++ if (mask[0] == 0 && text[0] == 0) return 1;
++
++ if (mask[0] == '*')
++ {
++ for (tc = 0; tc <= strlen(text); tc++)
++ {
++ if (gtk_file_selection_match_mask (text + tc, mask + 1))
++ return 1;
++ }
++ return 0;
++ }
++ mc = gtk_file_selection_match_char (text[0], mask);
++
++ if(mc)
++ return gtk_file_selection_match_mask (text + 1, mask + mc);
++ else
++ return 0;
++ }
++
+ GtkType
+ gtk_file_selection_get_type (void)
+ {
+ static GtkType file_selection_type = 0;
+
+***************
+*** 372,389 ****
+--- 482,514 ----
+ {
+ GtkWidget *entry_vbox;
+ GtkWidget *label;
+ GtkWidget *list_hbox;
+ GtkWidget *confirm_area;
++ GtkWidget *vbox;
++ GtkWidget *hbox;
+ GtkWidget *pulldown_hbox;
+ GtkWidget *scrolled_win;
++ GtkWidget *mask_label;
++ GtkWidget *bigframe;
++ GtkWidget *label_lookingin;
++ GtkWidget *up_button;
++ GtkWidget *home_button;
++ GtkWidget *prev_button;
++ GtkWidget *next_button;
++ GtkWidget *refresh_button;
+
+ char *dir_title [2];
+ char *file_title [2];
+
+ filesel->cmpl_state = cmpl_init_state ();
+
++ filesel->mask=NULL;
++ filesel->prev_history=NULL;
++ filesel->next_history=NULL;
++ filesel->saved_entry=NULL;
++
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+ gtk_container_add (GTK_CONTAINER (filesel), filesel->main_vbox);
+ gtk_widget_show (filesel->main_vbox);
+***************
+*** 397,440 ****
+ gtk_widget_show (filesel->button_area);
+
+ gtk_file_selection_show_fileop_buttons(filesel);
+
+ /* hbox for pulldown menu */
+! pulldown_hbox = gtk_hbox_new (TRUE, 5);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
+ gtk_widget_show (pulldown_hbox);
+
+! /* Pulldown menu */
+! filesel->history_pulldown = gtk_option_menu_new ();
+! gtk_widget_show (filesel->history_pulldown);
+! gtk_box_pack_start (GTK_BOX (pulldown_hbox), filesel->history_pulldown,
+! FALSE, FALSE, 0);
+!
+ /* The horizontal box containing the directory and file listboxes */
+ list_hbox = gtk_hbox_new (FALSE, 5);
+! gtk_box_pack_start (GTK_BOX (filesel->main_vbox), list_hbox, TRUE, TRUE, 0);
+ gtk_widget_show (list_hbox);
+
+ /* The directories clist */
+ dir_title[0] = _("Directories");
+ dir_title[1] = NULL;
+ filesel->dir_list = gtk_clist_new_with_titles (1, (gchar**) dir_title);
+ gtk_widget_set_usize (filesel->dir_list, DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
+! (GtkSignalFunc) gtk_file_selection_dir_button,
+ (gpointer) filesel);
+ gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_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), 5);
+! gtk_box_pack_start (GTK_BOX (list_hbox), scrolled_win, TRUE, TRUE, 0);
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+ /* The files clist */
+ file_title[0] = _("Files");
+ file_title[1] = NULL;
+ filesel->file_list = gtk_clist_new_with_titles (1, (gchar**) file_title);
+ gtk_widget_set_usize (filesel->file_list, FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+--- 522,654 ----
+ gtk_widget_show (filesel->button_area);
+
+ gtk_file_selection_show_fileop_buttons(filesel);
+
+ /* hbox for pulldown menu */
+! pulldown_hbox = gtk_hbox_new (FALSE, 5);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
+ gtk_widget_show (pulldown_hbox);
+
+! /* The combo box that replaces the pulldown menu */
+! label_lookingin = gtk_label_new (_("Looking in:"));
+! gtk_widget_show (label_lookingin);
+! gtk_box_pack_start (GTK_BOX (pulldown_hbox), label_lookingin, FALSE, FALSE, 0);
+!
+! filesel->history_combo = gtk_combo_new();
+! gtk_widget_show(filesel->history_combo);
+! gtk_combo_set_value_in_list(GTK_COMBO(filesel->history_combo),FALSE,FALSE);
+! gtk_box_pack_start (GTK_BOX(pulldown_hbox),filesel->history_combo,
+! TRUE,TRUE, 0);
+! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->entry),"key-press-event",
+! (GtkSignalFunc) gtk_file_selection_history_combo_callback,
+! (gpointer) filesel);
+!
+! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->list),"button-press-event",
+! (GtkSignalFunc) gtk_file_selection_history_combo_list_callback,
+! (gpointer) filesel);
+!
+! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->list),"key-press-event",
+! (GtkSignalFunc) gtk_file_selection_history_combo_list_key_handler,
+! (gpointer) filesel);
+!
+! /* frame to put the following hbox in */
+! bigframe = gtk_frame_new (NULL);
+! gtk_widget_show (bigframe);
+! gtk_box_pack_start (GTK_BOX (filesel->main_vbox), bigframe, TRUE, TRUE, 0);
+!
+ /* The horizontal box containing the directory and file listboxes */
+ list_hbox = gtk_hbox_new (FALSE, 5);
+! gtk_container_add (GTK_CONTAINER(bigframe), list_hbox);
+! gtk_container_set_border_width (GTK_CONTAINER (list_hbox), 5);
+ gtk_widget_show (list_hbox);
+
++ /* vbox to put the buttons and directory listing in */
++ vbox = gtk_vbox_new (FALSE, 0);
++ gtk_widget_show (vbox);
++ gtk_box_pack_start (GTK_BOX (list_hbox), vbox, FALSE, FALSE, 0);
++
++ hbox = gtk_hbox_new (FALSE, 0);
++ gtk_widget_show (hbox);
++ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
++
++ home_button = gtk_button_new_with_label (_("Home"));
++ gtk_widget_show (home_button);
++ gtk_signal_connect (GTK_OBJECT (home_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_home_button,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox), home_button, TRUE,TRUE, 0);
++
++ prev_button = gtk_button_new_with_label (_("Prev"));
++ gtk_signal_connect (GTK_OBJECT (prev_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_prev_button,
++ (gpointer) filesel);
++ gtk_widget_show (prev_button);
++ gtk_box_pack_start (GTK_BOX (hbox), prev_button, TRUE,TRUE, 0);
++
++ up_button = gtk_button_new_with_label (_("Up"));
++ gtk_signal_connect (GTK_OBJECT (up_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_up_button,
++ (gpointer) filesel);
++ gtk_widget_show (up_button);
++ gtk_box_pack_start (GTK_BOX (hbox), up_button, TRUE,TRUE, 0);
++
++ next_button = gtk_button_new_with_label (_("Next"));
++ gtk_widget_show (next_button);
++ gtk_signal_connect (GTK_OBJECT (next_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_next_button,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox), next_button, TRUE,TRUE, 0);
++
++ refresh_button = gtk_button_new_with_label (_("Refresh"));
++ gtk_widget_show (refresh_button);
++ gtk_signal_connect (GTK_OBJECT (refresh_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_refresh_button,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox), refresh_button, TRUE, TRUE, 0);
++
+ /* The directories clist */
+ dir_title[0] = _("Directories");
+ dir_title[1] = NULL;
+ filesel->dir_list = gtk_clist_new_with_titles (1, (gchar**) dir_title);
+ gtk_widget_set_usize (filesel->dir_list, DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
+! (GtkSignalFunc) gtk_file_selection_dir_button,
+! (gpointer) filesel);
+! gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "unselect_row",
+! (GtkSignalFunc) gtk_file_selection_undir_button,
+ (gpointer) filesel);
+ gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+! gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE,TRUE, 5);
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
++ /* vbox area for mask entry and files clist */
++ vbox = gtk_vbox_new (FALSE, 0);
++ gtk_widget_show (vbox);
++ gtk_box_pack_start (GTK_BOX (list_hbox), vbox, TRUE, TRUE, 0);
++
++ hbox = gtk_hbox_new (FALSE, 5);
++ gtk_widget_show (hbox);
++ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
++
++ mask_label = gtk_label_new (_("Mask:"));
++ gtk_widget_show (mask_label);
++ gtk_box_pack_start (GTK_BOX (hbox), mask_label, FALSE, FALSE, 0);
++
++ filesel->mask_entry = gtk_entry_new ();
++ gtk_widget_show (filesel->mask_entry);
++ gtk_signal_connect(GTK_OBJECT(filesel->mask_entry),"activate",
++ (GtkSignalFunc) gtk_file_selection_mask_entry_callback,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox),filesel->mask_entry, TRUE, TRUE, 0);
++
++
+ /* The files clist */
+ file_title[0] = _("Files");
+ file_title[1] = NULL;
+ filesel->file_list = gtk_clist_new_with_titles (1, (gchar**) file_title);
+ gtk_widget_set_usize (filesel->file_list, FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+***************
+*** 445,456 ****
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ 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), 5);
+! gtk_box_pack_start (GTK_BOX (list_hbox), scrolled_win, TRUE, TRUE, 0);
+ 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);
+--- 659,669 ----
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ 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_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 5);
+ 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);
+***************
+*** 653,698 ****
+
+ void
+ gtk_file_selection_complete (GtkFileSelection *filesel,
+ const gchar *pattern)
+ {
+ g_return_if_fail (filesel != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
+ g_return_if_fail (pattern != NULL);
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
+! gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
+ }
+
+ static void
+ gtk_file_selection_destroy (GtkObject *object)
+ {
+ GtkFileSelection *filesel;
+ GList *list;
+- HistoryCallbackArg *callback_arg;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (object));
+
+ filesel = GTK_FILE_SELECTION (object);
+
+ if (filesel->fileop_dialog)
+! gtk_widget_destroy (filesel->fileop_dialog);
+
+! if (filesel->history_list)
+ {
+! list = filesel->history_list;
+ while (list)
+! {
+! callback_arg = list->data;
+! g_free (callback_arg->directory);
+! g_free (callback_arg);
+ list = list->next;
+! }
+! g_list_free (filesel->history_list);
+! filesel->history_list = NULL;
+ }
+
+ cmpl_free_state (filesel->cmpl_state);
+ filesel->cmpl_state = NULL;
+
+--- 866,949 ----
+
+ void
+ gtk_file_selection_complete (GtkFileSelection *filesel,
+ const gchar *pattern)
+ {
++ gchar *new_pattern;
++ gint x;
++
+ g_return_if_fail (filesel != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
+ g_return_if_fail (pattern != NULL);
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
+!
+! if(strchr(pattern,'*') || strchr(pattern,'?'))
+! {
+! for(x=strlen(pattern);x>=0;x--)
+! {
+! if(pattern[x]=='/') break;
+! }
+! gtk_entry_set_text(GTK_ENTRY(filesel->mask_entry),g_strdup(pattern+x+1));
+!
+! if(filesel->mask) g_free(filesel->mask);
+!
+! filesel->mask=g_strdup(pattern+x+1);
+! new_pattern=g_strdup(pattern);
+! new_pattern[x+1]=0;
+! gtk_file_selection_populate (filesel, (gchar*) new_pattern, TRUE);
+! g_free(new_pattern);
+! }
+! else
+! {
+! gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
+! }
+ }
+
+ static void
+ gtk_file_selection_destroy (GtkObject *object)
+ {
+ GtkFileSelection *filesel;
+ GList *list;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (object));
+
+ filesel = GTK_FILE_SELECTION (object);
+
+ if (filesel->fileop_dialog)
+! gtk_widget_destroy (filesel->fileop_dialog);
+
+! if (filesel->next_history)
+ {
+! list = filesel->next_history;
+ while (list)
+! {
+! g_free (list->data);
+ list = list->next;
+! }
+! }
+! g_list_free (filesel->next_history);
+! filesel->next_history = NULL;
+!
+! if (filesel->prev_history)
+! {
+! list = filesel->prev_history;
+! while (list)
+! {
+! g_free (list->data);
+! list = list->next;
+! }
+! }
+! g_list_free (filesel->prev_history);
+! filesel->prev_history = NULL;
+!
+! if (filesel->mask)
+! {
+! g_free (filesel->mask);
+! filesel->mask = NULL;
+ }
+
+ cmpl_free_state (filesel->cmpl_state);
+ filesel->cmpl_state = NULL;
+
+***************
+*** 1091,1103 ****
+ char *text;
+
+ g_return_val_if_fail (widget != NULL, FALSE);
+ g_return_val_if_fail (event != NULL, FALSE);
+
+ if (event->keyval == GDK_Tab)
+ {
+- fs = GTK_FILE_SELECTION (user_data);
+ text = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
+
+ text = g_strdup (text);
+
+ gtk_file_selection_populate (fs, text, TRUE);
+--- 1342,1355 ----
+ char *text;
+
+ g_return_val_if_fail (widget != NULL, FALSE);
+ g_return_val_if_fail (event != NULL, FALSE);
+
++ fs = GTK_FILE_SELECTION (user_data);
++
+ if (event->keyval == GDK_Tab)
+ {
+ text = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
+
+ text = g_strdup (text);
+
+ gtk_file_selection_populate (fs, text, TRUE);
+***************
+*** 1106,1217 ****
+
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
+
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+
+
+ static void
+! gtk_file_selection_history_callback (GtkWidget *widget, gpointer data)
+! {
+ GtkFileSelection *fs = data;
+- HistoryCallbackArg *callback_arg;
+ GList *list;
+
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+! list = fs->history_list;
+!
+! while (list) {
+! callback_arg = list->data;
+!
+! if (callback_arg->menu_item == widget)
+! {
+! gtk_file_selection_populate (fs, callback_arg->directory, FALSE);
+! break;
+! }
+!
+! list = list->next;
+! }
+ }
+
+! static void
+! gtk_file_selection_update_history_menu (GtkFileSelection *fs,
+! gchar *current_directory)
+! {
+! HistoryCallbackArg *callback_arg;
+! GtkWidget *menu_item;
+ GList *list;
+! gchar *current_dir;
+! gint dir_len;
+! gint i;
+!
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+- g_return_if_fail (current_directory != NULL);
+-
+- list = fs->history_list;
+
+! if (fs->history_menu)
+ {
+! while (list) {
+! callback_arg = list->data;
+! g_free (callback_arg->directory);
+! g_free (callback_arg);
+! list = list->next;
+! }
+! g_list_free (fs->history_list);
+! fs->history_list = NULL;
+
+- gtk_widget_destroy (fs->history_menu);
+ }
+!
+! fs->history_menu = gtk_menu_new();
+
+! current_dir = g_strdup (current_directory);
+
+! dir_len = strlen (current_dir);
+
+! for (i = dir_len; i >= 0; i--)
+ {
+! /* the i == dir_len is to catch the full path for the first
+! * entry. */
+! if ( (current_dir[i] == '/') || (i == dir_len))
+! {
+! /* another small hack to catch the full path */
+! if (i != dir_len)
+! current_dir[i + 1] = '\0';
+! menu_item = gtk_menu_item_new_with_label (current_dir);
+!
+! callback_arg = g_new (HistoryCallbackArg, 1);
+! callback_arg->menu_item = menu_item;
+!
+! /* since the autocompletion gets confused if you don't
+! * supply a trailing '/' on a dir entry, set the full
+! * (current) path to "" which just refreshes the filesel */
+! if (dir_len == i) {
+! callback_arg->directory = g_strdup ("");
+! } else {
+! callback_arg->directory = g_strdup (current_dir);
+! }
+!
+! fs->history_list = g_list_append (fs->history_list, callback_arg);
+!
+! gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
+! (GtkSignalFunc) gtk_file_selection_history_callback,
+! (gpointer) fs);
+! gtk_menu_append (GTK_MENU (fs->history_menu), menu_item);
+! gtk_widget_show (menu_item);
+ }
+ }
+
+! gtk_option_menu_set_menu (GTK_OPTION_MENU (fs->history_pulldown),
+! fs->history_menu);
+ g_free (current_dir);
+ }
+
+ static void
+ gtk_file_selection_file_button (GtkWidget *widget,
+--- 1358,1617 ----
+
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
+
+ return TRUE;
+ }
++ if (fs->saved_entry)
++ {
++ gtk_clist_unselect_all ((GtkCList *) (fs->dir_list));
++ gtk_entry_set_text(GTK_ENTRY(fs->selection_entry),fs->saved_entry);
++ g_free (fs->saved_entry);
++ fs->saved_entry = NULL;
++ }
++
+
+ return FALSE;
+ }
+
++ static void
++ gtk_file_selection_home_button (GtkWidget *widget, gpointer data){
++ GList *list;
++
++ GtkFileSelection *fs=data;
++
++ list = fs->next_history;
++ if (list)
++ {
++ g_free (list->data);
++ list = list->next;
++ }
++ g_list_free (fs->next_history);
++ fs->next_history = NULL;
++
++ gtk_file_selection_populate (fs,"~/",FALSE);
++ }
+
+ static void
+! gtk_file_selection_up_button (GtkWidget *widget, gpointer data){
+ GtkFileSelection *fs = data;
+ GList *list;
+
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+! list = fs->next_history;
+! if (list)
+! {
+! g_free (list->data);
+! list = list->next;
+! }
+! g_list_free (fs->next_history);
+! fs->next_history = NULL;
+!
+! gtk_file_selection_populate (fs, "../", FALSE); /*change directories. */
+!
+ }
+
+! static void
+! gtk_file_selection_prev_button (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+ GList *list;
+! GList *first;
+! gchar *path;
+!
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+! list = fs->prev_history;
+!
+! if (list && g_list_length(list) > 1)
+ {
+! first = list; /* get first element */
+! list = list->next; /* pop off current directory */
+!
+! list->prev = NULL; /* make this the new head. */
+!
+! fs->prev_history = list; /* update prev_history list */
+! fs->next_history = g_list_prepend(fs->next_history,first->data); /* put it on next_history */
+!
+! first->next = NULL; /* orphan the old first node */
+! g_list_free (first); /* free the node (data is now in use by next_history) */
+!
+!
+!
+! path = g_malloc(strlen(list->data)+4); /* plenty of space */
+! strcpy(path,list->data); /* get the 2nd path in the history */
+! strcat(path,"/"); /* append a '/' */
+! gtk_file_selection_populate (fs, path, FALSE); /* change directories. */
+! g_free (path);
+! }
+! }
+!
+! static void
+! gtk_file_selection_next_button (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+! GList *list;
+! GList *first;
+! gchar *path;
+!
+! g_return_if_fail (fs != NULL);
+! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+!
+! list = fs->next_history;
+!
+! if (list && g_list_length(list) > 0)
+! {
+! first = list; /*get first element*/
+! list = list->next; /*pop off current directory*/
+!
+! if (list)
+! list->prev = NULL;
+!
+! fs->next_history = list; /*update prev_history list*/
+!
+! path = g_malloc(strlen(first->data)+4); /*plenty of space*/
+! strcpy(path,first->data);
+! strcat(path,"/"); /*append a / */
+! gtk_file_selection_populate (fs, path, FALSE); /*change directories.*/
+! g_free(path);
+!
+! first->next = NULL; /* orphan the old first node */
+! g_list_free (first); /* free the node (data is now in use by next_history) */
+
+ }
+! }
+
+! void static
+! gtk_file_selection_refresh_button (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+
+! g_return_if_fail (fs != NULL);
+! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+!
+! gtk_file_selection_populate (fs,"",FALSE);
+! }
+
+! static void
+! gtk_file_selection_mask_entry_callback (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+!
+! if(fs->mask)
+! g_free (fs->mask);
+!
+! fs->mask = g_strdup(gtk_entry_get_text (GTK_ENTRY(fs->mask_entry)));
+!
+! if (strlen(fs->mask) == 0)
+ {
+! g_free (fs->mask);
+! fs->mask = NULL;
+! }
+!
+! gtk_file_selection_refresh_button (widget,data);
+! }
+!
+! static gboolean gtk_file_selection_history_combo_list_key_handler(GtkWidget *widget,
+! GdkEventKey *event,
+! gpointer user_data)
+! {
+! /*
+! g_print("Key pressed! \n");
+! */
+!
+! return TRUE;
+! }
+!
+! static gboolean gtk_file_selection_history_combo_list_callback (GtkWidget *thelist,
+! GdkEventButton *event,
+! gpointer user_data)
+! {
+!
+! GtkFileSelection *fs = user_data;
+! GList *list;
+! gchar *path;
+!
+! list = fs->next_history;
+! if(list)
+! {
+! g_free (list->data);
+! list = list->next;
+! }
+! g_list_free (fs->next_history);
+! fs->next_history = NULL;
+!
+! path = g_malloc(strlen(gtk_entry_get_text(GTK_ENTRY (((GtkCombo *)fs->history_combo)->entry)))+4);
+! strcpy (path,gtk_entry_get_text(GTK_ENTRY( ((GtkCombo *)fs->history_combo)->entry)));
+! strcat (path,"/");
+!
+! gtk_file_selection_populate (fs,path,TRUE);
+!
+! g_free (path);
+!
+! return TRUE;
+! }
+!
+! static gboolean
+! gtk_file_selection_history_combo_callback (GtkWidget *widget, GdkEventKey *event, gpointer data)
+! {
+! GtkEntry *entry=(GtkEntry *)widget;
+! GtkFileSelection *fs=data;
+! GList *list;
+! gchar *path;
+!
+! g_return_val_if_fail (fs != NULL,FALSE);
+! g_return_val_if_fail (GTK_IS_FILE_SELECTION (fs),FALSE);
+!
+!
+! if (event->keyval == GDK_Return)
+! {
+! list = fs->next_history;
+! if (list)
+! {
+! g_free (list->data);
+! list = list->next;
+ }
++ g_list_free (fs->next_history);
++ fs->next_history = NULL;
++
++ path = g_malloc(strlen(gtk_entry_get_text(entry))+4);
++ strcpy (path,gtk_entry_get_text(entry));
++ strcat (path,"/");
++ gtk_file_selection_populate (fs,path,TRUE);
++ g_free (path);
++ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
++ return TRUE;
+ }
++ else
++ {
++ return FALSE;
++ }
++
++ }
++
++ static void
++ gtk_file_selection_update_history_menu (GtkFileSelection *fs,
++ gchar *current_directory)
++ {
++ gchar *current_dir;
+
+! g_return_if_fail (fs != NULL);
+! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+! g_return_if_fail (current_directory != NULL);
+!
+! current_dir = g_strdup (current_directory);
+!
+! if(fs->prev_history)
+! {
+! if (strcmp((fs->prev_history)->data,current_dir))
+! { /*if this item isn't on the top of the list */
+! fs->prev_history = g_list_prepend(fs->prev_history,g_strdup(current_dir));
+! }
+! } else {
+! fs->prev_history = g_list_prepend(fs->prev_history,g_strdup(current_dir));
+! }
+!
+! gtk_combo_set_popdown_strings (GTK_COMBO (fs->history_combo),fs->prev_history);
+!
+ g_free (current_dir);
+ }
+
+ static void
+ gtk_file_selection_file_button (GtkWidget *widget,
+***************
+*** 1245,1255 ****
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+!
+ g_free (filename);
+ }
+ }
+
+ static void
+--- 1645,1655 ----
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+!
+ g_free (filename);
+ }
+ }
+
+ static void
+***************
+*** 1257,1266 ****
+--- 1657,1667 ----
+ gint row,
+ gint column,
+ GdkEventButton *bevent,
+ gpointer user_data)
+ {
++ GList *list;
+ GtkFileSelection *fs = NULL;
+ gchar *filename, *temp = NULL;
+
+ g_return_if_fail (GTK_IS_CLIST (widget));
+
+***************
+*** 1275,1293 ****
+ {
+ if (bevent)
+ switch (bevent->type)
+ {
+ case GDK_2BUTTON_PRESS:
+ gtk_file_selection_populate (fs, filename, FALSE);
+ break;
+!
+ default:
+! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+
+ g_free (filename);
+ }
+ }
+
+--- 1676,1758 ----
+ {
+ if (bevent)
+ switch (bevent->type)
+ {
+ case GDK_2BUTTON_PRESS:
++ list = fs->next_history;
++ if (list)
++ {
++ g_free (list->data);
++ list = list->next;
++ }
++ g_list_free (fs->next_history);
++ fs->next_history = NULL;
++
+ gtk_file_selection_populate (fs, filename, FALSE);
++ gtk_entry_set_text(GTK_ENTRY(fs->selection_entry),fs->saved_entry);
++ g_free (fs->saved_entry);
++ fs->saved_entry = NULL;
+ break;
+!
+ default:
+! /* here we need to add the "filename" to the beginning of what's already
+! in the entry. Save what's in the entry, then restore it on the double click
+! */
+! if (fs->saved_entry) g_free (fs->saved_entry);
+! fs->saved_entry=g_strdup(gtk_entry_get_text(GTK_ENTRY (fs->selection_entry)));
+!
+! temp=g_strconcat(filename,fs->saved_entry,NULL);
+! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), temp);
+! g_free (temp);
+!
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
++
++ g_free (filename);
++ }
++ }
++
++ static void
++ gtk_file_selection_undir_button (GtkWidget *widget,
++ gint row,
++ gint column,
++ GdkEventButton *bevent,
++ gpointer user_data)
++ {
++ GtkFileSelection *fs = NULL;
++ gchar *filename, *temp = NULL;
++
++ g_return_if_fail (GTK_IS_CLIST (widget));
++
++ fs = GTK_FILE_SELECTION (user_data);
++ g_return_if_fail (fs != NULL);
++ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
++
++ gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp);
++ filename = g_strdup (temp);
++
++ if (filename)
++ {
++ if (bevent)
++ switch (bevent->type)
++ {
++ default:
++ /* here we need to add the "filename" to the beginning of what's already
++ in the entry. Save what's in the entry, then restore it on the double click
++ */
++ if (fs->saved_entry)
++ {
++ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry),fs->saved_entry);
++ g_free (fs->saved_entry);
++ fs->saved_entry = NULL;
++ }
++ break;
++ }
++ else
++ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename); //?????
+
+ g_free (filename);
+ }
+ }
+
+***************
+*** 1344,1388 ****
+ gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,file_list_width);
+
+ while (poss)
+ {
+ if (cmpl_is_a_completion (poss))
+! {
+! possible_count += 1;
+!
+! filename = cmpl_this_completion (poss);
+
+ text[0] = filename;
+
+! if (cmpl_is_directory (poss))
+! {
+! if (strcmp (filename, "./") != 0 &&
+! strcmp (filename, "../") != 0)
+ {
+ int width = gdk_string_width(fs->dir_list->style->font,
+ filename);
+ row = gtk_clist_append (GTK_CLIST (fs->dir_list), text);
+ if(width > dir_list_width)
+ {
+ dir_list_width = width;
+ gtk_clist_set_column_width(GTK_CLIST(fs->dir_list),0,
+ width);
+ }
+! }
+ }
+! else
+ {
+! int width = gdk_string_width(fs->file_list->style->font,
+! filename);
+! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
+! if(width > file_list_width)
+! {
+! file_list_width = width;
+! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
+! width);
+! }
+! }
+ }
+
+ poss = cmpl_next_completion (cmpl_state);
+ }
+
+--- 1809,1871 ----
+ gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,file_list_width);
+
+ while (poss)
+ {
+ if (cmpl_is_a_completion (poss))
+! {
+! possible_count += 1;
+!
+! filename = cmpl_this_completion (poss);
+
+ text[0] = filename;
+
+! if (cmpl_is_directory (poss))
+! {
+! if (strcmp (filename, "./") != 0 &&
+! strcmp (filename, "../") != 0)
+ {
+ int width = gdk_string_width(fs->dir_list->style->font,
+ filename);
+ row = gtk_clist_append (GTK_CLIST (fs->dir_list), text);
+ if(width > dir_list_width)
+ {
+ dir_list_width = width;
+ gtk_clist_set_column_width(GTK_CLIST(fs->dir_list),0,
+ width);
+ }
+! }
+ }
+! else
+ {
+! if(fs->mask)
+! {
+! if (gtk_file_selection_match_mask(filename,fs->mask))
+! {
+! int width = gdk_string_width(fs->file_list->style->font,
+! filename);
+! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
+! if(width > file_list_width)
+! {
+! file_list_width = width;
+! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
+! width);
+! }
+! }
+! }
+! else
+! {
+! int width = gdk_string_width(fs->file_list->style->font,
+! filename);
+! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
+! if(width > file_list_width)
+! {
+! file_list_width = width;
+! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
+! width);
+! }
+! }
+! }
+ }
+
+ poss = cmpl_next_completion (cmpl_state);
+ }
+
+***************
+*** 1430,1440 ****
+ }
+ }
+ else
+ {
+ if (fs->selection_entry)
+! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
+ }
+
+ if (!did_recurse)
+ {
+ if (fs->selection_entry)
+--- 1913,1925 ----
+ }
+ }
+ else
+ {
+ if (fs->selection_entry)
+! /* Here we need to take the old filename and keep it!*/
+! /*gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");*/
+! ;
+ }
+
+ if (!did_recurse)
+ {
+ if (fs->selection_entry)
+***************
+*** 1448,1462 ****
+
+ gtk_label_set_text (GTK_LABEL (fs->selection_text), sel_text);
+ g_free (sel_text);
+ }
+
+! if (fs->history_pulldown)
+! {
+! gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
+! }
+!
+ }
+ }
+
+ static void
+ gtk_file_selection_abort (GtkFileSelection *fs)
+--- 1933,1944 ----
+
+ gtk_label_set_text (GTK_LABEL (fs->selection_text), sel_text);
+ g_free (sel_text);
+ }
+
+! gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
+!
+ }
+ }
+
+ static void
+ gtk_file_selection_abort (GtkFileSelection *fs)
+***************
+*** 2758,2762 ****
+--- 3240,3306 ----
+ if(err == CMPL_ERRNO_TOO_LONG)
+ return "Name too long";
+ else
+ return g_strerror (err);
+ }
++
++
++ /* Testing area */
++ #ifdef TORRIE_DEBUG
++
++ /* Get the selected filename and print it to the console */
++ void file_ok_sel( GtkWidget *w,
++ GtkFileSelection *fs )
++ {
++ g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
++ }
++
++ void destroy( GtkWidget *widget,
++ gpointer data )
++ {
++ gtk_main_quit ();
++ }
++
++ int main( int argc,
++ char *argv[] )
++ {
++ GtkWidget *filew;
++
++ gtk_init (&argc, &argv);
++
++ /* Create a new file selection widget */
++ filew = gtk_file_selection_new ("Michael's Glorious File Selector");
++ // gtk_file_selection_complete(GTK_FILE_SELECTION(filew),"bob");
++
++
++ gtk_signal_connect (GTK_OBJECT (filew), "destroy",
++ (GtkSignalFunc) destroy, &filew);
++ /* Connect the ok_button to file_ok_sel function */
++ gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
++ "clicked", (GtkSignalFunc) file_ok_sel, filew );
++
++ /* Connect the cancel_button to destroy the widget */
++ gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION
++ (filew)->cancel_button),
++ "clicked", (GtkSignalFunc) gtk_widget_destroy,
++ GTK_OBJECT (filew));
++
++
++ gtk_widget_show(filew);
++
++ /*
++ g_print("%d",gtk_file_selection_match_mask("mask.c","m*.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.c","m???.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.c","m??*.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c???"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c*"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","n*.c???"));
++ g_print("%d",gtk_file_selection_match_mask("mask.c","[mn]*"));
++ g_print("%d",gtk_file_selection_match_mask("COPYING","*.xpm"));
++ */
++ gtk_main ();
++
++ return 0;
++ }
++ /* example-end */
++ #endif
diff --git a/x11-libs/gtk+/files/gtk+-1.2.9-be.patch b/x11-libs/gtk+/files/gtk+-1.2.9-be.patch
new file mode 100644
index 0000000..7fde598
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.9-be.patch
@@ -0,0 +1,506 @@
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.am gtk+-1.2.9/gtk/Makefile.am
+--- gtk+-1.2.9.orig/gtk/Makefile.am Fri Feb 2 20:09:02 2001
++++ gtk+-1.2.9/gtk/Makefile.am Sat Mar 3 02:14:27 2001
+@@ -374,7 +374,7 @@
+
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
++gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
+ gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
+ gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+ gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.in gtk+-1.2.9/gtk/Makefile.in
+--- gtk+-1.2.9.orig/gtk/Makefile.in Fri Mar 2 22:49:26 2001
++++ gtk+-1.2.9/gtk/Makefile.in Sat Mar 3 02:14:50 2001
+@@ -191,7 +191,7 @@
+ CLEANFILES = $(gen_sources)
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+
+
+ #
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.be gtk+-1.2.9/gtk/gtkrc.be
+--- gtk+-1.2.9.orig/gtk/gtkrc.be Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.be Sat Mar 3 02:11:56 2001
+@@ -0,0 +1,8 @@
++style "gtk-default-cp1251" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*"
++}
++class "GtkWidget" style "gtk-default-cp1251"
++
+diff -urN gtk+-1.2.9.orig/po/be.po gtk+-1.2.9/po/be.po
+--- gtk+-1.2.9.orig/po/be.po Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/po/be.po Sat Mar 3 02:11:56 2001
+@@ -0,0 +1,466 @@
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) 1999 Free Software Foundation, Inc.
++# Sergey Panov <sipan@mit.edu>, 1999.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: gtk+ 1.3.0\n"
++"POT-Creation-Date: 2000-05-19 07:11+0200\n"
++"PO-Revision-Date: 1999-10-05 00:56-0400\n"
++"Last-Translator: Sergey Panov <sipan@mit.edu>\n"
++"Language-Team: Russian <ru@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=cp1251\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: gtk/gtkcolorsel.c:221
++msgid "Hue:"
++msgstr "Тон:"
++
++#: gtk/gtkcolorsel.c:222
++msgid "Saturation:"
++msgstr "Насыщенность:"
++
++#: gtk/gtkcolorsel.c:223
++msgid "Value:"
++msgstr "Значение:"
++
++#: gtk/gtkcolorsel.c:224
++msgid "Red:"
++msgstr "Красный:"
++
++#: gtk/gtkcolorsel.c:225
++msgid "Green:"
++msgstr "Зеленый:"
++
++#: gtk/gtkcolorsel.c:226
++msgid "Blue:"
++msgstr "Синий:"
++
++#: gtk/gtkcolorsel.c:227
++msgid "Opacity:"
++msgstr "Плотность:"
++
++#. The OK button
++#: gtk/gtkcolorsel.c:1727 gtk/gtkfilesel.c:469 gtk/gtkfontsel.c:3492
++#: gtk/gtkgamma.c:416
++msgid "OK"
++msgstr "OK"
++
++#. The Cancel button
++#: gtk/gtkcolorsel.c:1733 gtk/gtkfilesel.c:476 gtk/gtkfilesel.c:856
++#: gtk/gtkfilesel.c:956 gtk/gtkfilesel.c:1071 gtk/gtkfontsel.c:3505
++#: gtk/gtkgamma.c:424
++msgid "Cancel"
++msgstr "Отменить"
++
++#: gtk/gtkcolorsel.c:1738
++msgid "Help"
++msgstr "Справка"
++
++#. The directories clist
++#: gtk/gtkfilesel.c:418
++msgid "Directories"
++msgstr "Каталоги"
++
++#. The files clist
++#: gtk/gtkfilesel.c:437
++msgid "Files"
++msgstr "Файлы"
++
++#: gtk/gtkfilesel.c:507 gtk/gtkfilesel.c:1466
++#, c-format
++msgid "Directory unreadable: %s"
++msgstr "Каталог не читаем: %s"
++
++#: gtk/gtkfilesel.c:539
++msgid "Create Dir"
++msgstr "Создать каталог"
++
++#: gtk/gtkfilesel.c:550 gtk/gtkfilesel.c:925
++msgid "Delete File"
++msgstr "Удалить файл"
++
++#: gtk/gtkfilesel.c:561 gtk/gtkfilesel.c:1029
++msgid "Rename File"
++msgstr "Переименовать файл"
++
++#.
++#. gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
++#. (GtkSignalFunc) gtk_file_selection_fileop_destroy,
++#. (gpointer) fs);
++#.
++#: gtk/gtkfilesel.c:722
++msgid "Error"
++msgstr "Ошибка"
++
++#. close button
++#: gtk/gtkfilesel.c:745 gtk/gtkinputdialog.c:354
++msgid "Close"
++msgstr "Закрыть"
++
++#: gtk/gtkfilesel.c:820
++msgid "Create Directory"
++msgstr "Создать каталог"
++
++#: gtk/gtkfilesel.c:834
++msgid "Directory name:"
++msgstr "Имя каталога:"
++
++#. buttons
++#: gtk/gtkfilesel.c:847
++msgid "Create"
++msgstr "Создать"
++
++#. buttons
++#: gtk/gtkfilesel.c:947
++msgid "Delete"
++msgstr "Удалить"
++
++#. buttons
++#: gtk/gtkfilesel.c:1062
++msgid "Rename"
++msgstr "Переименовать"
++
++#: gtk/gtkfilesel.c:1445
++msgid "Selection: "
++msgstr "Выбор: "
++
++#: gtk/gtkfontsel.c:210
++msgid "Foundry:"
++msgstr "Коллекция:"
++
++#: gtk/gtkfontsel.c:211
++msgid "Family:"
++msgstr "Семейство:"
++
++#: gtk/gtkfontsel.c:212
++msgid "Weight:"
++msgstr "Насыщенность:"
++
++#: gtk/gtkfontsel.c:213
++msgid "Slant:"
++msgstr "Наклон:"
++
++#: gtk/gtkfontsel.c:214
++msgid "Set Width:"
++msgstr "Ширина:"
++
++#: gtk/gtkfontsel.c:215
++msgid "Add Style:"
++msgstr "Дополнительный стиль:"
++
++#: gtk/gtkfontsel.c:216
++msgid "Pixel Size:"
++msgstr "Размер в пикселах:"
++
++#: gtk/gtkfontsel.c:217
++msgid "Point Size:"
++msgstr "Поточечный размер:"
++
++#: gtk/gtkfontsel.c:218
++msgid "Resolution X:"
++msgstr "Разрешение по X:"
++
++#: gtk/gtkfontsel.c:219
++msgid "Resolution Y:"
++msgstr "Разрешение по Y:"
++
++#: gtk/gtkfontsel.c:220
++msgid "Spacing:"
++msgstr "Пропорциональность:"
++
++#: gtk/gtkfontsel.c:221
++msgid "Average Width:"
++msgstr "Средняя ширина:"
++
++#: gtk/gtkfontsel.c:222
++msgid "Charset:"
++msgstr "Кодировка:"
++
++#. Number of internationalized titles here must match number
++#. of NULL initializers above
++#: gtk/gtkfontsel.c:459
++msgid "Font Property"
++msgstr "Свойства шрифта"
++
++#: gtk/gtkfontsel.c:460
++msgid "Requested Value"
++msgstr "Запрошенное значение"
++
++#: gtk/gtkfontsel.c:461
++msgid "Actual Value"
++msgstr "Настоящее значение"
++
++#: gtk/gtkfontsel.c:494
++msgid "Font"
++msgstr "Шрифт"
++
++#: gtk/gtkfontsel.c:504 gtk/gtkfontsel.c:2181 gtk/gtkfontsel.c:2411
++msgid "Font:"
++msgstr "Шрифт:"
++
++#: gtk/gtkfontsel.c:509
++msgid "Font Style:"
++msgstr "Стиль шрифта:"
++
++#: gtk/gtkfontsel.c:514
++msgid "Size:"
++msgstr "Размер:"
++
++#: gtk/gtkfontsel.c:646 gtk/gtkfontsel.c:868
++msgid "Reset Filter"
++msgstr "Переустановить фильтр"
++
++#: gtk/gtkfontsel.c:660
++msgid "Metric:"
++msgstr "Метрика:"
++
++#: gtk/gtkfontsel.c:664
++msgid "Points"
++msgstr "Точек"
++
++#: gtk/gtkfontsel.c:671
++msgid "Pixels"
++msgstr "Пиксел"
++
++#. create the text entry widget
++#: gtk/gtkfontsel.c:687
++msgid "Preview:"
++msgstr "Пример:"
++
++#: gtk/gtkfontsel.c:716
++msgid "Font Information"
++msgstr "Информация о шрифте"
++
++#: gtk/gtkfontsel.c:749
++msgid "Requested Font Name:"
++msgstr "Запрошенное имя шрифта:"
++
++#: gtk/gtkfontsel.c:760
++msgid "Actual Font Name:"
++msgstr "Настоящее имя шрифта:"
++
++#: gtk/gtkfontsel.c:771
++#, c-format
++msgid "%i fonts available with a total of %i styles."
++msgstr "имеется %i шрифтов в %i стилях."
++
++#: gtk/gtkfontsel.c:786
++msgid "Filter"
++msgstr "Фильтр"
++
++#: gtk/gtkfontsel.c:799
++msgid "Font Types:"
++msgstr "Типы шрифтов:"
++
++#: gtk/gtkfontsel.c:807
++msgid "Bitmap"
++msgstr "Растр"
++
++#: gtk/gtkfontsel.c:813
++msgid "Scalable"
++msgstr "Масштабируемый"
++
++#: gtk/gtkfontsel.c:819
++msgid "Scaled Bitmap"
++msgstr "Масштабированный растр"
++
++#: gtk/gtkfontsel.c:890
++msgid "*"
++msgstr "*"
++
++#. Convert '(nil)' weights to 'regular', since it looks nicer.
++#: gtk/gtkfontsel.c:1215
++msgid "(nil)"
++msgstr "(nil)"
++
++#: gtk/gtkfontsel.c:1215
++msgid "regular"
++msgstr "прямой"
++
++#: gtk/gtkfontsel.c:1220 gtk/gtkfontsel.c:1973
++msgid "italic"
++msgstr "курсив"
++
++#: gtk/gtkfontsel.c:1221 gtk/gtkfontsel.c:1974
++msgid "oblique"
++msgstr "наклонный"
++
++#: gtk/gtkfontsel.c:1222 gtk/gtkfontsel.c:1975
++msgid "reverse italic"
++msgstr "обратный курсив"
++
++#: gtk/gtkfontsel.c:1223 gtk/gtkfontsel.c:1976
++msgid "reverse oblique"
++msgstr "обратный наклонный"
++
++#: gtk/gtkfontsel.c:1224 gtk/gtkfontsel.c:1977
++msgid "other"
++msgstr "другие"
++
++#: gtk/gtkfontsel.c:1231
++msgid "[M]"
++msgstr "[M]"
++
++#: gtk/gtkfontsel.c:1232
++msgid "[C]"
++msgstr "[C]"
++
++#: gtk/gtkfontsel.c:1793
++msgid "The selected font is not available."
++msgstr "Выбранный шрифт недоступен."
++
++#: gtk/gtkfontsel.c:1799
++msgid "The selected font is not a valid font."
++msgstr "Выбран неправильный шрифт."
++
++#: gtk/gtkfontsel.c:1857
++msgid "This is a 2-byte font and may not be displayed correctly."
++msgstr "Это 2-х байтный шрифт, возможны проблемы с начертанием."
++
++#: gtk/gtkfontsel.c:1961 gtk/gtkinputdialog.c:607
++msgid "(unknown)"
++msgstr "(неизвестен)"
++
++#: gtk/gtkfontsel.c:1972
++msgid "roman"
++msgstr "прямой"
++
++#: gtk/gtkfontsel.c:1984
++msgid "proportional"
++msgstr "пропорциональный"
++
++#: gtk/gtkfontsel.c:1985
++msgid "monospaced"
++msgstr "моноширинный"
++
++#: gtk/gtkfontsel.c:1986
++msgid "char cell"
++msgstr "char cell"
++
++#: gtk/gtkfontsel.c:2186
++msgid "Font: (Filter Applied)"
++msgstr "Шрифт: (Отфильтрован)"
++
++#: gtk/gtkfontsel.c:2662
++msgid "MAX_FONTS exceeded. Some fonts may be missing."
++msgstr "MAX_FONTS превышен. Некоторые шрифты могут отсутствовать."
++
++#: gtk/gtkfontsel.c:3499
++msgid "Apply"
++msgstr "Применить"
++
++#: gtk/gtkfontsel.c:3521
++msgid "Font Selection"
++msgstr "Выбор шрифта"
++
++#: gtk/gtkgamma.c:396
++msgid "Gamma"
++msgstr "Гамма"
++
++#: gtk/gtkgamma.c:403
++msgid "Gamma value"
++msgstr "Гамма величина"
++
++#. shell and main vbox
++#: gtk/gtkinputdialog.c:200
++msgid "Input"
++msgstr "Ввод"
++
++#: gtk/gtkinputdialog.c:208
++msgid "No input devices"
++msgstr "Нет устройства ввода"
++
++#: gtk/gtkinputdialog.c:237
++msgid "Device:"
++msgstr "Устройство:"
++
++#: gtk/gtkinputdialog.c:253
++msgid "Disabled"
++msgstr "Выключен"
++
++#: gtk/gtkinputdialog.c:261
++msgid "Screen"
++msgstr "Экран"
++
++#: gtk/gtkinputdialog.c:269
++msgid "Window"
++msgstr "Окно"
++
++#: gtk/gtkinputdialog.c:277
++msgid "Mode: "
++msgstr "Режим: "
++
++#. The axis listbox
++#: gtk/gtkinputdialog.c:307
++msgid "Axes"
++msgstr "Оси"
++
++#. Keys listbox
++#: gtk/gtkinputdialog.c:323
++msgid "Keys"
++msgstr "Клавиши"
++
++#. We create the save button in any case, so that clients can
++#. connect to it, without paying attention to whether it exits
++#: gtk/gtkinputdialog.c:345
++msgid "Save"
++msgstr "Сохранить"
++
++#: gtk/gtkinputdialog.c:500
++msgid "X"
++msgstr "X"
++
++#: gtk/gtkinputdialog.c:501
++msgid "Y"
++msgstr "Y"
++
++#: gtk/gtkinputdialog.c:502
++msgid "Pressure"
++msgstr "Нажим"
++
++#: gtk/gtkinputdialog.c:503
++msgid "X Tilt"
++msgstr "Наклон X"
++
++#: gtk/gtkinputdialog.c:504
++msgid "Y Tilt"
++msgstr "Наклон Y"
++
++#: gtk/gtkinputdialog.c:544
++msgid "none"
++msgstr "нет"
++
++#: gtk/gtkinputdialog.c:578 gtk/gtkinputdialog.c:614
++msgid "(disabled)"
++msgstr "(отменен)"
++
++#. and clear button
++#: gtk/gtkinputdialog.c:692
++msgid "clear"
++msgstr "очистить"
++
++#: gtk/gtknotebook.c:2059 gtk/gtknotebook.c:4131
++#, c-format
++msgid "Page %u"
++msgstr "Страница %u"
++
++#: gtk/gtkrc.c:1702
++#, c-format
++msgid "Unable to locate image file in pixmap_path: \"%s\" line %d"
++msgstr "Файл с изображением не найден в pixmap_path: \"%s\", строка %d"
++
++#: gtk/gtkrc.c:1705
++#, c-format
++msgid "Unable to locate image file in pixmap_path: \"%s\""
++msgstr "Файл с изображением не найден в pixmap_path: \"%s\""
++
++#: gtk/gtkthemes.c:79
++#, c-format
++msgid "Unable to locate loadable module in module_path: \"%s\","
++msgstr "Загружаемый модуль не найден в module_path: \"%s\","
++
++#: gtk/gtktipsquery.c:180
++msgid "--- No Tip ---"
++msgstr "--- Нет подсказки ---"
diff --git a/x11-libs/gtk+/files/gtk+-1.2.9-rc.patch b/x11-libs/gtk+/files/gtk+-1.2.9-rc.patch
new file mode 100644
index 0000000..8702443
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.9-rc.patch
@@ -0,0 +1,105 @@
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.am gtk+-1.2.9/gtk/Makefile.am
+--- gtk+-1.2.9.orig/gtk/Makefile.am Sat Mar 3 02:19:46 2001
++++ gtk+-1.2.9/gtk/Makefile.am Sat Mar 3 02:18:16 2001
+@@ -375,11 +375,13 @@
+
+ gtkconfdir = $(sysconfdir)/gtk
+ gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
+- gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
++ gtkrc.ko gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
+ gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+ gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+ gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps \
+- gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++ gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255 \
++ gtkrc.ru_RU.koi8r gtkrc.ru_RU.cp1251 gtkrc.ru_RU.pt154
++
+
+ # We create a dummy theme for the default GTK+ theme
+ install-data-local:
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.in gtk+-1.2.9/gtk/Makefile.in
+--- gtk+-1.2.9.orig/gtk/Makefile.in Sat Mar 3 02:19:46 2001
++++ gtk+-1.2.9/gtk/Makefile.in Sat Mar 3 02:19:07 2001
+@@ -191,7 +191,7 @@
+ CLEANFILES = $(gen_sources)
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru_RU.koi8r gtkrc.ru_RU.cp1251 gtkrc.ru_RU.pt154 gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+
+
+ #
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.be gtk+-1.2.9/gtk/gtkrc.be
+--- gtk+-1.2.9.orig/gtk/gtkrc.be Sat Mar 3 02:19:46 2001
++++ gtk+-1.2.9/gtk/gtkrc.be Sat Mar 3 02:16:54 2001
+@@ -1,8 +1,6 @@
+ style "gtk-default-cp1251" {
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*"
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251"
+ }
+ class "GtkWidget" style "gtk-default-cp1251"
+
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru gtk+-1.2.9/gtk/gtkrc.ru
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru Mon May 8 22:49:18 2000
++++ gtk+-1.2.9/gtk/gtkrc.ru Thu Jan 1 03:00:00 1970
+@@ -1,8 +0,0 @@
+-style "gtk-default-ru" {
+- fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -cronyx-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-ru"
+-
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.cp1251 gtk+-1.2.9/gtk/gtkrc.ru_RU.cp1251
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.cp1251 Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.ru_RU.cp1251 Sat Mar 3 02:16:54 2001
+@@ -0,0 +1,6 @@
++style "gtk-default-cp1251" {
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251"
++}
++class "GtkWidget" style "gtk-default-cp1251"
++
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.koi8r gtk+-1.2.9/gtk/gtkrc.ru_RU.koi8r
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.koi8r Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.ru_RU.koi8r Sat Mar 3 02:16:54 2001
+@@ -0,0 +1,6 @@
++style "gtk-default-koi8-r" {
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-*"
++}
++class "GtkWidget" style "gtk-default-koi8-r"
++
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.pt154 gtk+-1.2.9/gtk/gtkrc.ru_RU.pt154
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.pt154 Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.ru_RU.pt154 Sat Mar 3 02:16:54 2001
+@@ -0,0 +1,6 @@
++style "gtk-default-pt154" {
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
++ -*-*-medium-r-normal--12-*-*-*-*-*-paratype-cp154"
++}
++class "GtkWidget" style "gtk-default-pt154"
++
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.uk gtk+-1.2.9/gtk/gtkrc.uk
+--- gtk+-1.2.9.orig/gtk/gtkrc.uk Mon May 8 22:49:18 2000
++++ gtk+-1.2.9/gtk/gtkrc.uk Sat Mar 3 02:16:54 2001
+@@ -4,13 +4,12 @@
+ # the KOI8-U charset encoding.
+ #
+ # 1999, Pablo Saratxaga <pablo@mandrakesoft.com>
++# 2000, Changed by AEN <aen@logic.ru>
+ #
+
+ style "gtk-default-uk" {
+ fontset = "-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-*,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--14-*-*-*-*-*-koi8-u,\
+- -*-arial-medium-r-normal--14-*-*-*-*-*-koi8-u,*-r-*"
++ -*-helvetica-medium-r-normal--14-*-*-*-*-*-koi8-u"
+ }
+ class "GtkWidget" style "gtk-default-uk"
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch b/x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch
new file mode 100644
index 0000000..976552e
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch
@@ -0,0 +1,27 @@
+diff -ur gtk+-1.2.9.orig/gtk/gtkrc.cp1251 gtk+-1.2.9/gtk/gtkrc.cp1251
+--- gtk+-1.2.9.orig/gtk/gtkrc.cp1251 Sun Jun 18 17:55:15 2000
++++ gtk+-1.2.9/gtk/gtkrc.cp1251 Sat Mar 3 02:51:18 2001
+@@ -1,8 +1,6 @@
+ style "gtk-default-cp1251" {
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*"
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251"
+ }
+ class "GtkWidget" style "gtk-default-cp1251"
+
+diff -ur gtk+-1.2.9.orig/gtk/gtkrc.iso-8859-5 gtk+-1.2.9/gtk/gtkrc.iso-8859-5
+--- gtk+-1.2.9.orig/gtk/gtkrc.iso-8859-5 Mon May 8 22:49:18 2000
++++ gtk+-1.2.9/gtk/gtkrc.iso-8859-5 Sat Mar 3 02:55:40 2001
+@@ -6,9 +6,7 @@
+
+ style "gtk-default-iso-8859-5" {
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-5,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-5,*-r-*"
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-5"
+ }
+ class "GtkWidget" style "gtk-default-iso-8859-5"
+
diff --git a/x11-libs/gtk+/files/gtk+-ds-gentooalt.patch b/x11-libs/gtk+/files/gtk+-ds-gentooalt.patch
new file mode 100644
index 0000000..8ad08cd
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-ds-gentooalt.patch
@@ -0,0 +1,597 @@
+diff -dPNur gtk+-1.2.10/acinclude.m4 gtk+-1.2.10-new/acinclude.m4
+--- gtk+-1.2.10/acinclude.m4 2000-02-03 02:07:42.000000000 +0100
++++ gtk+-1.2.10-new/acinclude.m4 2007-06-24 01:09:06.000000000 +0200
+@@ -670,7 +670,7 @@
+ AC_DEFINE(HAVE_STPCPY)
+ fi
+
+- AM_LC_MESSAGES
++ gt_LC_MESSAGES
+ AM_GTK_WITH_NLS
+
+ if test "x$CATOBJEXT" != "x"; then
+diff -dPNur gtk+-1.2.10/configure.in gtk+-1.2.10-new/configure.in
+--- gtk+-1.2.10/configure.in 2001-03-15 21:31:58.000000000 +0100
++++ gtk+-1.2.10-new/configure.in 2007-06-24 01:09:06.000000000 +0200
+@@ -1,6 +1,8 @@
++builtin(include,gtk.m4)
++
++
+ # Process this file with autoconf to produce a configure script.
+ AC_INIT(gdk/gdktypes.h)
+-
+ # In the following, there are a the following variants
+ # of GLib cflags and libs variables
+ #
+@@ -12,12 +14,11 @@
+ # glib_thread_cflags: cflags to store in gtk-config for gtk-config gthread
+ # glib_thread_libs: libs to store in gtk-config for gtk-config gthread
+
++AC_CANONICAL_TARGET
+ # Save this value here, since automake will set cflags later
+ cflags_set=${CFLAGS+set}
+
+-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
++GTK_AC_DIVERT_BEFORE_HELP([
+ #
+ # Making releases:
+ # GTK_MICRO_VERSION += 1;
+@@ -32,9 +33,8 @@
+ GTK_MICRO_VERSION=10
+ GTK_INTERFACE_AGE=1
+ GTK_BINARY_AGE=10
+-GTK_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION
+-dnl
+-AC_DIVERT_POP()dnl
++GTK_VERSION="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION"
++])
+
+ AC_SUBST(GTK_MAJOR_VERSION)
+ AC_SUBST(GTK_MINOR_VERSION)
+@@ -44,9 +44,9 @@
+ AC_SUBST(GTK_VERSION)
+
+ # libtool versioning
+-LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
++LT_RELEASE="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION"
+ LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
+-LT_REVISION=$GTK_INTERFACE_AGE
++LT_REVISION="$GTK_INTERFACE_AGE"
+ LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
+ AC_SUBST(LT_RELEASE)
+ AC_SUBST(LT_CURRENT)
+@@ -54,11 +54,8 @@
+ AC_SUBST(LT_AGE)
+
+ # For automake.
+-VERSION=$GTK_VERSION
+-PACKAGE=gtk+
+-
+-# Save this value here, since automake will set cflags later
+-cflags_set=${CFLAGS+set}
++VERSION="$GTK_VERSION"
++PACKAGE="gtk+"
+
+ dnl Initialize automake stuff
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
+@@ -67,42 +64,40 @@
+ AM_CONFIG_HEADER(config.h)
+
+ dnl Initialize libtool
+-AM_PROG_LIBTOOL
++AC_PROG_LIBTOOL
+
+ dnl Initialize maintainer mode
+ AM_MAINTAINER_MODE
+
+-AC_CANONICAL_HOST
+-
+ dnl figure debugging default, prior to $ac_help setup
+-dnl
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++
++GTK_AC_DIVERT_BEFORE_HELP([
+ if test `expr $GTK_MINOR_VERSION \% 2` = 1 ; then
+- debug_default=yes
++ debug_default="yes"
+ else
+- debug_default=minimum
++ debug_default="minimum"
+ fi
+-AC_DIVERT_POP()dnl
+-
++])
+ dnl declare --enable-* args and collect ac_help strings
+-AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
++AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,
++ [enable_debug="$debug_default"])
+ AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]],
+- echo $enable_shm, enable_shm="yes")
+-AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
+- , enable_ansi=no)
++ [echo "$enable_shm"],[enable_shm="yes"])
++AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],,[enable_ansi="no"])
+ AC_ARG_WITH(glib, [ --with-glib=DIR Use uninstalled copy of glib])
+-AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
+- , enable_xim="yes")
+-AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],
+- , enable_xim_inst="maybe")
+-AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
++AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],,[enable_xim="yes"])
++AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],,
++ [enable_xim_inst="maybe"])
++AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,
++ [enable_rebuilds="yes"])
+ AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ])
+-
+ AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ])
+-AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,with_native_locale=no)
++AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,
++ [with_native_locale="no"])
++
+
+ if test "x$enable_debug" = "xyes"; then
+- test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
++ test "$cflags_set" = "set" || CFLAGS="$CFLAGS -g"
+ GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
+ else
+ if test "x$enable_debug" = "xno"; then
+@@ -113,16 +108,14 @@
+ fi
+
+ AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}")
+-
+ # Build time sanity check...
+ AM_SANITY_CHECK
+
+ # Checks for programs.
+ AC_PROG_CC
+ AC_ISC_POSIX
+-AM_PROG_CC_STDC
++AC_PROG_CC_STDC
+ AC_PROG_INSTALL
+-AC_PROG_MAKE_SET
+
+ changequote(,)dnl
+ if test "x$GCC" = "xyes"; then
+@@ -144,7 +137,6 @@
+ fi
+ fi
+ changequote([,])dnl
+-
+ # Honor aclocal flags
+ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+@@ -158,8 +150,7 @@
+ AC_CHECK_PROG(INDENT, indent, indent)
+
+ REBUILD=\#
+-if test "x$enable_rebuilds" = "xyes" && \
+- test -n "$PERL" && \
++if test "x$enable_rebuilds" = "xyes" && test -n "$PERL" && \
+ $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
+ test -n "$AWK" ; then
+ REBUILD=
+@@ -252,7 +243,7 @@
+ else
+ # Use uninstalled glib (assume they got the version right)
+
+- GLIB_CONFIG=$with_glib/glib-config
++ GLIB_CONFIG="$with_glib/glib-config"
+ if test -x $GLIB_CONFIG ; then
+ :
+ else
+@@ -268,9 +259,9 @@
+ glib_release=`$GLIB_CONFIG --version | sed 's%\\.[[0-9]]*$%%'`
+
+ # canonicalize relative paths
+- case $with_glib in
++ case "$with_glib" in
+ /*)
+- glib_dir=$with_glib
++ glib_dir="$with_glib"
+ ;;
+ *)
+ glib_dir="\$(top_builddir)/$with_glib"
+@@ -303,61 +294,56 @@
+ saved_ldflags="$LDFLAGS"
+
+ CFLAGS="$CFLAGS $X_CFLAGS"
+-LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
++LDFLAGS="$LDFLAGS $X_LDFLAGS"
+
+ if test "x$no_x" = "xyes"; then
+ AC_MSG_ERROR([
+ *** X libraries or include files not found. Check 'config.log' for
+ *** more details.])
+ fi
+-
+ # Checks for libraries.
+ # Check for the X11 library
+-AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS",
++AC_CHECK_LIB(X11,XOpenDisplay,
++ x_libs="-lX11 $X_EXTRA_LIBS",
+ AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]),
+- $X_EXTRA_LIBS)
+-
++ $X_EXTRA_LIBS
++)
+ if test "x$enable_shm" = "xyes"; then
+ # Check for the Xext library (needed for XShm extention)
+ AC_CHECK_LIB(Xext, XShmAttach,
+ x_libs="-lXext $x_libs",
+ # On AIX, it is in XextSam instead, but we still need -lXext
+- AC_CHECK_LIB(XextSam, XShmAttach,
++ [AC_CHECK_LIB(XextSam, XShmAttach,
+ x_libs="-lXextSam -lXext $x_libs",
+- no_xext_lib=yes, $x_libs),
+- $x_libs)
++ no_xext_lib="yes",
++ $x_libs
++ )],
++ $x_libs
++ )
+ fi
+-
+ # Check for shaped window extension
+-
+ AC_CHECK_LIB(Xext, XShapeCombineMask,
+- if test -z "`echo $x_libs | grep "\-lXext" 2> /dev/null`"; then
++ if test -z "`echo $x_libs | grep \-lXext 2> /dev/null`"; then
+ x_libs="-lXext $x_libs"
+ fi
+- AC_DEFINE(HAVE_SHAPE_EXT),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_SHAPE_EXT),,
++ $x_libs
++)
+ # Check for XConvertCase (X11R6 specific)
+-
+ AC_CHECK_LIB(X11, XConvertCase,
+- AC_DEFINE(HAVE_XCONVERTCASE),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_XCONVERTCASE),,
++ $x_libs
++)
+ # Check for XIM support.
+-
+-AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,
+- : ,
++AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,,
+ enable_xim_inst="no",
+- $x_libs)
+-
++ $x_libs
++)
+ # On Solaris, calling XRegisterIMInstantiateCallback seems to
+ # cause an immediate segfault, so we disable it, unless
+ # the user specifically forces it to be on.
+-
+-if test x$enable_xim_inst = xmaybe ; then
+- case host in
++if test "x$enable_xim_inst" = "xmaybe" ; then
++ case "$host" in
+ *-*-solaris*)
+ enable_xim_inst="no"
+ ;;
+@@ -375,16 +361,15 @@
+ fi
+
+ x_cflags="$X_CFLAGS"
+-x_ldflags="$X_LDFLAGS $X_LIBS"
++x_ldflags="$X_LDFLAGS"
+
+ # set up things for XInput
+-
+ if test "x$with_xinput" = "xgxi"; then
+ AC_MSG_WARN([
+ *** The generic XInput support has not been tested for several years
+ *** and is not known to work with any currently available X servers])
+ AC_DEFINE(XINPUT_GXI)
+- xinput_progs=gxid
++ xinput_progs="gxid"
+ x_libs="-lXi $x_libs"
+ elif test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then
+ AC_DEFINE(XINPUT_XFREE)
+@@ -404,77 +389,72 @@
+
+ if test "x$enable_shm" = "xyes"; then
+ # Check for shared memory
+- AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
+- AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
++ AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc="yes")
++ AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm="yes")
+
+ # Check for the X shared memory extension header file
+ AC_MSG_CHECKING(X11/extensions/XShm.h)
+ if test "x$no_xext_lib" = "xyes"; then
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ else
+ if test -f "$x_includes/X11/extensions/XShm.h"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_XSHM_H)
+ else
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ fi
+ fi
+ fi
+-
+ # Check if X_LOCALE definition is necessary
+-
+ AC_MSG_CHECKING(need -DX_LOCALE)
+
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <locale.h>
+-
+-int
+-main ()
++ int main ()
+ {
+ return setlocale (LC_ALL, "${with_locale}") == NULL;
+ }],
+-need_x_locale=no,
+-need_x_locale=yes,
+-need_x_locale=no)
++ need_x_locale="no",
++ need_x_locale="yes",
++ need_x_locale="no"
++)
+ AC_MSG_RESULT($need_x_locale)
+
+-use_native_locale=no
+-if test $need_x_locale = yes; then
++use_native_locale="no"
++if test "$need_x_locale" = "yes"; then
+ GTK_LOCALE_FLAGS="-DX_LOCALE"
+ else
+- if test x$with_native_locale = xyes ; then
++ if test "x$with_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(functioning locale support)
+
+- AC_TRY_COMPILE([#include <stdlib.h>],[
+- char c;
++ AC_TRY_COMPILE([#include <stdlib.h>],
++ [char c;
+ if (MB_CUR_MAX == 1) {
+ wctomb(&c, 42);
+- }
+- ],use_native_locale=yes,)
+-
++ }],
++ use_native_locale="yes"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+ fi
+
+-if test x$use_native_locale = xyes ; then
++if test "x$use_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(if sizeof(wchar_t) == 4)
+
+- AC_TRY_RUN([
+- #include <stdlib.h>
+-
+- int
+- main ()
++ AC_TRY_RUN([#include <stdlib.h>
++ int main ()
+ {
+ return (sizeof(wchar_t) == 4) ? 0 : 1;
+- }],
+- ,use_native_locale=no,:)
++ }],,
++ use_native_locale="no"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+
+-if test $use_native_locale = yes ; then
++if test "$use_native_locale" = "yes" ; then
+ AC_DEFINE(USE_NATIVE_LOCALE)
+ fi
+
+@@ -493,13 +473,17 @@
+
+ # Check if <sys/select.h> needs to be included for fd_set
+ AC_MSG_CHECKING([for fd_set])
+-AC_TRY_COMPILE([#include <sys/types.h>],
+- [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_COMPILE([#include <sys/types.h>
++ ],
++ [fd_set readMask, writeMask;],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_MSG_RESULT([yes, found in sys/types.h])
+ else
+- AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
+- if test $gtk_ok = yes; then
++ AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok="yes")
++ if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_SYS_SELECT_H)
+ AC_MSG_RESULT([yes, found in sys/select.h])
+ else
+@@ -511,30 +495,35 @@
+ # Duplicate `widechar' tests from `glib'.
+ # Check for wchar.h
+ AC_MSG_CHECKING(for wchar.h)
+-AC_TRY_CPP([#include <wchar.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wchar.h>
++ ],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCHAR_H,1,[Define if wchar.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # Check for wctype.h (for iswalnum)
+ AC_MSG_CHECKING(for wctype.h)
+-AC_TRY_CPP([#include <wctype.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wctype.h>], gtk_ok="yes", gtk_ok="no")
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCTYPE_H,1,[Define if wctype.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # in Solaris 2.5, `iswalnum' is in -lw
+ GDK_WLIBS=
+-AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS=-lw)])
++AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS="-lw")])
+
+ # The following is necessary for Linux libc-5.4.38
+ oLIBS="$LIBS"
+ LIBS="$LIBS $GDK_WLIBS"
+ AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
+-AC_TRY_LINK([#include <stdlib.h>],[
+-#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
++AC_TRY_LINK([#include <stdlib.h>
++ ],
++ [#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
+ # ifdef HAVE_WCTYPE_H
+ # include <wctype.h>
+ # else
+@@ -545,11 +534,13 @@
+ #else
+ # define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
+ #endif
+-iswalnum((wchar_t) 0);
+-], gtk_ok=yes, gtk_ok=no)
++ iswalnum((wchar_t) 0);],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
+ LIBS="$oLIBS"
+
+-if test $gtk_ok = no; then
++if test "$gtk_ok" = "no"; then
+ AC_DEFINE(HAVE_BROKEN_WCTYPE,1,[Define if the wctype function is broken])
+ GDK_WLIBS=
+ fi
+@@ -571,5 +562,5 @@
+ gtk/Makefile
+ gtk/gtkfeatures.h
+ gdk.pc
+-gtk+.pc
+-], [chmod +x gtk-config])
++gtk+.pc],
++[chmod +x gtk-config])
+diff -dPNur gtk+-1.2.10/gdk/Makefile.am gtk+-1.2.10-new/gdk/Makefile.am
+--- gtk+-1.2.10/gdk/Makefile.am 2000-10-21 20:20:40.000000000 +0200
++++ gtk+-1.2.10-new/gdk/Makefile.am 2007-06-24 01:09:06.000000000 +0200
+@@ -21,12 +21,11 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+
++libgdk_la_LIBADD = @GLIB_DEPLIBS@ @x_libs@ -lm
++
+ #
+ # setup source file variables
+ #
+@@ -104,14 +103,13 @@
+ EXTRA_PROGRAMS = gxid
+ bin_PROGRAMS = @xinput_progs@
+ LDADDS = @STRIP_BEGIN@ \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+ -lm \
+ @STRIP_END@
+ gxid_SOURCES = gxid.c
+ gxid_LDADD = $(LDADDS)
+-
++gxid_LDFLAGS = @x_ldflags@
+
+ .PHONY: files
+
+diff -dPNur gtk+-1.2.10/gtk/Makefile.am gtk+-1.2.10-new/gtk/Makefile.am
+--- gtk+-1.2.10/gtk/Makefile.am 2001-02-02 18:09:02.000000000 +0100
++++ gtk+-1.2.10-new/gtk/Makefile.am 2007-06-24 01:09:06.000000000 +0200
+@@ -27,13 +27,15 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+-# $(top_builddir)/gdk/libgdk.la
+-
++libgtk_la_LIBADD = @STRIP_BEGIN@ \
++ $(top_builddir)/gdk/libgdk.la \
++ @x_libs@ \
++ @GDK_WLIBS@ \
++ @GLIB_LIBS@ \
++ -lm \
++ @STRIP_END@
+
+ #
+ # setup source file variables
+@@ -426,7 +428,6 @@
+ LDADDS = @STRIP_BEGIN@ \
+ libgtk.la \
+ $(top_builddir)/gdk/libgdk.la \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+@@ -439,12 +440,20 @@
+ testdnd_DEPENDENCIES = $(DEPS)
+ simple_DEPENDENCIES = $(DEPS)
+ #testthreads_DEPENDENCIES = $(DEPS)
++
+ testgtk_LDADD = $(LDADDS)
++testgtk_LDFLAGS=@x_ldflags@
+ testinput_LDADD = $(LDADDS)
++testinput_LDFLAGS = @x_ldflags@
+ testselection_LDADD = $(LDADDS)
++testselection_LDFLAGS = @x_ldflags@
+ testrgb_LDADD = $(LDADDS)
++testrgb_LDFLAGS = @x_ldflags@
+ testdnd_LDADD = $(LDADDS)
++testdnd_LDFLAGS = @x_ldflags@
+ simple_LDADD = $(LDADDS)
++simple_LDFLAGS = @x_ldflags@
++
+ #testthreads_LDADD = $(LDADDS)
+
+ .PHONY: files test test-debug
+diff -dPNur gtk+-1.2.10/gtk.m4 gtk+-1.2.10-new/gtk.m4
+--- gtk+-1.2.10/gtk.m4 1999-02-18 17:43:35.000000000 +0100
++++ gtk+-1.2.10-new/gtk.m4 2007-06-24 01:09:06.000000000 +0200
+@@ -1,6 +1,11 @@
+ # Configure paths for GTK+
+ # Owen Taylor 97-11-3
+-
++AC_DEFUN([GTK_AC_DIVERT_BEFORE_HELP],
++[ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])],
++ [ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])],
++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++$1
++AC_DIVERT_POP()])])])
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
diff --git a/x11-libs/gtk+/files/gtkrc b/x11-libs/gtk+/files/gtkrc
new file mode 100644
index 0000000..8d17834
--- /dev/null
+++ b/x11-libs/gtk+/files/gtkrc
@@ -0,0 +1,39 @@
+style "default"
+
+{
+ font = "-*-lucida-medium-r-normal-*-*-100-*-*-*-*-*-*"
+}
+
+style "button" = "default"
+
+{
+ bg[PRELIGHT] = { 0.7, 0.7, 0.9 }
+}
+
+style "treeitem"
+{
+bg[ACTIVE] = { 0.7, 0.7, 0.9 }
+}
+
+style "scrollbar" = "button"
+{
+ bg[ACTIVE] = {0.6, 0.6, 0.6 }
+}
+
+style "status" {
+ bg[PRELIGHT] = { 0.3, 1.0, 0.3 }
+}
+
+style "gtk-tooltips" {
+ bg[NORMAL] = "#ffff60"
+}
+
+class "GtkWidget" style "default"
+class "GtkButton" style "button"
+class "GtkItem" style "button"
+class "GtkProgressBar" style "status"
+class "GtkScrollbar" style "scrollbar"
+class "GtkTreeItem" style "treeitem"
+widget "gtk-tooltips" style "gtk-tooltips"
+
+