diff options
361 files changed, 10415 insertions, 30106 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index e4149d0442..73602b1f2b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -100,8 +100,9 @@ Recipes: python*, qt*, qte*, sip* Person: Paul Sokolovsky Mail: pmiscml@gmail.com -Machines: h4000 +Machines: h3900, h4000, hx4700 Interests: handelds-pxa-2.6, PocketPC and Palm devices support +Recipes: opie-* Person: Philip Balister Mail: Crofton@balister.org diff --git a/classes/debian.bbclass b/classes/debian.bbclass index 7ffa6c1a27..3992a76084 100644 --- a/classes/debian.bbclass +++ b/classes/debian.bbclass @@ -101,5 +101,5 @@ python debian_package_name_hook () { EXPORT_FUNCTIONS package_name_hook -DEBIAN_NAMES = 1 +DEBIAN_NAMES = "1" diff --git a/classes/devshell.bbclass b/classes/devshell.bbclass index 118e5e4a2a..14f957e12b 100644 --- a/classes/devshell.bbclass +++ b/classes/devshell.bbclass @@ -1,8 +1,8 @@ -EXTRA_OEMAKE[export] = 1 +EXTRA_OEMAKE[export] = "1" do_devshell[dirs] = "${S}" -do_devshell[nostamp] = 1 -do_devshell[interactive] = 1 +do_devshell[nostamp] = "1" +do_devshell[interactive] = "1" devshell_do_devshell() { bash -i } diff --git a/classes/oelint.bbclass b/classes/oelint.bbclass index c9e39d13fb..f2e7540dcf 100644 --- a/classes/oelint.bbclass +++ b/classes/oelint.bbclass @@ -1,5 +1,5 @@ addtask lint before do_fetch -do_lint[nostamp] = 1 +do_lint[nostamp] = "1" python do_lint() { def testVar(var, explain=None): try: diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index f0a721fd4a..9aba940da4 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -35,10 +35,10 @@ PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${PACKAGE_ARCH}.ipk" PCROSS_PKGNAME = "cross-${PN}_${PV}-${PR}_${BUILD_ARCH}.ipk" SPAWNFILE = "${STAGING_DIR}/pkgmaps/${P}-${PR}.spawn" -SPAWNIPK = ${spawn} +SPAWNIPK = "${spawn}" -PSTAGE_TMPDIR_STAGE = ${TMPDIR}/tmp-staging -PSTAGE_TMPDIR_CROSS = ${TMPDIR}/tmp-cross +PSTAGE_TMPDIR_STAGE = "${TMPDIR}/tmp-staging" +PSTAGE_TMPDIR_CROSS = "${TMPDIR}/tmp-cross" STAGING_BASEDIR = "${STAGING_LIBDIR}/.." diff --git a/classes/rootfs_ipk.bbclass b/classes/rootfs_ipk.bbclass index eeb3f75e11..c4b2991874 100644 --- a/classes/rootfs_ipk.bbclass +++ b/classes/rootfs_ipk.bbclass @@ -11,9 +11,9 @@ RDEPENDS += "ipkg ipkg-collateral" PACKAGES = "" -do_rootfs[nostamp] = 1 -do_rootfs[dirs] = ${TOPDIR} -do_build[nostamp] = 1 +do_rootfs[nostamp] = "1" +do_rootfs[dirs] = "${TOPDIR}" +do_build[nostamp] = "1" IPKG_ARGS = "-f ${T}/ipkg.conf -o ${IMAGE_ROOTFS}" diff --git a/classes/srec.bbclass b/classes/srec.bbclass index e7bdc6c75d..a869a4f1f3 100644 --- a/classes/srec.bbclass +++ b/classes/srec.bbclass @@ -10,7 +10,7 @@ SREC_CMD = "${TARGET_PREFIX}objcopy -O srec -I binary --adjust-vma ${SREC_VMAADD # Do not build srec files for these types of images: SREC_SKIP = "tar" -do_srec[nostamp] = 1 +do_srec[nostamp] = "1" do_srec () { if [ ${SREC_VMAADDR} = "" ] ; then diff --git a/conf/bitbake.conf b/conf/bitbake.conf index 57d167505b..fe5b326a05 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -158,6 +158,7 @@ STAGING_LIBDIR = "${STAGING_DIR}/${HOST_SYS}/lib" STAGING_INCDIR = "${STAGING_DIR}/${HOST_SYS}/include" STAGING_DATADIR = "${STAGING_DIR}/${HOST_SYS}/share" STAGING_LOADER_DIR = "${STAGING_DIR}/${HOST_SYS}/loader" +STAGING_FIRMWARE_DIR = "${STAGING_DIR}/${HOST_SYS}/firmware" STAGING_PYDIR = "${STAGING_DIR}/lib/python2.4" DEPLOY_DIR = "${TMPDIR}/deploy" @@ -358,7 +359,7 @@ MKTEMPCMD = "mktemp -q ${TMPBASE}" # a RCS, which freaks out those special folks with active Perforce clients # the following makes patch ignore RCS: -export PATCH_GET=0 +export PATCH_GET="0" # Program to be used to build ipkg packages diff --git a/conf/distro/amsdelta-oe.conf b/conf/distro/amsdelta-oe.conf index 66dc4fb0a6..362e6e5a30 100644 --- a/conf/distro/amsdelta-oe.conf +++ b/conf/distro/amsdelta-oe.conf @@ -21,8 +21,8 @@ PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial" PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc:gcc-cross" PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross" -PREFERRED_PROVIDER_virtual/libiconv=glibc -PREFERRED_PROVIDER_virtual/libintl=glibc +PREFERRED_PROVIDER_virtual/libiconv="glibc" +PREFERRED_PROVIDER_virtual/libintl="glibc" # The CSL compiler is unusable because # 1) certain programs stop to compile diff --git a/conf/distro/angstrom-2007.1.conf b/conf/distro/angstrom-2007.1.conf index be6bed9f9a..5e7ce0d40c 100644 --- a/conf/distro/angstrom-2007.1.conf +++ b/conf/distro/angstrom-2007.1.conf @@ -8,7 +8,7 @@ #DISTRO_VERSION = "2007.1" DISTRO_VERSION = "test-${DATE}" -DISTRO_REVISION = "8" +DISTRO_REVISION = "9" require conf/distro/include/angstrom.inc require conf/distro/include/sane-srcdates.inc @@ -19,7 +19,7 @@ DISTRO_TYPE = "debug" #Set the right arch for the feeds #Alphabetically sorted -FEED_ARCH ?= ${TARGET_ARCH} +FEED_ARCH ?= "${TARGET_ARCH}" #armv4t machines @@ -38,6 +38,7 @@ FEED_ARCH_htcuniversal = "armv5te" FEED_ARCH_hx2000 = "armv5te" FEED_ARCH_hx4700 = "armv5te" FEED_ARCH_ixp4xx = "armv5te" +FEED_ARCH_magician = "armv5te" FEED_ARCH_netbook-pro = "armv5te" FEED_ARCH_nokia770 = "armv5te" FEED_ARCH_poodle = "armv5te" @@ -96,6 +97,7 @@ PREFERRED_PROVIDER_xserver ?= "xserver-kdrive" require conf/distro/include/preferred-xorg-versions-X11R7.1.inc PREFERRED_VERSION_xserver-kdrive = "X11R7.1-1.1.0" +PREFERRED_VERSION_gtk+ = "2.10.6" #zap extra stuff taking place in $MACHINE.conf GPE_EXTRA_INSTALL = "" @@ -117,7 +119,7 @@ PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross" # Virtuals: PREFERRED_PROVIDER_virtual/db ?= "db" PREFERRED_PROVIDER_virtual/db-native ?= "db-native" -PREFERRED_PROVIDER_virtual/xserver ?= xserver-kdrive +PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive" # Others: PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11" @@ -147,10 +149,14 @@ PREFERRED_VERSION_gcc ?= "4.1.1" PREFERRED_VERSION_gcc-cross ?= "4.1.1" PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.1" PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1" + PREFERRED_VERSION_binutils ?= "2.17.50.0.5" PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5" PREFERRED_VERSION_binutils-cross-sdk ?= "2.17.50.0.5" + +PREFERRED_VERSION_linux-libc-headers_guinness ?= "2.6.18" PREFERRED_VERSION_linux-libc-headers ?= "2.6.15.99" + PREFERRED_VERSION_glibc ?= "2.5" PREFERRED_VERSION_glibc-intermediate ?= "2.5" diff --git a/conf/distro/debianslug.conf b/conf/distro/debianslug.conf index e28fb85d88..e86ffa028c 100644 --- a/conf/distro/debianslug.conf +++ b/conf/distro/debianslug.conf @@ -13,7 +13,7 @@ SLUGOS_IMAGENAME = "debianslug" SLUGOS_IMAGESEX = "little-endian" # debianslug builds a complete image (not just the parts) -SLUGOS_FLASH_IMAGE = "yes" +SLUGOS_FLASH_IMAGE = "nslu2" # NOTE: to build new packages set DEBIANSLUG_EXTRA_BBFILES to the full path name to # the .bb files for the packages to build - see debianslug-packages.conf in this diff --git a/conf/distro/generic.conf b/conf/distro/generic.conf index 3bb5df5496..27c0437cf5 100644 --- a/conf/distro/generic.conf +++ b/conf/distro/generic.conf @@ -71,7 +71,7 @@ require conf/distro/include/sane-srcdates.inc # Framebuffer & X # PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11" -PREFERRED_PROVIDER_tslib ?= tslib +PREFERRED_PROVIDER_tslib ?= "tslib" require conf/distro/include/preferred-xorg-versions-X11R7.1.inc # diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc index 858305cd39..3bf87abdb6 100644 --- a/conf/distro/include/angstrom.inc +++ b/conf/distro/include/angstrom.inc @@ -28,14 +28,21 @@ INHERIT += "package_ipk debian multimachine sanity" PREFERRED_PROVIDER_qemu-native = "qemu-native" ENABLE_BINARY_LOCALE_GENERATION ?= "1" +#qemu doesn't like armv6/eabi/vfp +ENABLE_BINARY_LOCALE_GENERATION_mx31ads = "0" + #ARM EABI is softfloat by default, but let's make sure :) #make it overridable for platforms with FPU, like ep93xx or i.mx31 TARGET_FPU_arm ?= "soft" TARGET_FPU_ixp4xx ?= "soft" + +#Make a LE jffs2 image +SLUGOS_IMAGESEX = "little-endian" + #Name the generated images in a sane way IMAGE_NAME = "${DISTRO_NAME}-${IMAGE_BASENAME}-${DISTRO_VERSION}-${MACHINE}" -DEPLOY_DIR_IMAGE = ${DEPLOY_DIR}/images/${MACHINE} +DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}" # Angstrom *always* has some form of release config, so error out if someone thinks he knows better DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION if you really want to build an unversioned distro')}" diff --git a/conf/distro/include/preferred-gpe-versions-2.6.inc b/conf/distro/include/preferred-gpe-versions-2.6.inc index 256bc0103f..9eb5b90abb 100644 --- a/conf/distro/include/preferred-gpe-versions-2.6.inc +++ b/conf/distro/include/preferred-gpe-versions-2.6.inc @@ -3,13 +3,13 @@ # #work around some breakages -SRCDATE_xserver-kdrive=20050207 -SRCDATE_minimo=20050401 -SRCDATE_cairo=20050330 -SRCDATE_xext=20050222 +SRCDATE_xserver-kdrive="20050207" +SRCDATE_minimo="20050401" +SRCDATE_cairo="20050330" +SRCDATE_xext="20050222" #set some preferred providers: -PREFERRED_PROVIDER_gconf=gconf-dbus +PREFERRED_PROVIDER_gconf="gconf-dbus" #specify versions, as the header says :) PREFERRED_VERSION_libmatchbox ?= "1.6" diff --git a/conf/distro/include/preferred-gpe-versions-2.7.inc b/conf/distro/include/preferred-gpe-versions-2.7.inc index 56d9c5b059..662dfc386f 100644 --- a/conf/distro/include/preferred-gpe-versions-2.7.inc +++ b/conf/distro/include/preferred-gpe-versions-2.7.inc @@ -6,8 +6,8 @@ #SRCDATE_minimo=20050401 #set some preferred providers: -PREFERRED_PROVIDER_gconf=gconf-dbus -PREFERRED_PROVIDER_gnome-vfs=gnome-vfs-dbus +PREFERRED_PROVIDER_gconf="gconf-dbus" +PREFERRED_PROVIDER_gnome-vfs="gnome-vfs-dbus" #specify versions, as the header says :) PREFERRED_VERSION_libmatchbox ?= "1.7" diff --git a/conf/distro/include/preferred-gpe-versions-2.8.inc b/conf/distro/include/preferred-gpe-versions-2.8.inc index 9c9be528df..bf00aa8d01 100644 --- a/conf/distro/include/preferred-gpe-versions-2.8.inc +++ b/conf/distro/include/preferred-gpe-versions-2.8.inc @@ -3,8 +3,8 @@ # #set some preferred providers: -PREFERRED_PROVIDER_gconf=gconf-dbus -PREFERRED_PROVIDER_gnome-vfs=gnome-vfs-dbus +PREFERRED_PROVIDER_gconf="gconf-dbus" +PREFERRED_PROVIDER_gnome-vfs="gnome-vfs-dbus" PREFERRED_VERSION_gaim ?= "2.0.0-cvs-mco1-20050904" diff --git a/conf/distro/include/preferred-gpe-versions.inc b/conf/distro/include/preferred-gpe-versions.inc index e78888a02c..7d4efea06e 100644 --- a/conf/distro/include/preferred-gpe-versions.inc +++ b/conf/distro/include/preferred-gpe-versions.inc @@ -6,8 +6,8 @@ #SRCDATE_xext=20050222 #set some preferred providers: -PREFERRED_PROVIDER_gconf=gconf-dbus -PREFERRED_PROVIDER_gnome-vfs=gnome-vfs-dbus +PREFERRED_PROVIDER_gconf="gconf-dbus" +PREFERRED_PROVIDER_gnome-vfs="gnome-vfs-dbus" #specify versions, as the header says :) #PREFERRED_VERSION_libmatchbox ?= "1.6" diff --git a/conf/distro/include/sane-srcdates.inc b/conf/distro/include/sane-srcdates.inc index d000bf4a92..2a6676db58 100644 --- a/conf/distro/include/sane-srcdates.inc +++ b/conf/distro/include/sane-srcdates.inc @@ -54,6 +54,7 @@ SRCDATE_dvbtraffic ?= "20060814" SRCDATE_dvbtune ?= "20060814" SRCDATE_fdclock ?= "20060814" SRCDATE_fltk ?= "20060814" +SRCDATE_ipatience ?= "20061112" SRCDATE_ipkg-link ?= "20050930" SRCDATE_ipkg-link-1 ?= "20050930" SRCDATE_ipkg-utils ?= "20050930" diff --git a/conf/distro/include/slugos.inc b/conf/distro/include/slugos.inc index e015314d92..299944ee29 100644 --- a/conf/distro/include/slugos.inc +++ b/conf/distro/include/slugos.inc @@ -113,8 +113,9 @@ SLUGOS_IMAGENAME ?= "${DISTRO_NAME}" # issues in the kernel need to cancel this (set CMDLINE_DEBUG empty in local.conf) CMDLINE_DEBUG = "noirqdebug" -# Building a full image. If you set SLUGOS_FLASH_IMAGE to "yes" a complete -# 8MByte flash image will be built after the rootfs JFFS2 image. +# Building a full image. If you set SLUGOS_FLASH_IMAGE to "nslu2" a complete +# 8MByte flash image will be built after the rootfs JFFS2 image. Other options +# may later be defined for other vendor-flashable image types. # # If you do this you will need to find a source for the LinkSys software to be # placed in the full image - 'RedBoot' (the boot loader), 'Trailer' (just a bunch @@ -170,7 +171,7 @@ PREFERRED_VERSION_glibc ?= "2.3.5+cvs20050627" # Select the correct versions of the kernel and modules (these are the # defaults, override in the conf/distro top-level distro file). PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel" -PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.18" +PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.19-rc5" # Select the smallest provider of x11 libraries PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11" diff --git a/conf/distro/jlime-shrek.conf b/conf/distro/jlime-shrek.conf index b4875dc37b..19379862ae 100644 --- a/conf/distro/jlime-shrek.conf +++ b/conf/distro/jlime-shrek.conf @@ -36,7 +36,7 @@ BBINCLUDELOGS = "yes" MODUTILS = "26" IMAGE_FSTYPES = "tar.bz2" -BOOTSTRAP_EXTRA_RDEPENDS += "pcmcia-cs ncurses nano wireless-tools \ +BOOTSTRAP_EXTRA_RDEPENDS += "pcmcia-cs ncurses nano wireless-tools \ kernel-module-3c574-cs kernel-module-3c589-cs kernel-module-8390 \ kernel-module-airo-cs kernel-module-airo console-tools \ kernel-module-arlan \ diff --git a/conf/distro/openslug-native.conf b/conf/distro/openslug-native.conf index 0366998e79..7452c26eaa 100644 --- a/conf/distro/openslug-native.conf +++ b/conf/distro/openslug-native.conf @@ -16,5 +16,5 @@ ASSUME_PROVIDED = "libtool-cross \ " # Our build host is armeb, not armv5eb that the kernel reports -BUILD_ARCH = armeb +BUILD_ARCH = "armeb" diff --git a/conf/distro/openslug.conf b/conf/distro/openslug.conf index d5ceeee105..c24001f3f4 100644 --- a/conf/distro/openslug.conf +++ b/conf/distro/openslug.conf @@ -13,7 +13,7 @@ SLUGOS_IMAGENAME = "openslug" SLUGOS_IMAGESEX = "big-endian" # openslug builds a complete image (not just the parts) -SLUGOS_FLASH_IMAGE = "yes" +SLUGOS_FLASH_IMAGE = "nslu2" # NOTE: to build new packages set OPENSLUG_EXTRA_BBFILES to the full path name to # the .bb files for the packages to build - see ucslugc-packages.conf in this diff --git a/conf/distro/openzaurus-unstable.conf b/conf/distro/openzaurus-unstable.conf index b1080d1fea..10f00b7604 100644 --- a/conf/distro/openzaurus-unstable.conf +++ b/conf/distro/openzaurus-unstable.conf @@ -33,7 +33,7 @@ SRCDATE ?= "20060701" ASSUME_PROVIDED += "virtual/arm-linux-gcc-2.95" PREFERRED_PROVIDER_hostap-conf = "hostap-conf" PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap" -PREFERRED_PROVIDER_tslib ?= tslib +PREFERRED_PROVIDER_tslib ?= "tslib" KERNEL_CONSOLE = "ttyS0" #DEBUG_OPTIMIZATION = "-O -g3" diff --git a/conf/machine/amsdelta.conf b/conf/machine/amsdelta.conf index 443b70c5de..85afdc85f4 100644 --- a/conf/machine/amsdelta.conf +++ b/conf/machine/amsdelta.conf @@ -19,7 +19,7 @@ EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000" GUI_MACHINE_CLASS="smallscreen" -PREFERRED_VERSION_u-boot = 1.1.4 +PREFERRED_VERSION_u-boot = "1.1.4" TARGET_CC_ARCH = "-march=armv4t -mtune=arm920t" diff --git a/conf/machine/h1940.conf b/conf/machine/h1940.conf index 3f3b2f916e..1ea4a68639 100644 --- a/conf/machine/h1940.conf +++ b/conf/machine/h1940.conf @@ -3,7 +3,7 @@ #@DESCRIPTION: Machine configuration for the HP iPAQ h1930 and h1940 IPKG_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te" -TARGET_ARCH = arm +TARGET_ARCH = "arm" PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive" PREFERRED_PROVIDER_virtual/kernel = "linux-h1940" PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross" diff --git a/conf/machine/h5xxx.conf b/conf/machine/h5xxx.conf index d2e7306c46..941d08c013 100644 --- a/conf/machine/h5xxx.conf +++ b/conf/machine/h5xxx.conf @@ -29,5 +29,5 @@ MACHINE_EXTRA_RRECOMMENDS = " kernel-module-h5400_lcd \ # # Modules autoload and other boot properties # -SERIAL_CONSOLE = "115200 tts/0 vt100" +SERIAL_CONSOLE = "115200 ttyS0 vt100" USE_VT = "0" diff --git a/conf/machine/hx2000.conf b/conf/machine/hx2000.conf index b0c962c1d0..da2e466425 100644 --- a/conf/machine/hx2000.conf +++ b/conf/machine/hx2000.conf @@ -5,7 +5,7 @@ TARGET_ARCH = "arm" IPKG_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt ipaqpxa ipaq-pxa270" -#PREFERRED_PROVIDER_virtual/kernel = "linux-openzaurus" +PREFERRED_PROVIDER_virtual/kernel = "linux-openzaurus" PREFERRED_VERSION_orinoco-modules = "0.15rc1" diff --git a/conf/machine/ixp4xx.conf b/conf/machine/ixp4xx.conf index c088485fcc..c3e56067cd 100644 --- a/conf/machine/ixp4xx.conf +++ b/conf/machine/ixp4xx.conf @@ -2,4 +2,8 @@ #@NAME: Generic IXP4XX kernel #@DESCRIPTION: Machine configuration for a generic ixp4xx board +MACHINE_FEATURES = "kernel26 usbhost ext2" + include conf/machine/include/ixp4xx.conf + +IPKG_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te ixp4xx${ARCH_BYTE_SEX}" diff --git a/conf/machine/lite5200.conf b/conf/machine/lite5200.conf index 2bf6cc2d8e..cd943f7e65 100644 --- a/conf/machine/lite5200.conf +++ b/conf/machine/lite5200.conf @@ -4,7 +4,7 @@ UBOOT_MACHINE = "Lite5200" SERIAL_CONSOLE="38400 ttyS0" -TARGET_PREFIX = powerpc-603e-linux-gnu- +TARGET_PREFIX = "powerpc-603e-linux-gnu-" IMAGE_FSTYPES = "jffs2 tar.bz2" diff --git a/conf/machine/mx31ads.conf b/conf/machine/mx31ads.conf index ad6de78f56..4b3fff7061 100644 --- a/conf/machine/mx31ads.conf +++ b/conf/machine/mx31ads.conf @@ -5,8 +5,10 @@ TARGET_ARCH = "arm" TARGET_FPU_arm = "hard" +MACHINE_FEATURES = "kernel26 apm alsa ext2 pcmcia usbhost usbgadget" + GUI_MACHINE_CLASS = "smallscreen" -IPKG_EXTRA_ARCHS = "armv6" +IPKG_EXTRA_ARCHS = "arm armv4t armv5te armv6" PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel" diff --git a/conf/machine/palmld.conf b/conf/machine/palmld.conf new file mode 100644 index 0000000000..35a31aa00b --- /dev/null +++ b/conf/machine/palmld.conf @@ -0,0 +1,23 @@ +#@TYPE: Machine +#@NAME: Palm LifeDrive +#@DESCRIPTION: Machine configuration for the Palm LifeDrive + +TARGET_ARCH = "arm" +IPKG_EXTRA_ARCHS = "arm armv4t armv5te" + +PREFERRED_PROVIDER_virtual/kernel = "hackndev-2.6trunk" + +PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive" + +MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda wifi ext2 usbgadget" + +ROOT_FLASH_SIZE = "100" + +SERIAL_CONSOLE = "115200 ttyS0" + +GUI_MACHINE_CLASS = "bigscreen" + +# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm. +include conf/machine/tune-xscale.conf + +module_autoload_sa1100-rtc = "sa1100-rtc" diff --git a/contrib/python/generate-manifest.py b/contrib/python/generate-manifest.py index 0b91347a48..9810c7b1ae 100755 --- a/contrib/python/generate-manifest.py +++ b/contrib/python/generate-manifest.py @@ -270,7 +270,7 @@ if __name__ == "__main__": m.addPackage( 0, "python-netserver", "Python Internet Protocol Servers", "python-core, python-netclient", "cgi.* BaseHTTPServer.* SimpleHTTPServer.* SocketServer.*" ) - m.addPackage( 0, "python-pickle", "Python Persistence Support", "python-core, python-codecs, python-re", + m.addPackage( 1, "python-pickle", "Python Persistence Support", "python-core, python-codecs, python-io, python-re", "pickle.* shelve.* lib-dynload/cPickle.so" ) m.addPackage( 0, "python-pprint", "Python Pretty-Print Support", "python-core", diff --git a/packages/abiword/abiword-embedded_2.4.6.bb b/packages/abiword/abiword-embedded_2.4.6.bb new file mode 100644 index 0000000000..9381bbd8a7 --- /dev/null +++ b/packages/abiword/abiword-embedded_2.4.6.bb @@ -0,0 +1,12 @@ +require abiword.inc + +EXTRA_OECONF += "--enable-embedded" + +RCONFLICTS = "abiword" +RPROVIDES += "abiword" + +do_compile_prepend() { + cp ${S}/src/af/xap/unix/hildon/xap_EmbeddedFeatures.h ${S}/src/af/xap/unix/ + cp ${S}/src/wp/ap/unix/hildon/ap_EmbeddedFeatures.h ${S}/src/wp/ap/unix/ +} + diff --git a/packages/abiword/abiword-plugins_2.4.6.bb b/packages/abiword/abiword-plugins_2.4.6.bb new file mode 100644 index 0000000000..28d076aaa4 --- /dev/null +++ b/packages/abiword/abiword-plugins_2.4.6.bb @@ -0,0 +1,27 @@ +DESCRIPTION ="AbiWord is free word processing program similar to Microsoft(r) Word"" +SECTION = "gnome/office" +HOMEPAGE="http://www.abiword.org"" +LICENSE="GPLv2" + +DEPENDS = "libwpd librsvg goffice poppler" +PR="r0" + +SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz \ + file://abiword-plugin-pdf-poppler.patch;patch=1;pnum=2" +S = "${WORKDIR}/abiword-${PV}/abiword-plugins" +RDEPENDS='abiword' + +inherit autotools + +PARALLEL_MAKE="" + +EXTRA_OECONF = "--without-libwmf" + +PACKAGES_DYNAMIC = "abiword-plugin-*" + +python populate_packages_prepend () { + abiword_libdir = bb.data.expand('${libdir}/AbiWord-2.4/plugins', d) + + do_split_packages(d, abiword_libdir, '^libAbi(.*)\.so$', 'abiword-plugin-%s', 'Abiword plugin for %s', extra_depends='') +} + diff --git a/packages/abiword/abiword.inc b/packages/abiword/abiword.inc index ac9a39515a..c8f3243b9c 100644 --- a/packages/abiword/abiword.inc +++ b/packages/abiword/abiword.inc @@ -6,31 +6,32 @@ LICENSE = "GPLv2" DEPENDS = "perl-native libgsf libgnomeprint libgnomeprintui libglade libfribidi enchant jpeg libpng libxml2" RDEPENDS = "enchant glibc-gconv-ibm850 glibc-gconv-cp1252 \ glibc-gconv-iso8859-15 glibc-gconv-iso8859-1" -PR="r1" +PR = "r2" SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz" S = "${WORKDIR}/abiword-${PV}/abi" -FILES_${PN} += " ${datadir}/icons/* \ -${datadir}/AbiSuite-2.4/AbiWord/glade \ -${datadir}/AbiSuite-2.4/AbiWord/scripts \ -${datadir}/AbiSuite-2.4/AbiWord/system.profile-en \ -${datadir}/AbiSuite-2.4/AbiWord/system.profile-en_GB \ -#${datadir}/AbiSuite-2.4/templates/A4.awt \ -#${datadir}/AbiSuite-2.4/templates/US-Letter.awt \ -${datadir}/AbiSuite-2.4/templates/normal.awt \ -${datadir}/AbiSuite-2.4/templates/normal.awt-en_GB \ -${datadir}/AbiSuite-2.4/templates/Employee-Directory.awt \ -${datadir}/AbiSuite-2.4/templates/Business-Report.awt \ -${datadir}/AbiSuite-2.4/templates/Fax-Coversheet.awt \ -${datadir}/AbiSuite-2.4/templates/Resume.awt \ -${datadir}/AbiSuite-2.4/templates/Two-Columns.awt \ -${datadir}/AbiSuite-2.4/templates/Memo.awt \ -${datadir}/AbiSuite-2.4/templates/Press-Release.awt " +FILES_${PN} += " \ + ${datadir}/icons/* \ + ${datadir}/AbiSuite-2.4/AbiWord/glade \ + ${datadir}/AbiSuite-2.4/AbiWord/scripts \ + ${datadir}/AbiSuite-2.4/AbiWord/system.profile-en \ + ${datadir}/AbiSuite-2.4/AbiWord/system.profile-en_GB \ +# ${datadir}/AbiSuite-2.4/templates/A4.awt \ +# ${datadir}/AbiSuite-2.4/templates/US-Letter.awt \ + ${datadir}/AbiSuite-2.4/templates/normal.awt \ + ${datadir}/AbiSuite-2.4/templates/normal.awt-en_GB \ + ${datadir}/AbiSuite-2.4/templates/Employee-Directory.awt \ + ${datadir}/AbiSuite-2.4/templates/Business-Report.awt \ + ${datadir}/AbiSuite-2.4/templates/Fax-Coversheet.awt \ + ${datadir}/AbiSuite-2.4/templates/Resume.awt \ + ${datadir}/AbiSuite-2.4/templates/Two-Columns.awt \ + ${datadir}/AbiSuite-2.4/templates/Memo.awt \ + ${datadir}/AbiSuite-2.4/templates/Press-Release.awt " inherit autotools -PARALLEL_MAKE="" +PARALLEL_MAKE = "" EXTRA_OECONF = "--disable-pspell --enable-enchant" @@ -39,4 +40,10 @@ do_install_append() { mv ${D}${datadir}/icons/* ${D}${datadir}/pixmaps/ } +PACKAGES += " abiword-clipart abiword-icons abiword-strings abiword-systemprofiles abiword-templates " +FILES_abiword-clipart += "${datadir}/AbiSuite-2.4/clipart" +FILES_abiword-icons += "${datadir}/AbiSuite-2.4/icons" +FILES_abiword-strings += "${datadir}/AbiSuite-2.4/AbiWord/strings" +FILES_abiword-systemprofiles += "${datadir}/AbiSuite-2.4/AbiWord/system.profile*" +FILES_abiword-templates += "${datadir}/AbiSuite-2.4/templates" diff --git a/packages/abiword/abiword_2.4.6.bb b/packages/abiword/abiword_2.4.6.bb new file mode 100644 index 0000000000..b97556b735 --- /dev/null +++ b/packages/abiword/abiword_2.4.6.bb @@ -0,0 +1,4 @@ +require abiword.inc + +RCONFLICTS = "abiword-embedded" + diff --git a/packages/altboot/altboot_0.0.0.bb b/packages/altboot/altboot_0.0.0.bb index ed14234d21..875f6c554b 100644 --- a/packages/altboot/altboot_0.0.0.bb +++ b/packages/altboot/altboot_0.0.0.bb @@ -20,14 +20,14 @@ RDEPENDS_${PN} = "${PN}-conf" ###################################################################################### -PR = "r48" +PR = "r49" ###################################################################################### PACKAGES = "${PN}-conf ${PN}-doc ${PN}" -PACKAGE_ARCH_${PN} = all -PACKAGE_ARCH_${PN}-doc = all +PACKAGE_ARCH_${PN} = "all" +PACKAGE_ARCH_${PN}-doc = "all" PACKAGE_ARCH_${PN}-conf = "${MACHINE}" SRC_URI = "file://altboot-menu \ diff --git a/packages/altboot/altboot_1.0.8.bb b/packages/altboot/altboot_1.0.8.bb index 58b6a9052a..4c214796d7 100644 --- a/packages/altboot/altboot_1.0.8.bb +++ b/packages/altboot/altboot_1.0.8.bb @@ -22,14 +22,14 @@ RDEPENDS_${PN}-conf = "${PN}" ###################################################################################### -PR = "r0" +PR = "r1" ###################################################################################### PACKAGES = "${PN}-conf ${PN}-doc ${PN}" -PACKAGE_ARCH_${PN} = all -PACKAGE_ARCH_${PN}-doc = all +PACKAGE_ARCH_${PN} = "all" +PACKAGE_ARCH_${PN}-doc = "all" PACKAGE_ARCH_${PN}-conf = "${MACHINE}" TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}" diff --git a/packages/altboot/altboot_1.1.0-wip.bb b/packages/altboot/altboot_1.1.0-wip.bb index 9d78a7a1c2..df9ac5abfb 100644 --- a/packages/altboot/altboot_1.1.0-wip.bb +++ b/packages/altboot/altboot_1.1.0-wip.bb @@ -23,15 +23,15 @@ RDEPENDS_${PN}-conf = "${PN}" ###################################################################################### -WIP_DATE = "20061105" -PR = "${WIP_DATE}-r0" +WIP_DATE = "20061108" +PR = "${WIP_DATE}-r1" ###################################################################################### PACKAGES = "${PN}-conf ${PN}-doc ${PN}" -PACKAGE_ARCH_${PN} = all -PACKAGE_ARCH_${PN}-doc = all +PACKAGE_ARCH_${PN} = "all" +PACKAGE_ARCH_${PN}-doc = "all" PACKAGE_ARCH_${PN}-conf = "${MACHINE}" TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}" @@ -78,7 +78,7 @@ do_install() { ###################################################################################### do_configure() { - cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${WORKDIR}/altboot/init.altboot_ + cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}-${PR}\"/" > ${WORKDIR}/altboot/init.altboot_ mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot } diff --git a/packages/altboot/files/altboot.rc/playbeep.sh b/packages/altboot/files/altboot.rc/playbeep.sh index 9ef6a0c41b..b41f098630 100644 --- a/packages/altboot/files/altboot.rc/playbeep.sh +++ b/packages/altboot/files/altboot.rc/playbeep.sh @@ -11,7 +11,7 @@ then for module in `cat /etc/modules | grep snd | grep -v ^#` do #echo "loading $module" - modprobe $module + modprobe $module >/dev/null 2>&1 done mount -o remount,rw / diff --git a/packages/angstrom/angstrom-bootmanager-image.bb b/packages/angstrom/angstrom-bootmanager-image.bb index 8c2fd9cc09..9a0bf12a08 100644 --- a/packages/angstrom/angstrom-bootmanager-image.bb +++ b/packages/angstrom/angstrom-bootmanager-image.bb @@ -1,5 +1,5 @@ #Angstrom bootmanager image -LICENSE = MIT +LICENSE = "MIT" PR = "r0" DEPENDS = "task-angstrom" diff --git a/packages/angstrom/angstrom-bootstrap-image.bb b/packages/angstrom/angstrom-bootstrap-image.bb index eb01bd53ec..838ad249c0 100644 --- a/packages/angstrom/angstrom-bootstrap-image.bb +++ b/packages/angstrom/angstrom-bootstrap-image.bb @@ -1,5 +1,5 @@ #Angstrom bootstrap image -LICENSE = MIT +LICENSE = "MIT" PR = "r2" DEPENDS = "task-base" diff --git a/packages/angstrom/angstrom-gpe-image.bb b/packages/angstrom/angstrom-gpe-image.bb index ab632f91a9..c0678431b2 100644 --- a/packages/angstrom/angstrom-gpe-image.bb +++ b/packages/angstrom/angstrom-gpe-image.bb @@ -1,5 +1,5 @@ #Angstrom GPE image -LICENSE = MIT +LICENSE = "MIT" PR = "r4" PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget" diff --git a/packages/angstrom/angstrom-version.bb b/packages/angstrom/angstrom-version.bb index 763fbf22dc..e6545117b8 100644 --- a/packages/angstrom/angstrom-version.bb +++ b/packages/angstrom/angstrom-version.bb @@ -1,4 +1,4 @@ -PV = ${DISTRO_VERSION} +PV = "${DISTRO_VERSION}" PACKAGES = "${PN}" diff --git a/packages/apex/apex_1.4.5.bb b/packages/apex/apex_1.4.7.bb index 35d772aa0b..0a7d5520fc 100644 --- a/packages/apex/apex_1.4.5.bb +++ b/packages/apex/apex_1.4.7.bb @@ -23,18 +23,19 @@ CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linu # defconfig to .config do_configure() { rm -f ${S}/.config - echo "CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"" >>'${S}/.config' if test '${ARCH_BYTE_SEX}' = be then - echo 'CONFIG_USER_BIGENDIAN=y' >>'${S}/.config' - echo 'CONFIG_BIGENDIAN=y' >>'${S}/.config' + sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \ + -e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \ + -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \ + ${WORKDIR}/defconfig > ${S}/.config else - echo 'CONFIG_USER_LITTLEENDIAN=y' >>'${S}/.config' - echo 'CONFIG_LITTLEENDIAN=y' >>'${S}/.config' + sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \ + -e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \ + -e 's/.*CONFIG_ENV_REGION_KERNEL_SWAP.*/CONFIG_ENV_REGION_KERNEL_SWAP=y/' \ + -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE}\"|' \ + ${WORKDIR}/defconfig > ${S}/.config fi - sed -e '/CONFIG_USER_BIGENDIAN/d' -e '/CONFIG_USER_LITTLEENDIAN/d' \ - -e '/CONFIG_ENV_DEFAULT_CMDLINE/d' \ - ${S}/src/mach-ixp42x/debian-nslu2-arm_config >>${S}/.config oe_runmake oldconfig } diff --git a/packages/apex/nslu2/defconfig b/packages/apex/nslu2/defconfig index 113c69a68e..2d2784457a 100644 --- a/packages/apex/nslu2/defconfig +++ b/packages/apex/nslu2/defconfig @@ -48,7 +48,7 @@ CONFIG_MACH_NSLU2=y # CONFIG_MACH_AVILA2347 is not set # CONFIG_USER_DEFAULTENDIAN is not set # CONFIG_USER_BIGENDIAN is not set -CONFIG_USER_LITTLEENDIAN=y +# CONFIG_USER_LITTLEENDIAN is not set # # Platform Setup @@ -89,8 +89,7 @@ CONFIG_CMD_XRECEIVE=y # # CONFIG_DRIVER_FAT is not set # CONFIG_DRIVER_EXT2 is not set -CONFIG_DRIVER_JFFS2=y -CONFIG_DRIVER_JFFS2_BLOCKDEVICE="nor:0x180000+0x660000" +# CONFIG_DRIVER_JFFS2 is not set CONFIG_DRIVER_FIS=y CONFIG_DRIVER_FIS_BLOCKDEVICE="nor:0x7e0000+4k" CONFIG_DRIVER_NOR_CFI=y @@ -102,21 +101,25 @@ CONFIG_USES_PATHNAME_PARSER=y # Environment # CONFIG_ENV=y +# CONFIG_NO_BOOTSTRAP is not set CONFIG_NOR_BOOT=y # CONFIG_NAND_BOOT is not set +# CONFIG_COMPANION_EVT1_BOOT is not set +# CONFIG_COMPANION_EVT2_BOOT is not set CONFIG_AUTOBOOT=y CONFIG_AUTOBOOT_DELAY=10 CONFIG_ENV_MUTABLE=y CONFIG_ENV_LINK=y CONFIG_ENV_REGION="nor:0x7fc000+15k" +CONFIG_ENV_CHECK_LEN=1024 CONFIG_ENV_STARTUP_KERNEL_COPY=y CONFIG_ENV_REGION_KERNEL="fis://kernel" -CONFIG_ENV_REGION_KERNEL_SWAP=y +# CONFIG_ENV_REGION_KERNEL_SWAP is not set # CONFIG_ENV_STARTUP_RAMDISK_COPY is not set CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y CONFIG_ENV_DEFAULT_CMDLINE="console=ttyS0,115200 rootfstype=jffs2 root=/dev/mtdblock4 rw init=/linuxrc noirqdebug" # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set CONFIG_USES_NOR_BOOTFLASH=y -CONFIG_LITTLEENDIAN=y +# CONFIG_LITTLEENDIAN is not set CONFIG_CLEAR_STACKS=y CONFIG_ALIASES=y diff --git a/packages/boost-asio/boost-asio_0.3.7.bb b/packages/boost-asio/boost-asio_0.3.7.bb index 07888044f2..45b7e22eb1 100644 --- a/packages/boost-asio/boost-asio_0.3.7.bb +++ b/packages/boost-asio/boost-asio_0.3.7.bb @@ -6,8 +6,6 @@ PRIORITY = "optional" LICENSE = "Boost Software License" PR = "r1" -inherit debian - SRC_URI = "${SOURCEFORGE_MIRROR}/asio/boost_asio_0_3_7.tar.bz2" # mtx-[12] use 2.4 kernels but the kernel-libc-headers are from kernel 2.6, diff --git a/packages/boost/boost_1.33.0.bb b/packages/boost/boost_1.33.0.bb index c409022fae..4c709e6842 100644 --- a/packages/boost/boost_1.33.0.bb +++ b/packages/boost/boost_1.33.0.bb @@ -11,9 +11,6 @@ PRIORITY = "optional" LICENSE = "Boost Software License" PR = "r1" -# need debian package naming for the libs -inherit debian - BOOST_VER = "${@"_".join(bb.data.getVar("PV",d,1).split("."))}" BOOST_MAJ = "${@"_".join(bb.data.getVar("PV",d,1).split(".")[0:2])}" BOOST_P = "boost_${BOOST_VER}" diff --git a/packages/busybox/slingbox-1.2.2/defconfig b/packages/busybox/slingbox-1.2.2/defconfig index a9b167ad8d..8026cfc2ff 100644 --- a/packages/busybox/slingbox-1.2.2/defconfig +++ b/packages/busybox/slingbox-1.2.2/defconfig @@ -10,37 +10,41 @@ HAVE_DOT_CONFIG=y # # General Configuration # +# CONFIG_NITPICK is not set # CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set -CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_SHOW_USAGE=y CONFIG_FEATURE_VERBOSE_USAGE=y +CONFIG_FEATURE_COMPRESS_USAGE=y # CONFIG_FEATURE_INSTALLER is not set # CONFIG_LOCALE_SUPPORT is not set -# CONFIG_FEATURE_DEVFS is not set +CONFIG_GETOPT_LONG=y # CONFIG_FEATURE_DEVPTS is not set # CONFIG_FEATURE_CLEAN_UP is not set # CONFIG_FEATURE_SUID is not set # CONFIG_FEATURE_SUID_CONFIG is not set # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set # CONFIG_SELINUX is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" # # Build Options # # CONFIG_STATIC is not set -# CONFIG_DISABLE_SHARED is not set # CONFIG_BUILD_LIBBUSYBOX is not set # CONFIG_FEATURE_FULL_LIBBUSYBOX is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_LFS=y USING_CROSS_COMPILER=y -CROSS_COMPILER_PREFIX="armv5b-softfloat-linux-" +CROSS_COMPILER_PREFIX="armeb-linux-" # CONFIG_BUILD_AT_ONCE is not set # # Debugging Options # # CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set # CONFIG_NO_DEBUG_LIB is not set # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set @@ -70,7 +74,7 @@ CONFIG_MD5_SIZE_VS_SPEED=2 # CONFIG_AR is not set # CONFIG_FEATURE_AR_LONG_FILENAMES is not set CONFIG_BUNZIP2=y -# CONFIG_CPIO is not set +CONFIG_CPIO=y # CONFIG_DPKG is not set # CONFIG_DPKG_DEB is not set # CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set @@ -83,12 +87,12 @@ CONFIG_TAR=y CONFIG_FEATURE_TAR_CREATE=y CONFIG_FEATURE_TAR_BZIP2=y # CONFIG_FEATURE_TAR_LZMA is not set -# CONFIG_FEATURE_TAR_FROM is not set +CONFIG_FEATURE_TAR_FROM=y CONFIG_FEATURE_TAR_GZIP=y CONFIG_FEATURE_TAR_COMPRESS=y -CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y -CONFIG_FEATURE_TAR_LONG_OPTIONS=y +# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set CONFIG_UNCOMPRESS=y # CONFIG_UNLZMA is not set # CONFIG_FEATURE_LZMA_FAST is not set @@ -105,29 +109,38 @@ CONFIG_UNZIP=y # # Coreutils # -# CONFIG_BASENAME is not set +CONFIG_BASENAME=y # CONFIG_CAL is not set -# CONFIG_CAT is not set -# CONFIG_CHGRP is not set -# CONFIG_CHMOD is not set -# CONFIG_CHOWN is not set +CONFIG_CAT=y +# CONFIG_CATV is not set +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y CONFIG_CHROOT=y +# CONFIG_CKSUM is not set # CONFIG_CMP is not set # CONFIG_COMM is not set -# CONFIG_CP is not set +CONFIG_CP=y CONFIG_CUT=y # CONFIG_DATE is not set # CONFIG_FEATURE_DATE_ISOFMT is not set -# CONFIG_DD is not set -# CONFIG_DF is not set +CONFIG_DD=y +# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set +# CONFIG_FEATURE_DD_IBS_OBS is not set +CONFIG_DF=y +# CONFIG_DIFF is not set +# CONFIG_FEATURE_DIFF_BINARY is not set +# CONFIG_FEATURE_DIFF_DIR is not set +# CONFIG_FEATURE_DIFF_MINIMAL is not set CONFIG_DIRNAME=y -# CONFIG_DOS2UNIX is not set -# CONFIG_UNIX2DOS is not set +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y CONFIG_DU=y -CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y -# CONFIG_ECHO is not set -# CONFIG_FEATURE_FANCY_ECHO is not set +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y # CONFIG_ENV is not set +# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set CONFIG_EXPR=y # CONFIG_EXPR_MATH_SUPPORT_64 is not set # CONFIG_FALSE is not set @@ -135,37 +148,40 @@ CONFIG_EXPR=y CONFIG_HEAD=y CONFIG_FEATURE_FANCY_HEAD=y # CONFIG_HOSTID is not set -# CONFIG_ID is not set +CONFIG_ID=y # CONFIG_INSTALL is not set +# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set # CONFIG_LENGTH is not set -# CONFIG_LN is not set +CONFIG_LN=y # CONFIG_LOGNAME is not set -# CONFIG_LS is not set -# CONFIG_FEATURE_LS_FILETYPES is not set -# CONFIG_FEATURE_LS_FOLLOWLINKS is not set -# CONFIG_FEATURE_LS_RECURSIVE is not set -# CONFIG_FEATURE_LS_SORTFILES is not set -# CONFIG_FEATURE_LS_TIMESTAMPS is not set -# CONFIG_FEATURE_LS_USERNAME is not set +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y # CONFIG_FEATURE_LS_COLOR is not set # CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set CONFIG_MD5SUM=y -# CONFIG_MKDIR is not set +CONFIG_MKDIR=y +# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set CONFIG_MKFIFO=y -# CONFIG_MKNOD is not set -# CONFIG_MV is not set +CONFIG_MKNOD=y +CONFIG_MV=y +# CONFIG_FEATURE_MV_LONG_OPTIONS is not set # CONFIG_NICE is not set # CONFIG_NOHUP is not set # CONFIG_OD is not set # CONFIG_PRINTENV is not set # CONFIG_PRINTF is not set -# CONFIG_PWD is not set +CONFIG_PWD=y # CONFIG_REALPATH is not set -# CONFIG_RM is not set +CONFIG_RM=y CONFIG_RMDIR=y # CONFIG_SEQ is not set # CONFIG_SHA1SUM is not set -# CONFIG_SLEEP is not set +CONFIG_SLEEP=y # CONFIG_FEATURE_FANCY_SLEEP is not set CONFIG_SORT=y # CONFIG_FEATURE_SORT_BIG is not set @@ -173,14 +189,14 @@ CONFIG_SORT=y # CONFIG_FEATURE_STAT_FORMAT is not set # CONFIG_STTY is not set # CONFIG_SUM is not set -# CONFIG_SYNC is not set +CONFIG_SYNC=y CONFIG_TAIL=y CONFIG_FEATURE_FANCY_TAIL=y CONFIG_TEE=y # CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set -# CONFIG_TEST is not set +CONFIG_TEST=y # CONFIG_FEATURE_TEST_64 is not set -# CONFIG_TOUCH is not set +CONFIG_TOUCH=y # CONFIG_TR is not set # CONFIG_FEATURE_TR_CLASSES is not set # CONFIG_FEATURE_TR_EQUIV is not set @@ -196,6 +212,10 @@ CONFIG_UNIQ=y # CONFIG_WHO is not set # CONFIG_WHOAMI is not set # CONFIG_YES is not set + +# +# Common options for cp and mv +# # CONFIG_FEATURE_PRESERVE_HARDLINKS is not set # @@ -206,7 +226,7 @@ CONFIG_FEATURE_AUTOWIDTH=y # # Common options for df, du, ls # -# CONFIG_FEATURE_HUMAN_READABLE is not set +CONFIG_FEATURE_HUMAN_READABLE=y # # Common options for md5sum, sha1sum @@ -225,7 +245,9 @@ CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y # CONFIG_OPENVT is not set # CONFIG_RESET is not set # CONFIG_SETCONSOLE is not set +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set # CONFIG_SETKEYCODES is not set +# CONFIG_SETLOGCONS is not set # # Debian Utilities @@ -235,7 +257,10 @@ CONFIG_MKTEMP=y # CONFIG_READLINK is not set # CONFIG_FEATURE_READLINK_FOLLOW is not set # CONFIG_RUN_PARTS is not set +# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set # CONFIG_START_STOP_DAEMON is not set +# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set +# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set # CONFIG_WHICH is not set # @@ -243,29 +268,31 @@ CONFIG_MKTEMP=y # CONFIG_AWK=y CONFIG_FEATURE_AWK_MATH=y +# CONFIG_ED is not set # CONFIG_PATCH is not set CONFIG_SED=y -# CONFIG_VI is not set -# CONFIG_FEATURE_VI_COLON is not set -# CONFIG_FEATURE_VI_YANKMARK is not set -# CONFIG_FEATURE_VI_SEARCH is not set +CONFIG_VI=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y # CONFIG_FEATURE_VI_USE_SIGNALS is not set # CONFIG_FEATURE_VI_DOT_CMD is not set # CONFIG_FEATURE_VI_READONLY is not set # CONFIG_FEATURE_VI_SETOPTS is not set # CONFIG_FEATURE_VI_SET is not set # CONFIG_FEATURE_VI_WIN_RESIZE is not set -# CONFIG_FEATURE_VI_OPTIMIZE_CURSOR is not set +CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y # # Finding Utilities # -# CONFIG_FIND is not set +CONFIG_FIND=y +# CONFIG_FEATURE_FIND_PRINT0 is not set # CONFIG_FEATURE_FIND_MTIME is not set # CONFIG_FEATURE_FIND_MMIN is not set # CONFIG_FEATURE_FIND_PERM is not set -# CONFIG_FEATURE_FIND_TYPE is not set -# CONFIG_FEATURE_FIND_XDEV is not set +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y # CONFIG_FEATURE_FIND_NEWER is not set # CONFIG_FEATURE_FIND_INUM is not set # CONFIG_FEATURE_FIND_EXEC is not set @@ -283,12 +310,13 @@ CONFIG_FEATURE_GREP_FGREP_ALIAS=y # Init Utilities # # CONFIG_INIT is not set +# CONFIG_DEBUG_INIT is not set # CONFIG_FEATURE_USE_INITTAB is not set # CONFIG_FEATURE_INIT_SCTTY is not set # CONFIG_FEATURE_EXTRA_QUIET is not set # CONFIG_FEATURE_INIT_COREDUMPS is not set # CONFIG_FEATURE_INITRD is not set -# CONFIG_HALT is not set +CONFIG_HALT=y # CONFIG_MESG is not set # @@ -326,26 +354,30 @@ CONFIG_FEATURE_GREP_FGREP_ALIAS=y # # Linux Module Utilities # -# CONFIG_INSMOD is not set +CONFIG_INSMOD=y # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -# CONFIG_RMMOD is not set -# CONFIG_LSMOD is not set +CONFIG_RMMOD=y +CONFIG_LSMOD=y # CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set # CONFIG_MODPROBE is not set # CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +CONFIG_FEATURE_2_4_MODULES=y # CONFIG_FEATURE_2_6_MODULES is not set -# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set +CONFIG_FEATURE_QUERY_MODULE_INTERFACE=y # # Linux System Utilities # -# CONFIG_DMESG is not set +CONFIG_DMESG=y # CONFIG_FBSET is not set # CONFIG_FEATURE_FBSET_FANCY is not set # CONFIG_FEATURE_FBSET_READMODE is not set @@ -366,14 +398,16 @@ CONFIG_FREERAMDISK=y # CONFIG_GETOPT is not set CONFIG_HEXDUMP=y # CONFIG_HWCLOCK is not set -# CONFIG_FEATURE_HWCLOCK_LONGOPTIONS is not set +# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set # CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set # CONFIG_IPCRM is not set # CONFIG_IPCS is not set CONFIG_LOSETUP=y # CONFIG_MDEV is not set # CONFIG_FEATURE_MDEV_CONF is not set -# CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MDEV_EXEC is not set +CONFIG_MKSWAP=y +# CONFIG_FEATURE_MKSWAP_V0 is not set CONFIG_MORE=y CONFIG_FEATURE_USE_TERMIOS=y CONFIG_MOUNT=y @@ -382,7 +416,7 @@ CONFIG_PIVOT_ROOT=y # CONFIG_RDATE is not set # CONFIG_READPROFILE is not set # CONFIG_SETARCH is not set -# CONFIG_SWAPONOFF is not set +CONFIG_SWAPONOFF=y # CONFIG_SWITCH_ROOT is not set CONFIG_UMOUNT=y CONFIG_FEATURE_UMOUNT_ALL=y @@ -399,6 +433,7 @@ CONFIG_FEATURE_MOUNT_LOOP=y # CONFIG_ADJTIMEX is not set # CONFIG_BBCONFIG is not set # CONFIG_CROND is not set +# CONFIG_DEBUG_CROND_OPTION is not set # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set # CONFIG_CRONTAB is not set # CONFIG_DC is not set @@ -406,6 +441,7 @@ CONFIG_FEATURE_MOUNT_LOOP=y # CONFIG_DEVFSD_MODLOAD is not set # CONFIG_DEVFSD_FG_NP is not set # CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set # CONFIG_EJECT is not set # CONFIG_LAST is not set # CONFIG_LESS is not set @@ -430,6 +466,7 @@ CONFIG_FEATURE_MOUNT_LOOP=y # CONFIG_RX is not set CONFIG_STRINGS=y # CONFIG_SETSID is not set +# CONFIG_TASKSET is not set # CONFIG_TIME is not set # CONFIG_WATCHDOG is not set @@ -443,24 +480,25 @@ CONFIG_STRINGS=y # CONFIG_FAKEIDENTD is not set # CONFIG_FTPGET is not set # CONFIG_FTPPUT is not set -# CONFIG_HOSTNAME is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y # CONFIG_HTTPD is not set -# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set -# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set -# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set # CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set # CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set # CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set # CONFIG_FEATURE_HTTPD_CGI is not set # CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set # CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set # CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set -# CONFIG_IFCONFIG is not set -# CONFIG_FEATURE_IFCONFIG_STATUS is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y # CONFIG_FEATURE_IFCONFIG_SLIP is not set # CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set -# CONFIG_FEATURE_IFCONFIG_HW is not set -# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y # CONFIG_IFUPDOWN is not set # CONFIG_FEATURE_IFUPDOWN_IP is not set # CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set @@ -469,33 +507,35 @@ CONFIG_STRINGS=y # CONFIG_FEATURE_IFUPDOWN_IPX is not set # CONFIG_FEATURE_IFUPDOWN_MAPPING is not set # CONFIG_INETD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO is not set -# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set # CONFIG_FEATURE_INETD_RPC is not set # CONFIG_IP is not set # CONFIG_FEATURE_IP_ADDRESS is not set # CONFIG_FEATURE_IP_LINK is not set # CONFIG_FEATURE_IP_ROUTE is not set # CONFIG_FEATURE_IP_TUNNEL is not set -# CONFIG_IPCALC is not set -# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FEATURE_IP_SHORT_FORMS is not set # CONFIG_IPADDR is not set # CONFIG_IPLINK is not set # CONFIG_IPROUTE is not set # CONFIG_IPTUNNEL is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set # CONFIG_NAMEIF is not set CONFIG_NC=y # CONFIG_NC_GAPING_SECURITY_HOLE is not set # CONFIG_NETSTAT is not set # CONFIG_NSLOOKUP is not set -# CONFIG_PING is not set -# CONFIG_FEATURE_FANCY_PING is not set +CONFIG_PING=y +CONFIG_FEATURE_FANCY_PING=y # CONFIG_PING6 is not set # CONFIG_FEATURE_FANCY_PING6 is not set -# CONFIG_ROUTE is not set +CONFIG_ROUTE=y # CONFIG_TELNET is not set # CONFIG_FEATURE_TELNET_TTYPE is not set # CONFIG_FEATURE_TELNET_AUTOLOGIN is not set @@ -505,25 +545,26 @@ CONFIG_NC=y # CONFIG_FEATURE_TFTP_GET is not set # CONFIG_FEATURE_TFTP_PUT is not set # CONFIG_FEATURE_TFTP_BLOCKSIZE is not set -# CONFIG_FEATURE_TFTP_DEBUG is not set +# CONFIG_DEBUG_TFTP is not set # CONFIG_TRACEROUTE is not set # CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set # CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set -# CONFIG_VCONFIG is not set -CONFIG_WGET=y -# CONFIG_FEATURE_WGET_STATUSBAR is not set -# CONFIG_FEATURE_WGET_AUTHENTICATION is not set -# CONFIG_FEATURE_WGET_IP6_LITERAL is not set # # udhcp Server/Client # -# CONFIG_UDHCPD is not set -# CONFIG_UDHCPC is not set -# CONFIG_DUMPLEASES is not set +# CONFIG_APP_UDHCPD is not set +# CONFIG_APP_UDHCPC is not set +# CONFIG_APP_DUMPLEASES is not set # CONFIG_FEATURE_UDHCP_SYSLOG is not set # CONFIG_FEATURE_UDHCP_DEBUG is not set +# CONFIG_VCONFIG is not set +CONFIG_WGET=y +# CONFIG_FEATURE_WGET_STATUSBAR is not set +# CONFIG_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_FEATURE_WGET_IP6_LITERAL is not set +CONFIG_FEATURE_WGET_LONG_OPTIONS=y # CONFIG_ZCIP is not set # @@ -531,12 +572,12 @@ CONFIG_WGET=y # CONFIG_FREE=y # CONFIG_FUSER is not set -# CONFIG_KILL is not set -# CONFIG_KILLALL is not set -# CONFIG_PIDOF is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_PIDOF=y # CONFIG_FEATURE_PIDOF_SINGLE is not set # CONFIG_FEATURE_PIDOF_OMIT is not set -# CONFIG_PS is not set +CONFIG_PS=y # CONFIG_FEATURE_PS_WIDE is not set # CONFIG_RENICE is not set # CONFIG_BB_SYSCTL is not set @@ -547,47 +588,56 @@ CONFIG_FREE=y # # Shells # -# CONFIG_FEATURE_SH_IS_ASH is not set +CONFIG_FEATURE_SH_IS_ASH=y # CONFIG_FEATURE_SH_IS_HUSH is not set # CONFIG_FEATURE_SH_IS_LASH is not set # CONFIG_FEATURE_SH_IS_MSH is not set -CONFIG_FEATURE_SH_IS_NONE=y -# CONFIG_ASH is not set -# CONFIG_ASH_JOB_CONTROL is not set +# CONFIG_FEATURE_SH_IS_NONE is not set +CONFIG_ASH=y + +# +# Ash Shell Options +# +CONFIG_ASH_JOB_CONTROL=y # CONFIG_ASH_READ_NCHARS is not set # CONFIG_ASH_READ_TIMEOUT is not set # CONFIG_ASH_ALIAS is not set -# CONFIG_ASH_MATH_SUPPORT is not set +CONFIG_ASH_MATH_SUPPORT=y # CONFIG_ASH_MATH_SUPPORT_64 is not set # CONFIG_ASH_GETOPTS is not set -# CONFIG_ASH_CMDCMD is not set # CONFIG_ASH_BUILTIN_ECHO is not set +# CONFIG_ASH_BUILTIN_TEST is not set +# CONFIG_ASH_CMDCMD is not set # CONFIG_ASH_MAIL is not set -# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y # CONFIG_ASH_RANDOM_SUPPORT is not set # CONFIG_ASH_EXPAND_PRMT is not set # CONFIG_HUSH is not set # CONFIG_LASH is not set # CONFIG_MSH is not set + +# +# Bourne Shell Options +# # CONFIG_FEATURE_SH_EXTRA_QUIET is not set # CONFIG_FEATURE_SH_STANDALONE_SHELL is not set -# CONFIG_FEATURE_COMMAND_EDITING is not set +CONFIG_FEATURE_COMMAND_EDITING=y # CONFIG_FEATURE_COMMAND_EDITING_VI is not set -CONFIG_FEATURE_COMMAND_HISTORY=0 +CONFIG_FEATURE_COMMAND_HISTORY=15 # CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set -# CONFIG_FEATURE_COMMAND_TAB_COMPLETION is not set +CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y # CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set # CONFIG_FEATURE_SH_FANCY_PROMPT is not set # # System Logging Utilities # -# CONFIG_SYSLOGD is not set -# CONFIG_FEATURE_ROTATE_LOGFILE is not set +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y # CONFIG_FEATURE_REMOTE_LOG is not set # CONFIG_FEATURE_IPC_SYSLOG is not set CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 # CONFIG_LOGREAD is not set # CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -# CONFIG_KLOGD is not set +CONFIG_KLOGD=y # CONFIG_LOGGER is not set diff --git a/packages/busybox/slingbox-1.2.2/df_rootfs.patch b/packages/busybox/slingbox-1.2.2/df_rootfs.patch new file mode 100644 index 0000000000..fa7e61af15 --- /dev/null +++ b/packages/busybox/slingbox-1.2.2/df_rootfs.patch @@ -0,0 +1,34 @@ +--- busybox-1.2.2/coreutils/df.c.orig 2006-11-11 13:25:00.000000000 -0600 ++++ busybox-1.2.2/coreutils/df.c 2006-11-11 13:23:15.000000000 -0600 +@@ -47,6 +47,7 @@ + struct statfs s; + static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */ + const char *disp_units_hdr = hdr_1k; ++ int root_done = 0; + + #ifdef CONFIG_FEATURE_HUMAN_READABLE + bb_opt_complementally = "h-km:k-hm:m-hk"; +@@ -112,16 +113,19 @@ + ) / (blocks_used + s.f_bavail); + } + +- if (strcmp(device, "rootfs") == 0) { +- continue; +- } else if (strcmp(device, "/dev/root") == 0) { ++ if (strcmp(device, "/dev/root") == 0 || strcmp(device, "rootfs") == 0) { + /* Adjusts device to be the real root device, + * or leaves device alone if it can't find it */ +- if ((device = find_block_device("/")) == NULL) { ++ if ((device = find_block_device(mount_point)) == NULL) { + goto SET_ERROR; + } + } + ++ if (strcmp(mount_point, "/") == 0) { ++ if (root_done) continue; ++ root_done = 1; ++ } ++ + #ifdef CONFIG_FEATURE_HUMAN_READABLE + bb_printf("%-20s %9s ", device, + make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr)); diff --git a/packages/busybox/slingbox-1.2.2/halt.patch b/packages/busybox/slingbox-1.2.2/halt.patch new file mode 100644 index 0000000000..c52e35a8d5 --- /dev/null +++ b/packages/busybox/slingbox-1.2.2/halt.patch @@ -0,0 +1,40 @@ +diff -Naur busybox-1.2.2/init.orig/halt.c busybox-1.2.2/init/halt.c +--- busybox-1.2.2/init.orig/halt.c 2006-11-10 13:39:29.000000000 -0600 ++++ busybox-1.2.2/init/halt.c 2006-11-10 13:39:09.000000000 -0600 +@@ -12,6 +12,8 @@ + #include <sys/reboot.h> + #include <unistd.h> + ++#include "init_shared.h" /* Linksys mods */ ++ + int halt_main(int argc, char *argv[]) + { + static const int magic[] = { +@@ -40,6 +42,12 @@ + if (flags&1) sleep(atoi(delay)); + if (!(flags&2)) sync(); + ++/* Linksys Halt code - adapted from the Linksys source for Busybox. */ ++ rc = bb_shutdown_system(magic[which]); ++ if (rc) bb_error_msg("No."); ++ return rc; /* Shrug */ ++/* End of Linksys code */ ++ + /* Perform action. */ + if (ENABLE_INIT && !(flags & 4)) { + if (ENABLE_FEATURE_INITRD) { +diff -Naur busybox-1.2.2/init.orig/init_shared.c busybox-1.2.2/init/init_shared.c +--- busybox-1.2.2/init.orig/init_shared.c 2006-11-10 13:39:29.000000000 -0600 ++++ busybox-1.2.2/init/init_shared.c 2006-11-10 13:38:37.000000000 -0600 +@@ -62,6 +62,11 @@ + + sync(); + ++/* Linksys Halt code - if poweroff or halt, invoke an external program ++ to do actually turn off the power. */ ++ if (magic != 0x01234567) system("/usr/bin/Set_Led power_off"); ++/* End of Linksys Halt code */ ++ + reboot(magic); + return 0; /* Shrug */ + } diff --git a/packages/busybox/slingbox-1.2.2/wget-long-options.patch b/packages/busybox/slingbox-1.2.2/wget-long-options.patch new file mode 100644 index 0000000000..3c5920a3cb --- /dev/null +++ b/packages/busybox/slingbox-1.2.2/wget-long-options.patch @@ -0,0 +1,20 @@ +--- busybox-1.2.1.orig/networking/wget.c ++++ busybox-1.2.1/networking/wget.c +@@ -136,7 +136,7 @@ + #define WGET_OPT_PREFIX 32 + #define WGET_OPT_PROXY 64 + +-#if ENABLE_WGET_LONG_OPTIONS ++#if CONFIG_FEATURE_WGET_LONG_OPTIONS + static const struct option wget_long_options[] = { + { "continue", 0, NULL, 'c' }, + { "quiet", 0, NULL, 'q' }, +@@ -180,7 +180,7 @@ + * Crack command line. + */ + bb_opt_complementally = "-1:\203::"; +-#if ENABLE_WGET_LONG_OPTIONS ++#if CONFIG_FEATURE_WGET_LONG_OPTIONS + bb_applet_long_options = wget_long_options; + #endif + opt = bb_getopt_ulflags(argc, argv, "cq\213O:\203:P:Y:", diff --git a/packages/busybox/slingbox_1.00.bb b/packages/busybox/slingbox_1.00.bb index 8e11a09e6c..2d2d88317c 100644 --- a/packages/busybox/slingbox_1.00.bb +++ b/packages/busybox/slingbox_1.00.bb @@ -4,7 +4,8 @@ HOMEPAGE = "http://www.busybox.net" LICENSE = "GPL" SECTION = "base" PRIORITY = "required" -PR = "r9" +PR = "r10" +COMPATIBLE_MACHINE = "nslu2" SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \ file://defconfig \ @@ -13,12 +14,6 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \ S = "${WORKDIR}/busybox-${PV}" -python () { - # Don't build slingbox unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("switchbox only builds for the Linksys NSLU2") -} - export EXTRA_CFLAGS = "${CFLAGS}" EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}" diff --git a/packages/busybox/slingbox_1.1.3.bb b/packages/busybox/slingbox_1.1.3.bb index 8cd85ce540..2a86748f28 100644 --- a/packages/busybox/slingbox_1.1.3.bb +++ b/packages/busybox/slingbox_1.1.3.bb @@ -4,7 +4,8 @@ HOMEPAGE = "http://www.busybox.net" LICENSE = "GPL" SECTION = "base" PRIORITY = "required" -PR = "r2" +PR = "r3" +COMPATIBLE_MACHINE = "nslu2" SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \ file://defconfig \ @@ -15,12 +16,6 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \ S = "${WORKDIR}/busybox-${PV}" -python () { - # Don't build slingbox unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("slingbox only builds for the Linksys NSLU2") -} - export EXTRA_CFLAGS = "${CFLAGS}" EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}" diff --git a/packages/busybox/slingbox_1.2.2.bb b/packages/busybox/slingbox_1.2.2.bb index a8fd77d4ef..523e2199f5 100644 --- a/packages/busybox/slingbox_1.2.2.bb +++ b/packages/busybox/slingbox_1.2.2.bb @@ -4,22 +4,20 @@ HOMEPAGE = "http://www.busybox.net" LICENSE = "GPL" SECTION = "base" PRIORITY = "required" -PR = "r1" +PR = "r4" +COMPATIBLE_MACHINE = "nslu2" SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \ file://defconfig \ + file://wget-long-options.patch;patch=1 \ file://lazy_umount.patch;patch=1 \ + file://df_rootfs.patch;patch=1 \ file://slingbox_name.patch;patch=1 \ + file://halt.patch;patch=1" \ file://slingbox.patch;patch=1" S = "${WORKDIR}/busybox-${PV}" -python () { - # Don't build slingbox unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("slingbox only builds for the Linksys NSLU2") -} - export EXTRA_CFLAGS = "${CFLAGS}" EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}" diff --git a/packages/dbus/dbus-0.94/dbus-1.init b/packages/dbus/dbus-0.94/dbus-1.init new file mode 100644 index 0000000000..7ef411606b --- /dev/null +++ b/packages/dbus/dbus-0.94/dbus-1.init @@ -0,0 +1,86 @@ +#! /bin/sh +# -*- coding: utf-8 -*- +# Debian init.d script for D-BUS +# Copyright © 2003 Colin Walters <walters@debian.org> + +set -e + +DAEMON=/usr/bin/dbus-daemon +NAME=dbus +DAEMONUSER=messagebus +PIDDIR=/var/run/dbus +PIDFILE=$PIDDIR/pid +DESC="system message bus" +EVENTDIR=/etc/dbus-1/event.d + +test -x $DAEMON || exit 0 + +# Source defaults file; edit that file to configure this script. +ENABLED=1 +PARAMS="" +if [ -e /etc/default/dbus ]; then + . /etc/default/dbus +fi + +test "$ENABLED" != "0" || exit 0 + +start_it_up() +{ + if [ ! -d $PIDDIR ]; then + mkdir -p $PIDDIR + chown $DAEMONUSER $PIDDIR + chgrp $DAEMONUSER $PIDDIR + fi + if [ -e $PIDFILE ]; then + PIDDIR=/proc/$(cat $PIDFILE) + if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then + echo "$DESC already started; not starting." + else + echo "Removing stale PID file $PIDFILE." + rm -f $PIDFILE + fi + fi + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS + echo "$NAME." + if [ -d $EVENTDIR ]; then + run-parts --arg=start $EVENTDIR + fi +} + +shut_it_down() +{ + if [ -d $EVENTDIR ]; then + run-parts --reverse --arg=stop $EVENTDIR + fi + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER + # We no longer include these arguments so that start-stop-daemon + # can do its job even given that we may have been upgraded. + # We rely on the pidfile being sanely managed + # --exec $DAEMON -- --system $PARAMS + echo "$NAME." + rm -f $PIDFILE +} + +case "$1" in + start) + start_it_up + ;; + stop) + shut_it_down + ;; + restart|force-reload) + shut_it_down + sleep 1 + start_it_up + ;; + *) + echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/packages/gtk+/gtk+-2.4.4/.mtn2git_empty b/packages/dbus/dbus-0.95/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/gtk+/gtk+-2.4.4/.mtn2git_empty +++ b/packages/dbus/dbus-0.95/.mtn2git_empty diff --git a/packages/dbus/dbus-0.95/cross.patch b/packages/dbus/dbus-0.95/cross.patch new file mode 100644 index 0000000000..268a3ae3de --- /dev/null +++ b/packages/dbus/dbus-0.95/cross.patch @@ -0,0 +1,10 @@ +--- /tmp/configure.in 2006-11-09 21:47:10.000000000 +0100 ++++ dbus-0.95/configure.in 2006-11-09 21:48:13.108554000 +0100 +@@ -719,6 +719,7 @@ + exit (0); + ]])], + [ac_cv_have_abstract_sockets=yes], ++ [ac_cv_have_abstract_sockets=no], + [ac_cv_have_abstract_sockets=no] + )]) + AC_LANG_POP(C) diff --git a/packages/dbus/dbus-0.95/dbus-1.init b/packages/dbus/dbus-0.95/dbus-1.init new file mode 100644 index 0000000000..4829c0d4a8 --- /dev/null +++ b/packages/dbus/dbus-0.95/dbus-1.init @@ -0,0 +1,88 @@ +#! /bin/sh +# -*- coding: utf-8 -*- +# Debian init.d script for D-BUS +# Copyright © 2003 Colin Walters <walters@debian.org> + +set -e + +DAEMON=/usr/bin/dbus-daemon +NAME=dbus +DAEMONUSER=messagebus +PIDDIR=/var/run/dbus +PIDFILE=$PIDDIR/pid +DESC="system message bus" +EVENTDIR=/etc/dbus-1/event.d + +test -x $DAEMON || exit 0 + +# Source defaults file; edit that file to configure this script. +ENABLED=1 +PARAMS="" +if [ -e /etc/default/dbus ]; then + . /etc/default/dbus +fi + +test "$ENABLED" != "0" || exit 0 + +start_it_up() +{ + if [ ! -d $PIDDIR ]; then + mkdir -p $PIDDIR + chown $DAEMONUSER $PIDDIR + chgrp $DAEMONUSER $PIDDIR + fi + if [ -e $PIDFILE ]; then + PIDDIR=/proc/$(cat $PIDFILE) + if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then + echo "$DESC already started; not starting." + else + echo "Removing stale PID file $PIDFILE." + rm -f $PIDFILE + fi + fi + + dbus-uuidgen --ensure + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS + echo "$NAME." + if [ -d $EVENTDIR ]; then + run-parts --arg=start $EVENTDIR + fi +} + +shut_it_down() +{ + if [ -d $EVENTDIR ]; then + run-parts --reverse --arg=stop $EVENTDIR + fi + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER + # We no longer include these arguments so that start-stop-daemon + # can do its job even given that we may have been upgraded. + # We rely on the pidfile being sanely managed + # --exec $DAEMON -- --system $PARAMS + echo "$NAME." + rm -f $PIDFILE +} + +case "$1" in + start) + start_it_up + ;; + stop) + shut_it_down + ;; + restart|force-reload) + shut_it_down + sleep 1 + start_it_up + ;; + *) + echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/packages/dbus/dbus-0.95/fix-install-daemon.patch b/packages/dbus/dbus-0.95/fix-install-daemon.patch new file mode 100644 index 0000000000..c31786357d --- /dev/null +++ b/packages/dbus/dbus-0.95/fix-install-daemon.patch @@ -0,0 +1,13 @@ +Index: dbus-0.94/bus/Makefile.am +=================================================================== +--- dbus-0.94.orig/bus/Makefile.am 2006-10-01 17:36:18.000000000 +0200 ++++ dbus-0.94/bus/Makefile.am 2006-10-14 21:40:05.000000000 +0200 +@@ -110,7 +110,7 @@ + $(mkinstalldirs) $(DESTDIR)$(DBUS_DAEMONDIR); \ + chmod 755 $(DESTDIR)$(DBUS_DAEMONDIR); \ + fi +- $(INSTALL_PROGRAM) dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR) ++ $(INSTALL_PROGRAM) .libs/dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR) + $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus + $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d + $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services diff --git a/packages/gtk+/gtk+-2.6.3/.mtn2git_empty b/packages/dbus/dbus-1.0.0/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/gtk+/gtk+-2.6.3/.mtn2git_empty +++ b/packages/dbus/dbus-1.0.0/.mtn2git_empty diff --git a/packages/dbus/dbus-1.0.0/cross.patch b/packages/dbus/dbus-1.0.0/cross.patch new file mode 100644 index 0000000000..268a3ae3de --- /dev/null +++ b/packages/dbus/dbus-1.0.0/cross.patch @@ -0,0 +1,10 @@ +--- /tmp/configure.in 2006-11-09 21:47:10.000000000 +0100 ++++ dbus-0.95/configure.in 2006-11-09 21:48:13.108554000 +0100 +@@ -719,6 +719,7 @@ + exit (0); + ]])], + [ac_cv_have_abstract_sockets=yes], ++ [ac_cv_have_abstract_sockets=no], + [ac_cv_have_abstract_sockets=no] + )]) + AC_LANG_POP(C) diff --git a/packages/dbus/dbus-1.0.0/dbus-1.init b/packages/dbus/dbus-1.0.0/dbus-1.init new file mode 100644 index 0000000000..4829c0d4a8 --- /dev/null +++ b/packages/dbus/dbus-1.0.0/dbus-1.init @@ -0,0 +1,88 @@ +#! /bin/sh +# -*- coding: utf-8 -*- +# Debian init.d script for D-BUS +# Copyright © 2003 Colin Walters <walters@debian.org> + +set -e + +DAEMON=/usr/bin/dbus-daemon +NAME=dbus +DAEMONUSER=messagebus +PIDDIR=/var/run/dbus +PIDFILE=$PIDDIR/pid +DESC="system message bus" +EVENTDIR=/etc/dbus-1/event.d + +test -x $DAEMON || exit 0 + +# Source defaults file; edit that file to configure this script. +ENABLED=1 +PARAMS="" +if [ -e /etc/default/dbus ]; then + . /etc/default/dbus +fi + +test "$ENABLED" != "0" || exit 0 + +start_it_up() +{ + if [ ! -d $PIDDIR ]; then + mkdir -p $PIDDIR + chown $DAEMONUSER $PIDDIR + chgrp $DAEMONUSER $PIDDIR + fi + if [ -e $PIDFILE ]; then + PIDDIR=/proc/$(cat $PIDFILE) + if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then + echo "$DESC already started; not starting." + else + echo "Removing stale PID file $PIDFILE." + rm -f $PIDFILE + fi + fi + + dbus-uuidgen --ensure + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS + echo "$NAME." + if [ -d $EVENTDIR ]; then + run-parts --arg=start $EVENTDIR + fi +} + +shut_it_down() +{ + if [ -d $EVENTDIR ]; then + run-parts --reverse --arg=stop $EVENTDIR + fi + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER + # We no longer include these arguments so that start-stop-daemon + # can do its job even given that we may have been upgraded. + # We rely on the pidfile being sanely managed + # --exec $DAEMON -- --system $PARAMS + echo "$NAME." + rm -f $PIDFILE +} + +case "$1" in + start) + start_it_up + ;; + stop) + shut_it_down + ;; + restart|force-reload) + shut_it_down + sleep 1 + start_it_up + ;; + *) + echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/packages/dbus/dbus-1.0.0/fix-install-daemon.patch b/packages/dbus/dbus-1.0.0/fix-install-daemon.patch new file mode 100644 index 0000000000..c31786357d --- /dev/null +++ b/packages/dbus/dbus-1.0.0/fix-install-daemon.patch @@ -0,0 +1,13 @@ +Index: dbus-0.94/bus/Makefile.am +=================================================================== +--- dbus-0.94.orig/bus/Makefile.am 2006-10-01 17:36:18.000000000 +0200 ++++ dbus-0.94/bus/Makefile.am 2006-10-14 21:40:05.000000000 +0200 +@@ -110,7 +110,7 @@ + $(mkinstalldirs) $(DESTDIR)$(DBUS_DAEMONDIR); \ + chmod 755 $(DESTDIR)$(DBUS_DAEMONDIR); \ + fi +- $(INSTALL_PROGRAM) dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR) ++ $(INSTALL_PROGRAM) .libs/dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR) + $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus + $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d + $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services diff --git a/packages/dbus/dbus_0.94.bb b/packages/dbus/dbus_0.94.bb index 050be8a86e..f19df19187 100644 --- a/packages/dbus/dbus_0.94.bb +++ b/packages/dbus/dbus_0.94.bb @@ -6,6 +6,8 @@ DESCRIPTION = "message bus system for applications to talk to one another" LICENSE = "GPL" DEPENDS = "expat glib-2.0 virtual/libintl" +PR = "r1" + SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ file://cross.patch;patch=1 \ file://tmpdir.patch;patch=1 \ diff --git a/packages/dbus/dbus_0.95.bb b/packages/dbus/dbus_0.95.bb new file mode 100644 index 0000000000..688e5c630f --- /dev/null +++ b/packages/dbus/dbus_0.95.bb @@ -0,0 +1,63 @@ +DEFAULT_PREFERENCE = "-1" + +SECTION = "base" +HOMEPAGE = "http://www.freedesktop.org/Software/dbus" +DESCRIPTION = "message bus system for applications to talk to one another" +LICENSE = "GPL" +DEPENDS = "expat glib-2.0 virtual/libintl" + +SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ + file://tmpdir.patch;patch=1 \ + file://dbus-1.init \ + file://fix-segfault.patch;patch=1 \ + file://cross.patch;patch=1 \ + file://fix-install-daemon.patch;patch=1" + +inherit autotools pkgconfig update-rc.d gettext + +INITSCRIPT_NAME = "dbus-1" +INITSCRIPT_PARAMS = "defaults" + +CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf" + +FILES_${PN} = "${bindir}/dbus-daemon ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${bindir}/dbus-uuidgen ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*" +FILES_${PN}-dev += "${libdir}/dbus-1.0/include" + +pkg_postinst_dbus() { +#!/bin/sh + +# can't do adduser stuff offline +if [ "x$D" != "x" ]; then + exit 1 +fi + +MESSAGEUSER=messagebus +MESSAGEHOME=/var/run/dbus + +mkdir -p $MESSAGEHOME || true +chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER" +chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER" +} + +EXTRA_OECONF = "--disable-qt --disable-qt3 --disable-gtk --disable-tests \ + --disable-checks --disable-xml-docs --disable-doxygen-docs \ + --with-xml=expat --without-x" + +do_stage () { + oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR} + + autotools_stage_includes + + mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/ + install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/ +} + +do_install_append () { + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1 +} + +python populate_packages_prepend () { + if (bb.data.getVar('DEBIAN_NAMES', d, 1)): + bb.data.setVar('PKG_dbus', 'dbus-1', d) +} diff --git a/packages/dbus/dbus_1.0.0.bb b/packages/dbus/dbus_1.0.0.bb new file mode 100644 index 0000000000..688e5c630f --- /dev/null +++ b/packages/dbus/dbus_1.0.0.bb @@ -0,0 +1,63 @@ +DEFAULT_PREFERENCE = "-1" + +SECTION = "base" +HOMEPAGE = "http://www.freedesktop.org/Software/dbus" +DESCRIPTION = "message bus system for applications to talk to one another" +LICENSE = "GPL" +DEPENDS = "expat glib-2.0 virtual/libintl" + +SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ + file://tmpdir.patch;patch=1 \ + file://dbus-1.init \ + file://fix-segfault.patch;patch=1 \ + file://cross.patch;patch=1 \ + file://fix-install-daemon.patch;patch=1" + +inherit autotools pkgconfig update-rc.d gettext + +INITSCRIPT_NAME = "dbus-1" +INITSCRIPT_PARAMS = "defaults" + +CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf" + +FILES_${PN} = "${bindir}/dbus-daemon ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${bindir}/dbus-uuidgen ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*" +FILES_${PN}-dev += "${libdir}/dbus-1.0/include" + +pkg_postinst_dbus() { +#!/bin/sh + +# can't do adduser stuff offline +if [ "x$D" != "x" ]; then + exit 1 +fi + +MESSAGEUSER=messagebus +MESSAGEHOME=/var/run/dbus + +mkdir -p $MESSAGEHOME || true +chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER" +chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER" +} + +EXTRA_OECONF = "--disable-qt --disable-qt3 --disable-gtk --disable-tests \ + --disable-checks --disable-xml-docs --disable-doxygen-docs \ + --with-xml=expat --without-x" + +do_stage () { + oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR} + + autotools_stage_includes + + mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/ + install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/ +} + +do_install_append () { + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1 +} + +python populate_packages_prepend () { + if (bb.data.getVar('DEBIAN_NAMES', d, 1)): + bb.data.setVar('PKG_dbus', 'dbus-1', d) +} diff --git a/packages/eds/eds-dbus_svn.bb b/packages/eds/eds-dbus_svn.bb index c39d5b7443..e56b41e595 100644 --- a/packages/eds/eds-dbus_svn.bb +++ b/packages/eds/eds-dbus_svn.bb @@ -4,13 +4,13 @@ LICENSE = "LGPL" DEPENDS = "glib-2.0 gtk+ gconf dbus db gnome-common libglade virtual/libiconv zlib" PV = "1.4.0+svn${SRCDATE}" -PR = "r16" +PR = "r17" SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \ file://no_libdb.patch;patch=1 \ file://no_iconv_test.patch;patch=1 \ file://no_libedataserverui.patch;patch=1 \ - file://disable_orbit.patch;patch=1 \ + file://disable_orbit.patch;patch=1;maxdate=20060126 \ file://iconv-detect.h" S = "${WORKDIR}/trunk" @@ -18,7 +18,7 @@ S = "${WORKDIR}/trunk" inherit autotools pkgconfig # -ldb needs this on some platforms -export LDFLAGS += "-lpthread" +LDFLAGS += "-lpthread" EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-soup --with-libdb=${STAGING_DIR}/${HOST_SYS} --disable-smime --disable-nss --disable-nntp --disable-gtk-doc" @@ -38,24 +38,7 @@ FILES_${PN}-dev += "${libdir}/evolution-data-server-1.2/extensions/*.la \ do_configure_append = " cp ${WORKDIR}/iconv-detect.h ${S} " do_stage () { - oe_libinstall -so -C addressbook/libebook-dbus libebook-1.2 ${STAGING_LIBDIR} - oe_libinstall -so -C addressbook/libedata-book-dbus libedata-book-1.2 ${STAGING_LIBDIR} - oe_libinstall -so -C calendar/libecal-dbus libecal-1.2 ${STAGING_LIBDIR} - oe_libinstall -so -C calendar/libedata-cal-dbus libedata-cal-1.2 ${STAGING_LIBDIR} - oe_libinstall -so -C libedataserver libedataserver-1.2 ${STAGING_LIBDIR} - oe_libinstall -so -C camel libcamel-1.2 ${STAGING_LIBDIR} - oe_libinstall -so -C camel libcamel-provider-1.2 ${STAGING_LIBDIR} - - install -d ${STAGING_INCDIR}/camel-1.2 ${STAGING_INCDIR}/libebook \ - ${STAGING_INCDIR}/libecal ${STAGING_INCDIR}/libedataserver \ - ${STAGING_INCDIR}/libical - install -m 0644 ${S}/camel/*.h ${STAGING_INCDIR}/camel-1.2 - install -m 0644 ${S}/camel/*.def ${STAGING_INCDIR}/camel-1.2 - ln -sf ${STAGING_INCDIR}/camel-1.2 ${STAGING_INCDIR}/camel - install -m 0644 ${S}/addressbook/libebook-dbus/*.h ${STAGING_INCDIR}/libebook - install -m 0644 ${S}/calendar/libecal-dbus/*.h ${STAGING_INCDIR}/libecal - install -m 0644 ${S}/libedataserver/*.h ${STAGING_INCDIR}/libedataserver - install -m 0644 ${S}/calendar/libical/src/libical/*.h ${STAGING_INCDIR}/libical + autotools_stage_all } diff --git a/packages/faad2/faad2-2.0/faad2-gcc-fix.patch b/packages/faad2/faad2-2.0/faad2-gcc-fix.patch new file mode 100644 index 0000000000..943b89a53f --- /dev/null +++ b/packages/faad2/faad2-2.0/faad2-gcc-fix.patch @@ -0,0 +1,11 @@ +--- /tmp/mp4ff.c 2006-11-11 21:25:07.000000000 +0100 ++++ faad2/common/mp4ff/mp4ff.c 2006-11-11 21:25:20.348554000 +0100 +@@ -87,7 +87,7 @@ + if (ff) free(ff);
+ }
+
+-static void mp4ff_track_add(mp4ff_t *f)
++void mp4ff_track_add(mp4ff_t *f)
+ {
+ f->total_tracks++;
+
diff --git a/packages/faad2/faad2_2.0.bb b/packages/faad2/faad2_2.0.bb index 18df582a4e..a856a1e45f 100644 --- a/packages/faad2/faad2_2.0.bb +++ b/packages/faad2/faad2_2.0.bb @@ -4,12 +4,13 @@ SECTION = "libs" LICENSE = "LGPL" PRIORITY = "optional" DEPENDS = "" -PR="r1" +PR="r2" inherit autotools SRC_URI = "${SOURCEFORGE_MIRROR}/faac/${PN}-${PV}.zip \ - file://Makefile.am" + file://faad2-gcc-fix.patch;patch=1 \ + file://Makefile.am" S="${WORKDIR}/${PN}" @@ -17,7 +18,7 @@ do_configure_prepend() { mv ${WORKDIR}/Makefile.am ${S}/ } -PACKAGES = "${PN} libfaad libfaad-dev libmp4ff libmp4ff-dev" +PACKAGES =+ "libfaad libfaad-dev libmp4ff libmp4ff-dev" FILES_${PN} = "${bindir}/faad" diff --git a/packages/file/file-native_4.18.bb b/packages/file/file-native_4.18.bb new file mode 100644 index 0000000000..63554b01fb --- /dev/null +++ b/packages/file/file-native_4.18.bb @@ -0,0 +1,8 @@ +require file_${PV}.bb +inherit native + +# avoid dependency loop +DEPENDS = "" +PR = "r1" + +SRC_URI += "file://native-fix.diff;patch=1" diff --git a/packages/file/file_4.18.bb b/packages/file/file_4.18.bb new file mode 100644 index 0000000000..697d4ffb9f --- /dev/null +++ b/packages/file/file_4.18.bb @@ -0,0 +1,22 @@ +DESCRIPTION = "File attempts to classify files depending \ +on their contents and prints a description if a match is found." +SECTION = "console/utils" +LICENSE = "BSD-ADV" +DEPENDS = "file-native" + +SRC_URI = "ftp://ftp.astron.com/pub/file/file-${PV}.tar.gz \ + file://dump \ + file://filesystems" +S = "${WORKDIR}/file-${PV}" + +inherit autotools + +do_configure_prepend() { + sed -i -e 's,$(top_builddir)/src/file,file,' ${S}/magic/Makefile.am + cp ${WORKDIR}/dump ${S}/magic/Magdir/ + cp ${WORKDIR}/filesystems ${S}/magic/Magdir/ +} + +do_stage() { + autotools_stage_all +} diff --git a/packages/file/files/dump b/packages/file/files/dump new file mode 100644 index 0000000000..628ead86c6 --- /dev/null +++ b/packages/file/files/dump @@ -0,0 +1,81 @@ + +#------------------------------------------------------------------------------ +# dump: file(1) magic for dump file format--for new and old dump filesystems +# +# We specify both byte orders in order to recognize byte-swapped dumps. +# +24 belong 60012 new-fs dump file (big endian), +>4 bedate x Previous dump %s, +>8 bedate x This dump %s, +>12 belong >0 Volume %ld, +>692 belong 0 Level zero, type: +>692 belong >0 Level %d, type: +>0 belong 1 tape header, +>0 belong 2 beginning of file record, +>0 belong 3 map of inodes on tape, +>0 belong 4 continuation of file record, +>0 belong 5 end of volume, +>0 belong 6 map of inodes deleted, +>0 belong 7 end of medium (for floppy), +>676 string >\0 Label %s, +>696 string >\0 Filesystem %s, +>760 string >\0 Device %s, +>824 string >\0 Host %s, +>888 belong >0 Flags %x + +24 belong 60011 old-fs dump file (big endian), +#>4 bedate x Previous dump %s, +#>8 bedate x This dump %s, +>12 belong >0 Volume %ld, +>692 belong 0 Level zero, type: +>692 belong >0 Level %d, type: +>0 belong 1 tape header, +>0 belong 2 beginning of file record, +>0 belong 3 map of inodes on tape, +>0 belong 4 continuation of file record, +>0 belong 5 end of volume, +>0 belong 6 map of inodes deleted, +>0 belong 7 end of medium (for floppy), +>676 string >\0 Label %s, +>696 string >\0 Filesystem %s, +>760 string >\0 Device %s, +>824 string >\0 Host %s, +>888 belong >0 Flags %x + +24 lelong 60012 new-fs dump file (little endian), +>4 ledate x This dump %s, +>8 ledate x Previous dump %s, +>12 lelong >0 Volume %ld, +>692 lelong 0 Level zero, type: +>692 lelong >0 Level %d, type: +>0 lelong 1 tape header, +>0 lelong 2 beginning of file record, +>0 lelong 3 map of inodes on tape, +>0 lelong 4 continuation of file record, +>0 lelong 5 end of volume, +>0 lelong 6 map of inodes deleted, +>0 lelong 7 end of medium (for floppy), +>676 string >\0 Label %s, +>696 string >\0 Filesystem %s, +>760 string >\0 Device %s, +>824 string >\0 Host %s, +>888 lelong >0 Flags %x + +24 lelong 60011 old-fs dump file (little endian), +#>4 ledate x Previous dump %s, +#>8 ledate x This dump %s, +>12 lelong >0 Volume %ld, +>692 lelong 0 Level zero, type: +>692 lelong >0 Level %d, type: +>0 lelong 1 tape header, +>0 lelong 2 beginning of file record, +>0 lelong 3 map of inodes on tape, +>0 lelong 4 continuation of file record, +>0 lelong 5 end of volume, +>0 lelong 6 map of inodes deleted, +>0 lelong 7 end of medium (for floppy), +>676 string >\0 Label %s, +>696 string >\0 Filesystem %s, +>760 string >\0 Device %s, +>824 string >\0 Host %s, +>888 lelong >0 Flags %x diff --git a/packages/file/files/filesystems b/packages/file/files/filesystems new file mode 100644 index 0000000000..fd5073334c --- /dev/null +++ b/packages/file/files/filesystems @@ -0,0 +1,812 @@ + +#------------------------------------------------------------------------------ +# filesystems: file(1) magic for different filesystems +# +0 string \366\366\366\366 PC formatted floppy with no filesystem +# Sun disk labels +# From /usr/include/sun/dklabel.h: +0774 beshort 0xdabe Sun disk label +>0 string x '%s +>>31 string >\0 \b%s +>>>63 string >\0 \b%s +>>>>95 string >\0 \b%s +>0 string x \b' +>0734 short >0 %d rpm, +>0736 short >0 %d phys cys, +>0740 short >0 %d alts/cyl, +>0746 short >0 %d interleave, +>0750 short >0 %d data cyls, +>0752 short >0 %d alt cyls, +>0754 short >0 %d heads/partition, +>0756 short >0 %d sectors/track, +>0764 long >0 start cyl %ld, +>0770 long x %ld blocks +# Is there a boot block written 1 sector in? +>512 belong&077777777 0600407 \b, boot block present +# Smart Boot Manager backup file is 41 byte header + first sectors of disc +# (http://btmgr.sourceforge.net/docs/user-guide-3.html) +0 string SBMBAKUP_ Smart Boot Manager backup file +>9 string x \b, version %-5.5s +>>14 string =_ +>>>15 string x %-.1s +>>>>16 string =_ \b. +>>>>>17 string x \b%-.1s +>>>>>>18 string =_ \b. +>>>>>>>19 string x \b%-.1s +# DOS Emulator image is 128 byte header + harddisc image +0 string DOSEMU\0 +>0x27E leshort 0xAA55 DOS Emulator image +0x1FE leshort 0xAA55 x86 boot sector +>2 string OSBS \b, OS/BS MBR +# J\xf6rg Jenderek <joerg dot jenderek at web dot de> +>0x8C string Invalid\ partition\ table \b, MS-DOS MBR +# dr-dos with some upper-, lowercase variants +>0x9D string Invalid\ partition\ table$ +>>181 string No\ Operating\ System$ +>>>201 string Operating\ System\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03 +>0x9D string Invalid\ partition\ table$ +>>181 string No\ operating\ system$ +>>>201 string Operating\ system\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03 +>342 string Invalid\ partition\ table$ +>>366 string No\ operating\ system$ +>>>386 string Operating\ system\ load\ error$ \b, DR-DOS MBR, version 7.01 to 7.03 +>295 string NEWLDR\0 +>>302 string Bad\ PT\ $ +>>>310 string No\ OS\ $ +>>>>317 string OS\ load\ err$ +>>>>>329 string Moved\ or\ missing\ IBMBIO.LDR\n\r +>>>>>>358 string Press\ any\ key\ to\ continue.\n\r$ +>>>>>>>387 string Copyright\ (c)\ 1984,1998 +>>>>>>>>411 string Caldera\ Inc.\0 \b, DR-DOS MBR (IBMBIO.LDR) +>0x10F string Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 4.10.1998, 4.10.2222 +>>0x1B8 ubelong >0 \b, Serial 0x%-.4x +>0x8B string Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 5.00 to 4.00.950 +>271 string Invalid\ partition\ table\0 +>>295 string Error\ loading\ operating\ system\0 +>>>326 string Missing\ operating\ system\0 \b, mbr +# +>139 string Invalid\ partition\ table\0 +>>163 string Error\ loading\ operating\ system\0 +>>>194 string Missing\ operating\ system\0 \b, Microsoft Windows XP mbr +# http://www.heise.de/ct/05/09/006/ page 184 +#HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\DosDevices\?:=Serial4Bytes+8Bytes +>>>>0x1B8 ulelong >0 \b,Serial 0x%-.4x +>300 string Invalid\ partition\ table\0 +>>324 string Error\ loading\ operating\ system\0 +>>>355 string Missing\ operating\ system\0 \b, Microsoft Windows XP MBR +#??>>>389 string Invalid\ system\ disk +>>>>0x1B8 ulelong >0 \b, Serial 0x%-.4x +>300 string Ung\201ltige\ Partitionstabelle +#split string to avoid error: String too long +>>328 string Fehler\ beim\ Laden\ +>>>346 string des\ Betriebssystems +>>>>366 string Betriebssystem\ nicht\ vorhanden \b, Microsoft Windows XP MBR (german) +>>>>>0x1B8 ulelong >0 \b, Serial 0x%-.4x +>0x145 string Default:\ F \b, FREE-DOS MBR +>64 string no\ active\ partition\ found +>>96 string read\ error\ while\ reading\ drive \b, FREE-DOS Beta 0.9 MBR +>271 string Operating\ system\ loading +>>296 string error\r \b, SYSLINUX MBR (2.10) +# bootloader, bootmanager +>43 string SMART\ BTMGRFAT12\ \ \ +>>430 string SBMK\ Bad!\r +>>>3 string SBM \b, Smart Boot Manager +>>>>6 string >\0 \b, version %s +>382 string XOSLLOADXCF \b, eXtended Operating System Loader +>6 string LILO \b, LInux i386 boot LOader +>>120 string LILO \b, version 22.3.4 SuSe +>>172 string LILO \b, version 22.5.8 Debian +>402 string Geom\0Hard\ Disk\0Read\0\ Error\0 +>>394 string stage1 \b, GRand Unified Bootloader (0.5.95) +>343 string Geom\0Read\0\ Error\0 +>>321 string Loading\ stage1.5 \b, Grand Unified Bootloader +>380 string Geom\0Hard\ Disk\0Read\0\ Error\0 +>>374 string GRUB\ \0 \b, GRand Unified Bootloader +>382 string Geom\0Hard\ Disk\0Read\0\ Error\0 +>>376 string GRUB\ \0 \b, GRand Unified Bootloader (0.93) +>383 string Geom\0Hard\ Disk\0Read\0\ Error\0 +>>377 string GRUB\ \0 \b, GRand Unified Bootloader (0.94) +>385 string Geom\0Hard\ Disk\0Read\0\ Error\0 +>>379 string GRUB\ \0 \b, GRand Unified Bootloader (0.95) +>480 string Boot\ failed\r +>>495 string LDLINUX\ SYS \b, SYSLINUX bootloader (2.06) +>395 string chksum\0\ ERROR!\0 \b, Gujin bootloader +>185 string FDBOOT\ Version\ +>>204 string \rNo\ Systemdisk.\ +>>>220 string Booting\ from\ harddisk.\n\r +>>>245 string Cannot\ load\ from\ harddisk.\n\r +>>>>273 string Insert\ Systemdisk\ +>>>>>291 string and\ press\ any\ key.\n\r \b, FDBOOT harddisk Bootloader +>>>>>>200 string >\0 \b, version %-3s +>242 string Bootsector\ from\ C.H.\ Hochst\204 +>>278 string No\ Systemdisk.\ +>>>293 string Booting\ from\ harddisk.\n\r +>>>441 string Cannot\ load\ from\ harddisk.\n\r +>>>>469 string Insert\ Systemdisk\ +>>>>>487 string and\ press\ any\ key.\n\r \b, WinImage harddisk Bootloader +>>>>>>209 string >\0 \b, version %-4.4s +>(1.b+2) ubyte 0xe +>>(1.b+3) ubyte 0x1f +>>>(1.b+4) ubyte 0xbe +>>>>(1.b+5) ubyte 0x77 +>>>>(1.b+6) ubyte 0x7c +>>>>>(1.b+7) ubyte 0xac +>>>>>>(1.b+8) ubyte 0x22 +>>>>>>>(1.b+9) ubyte 0xc0 +>>>>>>>>(1.b+10) ubyte 0x74 +>>>>>>>>>(1.b+11) ubyte 0xb +>>>>>>>>>>(1.b+12) ubyte 0x56 +>>>>>>>>>>(1.b+13) ubyte 0xb4 \b, mkdosfs boot message display +# +>66 string Solaris\ Boot\ Sector +>>99 string Incomplete\ MDBoot\ load. +>>>89 string Version \b, Sun Solaris Bootloader +>>>>97 byte x version %c +# +>408 string OS/2\ !!\ SYS01475\r\0 +>>429 string OS/2\ !!\ SYS02025\r\0 +>>>450 string OS/2\ !!\ SYS02027\r\0 +>>>469 string OS2BOOT\ \ \ \ \b, IBM OS/2 Warp bootloader +# +>409 string OS/2\ !!\ SYS01475\r\0 +>>430 string OS/2\ !!\ SYS02025\r\0 +>>>451 string OS/2\ !!\ SYS02027\r\0 +>>>470 string OS2BOOT\ \ \ \ \b, IBM OS/2 Warp Bootloader +>112 string This\ disk\ is\ not\ bootable\r +>>142 string If\ you\ wish\ to\ make\ it\ bootable +>>>176 string run\ the\ DOS\ program\ SYS\ +>>>200 string after\ the\r +>>>>216 string system\ has\ been\ loaded\r\n +>>>>>242 string Please\ insert\ a\ DOS\ diskette\ +>>>>>271 string into\r\n\ the\ drive\ and\ +>>>>>>292 string strike\ any\ key...\0 \b, IBM OS/2 Warp message display +# XP +>430 string NTLDR\ is\ missing\xFF\r\n +>>449 string Disk\ error\xFF\r\n +>>>462 string Press\ any\ key\ to\ restart\r \b, Microsoft Windows XP Bootloader +# DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes +>>>>417 ubyte&0xDF >0 +>>>>>417 string x %-.5s +>>>>>>422 ubyte&0xDF >0 +>>>>>>>422 string x \b%-.3s +>>>>>425 ubyte&0xDF >0 +>>>>>>425 string >\ \b.%-.3s +# +>>>>371 ubyte >0x20 +>>>>>368 ubyte&0xDF >0 +>>>>>>368 string x %-.5s +>>>>>>>373 ubyte&0xDF >0 +>>>>>>>>373 string x \b%-.3s +>>>>>>376 ubyte&0xDF >0 +>>>>>>>376 string x \b.%-.3s +# +>430 string NTLDR\ nicht\ gefunden\xFF\r\n +>>453 string Datentr\204gerfehler\xFF\r\n +>>>473 string Neustart\ mit\ beliebiger\ Taste\r \b, Microsoft Windows XP Bootloader (german) +>>>>417 ubyte&0xDF >0 +>>>>>417 string x %-.5s +>>>>>>422 ubyte&0xDF >0 +>>>>>>>422 string x \b%-.3s +>>>>>425 ubyte&0xDF >0 +>>>>>>425 string >\ \b.%-.3s +# +>>>>368 ubyte&0xDF >0 +>>>>>368 string x %-.5s +>>>>>>373 ubyte&0xDF >0 +>>>>>>>373 string x \b%-.3s +>>>>>376 ubyte&0xDF >0 +>>>>>>376 string x \b.%-.3s +# +>430 string NTLDR\ fehlt\xFF\r\n +>>444 string Datentr\204gerfehler\xFF\r\n +>>>464 string Neustart\ mit\ beliebiger\ Taste\r \b, Microsoft Windows XP Bootloader (2.german) +>>>>417 ubyte&0xDF >0 +>>>>>417 string x %-.5s +>>>>>>422 ubyte&0xDF >0 +>>>>>>>422 string x \b%-.3s +>>>>>425 ubyte&0xDF >0 +>>>>>>425 string >\ \b.%-.3s +# variant +>>>>371 ubyte >0x20 +>>>>>368 ubyte&0xDF >0 +>>>>>>368 string x %-.5s +>>>>>>>373 ubyte&0xDF >0 +>>>>>>>>373 string x \b%-.3s +>>>>>>376 ubyte&0xDF >0 +>>>>>>>376 string x \b.%-.3s +# +>430 string NTLDR\ fehlt\xFF\r\n +>>444 string Medienfehler\xFF\r\n +>>>459 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (3.german) +>>>>371 ubyte >0x20 +>>>>>368 ubyte&0xDF >0 +>>>>>>368 string x %-.5s +>>>>>>>373 ubyte&0xDF >0 +>>>>>>>>373 string x \b%-.3s +>>>>>>376 ubyte&0xDF >0 +>>>>>>>376 string x \b.%-.3s +# variant +>>>>417 ubyte&0xDF >0 +>>>>>417 string x %-.5s +>>>>>>422 ubyte&0xDF >0 +>>>>>>>422 string x \b%-.3s +>>>>>425 ubyte&0xDF >0 +>>>>>>425 string >\ \b.%-.3s +# +>430 string Datentr\204ger\ entfernen\xFF\r\n +>>454 string Medienfehler\xFF\r\n +>>>469 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (4.german) +>>>>368 ubyte&0xDF >0 +>>>>>368 string x %-.5s +>>>>>>373 ubyte&0xDF >0 +>>>>>>>373 string x \b%-.3s +>>>>>376 ubyte&0xDF >0 +>>>>>>376 string x \b.%-.3s +#>3 string NTFS\ \ \ \ +>389 string Fehler\ beim\ Lesen\ +>>407 string des\ Datentr\204gers +>>>426 string NTLDR\ fehlt +>>>>440 string NTLDR\ ist\ komprimiert +>>>>>464 string Neustart\ mit\ Strg+Alt+Entf\r \b, Microsoft Windows XP Bootloader NTFS (german) +#>3 string NTFS\ \ \ \ +>313 string A\ disk\ read\ error\ occurred.\r +>>345 string A\ kernel\ file\ is\ missing\ +>>>370 string from\ the\ disk.\r +>>>>484 string NTLDR\ is\ compressed +>>>>>429 string Insert\ a\ system\ diskette\ +>>>>>>454 string and\ restart\r\nthe\ system.\r \b, Microsoft Windows XP Bootloader NTFS +# DOS loader variants different languages,offsets +>472 ubyte&0xDF >0 +>>389 string Invalid\ system\ disk\xFF\r\n +>>>411 string Disk\ I/O\ error +>>>>428 string Replace\ the\ disk,\ and\ +>>>>>455 string press\ any\ key \b, Microsoft Windows 98 Bootloader +#IO.SYS +>>>>>>472 ubyte&0xDF >0 +>>>>>>>472 string x \b %-.2s +>>>>>>>>474 ubyte&0xDF >0 +>>>>>>>>>474 string x \b%-.5s +>>>>>>>>>>479 ubyte&0xDF >0 +>>>>>>>>>>>479 string x \b%-.1s +>>>>>>>480 ubyte&0xDF >0 +>>>>>>>>480 string x \b.%-.3s +#MSDOS.SYS +>>>>>>>483 ubyte&0xDF >0 \b+ +>>>>>>>>483 string x \b%-.5s +>>>>>>>>>488 ubyte&0xDF >0 +>>>>>>>>>>488 string x \b%-.3s +>>>>>>>>491 ubyte&0xDF >0 +>>>>>>>>>491 string x \b.%-.3s +# +>>390 string Invalid\ system\ disk\xFF\r\n +>>>412 string Disk\ I/O\ error\xFF\r\n +>>>>429 string Replace\ the\ disk,\ and\ +>>>>>451 string then\ press\ any\ key\r \b, Microsoft Windows 98 Bootloader +>>388 string Ungueltiges\ System\ \xFF\r\n +>>>410 string E/A-Fehler\ \ \ \ \xFF\r\n +>>>>427 string Datentraeger\ wechseln\ und\ +>>>>>453 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (german) +#WINBOOT.SYS only not spaces (0xDF) +>>>>>>497 ubyte&0xDF >0 +>>>>>>>497 string x %-.5s +>>>>>>>>502 ubyte&0xDF >0 +>>>>>>>>>502 string x \b%-.1s +>>>>>>>>>>503 ubyte&0xDF >0 +>>>>>>>>>>>503 string x \b%-.1s +>>>>>>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>>>>>>504 string x \b%-.1s +>>>>>>505 ubyte&0xDF >0 +>>>>>>>505 string x \b.%-.3s +#IO.SYS +>>>>>>472 ubyte&0xDF >0 or +>>>>>>>472 string x \b %-.2s +>>>>>>>>474 ubyte&0xDF >0 +>>>>>>>>>474 string x \b%-.5s +>>>>>>>>>>479 ubyte&0xDF >0 +>>>>>>>>>>>479 string x \b%-.1s +>>>>>>>480 ubyte&0xDF >0 +>>>>>>>>480 string x \b.%-.3s +#MSDOS.SYS +>>>>>>>483 ubyte&0xDF >0 \b+ +>>>>>>>>483 string x \b%-.5s +>>>>>>>>>488 ubyte&0xDF >0 +>>>>>>>>>>488 string x \b%-.3s +>>>>>>>>491 ubyte&0xDF >0 +>>>>>>>>>491 string x \b.%-.3s +# +>>390 string Ungueltiges\ System\ \xFF\r\n +>>>412 string E/A-Fehler\ \ \ \ \xFF\r\n +>>>>429 string Datentraeger\ wechseln\ und\ +>>>>>455 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (German) +#WINBOOT.SYS only not spaces (0xDF) +>>>>>>497 ubyte&0xDF >0 +>>>>>>>497 string x %-.7s +>>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>>504 string x \b%-.1s +>>>>>>505 ubyte&0xDF >0 +>>>>>>>505 string x \b.%-.3s +#IO.SYS +>>>>>>472 ubyte&0xDF >0 or +>>>>>>>472 string x \b %-.2s +>>>>>>>>474 ubyte&0xDF >0 +>>>>>>>>>474 string x \b%-.6s +>>>>>>>480 ubyte&0xDF >0 +>>>>>>>>480 string x \b.%-.3s +#MSDOS.SYS +>>>>>>>483 ubyte&0xDF >0 \b+ +>>>>>>>>483 string x \b%-.5s +>>>>>>>>>488 ubyte&0xDF >0 +>>>>>>>>>>488 string x \b%-.3s +>>>>>>>>491 ubyte&0xDF >0 +>>>>>>>>>491 string x \b.%-.3s +# +>>389 string Ungueltiges\ System\ \xFF\r\n +>>>411 string E/A-Fehler\ \ \ \ \xFF\r\n +>>>>428 string Datentraeger\ wechseln\ und\ +>>>>>454 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (GERMAN) +# DOS names like IO.SYS,WINBOOT.SYS,MSDOS.SYS,WINBOOT.INI are 8 right space padded bytes+3 bytes +>>>>>>472 string x %-.2s +>>>>>>>474 ubyte&0xDF >0 +>>>>>>>>474 string x \b%-.5s +>>>>>>>>479 ubyte&0xDF >0 +>>>>>>>>>479 string x \b%-.1s +>>>>>>480 ubyte&0xDF >0 +>>>>>>>480 string x \b.%-.3s +>>>>>>483 ubyte&0xDF >0 \b+ +>>>>>>>483 string x \b%-.5s +>>>>>>>488 ubyte&0xDF >0 +>>>>>>>>488 string x \b%-.2s +>>>>>>>>490 ubyte&0xDF >0 +>>>>>>>>>490 string x \b%-.1s +>>>>>>>491 ubyte&0xDF >0 +>>>>>>>>491 string x \b.%-.3s +>479 ubyte&0xDF >0 +>>416 string Kein\ System\ oder\ +>>>433 string Laufwerksfehler +>>>>450 string Wechseln\ und\ Taste\ dr\201cken \b, Microsoft DOS Bootloader (german) +#IO.SYS +>>>>>479 string x \b %-.2s +>>>>>>481 ubyte&0xDF >0 +>>>>>>>481 string x \b%-.6s +>>>>>487 ubyte&0xDF >0 +>>>>>>487 string x \b.%-.3s +#MSDOS.SYS +>>>>>>490 ubyte&0xDF >0 \b+ +>>>>>>>490 string x \b%-.5s +>>>>>>>>495 ubyte&0xDF >0 +>>>>>>>>>495 string x \b%-.3s +>>>>>>>498 ubyte&0xDF >0 +>>>>>>>>498 string x \b.%-.3s +# +>486 ubyte&0xDF >0 +>>416 string Non-System\ disk\ or\ +>>>435 string disk\ error\r +>>>>447 string Replace\ and\ press\ any\ key\ +>>>>>473 string when\ ready\r \b, Microsoft DOS Bootloader +>480 ubyte&0xDF >0 +>>393 string Non-System\ disk\ or\ +>>>412 string disk\ error\r +>>>>424 string Replace\ and\ press\ any\ key\ +>>>>>450 string when\ ready\r \b, Microsoft DOS bootloader +#IO.SYS +>>>>>480 string x \b %-.2s +>>>>>>482 ubyte&0xDF >0 +>>>>>>>48 string x \b%-.6s +>>>>>488 ubyte&0xDF >0 +>>>>>>488 string x \b.%-.3s +#MSDOS.SYS +>>>>>>491 ubyte&0xDF >0 \b+ +>>>>>>>491 string x \b%-.5s +>>>>>>>>496 ubyte&0xDF >0 +>>>>>>>>>496 string x \b%-.3s +>>>>>>>499 ubyte&0xDF >0 +>>>>>>>>499 string x \b.%-.3s +#>43 string \224R-LOADER\ \ SYS =label +>54 string SYS +>>324 string VASKK +>>>495 string NEWLDR\0 \b, DR-DOS Bootloader (LOADER.SYS) +# +>70 string IBMBIO\ \ COM +>>472 string Cannot\ load\ DOS!\ +>>>489 string Any\ key\ to\ retry \b, DR-DOS Bootloader +>>471 string Cannot\ load\ DOS\ +>>487 string press\ key\ to\ retry \b, Open-DOS Bootloader +>444 string KERNEL\ \ SYS +>>314 string BOOT\ error! \b, FREE-DOS Bootloader +>499 string KERNEL\ \ SYS +>>305 string BOOT\ err!\0 \b, Free-DOS Bootloader +>449 string KERNEL\ \ SYS +>>319 string BOOT\ error! \b, FREE-DOS 0.5 Bootloader +>125 string Loading\ FreeDOS...\r +>>311 string BOOT\ error!\r \b, FREE-DOS bootloader +>>>441 ubyte&0xDF >0 +>>>>441 string x \b %-.6s +>>>>>447 ubyte&0xDF >0 +>>>>>>447 string x \b%-.1s +>>>>>>>448 ubyte&0xDF >0 +>>>>>>>>448 string x \b%-.1s +>>>>449 ubyte&0xDF >0 +>>>>>449 string x \b.%-.3s +>124 string FreeDOS\0 +>>331 string \ err\0 \b, FREE-DOS BETa 0.9 Bootloader +# DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes +>>>497 ubyte&0xDF >0 +>>>>497 string x \b %-.6s +>>>>>503 ubyte&0xDF >0 +>>>>>>503 string x \b%-.1s +>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>504 string x \b%-.1s +>>>>505 ubyte&0xDF >0 +>>>>>505 string x \b.%-.3s +>>333 string \ err\0 \b, FREE-DOS BEta 0.9 Bootloader +>>>497 ubyte&0xDF >0 +>>>>497 string x \b %-.6s +>>>>>503 ubyte&0xDF >0 +>>>>>>503 string x \b%-.1s +>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>504 string x \b%-.1s +>>>>505 ubyte&0xDF >0 +>>>>>505 string x \b.%-.3s +>>334 string \ err\0 \b, FREE-DOS Beta 0.9 Bootloader +>>>497 ubyte&0xDF >0 +>>>>497 string x \b %-.6s +>>>>>503 ubyte&0xDF >0 +>>>>>>503 string x \b%-.1s +>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>504 string x \b%-.1s +>>>>505 ubyte&0xDF >0 +>>>>>505 string x \b.%-.3s +>336 string Error!\ +>>343 string Hit\ a\ key\ to\ reboot. \b, FREE-DOS Beta 0.9sr1 Bootloader +>>>497 ubyte&0xDF >0 +>>>>497 string x \b %-.6s +>>>>>503 ubyte&0xDF >0 +>>>>>>503 string x \b%-.1s +>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>504 string x \b%-.1s +>>>>505 ubyte&0xDF >0 +>>>>>505 string x \b.%-.3s +# loader end +>0 string \0\0\0\0 \b, extended partition table +# JuMP short bootcodeoffset NOP assembler instructions will usually be EB xx 90 +# older drives may use E9 xx xx +>0 lelong&0x009000EB 0x009000EB +>0 lelong&0x000000E9 0x000000E9 +>>1 ubyte >37 \b, code offset 0x%x +# mtools-3.9.8/msdos.h +# usual values are marked with comments to get only informations of strange FAT systems +# valid sectorsize are from 32 to 2048 +>>>11 uleshort <2049 +>>>>11 uleshort >31 +>>>>>3 string >\0 \b, OEM-ID "%8.8s" +>>>>>11 uleshort >512 \b, Bytes/sector %u +#>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual) +>>>>>11 uleshort <512 \b, Bytes/sector %u +>>>>>13 ubyte >1 \b, sectors/cluster %u +#>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies) +>>>>>14 uleshort >32 \b, reserved sectors %u +#>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32) +#>>>>>14 uleshort >1 \b, reserved sectors %u +#>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16) +>>>>>14 uleshort <1 \b, reserved sectors %u +>>>>>16 ubyte >2 \b, FATs %u +#>>>>>16 ubyte =2 \b, FATs %u (usual) +>>>>>16 ubyte =1 \b, FAT %u +>>>>>16 ubyte >0 +>>>>>17 uleshort >0 \b, root entries %u +#>>>>>17 uleshort =0 \b, root entries %u=0 (usual Fat32) +>>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB) +#>>>>>19 uleshort =0 \b, sectors %u=0 (usual Fat32) +>>>>>21 ubyte >0xF0 \b, Media descriptor 0x%x +#>>>>>21 ubyte =0xF0 \b, Media descriptor 0x%x (usual floppy) +>>>>>21 ubyte <0xF0 \b, Media descriptor 0x%x +>>>>>22 uleshort >0 \b, sectors/FAT %u +#>>>>>22 uleshort =0 \b, sectors/FAT %u=0 (usual Fat32) +>>>>>26 ubyte >2 \b, heads %u +#>>>>>26 ubyte =2 \b, heads %u (usual floppy) +>>>>>26 ubyte =1 \b, heads %u +>>>>>28 ulelong >0 \b, hidden sectors %u +#>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy) +>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB) +#>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB) +# FAT<32 specific +# NOT le FAT3=NOT 3TAF=0xCCABBEB9 +>>>>>82 ulelong&0xCCABBEB9 >0 +>>>>>>36 ubyte >0x80 \b, physical drive 0x%x +#>>>>>>36 ubyte =0x80 \b, physical drive 0x%x=0x80 (usual harddisk) +>>>>>>36 ubyte&0x7F >0 \b, physical drive 0x%x +#>>>>>>36 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) +>>>>>>37 ubyte >0 \b, reserved 0x%x +#>>>>>>37 ubyte =0 \b, reserved 0x%x +>>>>>>38 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>38 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>38 ubyte =0x29 +>>>>>>>39 ulelong x \b, serial number 0x%x +>>>>>>>43 string <NO\ NAME \b, label: "%11.11s" +>>>>>>>43 string >NO\ NAME \b, label: "%11.11s" +>>>>>>>43 string =NO\ NAME \b, unlabeled +>>>>>>54 string FAT \b, FAT +>>>>>>>54 string FAT12 \b (12 bit) +>>>>>>>54 string FAT16 \b (16 bit) +# FAT32 specific +>>>>>82 string FAT32 \b, FAT (32 bit) +>>>>>>36 ulelong x \b, sectors/FAT %u +>>>>>>40 uleshort >0 \b, extension flags %u +#>>>>>>40 uleshort =0 \b, extension flags %u +>>>>>>42 uleshort >0 \b, fsVersion %u +#>>>>>>42 uleshort =0 \b, fsVersion %u (usual) +>>>>>>44 ulelong >2 \b, rootdir cluster %u +#>>>>>>44 ulelong =2 \b, rootdir cluster %u +#>>>>>>44 ulelong =1 \b, rootdir cluster %u +>>>>>>48 uleshort >1 \b, infoSector %u +#>>>>>>48 uleshort =1 \b, infoSector %u (usual) +>>>>>>48 uleshort <1 \b, infoSector %u +>>>>>>50 uleshort >6 \b, Backup boot sector %u +#>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual) +>>>>>>50 uleshort <6 \b, Backup boot sector %u +>>>>>>54 ulelong >0 \b, reserved1 0x%x +>>>>>>58 ulelong >0 \b, reserved2 0x%x +>>>>>>62 ulelong >0 \b, reserved3 0x%x +# same structure as FAT1X +>>>>>>64 ubyte >0x80 \b, physical drive 0x%x +#>>>>>>64 ubyte =0x80 \b, physical drive 0x%x=80 (usual harddisk) +>>>>>>64 ubyte&0x7F >0 \b, physical drive 0x%x +#>>>>>>64 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) +>>>>>>65 ubyte >0 \b, reserved 0x%x +>>>>>>66 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>66 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>66 ubyte =0x29 +>>>>>>>67 ulelong x \b, serial number 0x%x +>>>>>>>71 string <NO\ NAME \b, label: "%11.11s" +>>>>>>71 string >NO\ NAME \b, label: "%11.11s" +>>>>>>71 string =NO\ NAME \b, unlabeled +### FATs end +>0x200 lelong 0x82564557 \b, BSD disklabel +# FATX +0 string FATX FATX filesystem data + + +# Minix filesystems - Juan Cespedes <cespedes@debian.org> +0x410 leshort 0x137f Minix filesystem +0x410 beshort 0x137f Minix filesystem (big endian), +>0x402 beshort !0 \b, %d zones +>0x1e string minix \b, bootable +0x410 leshort 0x138f Minix filesystem, 30 char names +0x410 leshort 0x2468 Minix filesystem, version 2 +0x410 leshort 0x2478 Minix filesystem, version 2, 30 char names + +# romfs filesystems - Juan Cespedes <cespedes@debian.org> +0 string -rom1fs-\0 romfs filesystem, version 1 +>8 belong x %d bytes, +>16 string x named %s. + +# netboot image - Juan Cespedes <cespedes@debian.org> +0 lelong 0x1b031336L Netboot image, +>4 lelong&0xFFFFFF00 0 +>>4 lelong&0x100 0x000 mode 2 +>>4 lelong&0x100 0x100 mode 3 +>4 lelong&0xFFFFFF00 !0 unknown mode + +0x18b string OS/2 OS/2 Boot Manager + +9564 lelong 0x00011954 Unix Fast File system (little-endian), +>8404 string x last mounted on %s, +#>9504 ledate x last checked at %s, +>8224 ledate x last written at %s, +>8401 byte x clean flag %d, +>8228 lelong x number of blocks %d, +>8232 lelong x number of data blocks %d, +>8236 lelong x number of cylinder groups %d, +>8240 lelong x block size %d, +>8244 lelong x fragment size %d, +>8252 lelong x minimum percentage of free blocks %d, +>8256 lelong x rotational delay %dms, +>8260 lelong x disk rotational speed %drps, +>8320 lelong 0 TIME optimization +>8320 lelong 1 SPACE optimization + +9564 belong 0x00011954 Unix Fast File system (big-endian), +>7168 long 0x4c41424c Apple UFS Volume +>>7186 string x named %s, +>>7176 belong x volume label version %d, +>>7180 bedate x created on %s, +>8404 string x last mounted on %s, +#>9504 bedate x last checked at %s, +>8224 bedate x last written at %s, +>8401 byte x clean flag %d, +>8228 belong x number of blocks %d, +>8232 belong x number of data blocks %d, +>8236 belong x number of cylinder groups %d, +>8240 belong x block size %d, +>8244 belong x fragment size %d, +>8252 belong x minimum percentage of free blocks %d, +>8256 belong x rotational delay %dms, +>8260 belong x disk rotational speed %drps, +>8320 belong 0 TIME optimization +>8320 belong 1 SPACE optimization + +# ext2/ext3 filesystems - Andreas Dilger <adilger@turbolabs.com> +0x438 leshort 0xEF53 Linux +>0x44c lelong x rev %d +>0x43e leshort x \b.%d +>0x45c lelong ^0x0000004 ext2 filesystem data +>>0x43a leshort ^0x0000001 (mounted or unclean) +>0x45c lelong &0x0000004 ext3 filesystem data +>>0x460 lelong &0x0000004 (needs journal recovery) +>0x43a leshort &0x0000002 (errors) +>0x460 lelong &0x0000001 (compressed) +#>0x460 lelong &0x0000002 (filetype) +#>0x464 lelong &0x0000001 (sparse_super) +>0x464 lelong &0x0000002 (large files) + +# SGI disk labels - Nathan Scott <nathans@debian.org> +0 belong 0x0BE5A941 SGI disk label (volume header) + +# SGI XFS filesystem - Nathan Scott <nathans@debian.org> +0 belong 0x58465342 SGI XFS filesystem data +>0x4 belong x (blksz %d, +>0x68 beshort x inosz %d, +>0x64 beshort ^0x2004 v1 dirs) +>0x64 beshort &0x2004 v2 dirs) + +############################################################################ +# Minix-ST kernel floppy +0x800 belong 0x46fc2700 Atari-ST Minix kernel image +>19 string \240\5\371\5\0\011\0\2\0 \b, 720k floppy +>19 string \320\2\370\5\0\011\0\1\0 \b, 360k floppy + +############################################################################ +# Hmmm, is this a better way of detecting _standard_ floppy images ? +19 string \320\2\360\3\0\011\0\1\0 DOS floppy 360k +>0x1FE leshort 0xAA55 \b, x86 hard disk boot sector +19 string \240\5\371\3\0\011\0\2\0 DOS floppy 720k +>0x1FE leshort 0xAA55 \b, x86 hard disk boot sector +19 string \100\013\360\011\0\022\0\2\0 DOS floppy 1440k +>0x1FE leshort 0xAA55 \b, x86 hard disk boot sector + +19 string \240\5\371\5\0\011\0\2\0 DOS floppy 720k, IBM +>0x1FE leshort 0xAA55 \b, x86 hard disk boot sector +19 string \100\013\371\5\0\011\0\2\0 DOS floppy 1440k, mkdosfs +>0x1FE leshort 0xAA55 \b, x86 hard disk boot sector + +19 string \320\2\370\5\0\011\0\1\0 Atari-ST floppy 360k +19 string \240\5\371\5\0\011\0\2\0 Atari-ST floppy 720k + +# Valid media descriptor bytes for MS-DOS: +# +# Byte Capacity Media Size and Type +# ------------------------------------------------- +# +# F0 2.88 MB 3.5-inch, 2-sided, 36-sector +# F0 1.44 MB 3.5-inch, 2-sided, 18-sector +# F9 720K 3.5-inch, 2-sided, 9-sector +# F9 1.2 MB 5.25-inch, 2-sided, 15-sector +# FD 360K 5.25-inch, 2-sided, 9-sector +# FF 320K 5.25-inch, 2-sided, 8-sector +# FC 180K 5.25-inch, 1-sided, 9-sector +# FE 160K 5.25-inch, 1-sided, 8-sector +# FE 250K 8-inch, 1-sided, single-density +# FD 500K 8-inch, 2-sided, single-density +# FE 1.2 MB 8-inch, 2-sided, double-density +# F8 ----- Fixed disk +# +# FC xxxK Apricot 70x1x9 boot disk. +# +# Originally a bitmap: +# xxxxxxx0 Not two sided +# xxxxxxx1 Double sided +# xxxxxx0x Not 8 SPT +# xxxxxx1x 8 SPT +# xxxxx0xx Not Removable drive +# xxxxx1xx Removable drive +# 11111xxx Must be one. +# +# But now it's rather random: +# 111111xx Low density disk +# 00 SS, Not 8 SPT +# 01 DS, Not 8 SPT +# 10 SS, 8 SPT +# 11 DS, 8 SPT +# +# 11111001 Double density 3½ floppy disk, high density 5¼ +# 11110000 High density 3½ floppy disk +# 11111000 Hard disk any format +# + +# CDROM Filesystems +32769 string CD001 ISO 9660 CD-ROM filesystem data +# "application id" which appears to be used as a volume label +>32808 string >\0 '%s' +>34816 string \000CD001\001EL\ TORITO\ SPECIFICATION (bootable) +37633 string CD001 ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors) +32776 string CDROM High Sierra CD-ROM filesystem data + +# cramfs filesystem - russell@coker.com.au +0 lelong 0x28cd3d45 Linux Compressed ROM File System data, little endian +>4 lelong x size %d +>8 lelong &1 version #2 +>8 lelong &2 sorted_dirs +>8 lelong &4 hole_support +>32 lelong x CRC 0x%x, +>36 lelong x edition %d, +>40 lelong x %d blocks, +>44 lelong x %d files + +0 belong 0x28cd3d45 Linux Compressed ROM File System data, big endian +>4 belong x size %d +>8 belong &1 version #2 +>8 belong &2 sorted_dirs +>8 belong &4 hole_support +>32 belong x CRC 0x%x, +>36 belong x edition %d, +>40 belong x %d blocks, +>44 belong x %d files + +# reiserfs - russell@coker.com.au +0x10034 string ReIsErFs ReiserFS V3.5 +0x10034 string ReIsEr2Fs ReiserFS V3.6 +>0x1002c leshort x block size %d +>0x10032 leshort &2 (mounted or unclean) +>0x10000 lelong x num blocks %d +>0x10040 lelong 1 tea hash +>0x10040 lelong 2 yura hash +>0x10040 lelong 3 r5 hash + +# JFFS - russell@coker.com.au +0 lelong 0x34383931 Linux Journalled Flash File system, little endian +0 belong 0x34383931 Linux Journalled Flash File system, big endian + +# EST flat binary format (which isn't, but anyway) +# From: Mark Brown <broonie@sirena.org.uk> +0 string ESTFBINR EST flat binary + +# Aculab VoIP firmware +# From: Mark Brown <broonie@sirena.org.uk> +0 string VoIP\ Startup\ and Aculab VoIP firmware +>35 string x format %s + +# PPCBoot image file +# From: Mark Brown <broonie@sirena.org.uk> +0 belong 0x27051956 PPCBoot image +>4 string PPCBoot +>>12 string x version %s + +# JFFS2 file system +0 leshort 0x1984 Linux old jffs2 filesystem data little endian +0 lelong 0xe0011985 Linux jffs2 filesystem data little endian + +# Squashfs +0 string sqsh Squashfs filesystem, big endian, +>28 beshort x version %d. +>30 beshort x \b%d, +>8 belong x %d bytes, +>4 belong x %d inodes, +>28 beshort <2 +>>32 beshort x blocksize: %d bytes, +>28 beshort >1 +>>51 belong x blocksize: %d bytes, +>39 bedate x created: %s +0 string hsqs Squashfs filesystem, little endian, +>28 leshort x version %d. +>30 leshort x \b%d, +>8 lelong x %d bytes, +>4 lelong x %d inodes, +>28 leshort <2 +>>32 leshort x blocksize: %d bytes, +>28 leshort >1 +>>51 lelong x blocksize: %d bytes, +>39 ledate x created: %s + +# AFS Dump Magic +# From: Ty Sarna <tsarna@sarna.org> +0 string \x01\xb3\xa1\x13\x22 AFS Dump +>&0 belong x (v%d) +>>&0 byte 0x76 +>>>&0 belong x Vol %d, +>>>>&0 byte 0x6e +>>>>>&0 string x %s +>>>>>>&1 byte 0x74 +>>>>>>>&0 beshort 2 +>>>>>>>>&4 bedate x on: %s +>>>>>>>>&0 bedate =0 full dump +>>>>>>>>&0 bedate !0 incremental since: %s diff --git a/packages/fuse/gmailfs_0.6.bb b/packages/fuse/gmailfs_0.6.bb deleted file mode 100644 index 8c659441b3..0000000000 --- a/packages/fuse/gmailfs_0.6.bb +++ /dev/null @@ -1,21 +0,0 @@ -DESCRIPTION = "GmailFS provides a mountable Linux filesystem which uses your Gmail account as its storage medium." -HOMEPAGE = "http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html" -LICENSE = "GPL" - -DEPENDS = "fuse libgmail python-fuse" -RDEPENDS = "fuse libgmail python-fuse python-unixadmin python-lang python-textutils python-core" - -SRC_URI = "http://richard.jones.name/google-hacks/gmail-filesystem/gmailfs-0.6.tar.gz" - - -do_install() { -install -d ${D}${datadir}/gmailfs -install -d ${D}${bindir} -install -d ${D}${sysconfdir} - -install -m 755 ${S}/gmailfs.py ${D}${datadir}/gmailfs/ -install -m 755 ${S}/mount.gmailfs ${D}${bindir} -install -m 644 ${S}/*.conf ${D}${sysconfdir} - -} - diff --git a/packages/gcc/gcc-fpu.inc b/packages/gcc/gcc-fpu.inc new file mode 100644 index 0000000000..bb03d95567 --- /dev/null +++ b/packages/gcc/gcc-fpu.inc @@ -0,0 +1,6 @@ + +def get_gcc_fpu_setting(bb, d): + if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: + return "--with-float=soft" + return "" + diff --git a/packages/gcc/gcc3-build.inc b/packages/gcc/gcc3-build.inc index 6260a51533..2924f0f9dd 100644 --- a/packages/gcc/gcc3-build.inc +++ b/packages/gcc/gcc3-build.inc @@ -54,10 +54,7 @@ ARCH_FLAGS_FOR_TARGET_slugos = "${TARGET_CC_ARCH}" ARCH_FLAGS_FOR_TARGET_unslung = "${TARGET_CC_ARCH}" EXTRA_OEMAKE += "ARCH_FLAGS_FOR_TARGET='${ARCH_FLAGS_FOR_TARGET}'" -def get_gcc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--with-float=soft" - return "" +require gcc-fpu.inc python __anonymous () { import bb, re diff --git a/packages/gcc/gcc_3.3.3.bb b/packages/gcc/gcc_3.3.3.bb index 8852f81def..0c237a9166 100644 --- a/packages/gcc/gcc_3.3.3.bb +++ b/packages/gcc/gcc_3.3.3.bb @@ -124,10 +124,7 @@ EXTRA_OECONF_uclibc = "--disable-__cxa_atexit" EXTRA_OECONF_glibc = "--enable-__cxa_atexit" EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}" -def get_gcc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--with-float=soft" - return "" +require gcc-fpu.inc python __anonymous () { import bb, re diff --git a/packages/gcc/gcc_3.3.4.bb b/packages/gcc/gcc_3.3.4.bb index 49f14cd888..bb52fa6a1f 100644 --- a/packages/gcc/gcc_3.3.4.bb +++ b/packages/gcc/gcc_3.3.4.bb @@ -103,10 +103,7 @@ EXTRA_OECONF_uclibc = "--disable-__cxa_atexit" EXTRA_OECONF_glibc = "--enable-__cxa_atexit" EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}" -def get_gcc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--with-float=soft" - return "" +require gcc-fpu.inc python __anonymous () { import bb, re diff --git a/packages/gcc/gcc_4.1.1.bb b/packages/gcc/gcc_4.1.1.bb index cd93cab7e2..9c0bd7baac 100644 --- a/packages/gcc/gcc_4.1.1.bb +++ b/packages/gcc/gcc_4.1.1.bb @@ -34,6 +34,7 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 \ SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 " #Set the fortran bits +# 'fortran' or '', not 'f77' like gcc3 had FORTRAN = "" HAS_GFORTRAN = "no" HAS_G2C = "no" @@ -41,7 +42,7 @@ HAS_G2C = "no" #Set the java bits JAVA_arm = "" -LANGUAGES = "c,c++" +LANGUAGES = "c,c++${FORTRAN}${JAVA}" require gcc3-build.inc diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/.mtn2git_empty b/packages/geoclue/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/.mtn2git_empty +++ b/packages/geoclue/.mtn2git_empty diff --git a/packages/geoclue/geoclue_svn.bb b/packages/geoclue/geoclue_svn.bb new file mode 100644 index 0000000000..e07b01d2ca --- /dev/null +++ b/packages/geoclue/geoclue_svn.bb @@ -0,0 +1,29 @@ +DESCRIPTION = "GeoClue is a project that provide all kinds of geography information to an application" +HOMEPAGE = "http://live.gnome.org/GeoClue" + +DEPENDS = "gpsd gnome-panel libsoup dbus-glib" + +PV = "0.0+svn${SRCDATE}" + +inherit autotools pkgconfig + +SRC_URI = "svn://svn.foinse-project.org/geoclue;module=trunk;proto=http" + +S = "${WORKDIR}/trunk" + +do_install_append() { + mkdir -p ${D}/usr/share/ + cp -pPr ${D}${STAGING_DATADIR}/* ${D}/usr/share + rm -rf ${D}${STAGING_DATADIR}/ +} + +PACKAGES =+ "geoclue-applet" + +FILES_geoclue-applet += " \ + ${libdir}/bonobo/servers/* \ + ${libdir}/gnome-panel/*" + + +FILES_${PN} += " \ + ${libdir}/gnome-panel/* \ + ${datadir}/dbus-1" diff --git a/packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch b/packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch new file mode 100644 index 0000000000..8b36960b04 --- /dev/null +++ b/packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch @@ -0,0 +1,94 @@ +From libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Mon Aug 21 20:08:57 2006 +Return-Path: <libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> +Delivered-To: listarch-libc-ports at sources dot redhat dot com +Received: (qmail 9913 invoked by alias); 21 Aug 2006 20:08:56 -0000 +Received: (qmail 9893 invoked by uid 22791); 21 Aug 2006 20:08:53 -0000 +X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_HM,TW_SG,TW_SN +X-Spam-Check-By: sourceware.org +Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 21 Aug 2006 20:08:44 +0000 +Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GFG4f-0007gO-TW for libc-ports@sourceware.org; Mon, 21 Aug 2006 16:08:42 -0400 +Date: Mon, 21 Aug 2006 16:08:41 -0400 +From: Daniel Jacobowitz <drow at false dot org> +To: libc-ports at sourceware dot org +Subject: ARM IPC fix +Message-ID: <20060821200841.GA29502@nevyn.them.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +User-Agent: Mutt/1.5.11+cvs20060403 +X-IsSubscribed: yes +Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm +Precedence: bulk +List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> +List-Post: <mailto:libc-ports at sourceware dot org> +List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> +Sender: libc-ports-owner at sourceware dot org +Delivered-To: mailing list libc-ports at sourceware dot org + +We can't treat msgctl as a real syscall; if we don't add __IPC_64, we'll get +a mismatched type for ipc_perm. Fixed by using the Alpha implementation, +which is similar to the standard i386 implementation but doesn't use +the multiplexer syscall. + +-- +Daniel Jacobowitz +CodeSourcery + +2006-08-21 Daniel Jacobowitz <dan@codesourcery.com> + + * sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove msgctl, + shmctl, and semctl. + * sysdeps/unix/sysv/linux/arm/eabi/semctl.c, + sysdeps/unix/sysv/linux/arm/eabi/shmctl.c, + sysdeps/unix/sysv/linux/arm/eabi/msgctl.c: New files. + +Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list +=================================================================== +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (revision 147209) ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (working copy) +@@ -1,18 +1,16 @@ + # File name Caller Syscall name # args Strong name Weak names + +-# semaphore and shm system calls +-msgctl - msgctl i:iip __msgctl msgctl ++# Semaphore and shm system calls. msgctl, shmctl, and semctl have C ++# wrappers (to set __IPC_64). + msgget - msgget i:ii __msgget msgget + msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv + msgsnd - msgsnd Ci:ibni __msgsnd msgsnd + shmat - shmat i:ipi __shmat shmat +-shmctl - shmctl i:iip __shmctl shmctl + shmdt - shmdt i:s __shmdt shmdt + shmget - shmget i:iii __shmget shmget + semop - semop i:ipi __semop semop + semtimedop - semtimedop i:ipip semtimedop + semget - semget i:iii __semget semget +-semctl - semctl i:iiii __semctl semctl + + # proper socket implementations: + accept - accept Ci:iBN __libc_accept __accept accept + +Property changes on: sysdeps/unix/sysv/linux/arm/eabi/syscalls.list +___________________________________________________________________ +Name: svn:mime-type + - application/octet-stream + +Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c +=================================================================== +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0) ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0) +@@ -0,0 +1 @@ ++#include <sysdeps/unix/sysv/linux/alpha/semctl.c> +Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c +=================================================================== +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0) ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0) +@@ -0,0 +1 @@ ++#include <sysdeps/unix/sysv/linux/alpha/msgctl.c> +Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c +=================================================================== +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0) ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0) +@@ -0,0 +1 @@ ++#include <sysdeps/unix/sysv/linux/alpha/shmctl.c> + diff --git a/packages/glibc/glibc_2.2.5.bb b/packages/glibc/glibc_2.2.5.bb index 9c7765f1ea..10e2e2e351 100644 --- a/packages/glibc/glibc_2.2.5.bb +++ b/packages/glibc/glibc_2.2.5.bb @@ -129,11 +129,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - glibc_do_unpack () { mv ${WORKDIR}/linuxthreads ${WORKDIR}/linuxthreads_db ${S}/ } diff --git a/packages/glibc/glibc_2.3.2.bb b/packages/glibc/glibc_2.3.2.bb index f1c9c1ce69..9f42e00e35 100644 --- a/packages/glibc/glibc_2.3.2.bb +++ b/packages/glibc/glibc_2.3.2.bb @@ -129,11 +129,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - glibc_do_unpack () { mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/" } diff --git a/packages/glibc/glibc_2.3.3+cvs20041128.bb b/packages/glibc/glibc_2.3.3+cvs20041128.bb index 1d87f0e37c..a6950c558d 100644 --- a/packages/glibc/glibc_2.3.3+cvs20041128.bb +++ b/packages/glibc/glibc_2.3.3+cvs20041128.bb @@ -73,11 +73,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - do_configure () { # override this function to avoid the autoconf/automake/aclocal/autoheader # calls for now diff --git a/packages/glibc/glibc_2.3.3.bb b/packages/glibc/glibc_2.3.3.bb index 1c0c0f9124..22ae2c5c38 100644 --- a/packages/glibc/glibc_2.3.3.bb +++ b/packages/glibc/glibc_2.3.3.bb @@ -74,11 +74,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - glibc_do_unpack () { mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/" } diff --git a/packages/glibc/glibc_2.3.5+cvs20050627.bb b/packages/glibc/glibc_2.3.5+cvs20050627.bb index 51039fd3c0..833370740f 100644 --- a/packages/glibc/glibc_2.3.5+cvs20050627.bb +++ b/packages/glibc/glibc_2.3.5+cvs20050627.bb @@ -84,11 +84,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - do_munge() { # Integrate ports into tree mv ${WORKDIR}/ports ${S} diff --git a/packages/glibc/glibc_2.4.bb b/packages/glibc/glibc_2.4.bb index dc844ea1d2..702ea4b8fb 100644 --- a/packages/glibc/glibc_2.4.bb +++ b/packages/glibc/glibc_2.4.bb @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/libc/libc.html" LICENSE = "LGPL" SECTION = "libs" PRIORITY = "required" -PR = "r10" +PR = "r11" #add the hosts that are confirmed to be working to COMPATIBLE_HOSTi COMPATIBLE_HOST = '(i.86.*-linux|sh.*-linux)' @@ -63,6 +63,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2 \ file://glibc-2.4-openat-3.patch;patch=1 \ file://fixup-aeabi-syscalls.patch;patch=1 \ file://zecke-sane-readelf.patch;patch=1 \ + file://arm_eabi_ipc_fix.patch;patch=1 \ file://generic-bits_select.h \ file://generic-bits_types.h \ file://generic-bits_typesizes.h \ @@ -90,11 +91,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - do_munge() { # Integrate ports and libidn into tree mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb index 0afadadb60..3523a3fa8f 100644 --- a/packages/glibc/glibc_2.5.bb +++ b/packages/glibc/glibc_2.5.bb @@ -86,11 +86,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - do_munge() { # Integrate ports and libidn into tree mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports diff --git a/packages/glibc/glibc_cvs.bb b/packages/glibc/glibc_cvs.bb index 396e0d535b..26f03ab0c1 100644 --- a/packages/glibc/glibc_cvs.bb +++ b/packages/glibc/glibc_cvs.bb @@ -74,11 +74,6 @@ EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" -def get_glibc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - do_munge() { # Integrate ports into tree mv ${WORKDIR}/ports ${S} diff --git a/packages/gtk+/gtk+-2.6.7/.mtn2git_empty b/packages/gmp/gmp-4.2.1/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/gtk+/gtk+-2.6.7/.mtn2git_empty +++ b/packages/gmp/gmp-4.2.1/.mtn2git_empty diff --git a/packages/gmp/gmp-4.2.1/amd64.patch b/packages/gmp/gmp-4.2.1/amd64.patch new file mode 100644 index 0000000000..67be9dd350 --- /dev/null +++ b/packages/gmp/gmp-4.2.1/amd64.patch @@ -0,0 +1,14 @@ +--- gmp-4.1.4/longlong.h.orig 2004-04-22 00:34:28.000000000 +0200 ++++ gmp-4.1.4/longlong.h 2005-07-18 01:13:06.000000000 +0200 +@@ -738,8 +738,10 @@ + count is only an int. */ + #define count_trailing_zeros(count, x) \ + do { \ ++ UDItype __cbtmp; \ + ASSERT ((x) != 0); \ +- __asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \ ++ __asm__ ("bsfq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \ ++ (count) = __cbtmp; \ + } while (0) + #endif /* x86_64 */ + diff --git a/packages/gmp/gmp-4.2.1/configure.patch b/packages/gmp/gmp-4.2.1/configure.patch new file mode 100644 index 0000000000..08f2172479 --- /dev/null +++ b/packages/gmp/gmp-4.2.1/configure.patch @@ -0,0 +1,195 @@ + acinclude.m4 | 26 ++++++++++++++------------ + configure.in | 24 +++++++++--------------- + 2 files changed, 23 insertions(+), 27 deletions(-) + +Index: gmp-4.2.1/acinclude.m4 +=================================================================== +--- gmp-4.2.1.orig/acinclude.m4 2006-05-04 17:39:01.000000000 +0100 ++++ gmp-4.2.1/acinclude.m4 2006-11-06 20:36:14.000000000 +0000 +@@ -32,20 +32,20 @@ dnl a_out.exe - OpenVMS DEC C called + dnl conftest.exe - various DOS compilers + + +-define(IA64_PATTERN, ++define([IA64_PATTERN], + [[ia64*-*-* | itanium-*-* | itanium2-*-*]]) + + dnl Need to be careful not to match m6811, m6812, m68hc11 and m68hc12, all + dnl of which config.sub accepts. (Though none of which are likely to work + dnl with GMP.) + dnl +-define(M68K_PATTERN, ++define([M68K_PATTERN], + [[m68k-*-* | m68[0-9][0-9][0-9]-*-*]]) + +-define(POWERPC64_PATTERN, ++define([POWERPC64_PATTERN], + [[powerpc64-*-* | powerpc64le-*-* | powerpc620-*-* | powerpc630-*-* | powerpc970-*-* | power[3-9]-*-*]]) + +-define(X86_PATTERN, ++define([X86_PATTERN], + [[i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-* | viac3*-*-*]]) + + +@@ -64,7 +64,7 @@ dnl x86 -> x86 + dnl x86/k6 -> k6 + dnl x86/k6/mmx -> k6_mmx + +-define(GMP_FAT_SUFFIX, ++define([GMP_FAT_SUFFIX], + [[$1=`echo $2 | sed -e '/\//s:^[^/]*/::' -e 's:[\\/]:_:g'`]]) + + +@@ -73,7 +73,7 @@ dnl ---------------------------------- + dnl Emit code to remove any occurance of ITEM from $LISTVAR. ITEM can be a + dnl shell expression like $foo if desired. + +-define(GMP_REMOVE_FROM_LIST, ++define([GMP_REMOVE_FROM_LIST], + [remove_from_list_tmp= + for remove_from_list_i in $[][$1]; do + if test $remove_from_list_i = [$2]; then :; +@@ -89,12 +89,12 @@ dnl GMP_STRIP_PATH(subdir) + dnl ---------------------- + dnl Strip entries */subdir from $path and $fat_path. + +-define(GMP_STRIP_PATH, ++define([GMP_STRIP_PATH], + [GMP_STRIP_PATH_VAR(path, [$1]) + GMP_STRIP_PATH_VAR(fat_path, [$1]) + ]) + +-define(GMP_STRIP_PATH_VAR, ++define([GMP_STRIP_PATH_VAR], + [tmp_path= + for i in $[][$1]; do + case $i in +@@ -115,7 +115,7 @@ dnl + dnl Dummy values for __GMP_BITS_PER_MP_LIMB and GMP_LIMB_BITS are enough + dnl for all current configure-time uses of gmp.h. + +-define(GMP_INCLUDE_GMP_H, ++define([GMP_INCLUDE_GMP_H], + [[#define __GMP_WITHIN_CONFIGURE 1 /* ignore template stuff */ + #define GMP_NAIL_BITS $GMP_NAIL_BITS + #define __GMP_BITS_PER_MP_LIMB 123 /* dummy for GMP_NUMB_BITS etc */ +@@ -131,7 +131,7 @@ dnl Expand at autoconf time to the valu + dnl FILE. The regexps here aren't very rugged, but are enough for gmp. + dnl /dev/null as a parameter prevents a hang if $2 is accidentally omitted. + +-define(GMP_HEADER_GETVAL, ++define([GMP_HEADER_GETVAL], + [patsubst(patsubst( + esyscmd([grep "^#define $1 " $2 /dev/null 2>/dev/null]), + [^.*$1[ ]+],[]), +@@ -145,7 +145,7 @@ dnl The gmp version number, extracted f + dnl autoconf time. Two digits like 3.0 if patchlevel <= 0, or three digits + dnl like 3.0.1 if patchlevel > 0. + +-define(GMP_VERSION, ++define([GMP_VERSION], + [GMP_HEADER_GETVAL(__GNU_MP_VERSION,gmp-h.in)[]dnl + .GMP_HEADER_GETVAL(__GNU_MP_VERSION_MINOR,gmp-h.in)[]dnl + ifelse(m4_eval(GMP_HEADER_GETVAL(__GNU_MP_VERSION_PATCHLEVEL,gmp-h.in) > 0),1, +@@ -1491,7 +1491,9 @@ esac + echo ["define(<CONFIG_TOP_SRCDIR>,<\`$tmp'>)"] >>$gmp_tmpconfigm4 + + # All CPUs use asm-defs.m4 +-echo ["include][(CONFIG_TOP_SRCDIR\`/mpn/asm-defs.m4')"] >>$gmp_tmpconfigm4i ++echo -n ["include("] >>$gmp_tmpconfigm4i ++echo -n ["CONFIG_TOP_SRCDIR\`/mpn/asm-defs.m4'"] >>$gmp_tmpconfigm4i ++echo [")"] >>$gmp_tmpconfigm4i + ]) + + +Index: gmp-4.2.1/configure.in +=================================================================== +--- gmp-4.2.1.orig/configure.in 2006-04-30 00:31:08.000000000 +0100 ++++ gmp-4.2.1/configure.in 2006-11-06 20:39:17.000000000 +0000 +@@ -31,12 +31,6 @@ AC_REVISION($Revision: 1.11 $) + AC_PREREQ(2.59) + AC_INIT(GNU MP, GMP_VERSION, gmp-bugs@swox.com, gmp) + AC_CONFIG_SRCDIR(gmp-impl.h) +-m4_pattern_forbid([^[ \t]*GMP_]) +-m4_pattern_allow(GMP_LDFLAGS) +-m4_pattern_allow(GMP_LIMB_BITS) +-m4_pattern_allow(GMP_MPARAM_H_SUGGEST) +-m4_pattern_allow(GMP_NAIL_BITS) +-m4_pattern_allow(GMP_NUMB_BITS) + + # If --target is not used then $target_alias is empty, but if say + # "./configure athlon-pc-freebsd3.5" is used, then all three of +@@ -277,7 +271,7 @@ AH_VERBATIM([HAVE_HOST_CPU_1], + # After GMP specific searches and tests, the standard autoconf AC_PROG_CC is + # called. User selections of CC etc are respected. + # +-# Care is taken not to use macros like AC_TRY_COMPILE during the GMP ++# Care is taken not to use macros like AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) during the GMP + # pre-testing, since they of course depend on AC_PROG_CC, and also some of + # them cache their results, which is not wanted. + # +@@ -369,7 +363,7 @@ abilist="standard" + # FIXME: We'd like to prefer an ANSI compiler, perhaps by preferring + # c89 over cc here. But note that on HP-UX c89 provides a castrated + # environment, and would want to be excluded somehow. Maybe +-# AC_PROG_CC_STDC already does enough to stick cc into ANSI mode and ++# already does enough to stick cc into ANSI mode and + # we don't need to worry. + # + cclist="gcc cc" +@@ -1498,7 +1492,7 @@ esac + CFLAGS_or_unset=${CFLAGS-'(unset)'} + CPPFLAGS_or_unset=${CPPFLAGS-'(unset)'} + +-cat >&AC_FD_CC <<EOF ++cat >&AS_MESSAGE_LOG_FD() <<EOF + User: + ABI=$ABI + CC=$CC +@@ -1869,7 +1863,6 @@ AC_SUBST(DEFN_LONG_LONG_LIMB) + + # The C compiler and preprocessor, put into ANSI mode if possible. + AC_PROG_CC +-AC_PROG_CC_STDC + AC_PROG_CPP + GMP_H_ANSI + +@@ -1892,11 +1885,11 @@ AC_SUBST(CCAS) + + # The C++ compiler, if desired. + want_cxx=no ++AC_PROG_CXX + if test $enable_cxx != no; then + test_CXXFLAGS=${CXXFLAGS+set} +- AC_PROG_CXX + +- echo "CXXFLAGS chosen by autoconf: $CXXFLAGS" >&AC_FD_CC ++ echo "CXXFLAGS chosen by autoconf: $CXXFLAGS" >&AS_MESSAGE_LOG_FD() + cxxflags_ac_prog_cxx=$CXXFLAGS + cxxflags_list=ac_prog_cxx + +@@ -2002,7 +1995,7 @@ case $host in + esac + + +-cat >&AC_FD_CC <<EOF ++cat >&AS_MESSAGE_LOG_FD() <<EOF + Decided: + ABI=$ABI + CC=$CC +@@ -3175,7 +3168,7 @@ GMP_FINISH + # FIXME: Upcoming version of autoconf/automake may not like broken lines. + # Right now automake isn't accepting the new AC_CONFIG_FILES scheme. + +-AC_OUTPUT(Makefile \ ++AC_CONFIG_FILES([Makefile \ + mpbsd/Makefile mpf/Makefile mpn/Makefile mpq/Makefile \ + mpz/Makefile printf/Makefile scanf/Makefile cxx/Makefile \ + tests/Makefile tests/devel/Makefile tests/mpbsd/Makefile \ +@@ -3184,4 +3177,5 @@ AC_OUTPUT(Makefile \ + tests/cxx/Makefile \ + doc/Makefile tune/Makefile \ + demos/Makefile demos/calc/Makefile demos/expr/Makefile \ +- gmp.h:gmp-h.in mp.h:mp-h.in) ++ gmp.h:gmp-h.in mp.h:mp-h.in]) ++AC_OUTPUT diff --git a/packages/gmp/gmp-4.2.1/sh4-asmfix.patch b/packages/gmp/gmp-4.2.1/sh4-asmfix.patch new file mode 100644 index 0000000000..1a01f61533 --- /dev/null +++ b/packages/gmp/gmp-4.2.1/sh4-asmfix.patch @@ -0,0 +1,26 @@ +--- gmp-4.1.4/mpn/sh/add_n.s 2005/11/17 08:44:00 1.1 ++++ gmp-4.1.4/mpn/sh/add_n.s 2005/11/17 08:18:57 +@@ -29,8 +29,8 @@ + + .text + .align 2 +- .global ___gmpn_add_n +-___gmpn_add_n: ++ .global __gmpn_add_n ++__gmpn_add_n: + mov #0,r3 ! clear cy save reg + + Loop: mov.l @r5+,r1 +--- gmp-4.1.4/mpn/sh/sub_n.s 2005/11/17 08:44:04 1.1 ++++ gmp-4.1.4/mpn/sh/sub_n.s 2005/11/17 08:18:59 +@@ -29,8 +29,8 @@ + + .text + .align 2 +- .global ___gmpn_sub_n +-___gmpn_sub_n: ++ .global __gmpn_sub_n ++__gmpn_sub_n: + mov #0,r3 ! clear cy save reg + + Loop: mov.l @r5+,r1 diff --git a/packages/gmp/gmp-native.inc b/packages/gmp/gmp-native.inc new file mode 100644 index 0000000000..c3d36e0fdb --- /dev/null +++ b/packages/gmp/gmp-native.inc @@ -0,0 +1,23 @@ +require gmp_${PV}.bb + +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gmp-${PV}" +S = "${WORKDIR}/gmp-${PV}" + +inherit native + +# darwin 'hacks' +EXTRA_OECONF_build-darwin = " --enable-shared " +OLD_STAGING := "${STAGING_BINDIR}" +OLD_TARGET := "${TARGET_SYS}" +OLD_HOST := "${HOST_SYS}" +OLD_BUILD := "${BUILD_SYS}" + +PATH_prepend_build-darwin = "${OLD_STAGING}/${OLD_HOST}:${OLD_STAGING}:" + +TARGET_SYS_build-darwin = "none-apple-darwin" +HOST_SYS_build-darwin = "none-apple-darwin" +BUILD_SYS_build-darwin = "none-apple-darwin" + +do_compile_append_build-darwin() { + oe_runmake check +} diff --git a/packages/gmp/gmp-native_4.1.2.bb b/packages/gmp/gmp-native_4.1.2.bb index c3d36e0fdb..14e8587154 100644 --- a/packages/gmp/gmp-native_4.1.2.bb +++ b/packages/gmp/gmp-native_4.1.2.bb @@ -1,23 +1,2 @@ -require gmp_${PV}.bb - -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gmp-${PV}" -S = "${WORKDIR}/gmp-${PV}" - -inherit native - -# darwin 'hacks' -EXTRA_OECONF_build-darwin = " --enable-shared " -OLD_STAGING := "${STAGING_BINDIR}" -OLD_TARGET := "${TARGET_SYS}" -OLD_HOST := "${HOST_SYS}" -OLD_BUILD := "${BUILD_SYS}" - -PATH_prepend_build-darwin = "${OLD_STAGING}/${OLD_HOST}:${OLD_STAGING}:" - -TARGET_SYS_build-darwin = "none-apple-darwin" -HOST_SYS_build-darwin = "none-apple-darwin" -BUILD_SYS_build-darwin = "none-apple-darwin" - -do_compile_append_build-darwin() { - oe_runmake check -} +PV = "4.1.2" +require gmp-native.inc diff --git a/packages/gmp/gmp-native_4.2.1.bb b/packages/gmp/gmp-native_4.2.1.bb new file mode 100644 index 0000000000..8594f2cb0b --- /dev/null +++ b/packages/gmp/gmp-native_4.2.1.bb @@ -0,0 +1,2 @@ +PV = "4.2.1" +require gmp-native.inc diff --git a/packages/gmp/gmp.inc b/packages/gmp/gmp.inc new file mode 100644 index 0000000000..ad179165f3 --- /dev/null +++ b/packages/gmp/gmp.inc @@ -0,0 +1,16 @@ +SECTION = "libs" +DESCRIPTION = "GNU multiprecision arithmetic library" +HOMEPAGE = "http://www.swox.com/gmp/" +LICENSE = "GPL LGPL" + +SRC_URI = "ftp://ftp.gnu.org/gnu/gmp/gmp-${PV}.tar.bz2 \ + file://configure.patch;patch=1 \ + file://amd64.patch;patch=1" + +inherit autotools + +acpaths = "" + +do_stage () { + autotools_stage_all +} diff --git a/packages/gmp/gmp_4.1.2.bb b/packages/gmp/gmp_4.1.2.bb index d7456175a1..45b2672ee7 100644 --- a/packages/gmp/gmp_4.1.2.bb +++ b/packages/gmp/gmp_4.1.2.bb @@ -1,18 +1,3 @@ -SECTION = "libs" -DESCRIPTION = "GNU multiprecision arithmetic library" -HOMEPAGE = "http://www.swox.com/gmp/" -LICENSE = "GPL LGPL" +require gmp.inc -SRC_URI = "ftp://mirrors.kernel.org/gnu/gmp/gmp-${PV}.tar.gz \ - file://configure.patch;patch=1 \ - file://amd64.patch;patch=1 \ - file://gcc-compile.patch;patch=1 " - -inherit autotools - -acpaths = "" - -do_stage () { - oe_libinstall -so libgmp ${STAGING_LIBDIR} - install -m 0644 ${S}/gmp.h ${STAGING_INCDIR}/gmp.h -} +SRC_URI += "file://gcc-compile.patch;patch=1"
\ No newline at end of file diff --git a/packages/gmp/gmp_4.1.4.bb b/packages/gmp/gmp_4.1.4.bb index d80e728dc4..0b32f552e7 100644 --- a/packages/gmp/gmp_4.1.4.bb +++ b/packages/gmp/gmp_4.1.4.bb @@ -1,19 +1,5 @@ -SECTION = "libs" -DESCRIPTION = "GNU multiprecision arithmetic library" -HOMEPAGE = "http://www.swox.com/gmp/" -LICENSE = "GPL LGPL" +require gmp.inc PR = "r1" -SRC_URI = "ftp://ftp.gnu.org/gnu/gmp/gmp-${PV}.tar.bz2 \ - file://configure.patch;patch=1 \ - file://amd64.patch;patch=1 \ - file://sh4-asmfix.patch;patch=1" - -inherit autotools - -acpaths = "" - -do_stage () { - autotools_stage_all -} +SRC_URI += "file://sh4-asmfix.patch;patch=1"
\ No newline at end of file diff --git a/packages/gmp/gmp_4.2.1.bb b/packages/gmp/gmp_4.2.1.bb new file mode 100644 index 0000000000..6af2db66a4 --- /dev/null +++ b/packages/gmp/gmp_4.2.1.bb @@ -0,0 +1,3 @@ +require gmp.inc + +SRC_URI += "file://sh4-asmfix.patch;patch=1"
\ No newline at end of file diff --git a/packages/gnome/gnome-doc-utils_0.7.1.bb b/packages/gnome/gnome-doc-utils_0.7.1.bb index 66d34f09be..69353ee88e 100644 --- a/packages/gnome/gnome-doc-utils_0.7.1.bb +++ b/packages/gnome/gnome-doc-utils_0.7.1.bb @@ -7,6 +7,4 @@ FILES_${PN} += "${datadir}/xml*" do_stage() { autotools_stage_all - } - - +} diff --git a/packages/gnome/libgnome_2.16.0.bb b/packages/gnome/libgnome_2.16.0.bb new file mode 100644 index 0000000000..d6c64ee7be --- /dev/null +++ b/packages/gnome/libgnome_2.16.0.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Gnome application programming libraries" +LICENSE = "GPL" +SECTION = "x11/gnome/libs" +PR = "r0" + +inherit gnome + +DEPENDS = "gconf-native gnome-vfs libbonobo esound" + +EXTRA_OECONF = "--disable-gtk-doc" + +do_stage() { +autotools_stage_all +} diff --git a/packages/gnome/libgnomeui_2.16.0.bb b/packages/gnome/libgnomeui_2.16.0.bb new file mode 100644 index 0000000000..8f3e0a725c --- /dev/null +++ b/packages/gnome/libgnomeui_2.16.0.bb @@ -0,0 +1,22 @@ +LICENSE = "GPL" +SECTION = "x11/gnome/libs" +PR = "r0" +DEPENDS = "libgnome libgnomecanvas libbonoboui gnome-keyring" +DESCRIPTION = "GNOME User Interface Library" + +FILES_${PN} += "${libdir}/gtk-2.0/*/filesystems/lib*.so \ + ${libdir}/libglade/*/lib*.so" + +inherit gnome + +SRC_URI += "file://gnome-stock-pixbufs.h file://no-pixbuf-csource.patch;patch=1" + +EXTRA_OECONF = "--disable-gtk-doc" + +do_configure_prepend() { + install -m 0644 ${WORKDIR}/gnome-stock-pixbufs.h ${S}/libgnomeui/pixmaps/gnome-stock-pixbufs.h +} + +do_stage() { +autotools_stage_all +} diff --git a/packages/gtk+/gtk+-2.4.4/automake-lossage.patch b/packages/gtk+/gtk+-2.4.4/automake-lossage.patch deleted file mode 100644 index 0d423ddbb9..0000000000 --- a/packages/gtk+/gtk+-2.4.4/automake-lossage.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100 -+++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100 -@@ -52,21 +52,5 @@ - - dist-hook: html - cp -Rp $(srcdir)/html $(distdir) --else --html: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --pdf: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --dist-hook: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "*** DISTRIBUTION IS INCOMPLETE" -- echo "***" - endif - diff --git a/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch b/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch deleted file mode 100644 index d71d839c3c..0000000000 --- a/packages/gtk+/gtk+-2.4.4/disable-tooltips.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100 -@@ -118,7 +118,7 @@ - tooltips->tips_data_list = NULL; - - tooltips->delay = DEFAULT_DELAY; -- tooltips->enabled = TRUE; -+ tooltips->enabled = FALSE; - tooltips->timer_tag = 0; - tooltips->use_sticky_delay = FALSE; - tooltips->last_popdown.tv_sec = -1; diff --git a/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch deleted file mode 100644 index 20481f059b..0000000000 --- a/packages/gtk+/gtk+-2.4.4/gtk+-handhelds.patch +++ /dev/null @@ -1,236 +0,0 @@ ---- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000 -@@ -29,7 +29,7 @@ - #include "gtkarrow.h" - #include "gtkintl.h" - --#define MIN_ARROW_SIZE 15 -+#define MIN_ARROW_SIZE 7 - - enum { - PROP_0, -@@ -53,6 +53,8 @@ - guint prop_id, - GValue *value, - GParamSpec *pspec); -+static void gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition); - - GType - gtk_arrow_get_type (void) -@@ -111,6 +113,7 @@ - G_PARAM_READABLE | G_PARAM_WRITABLE)); - - widget_class->expose_event = gtk_arrow_expose; -+ widget_class->size_request = gtk_arrow_size_request; - } - - static void -@@ -166,13 +169,18 @@ - } - - static void -+gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition) -+{ -+ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -+ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -+} -+ -+static void - gtk_arrow_init (GtkArrow *arrow) - { - GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW); - -- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -- - arrow->arrow_type = GTK_ARROW_RIGHT; - arrow->shadow_type = GTK_SHADOW_OUT; - } ---- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000 -@@ -340,6 +340,9 @@ - static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar, - guint day); - -+static void gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day); -+ - static void gtk_calendar_paint_arrow (GtkWidget *widget, - guint arrow); - static void gtk_calendar_paint_day_num (GtkWidget *widget, -@@ -861,13 +864,13 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else - { - if (calendar->selected_day < 0) - calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1]; -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - } - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); -@@ -908,10 +911,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -939,10 +942,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -974,10 +977,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -2480,9 +2483,9 @@ - return TRUE; - } - --void --gtk_calendar_select_day (GtkCalendar *calendar, -- guint day) -+static void -+gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day) - { - g_return_if_fail (GTK_IS_CALENDAR (calendar)); - g_return_if_fail (day <= 31); -@@ -2499,6 +2502,13 @@ - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) - gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); - } -+} -+ -+void -+gtk_calendar_select_day (GtkCalendar *calendar, -+ guint day) -+{ -+ gtk_calendar_do_select_day (calendar, day); - - calendar->selected_day = day; - ---- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000 -+++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000 -@@ -557,6 +557,15 @@ - 0.0, - G_PARAM_READABLE | G_PARAM_WRITABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("min_width", -+ _("Minimum width"), -+ _("Minimum width of the entry field"), -+ 0, -+ G_MAXINT, -+ MIN_ENTRY_WIDTH, -+ G_PARAM_READABLE)); -+ - signals[POPULATE_POPUP] = - g_signal_new ("populate_popup", - G_OBJECT_CLASS_TYPE (gobject_class), -@@ -1124,7 +1133,7 @@ - { - GtkEntry *entry = GTK_ENTRY (widget); - PangoFontMetrics *metrics; -- gint xborder, yborder; -+ gint xborder, yborder, min_width; - PangoContext *context; - - gtk_widget_ensure_style (widget); -@@ -1140,9 +1149,11 @@ - - xborder += INNER_BORDER; - yborder += INNER_BORDER; -- -+ -+ gtk_widget_style_get (widget, "min_width", &min_width, NULL); -+ - if (entry->width_chars < 0) -- requisition->width = MIN_ENTRY_WIDTH + xborder * 2; -+ requisition->width = min_width + xborder * 2; - else - { - gint char_width = pango_font_metrics_get_approximate_char_width (metrics); ---- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000 -@@ -180,6 +180,7 @@ - static GtkWidgetClass *parent_class = NULL; - static guint signals[LAST_SIGNAL]; - -+static GdkAtom recognize_protocols_atom, atom_atom; - - GType - gtk_range_get_type (void) -@@ -220,6 +221,9 @@ - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - -+ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE); -+ atom_atom = gdk_atom_intern ("ATOM", FALSE); -+ - parent_class = g_type_class_peek_parent (class); - - gobject_class->set_property = gtk_range_set_property; -@@ -815,6 +819,12 @@ - &attributes, attributes_mask); - gdk_window_set_user_data (range->event_window, range); - -+ gdk_property_change (range->event_window, -+ recognize_protocols_atom, -+ atom_atom, -+ 32, GDK_PROP_MODE_REPLACE, -+ NULL, 0); -+ - widget->style = gtk_style_attach (widget->style, widget->window); - } - -@@ -1186,7 +1196,7 @@ - - /* ignore presses when we're already doing something else. */ - if (range->layout->grab_location != MOUSE_OUTSIDE) -- return FALSE; -+ return TRUE; - - range->layout->mouse_x = event->x; - range->layout->mouse_y = event->y; -@@ -1364,7 +1374,7 @@ - return TRUE; - } - -- return FALSE; -+ return TRUE; - } - - /** diff --git a/packages/gtk+/gtk+-2.4.4/gtk-doc.m4 b/packages/gtk+/gtk+-2.4.4/gtk-doc.m4 deleted file mode 100644 index 3ec41666b2..0000000000 --- a/packages/gtk+/gtk+-2.4.4/gtk-doc.m4 +++ /dev/null @@ -1,53 +0,0 @@ -dnl -*- mode: autoconf -*- - -# serial 1 - -dnl Usage: -dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) -AC_DEFUN([GTK_DOC_CHECK], -[ - AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first - AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first - dnl for overriding the documentation installation directory - AC_ARG_WITH(html-dir, - AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, - [with_html_dir='${datadir}/gtk-doc/html']) - HTML_DIR="$with_html_dir" - AC_SUBST(HTML_DIR) - - dnl enable/disable documentation building - AC_ARG_ENABLE(gtk-doc, - AC_HELP_STRING([--enable-gtk-doc], - [use gtk-doc to build documentation [default=no]]),, - enable_gtk_doc=no) - - have_gtk_doc=no - if test -z "$PKG_CONFIG"; then - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - fi - if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then - have_gtk_doc=yes - fi - - dnl do we want to do a version check? -ifelse([$1],[],, - [gtk_doc_min_version=$1 - if test "$have_gtk_doc" = yes; then - AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version]) - if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - have_gtk_doc=no - fi - fi -]) - if test x$enable_gtk_doc = xyes; then - if test "$have_gtk_doc" != yes; then - enable_gtk_doc=no - fi - fi - - AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes) - AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL") -]) diff --git a/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch b/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch deleted file mode 100644 index df29656343..0000000000 --- a/packages/gtk+/gtk+-2.4.4/gtklabel-resize-patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100 -@@ -1623,6 +1623,7 @@ - - /* We have to clear the layout, fonts etc. may have changed */ - gtk_label_clear_layout (label); -+ gtk_widget_queue_resize (GTK_WIDGET (label)); - } - - static void diff --git a/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch deleted file mode 100644 index 9da8dd8cf1..0000000000 --- a/packages/gtk+/gtk+-2.4.4/hardcoded_libtool.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.4.1/configure.in 2004-05-01 02:02:06.000000000 +1000 -+++ gtk+-2.4.1/configure.in 2004-06-03 13:26:41.000000000 +1000 -@@ -350,7 +350,7 @@ - AC_MSG_CHECKING([Whether to write dependencies into .pc files]) - case $enable_explicit_deps in - auto) -- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh` -+ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh` - if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then - enable_explicit_deps=yes - else -@@ -669,7 +669,7 @@ - dnl Now we check to see if our libtool supports shared lib deps - dnl (in a rather ugly way even) - if $dynworks; then -- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" -+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config" - pixbuf_deplibs_check=`$pixbuf_libtool_config | \ - grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ - sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` -@@ -1441,7 +1441,7 @@ - # export list from -export-symbols-regex is ignored and everything - # is exported - # --export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` -+export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` - if test -n "$export_dynamic"; then - GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"` - GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"` diff --git a/packages/gtk+/gtk+-2.4.4/no-demos.patch b/packages/gtk+/gtk+-2.4.4/no-demos.patch deleted file mode 100644 index 2f10a30dda..0000000000 --- a/packages/gtk+/gtk+-2.4.4/no-demos.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000 -+++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100 -@@ -1,6 +1,6 @@ - ## Makefile.am for GTK+ - --SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib -+SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib - SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros - - # require automake 1.4 diff --git a/packages/gtk+/gtk+-2.4.4/no-xwc.patch b/packages/gtk+/gtk+-2.4.4/no-xwc.patch deleted file mode 100644 index e1ee5cb5c8..0000000000 --- a/packages/gtk+/gtk+-2.4.4/no-xwc.patch +++ /dev/null @@ -1,148 +0,0 @@ ---- gdk/x11/gdkdrawable-x11.c~ 2003-08-18 17:02:39.000000000 +0100 -+++ gdk/x11/gdkdrawable-x11.c 2004-03-29 21:30:17.000000000 +0100 -@@ -636,12 +636,14 @@ - GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2); - } - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font); - XmbDrawString (xdisplay, impl->xid, - fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length); - } -+#endif - else - g_error("undefined font type\n"); - } -@@ -673,6 +675,7 @@ - GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length); - g_free (text_8bit); - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - if (sizeof(GdkWChar) == sizeof(wchar_t)) -@@ -693,7 +696,8 @@ - g_free (text_wchar); - } - } -+#endif - else - g_error("undefined font type\n"); - } - ---- gdk/x11/gdkim-x11.c~ 2002-11-01 00:45:32.000000000 +0000 -+++ gdk/x11/gdkim-x11.c 2004-03-29 21:28:30.000000000 +0100 -@@ -51,6 +51,7 @@ - void - _gdk_x11_initialize_locale (void) - { -+#ifdef HAVE_XWC - wchar_t result; - gchar *current_locale; - static char *last_locale = NULL; -@@ -96,6 +97,7 @@ - GDK_NOTE (XIM, - g_message ("%s multi-byte string functions.", - gdk_use_mb ? "Using" : "Not using")); -+#endif - - return; - } -@@ -139,6 +141,7 @@ - { - gchar *mbstr; - -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -177,6 +180,7 @@ - XFree (tpr.value); - } - else -+#endif - { - gint length = 0; - gint i; -@@ -209,6 +213,7 @@ - gint - gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max) - { -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -241,7 +246,8 @@ - return len_cpy; - } - else -+#endif - { - gint i; - - ---- gdk/x11/gdkfont-x11.c~ 2003-03-06 20:17:55.000000000 +0000 -+++ gdk/x11/gdkfont-x11.c 2004-03-29 21:29:40.000000000 +0100 -@@ -594,10 +594,12 @@ - width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2); - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - width = XmbTextEscapement (fontset, text, text_length); - break; -+#endif - default: - width = 0; - } -@@ -647,6 +649,7 @@ - width = 0; - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - if (sizeof(GdkWChar) == sizeof(wchar_t)) - { -@@ -664,6 +667,7 @@ - g_free (text_wchar); - } - break; -+#endif - default: - width = 0; - } -@@ -736,6 +740,7 @@ - if (descent) - *descent = overall.descent; - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - XmbTextExtents (fontset, text, text_length, &ink, &logical); -@@ -750,6 +755,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -@@ -822,6 +828,7 @@ - *descent = overall.descent; - break; - } -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - -@@ -849,6 +856,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } diff --git a/packages/gtk+/gtk+-2.4.4/single-click.patch b/packages/gtk+/gtk+-2.4.4/single-click.patch deleted file mode 100644 index 21adb9b7b0..0000000000 --- a/packages/gtk+/gtk+-2.4.4/single-click.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c gtk+-2.4.4/gtk/gtkcalendar.c ---- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtkcalendar.c 2004-07-10 05:02:10.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkcalendar.c 2004-09-18 12:41:28.000000000 +0100 -@@ -1026,9 +1026,8 @@ - private_data->drag_start_y = y; - - gtk_calendar_select_and_focus_day (calendar, day); -- } -- else if (event->type == GDK_2BUTTON_PRESS) -- { -+ -+ // Double-click action follows - private_data->in_drag = 0; - if (day_month == MONTH_CURRENT) - g_signal_emit (calendar, -diff -urNd ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c gtk+-2.4.4/gtk/gtktreeview.c ---- ../gtk+-2.4.4-r7/gtk+-2.4.4/gtk/gtktreeview.c 2004-07-10 05:02:11.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtktreeview.c 2004-09-18 13:49:23.000000000 +0100 -@@ -2180,7 +2180,8 @@ - tree_view->priv->focus_column = column; - - /* decide if we edit */ -- if (event->type == GDK_BUTTON_PRESS && event->button == 1 && -+ /* Changed from button 1 to 2 so as not to conflict with the single-click activation */ -+ if (event->type == GDK_BUTTON_PRESS && event->button == 2 && - !(event->state & gtk_accelerator_get_default_mod_mask ())) - { - GtkTreePath *anchor; -@@ -2305,16 +2306,13 @@ - /* Test if a double click happened on the same row. */ - if (event->button == 1) - { -- /* We also handle triple clicks here, because a user could have done -- * a first click and a second double click on different rows. -+ /* Replaced double/triple click with single-click for PDAs. - */ -- if ((event->type == GDK_2BUTTON_PRESS -- || event->type == GDK_3BUTTON_PRESS) -- && tree_view->priv->last_button_press) -+ if (event->type == GDK_BUTTON_PRESS) - { - GtkTreePath *lsc; - -- lsc = gtk_tree_row_reference_get_path (tree_view->priv->last_button_press); -+ lsc = gtk_tree_row_reference_get_path (tree_view->priv->cursor); - - if (lsc) - { diff --git a/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch deleted file mode 100644 index 20bf4cf366..0000000000 --- a/packages/gtk+/gtk+-2.4.4/small-gtkfilesel.patch +++ /dev/null @@ -1,267 +0,0 @@ -diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c ---- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100 -@@ -68,6 +68,7 @@ - #include "gtkprivate.h" - #include "gtkscrolledwindow.h" - #include "gtkstock.h" -+#include "gtksignal.h" - #include "gtktreeselection.h" - #include "gtktreeview.h" - #include "gtkvbox.h" -@@ -77,6 +78,7 @@ - #include "gtkmessagedialog.h" - #include "gtkdnd.h" - #include "gtkeventbox.h" -+#include "gtkimage.h" - - #undef GTK_DISABLE_DEPRECATED - #include "gtkoptionmenu.h" -@@ -245,7 +247,8 @@ - }; - - enum { -- DIR_COLUMN -+ DIR_COLUMN, -+ ISFILE_COLUMN - }; - - enum { -@@ -400,6 +403,12 @@ - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); -+ -+static void gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data); -+ - static void gtk_file_selection_file_changed (GtkTreeSelection *selection, - gpointer user_data); - static void gtk_file_selection_dir_activate (GtkTreeView *tree_view, -@@ -419,6 +428,7 @@ - static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data); - static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data); - static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data); -+static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style); - - static void free_selected_names (GPtrArray *names); - -@@ -578,6 +588,23 @@ - G_PARAM_WRITABLE)); - object_class->destroy = gtk_file_selection_destroy; - widget_class->map = gtk_file_selection_map; -+ widget_class->style_set = gtk_file_selection_style_set; -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("show_fileops_default", -+ _("Show fileop buttons by default"), -+ _("Whether file operation buttons are shown by default"), -+ TRUE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("border_width", -+ _("Border width"), -+ _("Width of border around the main dialog area"), -+ 0, -+ G_MAXINT, -+ 10, -+ G_PARAM_READABLE)); - } - - static void gtk_file_selection_set_property (GObject *object, -@@ -649,7 +676,29 @@ - gtk_widget_grab_default (widget); - return FALSE; - } -- -+ -+static void -+gtk_file_selection_style_set (GtkWidget *filesel, -+ GtkStyle *prev_style) -+{ -+ gboolean show_fileops; -+ gint border_width; -+ -+ gtk_widget_style_get (filesel, -+ "show_fileops_default", -+ &show_fileops, -+ "border_width", -+ &border_width, -+ NULL); -+ -+ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width); -+ -+ if (show_fileops) -+ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+ else -+ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+} -+ - static void - gtk_file_selection_init (GtkFileSelection *filesel) - { -@@ -674,17 +723,15 @@ - - /* The dialog-sized vertical box */ - filesel->main_vbox = dialog->vbox; -- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10); - - /* The horizontal box containing create, rename etc. buttons */ - filesel->button_area = gtk_hbutton_box_new (); - gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START); -- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area, - FALSE, FALSE, 0); - gtk_widget_show (filesel->button_area); - -- gtk_file_selection_show_fileop_buttons (filesel); -+ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL); - - /* hbox for pulldown menu */ - pulldown_hbox = gtk_hbox_new (TRUE, 5); -@@ -723,25 +770,32 @@ - - /* The directories list */ - -- model = gtk_list_store_new (1, G_TYPE_STRING); -+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */ - filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); - g_object_unref (model); - -- column = gtk_tree_view_column_new_with_attributes (_("Folders"), -+ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL, - gtk_cell_renderer_text_new (), - "text", DIR_COLUMN, - NULL); - label = gtk_label_new_with_mnemonic (_("Fol_ders")); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list); - gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -+ -+ /* gtk_tree_view_column_set_widget (column, label); */ -+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE); -+ - gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); - gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column); - - gtk_widget_set_size_request (filesel->dir_list, - DIR_LIST_WIDTH, DIR_LIST_HEIGHT); - g_signal_connect (filesel->dir_list, "row_activated", -- G_CALLBACK (gtk_file_selection_dir_activate), filesel); -+ G_CALLBACK (gtk_file_selection_activate), filesel); -+ -+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed", -+ G_CALLBACK (gtk_file_selection_file_changed), filesel); -+ - - /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */ - -@@ -758,41 +812,6 @@ - gtk_widget_show (filesel->dir_list); - gtk_widget_show (scrolled_win); - -- /* The files list */ -- model = gtk_list_store_new (1, G_TYPE_STRING); -- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); -- g_object_unref (model); -- -- column = gtk_tree_view_column_new_with_attributes (_("Files"), -- gtk_cell_renderer_text_new (), -- "text", FILE_COLUMN, -- NULL); -- label = gtk_label_new_with_mnemonic (_("_Files")); -- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list); -- gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); -- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column); -- -- gtk_widget_set_size_request (filesel->file_list, -- FILE_LIST_WIDTH, FILE_LIST_HEIGHT); -- g_signal_connect (filesel->file_list, "row_activated", -- G_CALLBACK (gtk_file_selection_file_activate), filesel); -- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed", -- G_CALLBACK (gtk_file_selection_file_changed), filesel); -- -- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */ -- -- scrolled_win = gtk_scrolled_window_new (NULL, NULL); -- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN); -- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list); -- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), -- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); -- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0); -- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win); -- gtk_widget_show (filesel->file_list); -- gtk_widget_show (scrolled_win); -- - /* action area for packing buttons into. */ - filesel->action_area = gtk_hbox_new (TRUE, 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area, -@@ -2008,6 +2027,23 @@ - } - - static void -+gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data) -+{ -+ GtkTreeModel *model = gtk_tree_view_get_model (tree_view); -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ gtk_tree_model_get_iter (model, &iter, path); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (! is_file) -+ gtk_file_selection_dir_activate (tree_view, path, column, user_data); -+} -+ -+static void - gtk_file_selection_file_activate (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, -@@ -2103,7 +2139,6 @@ - PossibleCompletion* poss; - GtkTreeIter iter; - GtkListStore *dir_model; -- GtkListStore *file_model; - gchar* filename; - gchar* rem_path = rel_path; - gchar* sel_text; -@@ -2125,10 +2160,8 @@ - g_assert (cmpl_state->reference_dir); - - dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list))); -- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list))); - - gtk_list_store_clear (dir_model); -- gtk_list_store_clear (file_model); - - /* Set the dir list to include ./ and ../ */ - gtk_list_store_append (dir_model, &iter); -@@ -2150,13 +2183,17 @@ - strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0) - { - gtk_list_store_append (dir_model, &iter); -- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, FALSE, -1); - } - } - else - { -- gtk_list_store_append (file_model, &iter); -- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_append (dir_model, &iter); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, TRUE, -1); - } - } - diff --git a/packages/gtk+/gtk+-2.4.4/spinbutton.patch b/packages/gtk+/gtk+-2.4.4/spinbutton.patch deleted file mode 100644 index 8ad7507af0..0000000000 --- a/packages/gtk+/gtk+-2.4.4/spinbutton.patch +++ /dev/null @@ -1,128 +0,0 @@ ---- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100 -@@ -733,7 +733,7 @@ - - spin = GTK_SPIN_BUTTON (widget); - arrow_size = spin_button_get_arrow_size (spin); -- panel_width = arrow_size + 2 * widget->style->xthickness; -+ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness; - - widget->allocation = *allocation; - -@@ -866,19 +866,16 @@ - { - width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness; - -+ y = widget->style->ythickness; -+ height = widget->requisition.height - (2 * y); -+ - if (arrow_type == GTK_ARROW_UP) - { - x = 0; -- y = 0; -- -- height = widget->requisition.height / 2; - } - else - { -- x = 0; -- y = widget->requisition.height / 2; -- -- height = (widget->requisition.height + 1) / 2; -+ x = width; - } - - if (spin_button_at_limit (spin_button, arrow_type)) -@@ -908,32 +905,17 @@ - shadow_type = GTK_SHADOW_OUT; - } - } -- -+ - gtk_paint_box (widget->style, spin_button->panel, - state_type, shadow_type, - NULL, widget, -- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down", -+ NULL, - x, y, width, height); - - height = widget->requisition.height; - -- if (arrow_type == GTK_ARROW_DOWN) -- { -- y = height / 2; -- height = height - y - 2; -- } -- else -- { -- y = 2; -- height = height / 2 - 2; -- } -- - width -= 3; -- -- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- x = 2; -- else -- x = 1; -+ height -= 3; - - w = width / 2; - w -= w % 2 - 1; /* force odd */ -@@ -1108,7 +1090,7 @@ - if (GTK_ENTRY (widget)->editable) - gtk_spin_button_update (spin); - -- if (event->y <= widget->requisition.height / 2) -+ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness)) - { - if (event->button == 1) - start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment); -@@ -1143,44 +1125,11 @@ - - arrow_size = spin_button_get_arrow_size (spin); - -- if (event->button == spin->button) -- { -- int click_child = spin->click_child; -+ gtk_spin_button_stop_spinning (spin); - -- gtk_spin_button_stop_spinning (spin); -- -- if (event->button == 3) -- { -- if (event->y >= 0 && event->x >= 0 && -- event->y <= widget->requisition.height && -- event->x <= arrow_size + 2 * widget->style->xthickness) -- { -- if (click_child == GTK_ARROW_UP && -- event->y <= widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->upper - spin->adjustment->value; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, diff); -- } -- else if (click_child == GTK_ARROW_DOWN && -- event->y > widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->value - spin->adjustment->lower; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, -diff); -- } -- } -- } -- spin_button_redraw (spin); -+ spin_button_redraw (spin); - -- return TRUE; -- } -- else -- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event); -+ return TRUE; - } - - static gint diff --git a/packages/gtk+/gtk+-2.6.10/menu-styling.patch b/packages/gtk+/gtk+-2.6.10/menu-styling.patch new file mode 100644 index 0000000000..8f792df190 --- /dev/null +++ b/packages/gtk+/gtk+-2.6.10/menu-styling.patch @@ -0,0 +1,22 @@ +# +# This patch improves menu styling (based on version in 2.7.0 +# which features a background pixmap for the menu). ---Mickey. +# +--- gtk+-2.6.10/gtk/gtkmenu.c 2005-08-18 16:10:58.000000000 +0200 ++++ gtk+-2.7.0/gtk/gtkmenu.c 2005-04-07 21:56:57.000000000 +0200 +@@ -2490,6 +2495,15 @@ + arrow_size, arrow_size); + } + } ++ else if (event->window == menu->bin_window) ++ { ++ gtk_paint_box (widget->style, ++ menu->bin_window, ++ GTK_STATE_NORMAL, ++ GTK_SHADOW_OUT, ++ NULL, widget, "menu", ++ -border_x, -border_y, width, height); ++ } + } + + static gboolean diff --git a/packages/gtk+/gtk+-2.6.3/automake-lossage.patch b/packages/gtk+/gtk+-2.6.3/automake-lossage.patch deleted file mode 100644 index 0d423ddbb9..0000000000 --- a/packages/gtk+/gtk+-2.6.3/automake-lossage.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100 -+++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100 -@@ -52,21 +52,5 @@ - - dist-hook: html - cp -Rp $(srcdir)/html $(distdir) --else --html: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --pdf: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --dist-hook: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "*** DISTRIBUTION IS INCOMPLETE" -- echo "***" - endif - diff --git a/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch deleted file mode 100644 index d71d839c3c..0000000000 --- a/packages/gtk+/gtk+-2.6.3/disable-tooltips.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100 -@@ -118,7 +118,7 @@ - tooltips->tips_data_list = NULL; - - tooltips->delay = DEFAULT_DELAY; -- tooltips->enabled = TRUE; -+ tooltips->enabled = FALSE; - tooltips->timer_tag = 0; - tooltips->use_sticky_delay = FALSE; - tooltips->last_popdown.tv_sec = -1; diff --git a/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch deleted file mode 100644 index 20481f059b..0000000000 --- a/packages/gtk+/gtk+-2.6.3/gtk+-handhelds.patch +++ /dev/null @@ -1,236 +0,0 @@ ---- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000 -@@ -29,7 +29,7 @@ - #include "gtkarrow.h" - #include "gtkintl.h" - --#define MIN_ARROW_SIZE 15 -+#define MIN_ARROW_SIZE 7 - - enum { - PROP_0, -@@ -53,6 +53,8 @@ - guint prop_id, - GValue *value, - GParamSpec *pspec); -+static void gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition); - - GType - gtk_arrow_get_type (void) -@@ -111,6 +113,7 @@ - G_PARAM_READABLE | G_PARAM_WRITABLE)); - - widget_class->expose_event = gtk_arrow_expose; -+ widget_class->size_request = gtk_arrow_size_request; - } - - static void -@@ -166,13 +169,18 @@ - } - - static void -+gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition) -+{ -+ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -+ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -+} -+ -+static void - gtk_arrow_init (GtkArrow *arrow) - { - GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW); - -- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -- - arrow->arrow_type = GTK_ARROW_RIGHT; - arrow->shadow_type = GTK_SHADOW_OUT; - } ---- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000 -@@ -340,6 +340,9 @@ - static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar, - guint day); - -+static void gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day); -+ - static void gtk_calendar_paint_arrow (GtkWidget *widget, - guint arrow); - static void gtk_calendar_paint_day_num (GtkWidget *widget, -@@ -861,13 +864,13 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else - { - if (calendar->selected_day < 0) - calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1]; -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - } - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); -@@ -908,10 +911,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -939,10 +942,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -974,10 +977,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -2480,9 +2483,9 @@ - return TRUE; - } - --void --gtk_calendar_select_day (GtkCalendar *calendar, -- guint day) -+static void -+gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day) - { - g_return_if_fail (GTK_IS_CALENDAR (calendar)); - g_return_if_fail (day <= 31); -@@ -2499,6 +2502,13 @@ - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) - gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); - } -+} -+ -+void -+gtk_calendar_select_day (GtkCalendar *calendar, -+ guint day) -+{ -+ gtk_calendar_do_select_day (calendar, day); - - calendar->selected_day = day; - ---- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000 -+++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000 -@@ -557,6 +557,15 @@ - 0.0, - G_PARAM_READABLE | G_PARAM_WRITABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("min_width", -+ _("Minimum width"), -+ _("Minimum width of the entry field"), -+ 0, -+ G_MAXINT, -+ MIN_ENTRY_WIDTH, -+ G_PARAM_READABLE)); -+ - signals[POPULATE_POPUP] = - g_signal_new ("populate_popup", - G_OBJECT_CLASS_TYPE (gobject_class), -@@ -1124,7 +1133,7 @@ - { - GtkEntry *entry = GTK_ENTRY (widget); - PangoFontMetrics *metrics; -- gint xborder, yborder; -+ gint xborder, yborder, min_width; - PangoContext *context; - - gtk_widget_ensure_style (widget); -@@ -1140,9 +1149,11 @@ - - xborder += INNER_BORDER; - yborder += INNER_BORDER; -- -+ -+ gtk_widget_style_get (widget, "min_width", &min_width, NULL); -+ - if (entry->width_chars < 0) -- requisition->width = MIN_ENTRY_WIDTH + xborder * 2; -+ requisition->width = min_width + xborder * 2; - else - { - gint char_width = pango_font_metrics_get_approximate_char_width (metrics); ---- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000 -@@ -180,6 +180,7 @@ - static GtkWidgetClass *parent_class = NULL; - static guint signals[LAST_SIGNAL]; - -+static GdkAtom recognize_protocols_atom, atom_atom; - - GType - gtk_range_get_type (void) -@@ -220,6 +221,9 @@ - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - -+ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE); -+ atom_atom = gdk_atom_intern ("ATOM", FALSE); -+ - parent_class = g_type_class_peek_parent (class); - - gobject_class->set_property = gtk_range_set_property; -@@ -815,6 +819,12 @@ - &attributes, attributes_mask); - gdk_window_set_user_data (range->event_window, range); - -+ gdk_property_change (range->event_window, -+ recognize_protocols_atom, -+ atom_atom, -+ 32, GDK_PROP_MODE_REPLACE, -+ NULL, 0); -+ - widget->style = gtk_style_attach (widget->style, widget->window); - } - -@@ -1186,7 +1196,7 @@ - - /* ignore presses when we're already doing something else. */ - if (range->layout->grab_location != MOUSE_OUTSIDE) -- return FALSE; -+ return TRUE; - - range->layout->mouse_x = event->x; - range->layout->mouse_y = event->y; -@@ -1364,7 +1374,7 @@ - return TRUE; - } - -- return FALSE; -+ return TRUE; - } - - /** diff --git a/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch deleted file mode 100644 index df29656343..0000000000 --- a/packages/gtk+/gtk+-2.6.3/gtklabel-resize-patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100 -@@ -1623,6 +1623,7 @@ - - /* We have to clear the layout, fonts etc. may have changed */ - gtk_label_clear_layout (label); -+ gtk_widget_queue_resize (GTK_WIDGET (label)); - } - - static void diff --git a/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch deleted file mode 100644 index b2afddcc61..0000000000 --- a/packages/gtk+/gtk+-2.6.3/hardcoded_libtool.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000 -+++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000 -@@ -360,7 +360,7 @@ - AC_MSG_CHECKING([Whether to write dependencies into .pc files]) - case $enable_explicit_deps in - auto) -- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh` -+ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh` - if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then - enable_explicit_deps=yes - else -@@ -688,7 +688,7 @@ - dnl Now we check to see if our libtool supports shared lib deps - dnl (in a rather ugly way even) - if $dynworks; then -- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" -+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config" - pixbuf_deplibs_check=`$pixbuf_libtool_config | \ - grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ - sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` -@@ -1512,7 +1512,7 @@ - # - # We are using gmodule-no-export now, but I'm leaving the stripping - # code in place for now, since pango and atk still require gmodule. --export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` -+export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` - if test -n "$export_dynamic"; then - GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"` - GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"` diff --git a/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch deleted file mode 100644 index 29e665fbf3..0000000000 --- a/packages/gtk+/gtk+-2.6.3/menu-deactivate.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004 -+++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004 -@@ -37,7 +37,7 @@ - #include "gtktearoffmenuitem.h" - #include "gtkwindow.h" - --#define MENU_SHELL_TIMEOUT 500 -+#define MENU_SHELL_TIMEOUT 2000 - - enum { - DEACTIVATE, -@@ -156,6 +156,7 @@ - static GtkContainerClass *parent_class = NULL; - static guint menu_shell_signals[LAST_SIGNAL] = { 0 }; - -+static int last_crossing_time; - - GType - gtk_menu_shell_get_type (void) -@@ -418,6 +419,7 @@ - gtk_grab_add (GTK_WIDGET (menu_shell)); - menu_shell->have_grab = TRUE; - menu_shell->active = TRUE; -+ last_crossing_time = 0; - } - } - -@@ -545,6 +547,13 @@ - menu_shell->activate_time = 0; - deactivate = FALSE; - } -+ -+ if (last_crossing_time != 0 -+ && ((event->time - last_crossing_time) < 500)) -+ { -+ last_crossing_time = 0; -+ deactivate = FALSE; -+ } - - if (deactivate) - { -@@ -597,6 +606,8 @@ - if (menu_shell->active) - { - menu_item = gtk_get_event_widget ((GdkEvent*) event); -+ -+ last_crossing_time = event->time; - - if (!menu_item || - (GTK_IS_MENU_ITEM (menu_item) && diff --git a/packages/gtk+/gtk+-2.6.3/no-demos.patch b/packages/gtk+/gtk+-2.6.3/no-demos.patch deleted file mode 100644 index 2f10a30dda..0000000000 --- a/packages/gtk+/gtk+-2.6.3/no-demos.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000 -+++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100 -@@ -1,6 +1,6 @@ - ## Makefile.am for GTK+ - --SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib -+SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib - SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros - - # require automake 1.4 diff --git a/packages/gtk+/gtk+-2.6.3/no-xwc.patch b/packages/gtk+/gtk+-2.6.3/no-xwc.patch deleted file mode 100644 index affb4a303e..0000000000 --- a/packages/gtk+/gtk+-2.6.3/no-xwc.patch +++ /dev/null @@ -1,151 +0,0 @@ -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00 -+++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00 -@@ -576,12 +576,14 @@ - GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2); - } - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font); - XmbDrawString (xdisplay, impl->xid, - fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length); - } -+#endif - else - g_error("undefined font type\n"); - } -@@ -613,6 +615,7 @@ - GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length); - g_free (text_8bit); - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - if (sizeof(GdkWChar) == sizeof(wchar_t)) -@@ -633,6 +636,7 @@ - g_free (text_wchar); - } - } -+#endif - else - g_error("undefined font type\n"); - } -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00 -+++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00 -@@ -525,10 +525,12 @@ - width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2); - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - width = XmbTextEscapement (fontset, text, text_length); - break; -+#endif - default: - width = 0; - } -@@ -578,6 +580,7 @@ - width = 0; - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - if (sizeof(GdkWChar) == sizeof(wchar_t)) - { -@@ -595,6 +598,7 @@ - g_free (text_wchar); - } - break; -+#endif - default: - width = 0; - } -@@ -667,6 +671,7 @@ - if (descent) - *descent = overall.descent; - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - XmbTextExtents (fontset, text, text_length, &ink, &logical); -@@ -681,6 +686,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -@@ -753,6 +759,7 @@ - *descent = overall.descent; - break; - } -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - -@@ -780,6 +787,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00 -+++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00 -@@ -48,6 +48,7 @@ - void - _gdk_x11_initialize_locale (void) - { -+#ifdef HAVE_XWC - wchar_t result; - gchar *current_locale; - static char *last_locale = NULL; -@@ -93,7 +94,8 @@ - GDK_NOTE (XIM, - g_message ("%s multi-byte string functions.", - gdk_use_mb ? "Using" : "Not using")); -- -+#endif -+ - return; - } - -@@ -136,6 +138,7 @@ - { - gchar *mbstr; - -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -178,6 +181,7 @@ - XFree (tpr.value); - } - else -+#endif - { - gint length = 0; - gint i; -@@ -210,6 +214,7 @@ - gint - gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max) - { -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -242,6 +247,7 @@ - return len_cpy; - } - else -+#endif - { - gint i; - diff --git a/packages/gtk+/gtk+-2.6.3/scroll-timings.patch b/packages/gtk+/gtk+-2.6.3/scroll-timings.patch deleted file mode 100644 index a38b21dcc2..0000000000 --- a/packages/gtk+/gtk+-2.6.3/scroll-timings.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100 -@@ -35,9 +35,9 @@ - #include "gtkintl.h" - #include "gtkscrollbar.h" - --#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */ --#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */ --#define UPDATE_DELAY 300 /* Delay for queued update */ -+#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */ -+#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */ -+#define UPDATE_DELAY 1000 /* Delay for queued update */ - - enum { - PROP_0, diff --git a/packages/gtk+/gtk+-2.6.3/single-click.patch b/packages/gtk+/gtk+-2.6.3/single-click.patch deleted file mode 100644 index 3bb208d4d6..0000000000 --- a/packages/gtk+/gtk+-2.6.3/single-click.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c gtk+-2.6.3/gtk/gtkcalendar.c ---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 16:57:04 +01:00 -+++ gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 20:05:18 +01:00 -@@ -1023,9 +1023,11 @@ - } - - gtk_calendar_select_and_focus_day (calendar, day); -- } -+ -+ // This change causes the calendar to disappear after choosing a day -+/* } - else if (event->type == GDK_2BUTTON_PRESS) -- { -+ {*/ - private_data->in_drag = 0; - if (day_month == MONTH_CURRENT) - g_signal_emit (calendar, -diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c gtk+-2.6.3/gtk/gtkfilesel.c ---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-06 16:57:07 +01:00 -+++ gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-07 13:40:32 +01:00 -@@ -2468,6 +2468,33 @@ - if (fs->last_selected != NULL) - g_free (fs->last_selected); - -+ // Single-click directory entry -+ if (new_names->len == 1) -+ { -+ GtkTreeView *tree_view; -+ GtkTreeModel *model; -+ GtkTreePath *path; -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ tree_view = gtk_tree_selection_get_tree_view (selection); -+ -+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) -+ { -+ path = gtk_tree_model_get_path (model, &iter); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (!is_file) -+ { -+ gtk_file_selection_dir_activate (tree_view, path, -+ gtk_tree_view_get_column (tree_view, DIR_COLUMN), -+ user_data); -+ } -+ -+ gtk_tree_path_free (path); -+ } -+ } -+ - fs->last_selected = g_strdup (g_ptr_array_index (new_names, index)); - filename = get_real_filename (fs->last_selected, FALSE); - diff --git a/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch deleted file mode 100644 index 20bf4cf366..0000000000 --- a/packages/gtk+/gtk+-2.6.3/small-gtkfilesel.patch +++ /dev/null @@ -1,267 +0,0 @@ -diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c ---- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100 -@@ -68,6 +68,7 @@ - #include "gtkprivate.h" - #include "gtkscrolledwindow.h" - #include "gtkstock.h" -+#include "gtksignal.h" - #include "gtktreeselection.h" - #include "gtktreeview.h" - #include "gtkvbox.h" -@@ -77,6 +78,7 @@ - #include "gtkmessagedialog.h" - #include "gtkdnd.h" - #include "gtkeventbox.h" -+#include "gtkimage.h" - - #undef GTK_DISABLE_DEPRECATED - #include "gtkoptionmenu.h" -@@ -245,7 +247,8 @@ - }; - - enum { -- DIR_COLUMN -+ DIR_COLUMN, -+ ISFILE_COLUMN - }; - - enum { -@@ -400,6 +403,12 @@ - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); -+ -+static void gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data); -+ - static void gtk_file_selection_file_changed (GtkTreeSelection *selection, - gpointer user_data); - static void gtk_file_selection_dir_activate (GtkTreeView *tree_view, -@@ -419,6 +428,7 @@ - static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data); - static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data); - static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data); -+static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style); - - static void free_selected_names (GPtrArray *names); - -@@ -578,6 +588,23 @@ - G_PARAM_WRITABLE)); - object_class->destroy = gtk_file_selection_destroy; - widget_class->map = gtk_file_selection_map; -+ widget_class->style_set = gtk_file_selection_style_set; -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("show_fileops_default", -+ _("Show fileop buttons by default"), -+ _("Whether file operation buttons are shown by default"), -+ TRUE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("border_width", -+ _("Border width"), -+ _("Width of border around the main dialog area"), -+ 0, -+ G_MAXINT, -+ 10, -+ G_PARAM_READABLE)); - } - - static void gtk_file_selection_set_property (GObject *object, -@@ -649,7 +676,29 @@ - gtk_widget_grab_default (widget); - return FALSE; - } -- -+ -+static void -+gtk_file_selection_style_set (GtkWidget *filesel, -+ GtkStyle *prev_style) -+{ -+ gboolean show_fileops; -+ gint border_width; -+ -+ gtk_widget_style_get (filesel, -+ "show_fileops_default", -+ &show_fileops, -+ "border_width", -+ &border_width, -+ NULL); -+ -+ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width); -+ -+ if (show_fileops) -+ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+ else -+ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+} -+ - static void - gtk_file_selection_init (GtkFileSelection *filesel) - { -@@ -674,17 +723,15 @@ - - /* The dialog-sized vertical box */ - filesel->main_vbox = dialog->vbox; -- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10); - - /* The horizontal box containing create, rename etc. buttons */ - filesel->button_area = gtk_hbutton_box_new (); - gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START); -- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area, - FALSE, FALSE, 0); - gtk_widget_show (filesel->button_area); - -- gtk_file_selection_show_fileop_buttons (filesel); -+ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL); - - /* hbox for pulldown menu */ - pulldown_hbox = gtk_hbox_new (TRUE, 5); -@@ -723,25 +770,32 @@ - - /* The directories list */ - -- model = gtk_list_store_new (1, G_TYPE_STRING); -+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */ - filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); - g_object_unref (model); - -- column = gtk_tree_view_column_new_with_attributes (_("Folders"), -+ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL, - gtk_cell_renderer_text_new (), - "text", DIR_COLUMN, - NULL); - label = gtk_label_new_with_mnemonic (_("Fol_ders")); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list); - gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -+ -+ /* gtk_tree_view_column_set_widget (column, label); */ -+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE); -+ - gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); - gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column); - - gtk_widget_set_size_request (filesel->dir_list, - DIR_LIST_WIDTH, DIR_LIST_HEIGHT); - g_signal_connect (filesel->dir_list, "row_activated", -- G_CALLBACK (gtk_file_selection_dir_activate), filesel); -+ G_CALLBACK (gtk_file_selection_activate), filesel); -+ -+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed", -+ G_CALLBACK (gtk_file_selection_file_changed), filesel); -+ - - /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */ - -@@ -758,41 +812,6 @@ - gtk_widget_show (filesel->dir_list); - gtk_widget_show (scrolled_win); - -- /* The files list */ -- model = gtk_list_store_new (1, G_TYPE_STRING); -- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); -- g_object_unref (model); -- -- column = gtk_tree_view_column_new_with_attributes (_("Files"), -- gtk_cell_renderer_text_new (), -- "text", FILE_COLUMN, -- NULL); -- label = gtk_label_new_with_mnemonic (_("_Files")); -- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list); -- gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); -- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column); -- -- gtk_widget_set_size_request (filesel->file_list, -- FILE_LIST_WIDTH, FILE_LIST_HEIGHT); -- g_signal_connect (filesel->file_list, "row_activated", -- G_CALLBACK (gtk_file_selection_file_activate), filesel); -- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed", -- G_CALLBACK (gtk_file_selection_file_changed), filesel); -- -- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */ -- -- scrolled_win = gtk_scrolled_window_new (NULL, NULL); -- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN); -- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list); -- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), -- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); -- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0); -- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win); -- gtk_widget_show (filesel->file_list); -- gtk_widget_show (scrolled_win); -- - /* action area for packing buttons into. */ - filesel->action_area = gtk_hbox_new (TRUE, 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area, -@@ -2008,6 +2027,23 @@ - } - - static void -+gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data) -+{ -+ GtkTreeModel *model = gtk_tree_view_get_model (tree_view); -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ gtk_tree_model_get_iter (model, &iter, path); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (! is_file) -+ gtk_file_selection_dir_activate (tree_view, path, column, user_data); -+} -+ -+static void - gtk_file_selection_file_activate (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, -@@ -2103,7 +2139,6 @@ - PossibleCompletion* poss; - GtkTreeIter iter; - GtkListStore *dir_model; -- GtkListStore *file_model; - gchar* filename; - gchar* rem_path = rel_path; - gchar* sel_text; -@@ -2125,10 +2160,8 @@ - g_assert (cmpl_state->reference_dir); - - dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list))); -- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list))); - - gtk_list_store_clear (dir_model); -- gtk_list_store_clear (file_model); - - /* Set the dir list to include ./ and ../ */ - gtk_list_store_append (dir_model, &iter); -@@ -2150,13 +2183,17 @@ - strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0) - { - gtk_list_store_append (dir_model, &iter); -- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, FALSE, -1); - } - } - else - { -- gtk_list_store_append (file_model, &iter); -- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_append (dir_model, &iter); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, TRUE, -1); - } - } - diff --git a/packages/gtk+/gtk+-2.6.3/spinbutton.patch b/packages/gtk+/gtk+-2.6.3/spinbutton.patch deleted file mode 100644 index 8ad7507af0..0000000000 --- a/packages/gtk+/gtk+-2.6.3/spinbutton.patch +++ /dev/null @@ -1,128 +0,0 @@ ---- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100 -@@ -733,7 +733,7 @@ - - spin = GTK_SPIN_BUTTON (widget); - arrow_size = spin_button_get_arrow_size (spin); -- panel_width = arrow_size + 2 * widget->style->xthickness; -+ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness; - - widget->allocation = *allocation; - -@@ -866,19 +866,16 @@ - { - width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness; - -+ y = widget->style->ythickness; -+ height = widget->requisition.height - (2 * y); -+ - if (arrow_type == GTK_ARROW_UP) - { - x = 0; -- y = 0; -- -- height = widget->requisition.height / 2; - } - else - { -- x = 0; -- y = widget->requisition.height / 2; -- -- height = (widget->requisition.height + 1) / 2; -+ x = width; - } - - if (spin_button_at_limit (spin_button, arrow_type)) -@@ -908,32 +905,17 @@ - shadow_type = GTK_SHADOW_OUT; - } - } -- -+ - gtk_paint_box (widget->style, spin_button->panel, - state_type, shadow_type, - NULL, widget, -- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down", -+ NULL, - x, y, width, height); - - height = widget->requisition.height; - -- if (arrow_type == GTK_ARROW_DOWN) -- { -- y = height / 2; -- height = height - y - 2; -- } -- else -- { -- y = 2; -- height = height / 2 - 2; -- } -- - width -= 3; -- -- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- x = 2; -- else -- x = 1; -+ height -= 3; - - w = width / 2; - w -= w % 2 - 1; /* force odd */ -@@ -1108,7 +1090,7 @@ - if (GTK_ENTRY (widget)->editable) - gtk_spin_button_update (spin); - -- if (event->y <= widget->requisition.height / 2) -+ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness)) - { - if (event->button == 1) - start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment); -@@ -1143,44 +1125,11 @@ - - arrow_size = spin_button_get_arrow_size (spin); - -- if (event->button == spin->button) -- { -- int click_child = spin->click_child; -+ gtk_spin_button_stop_spinning (spin); - -- gtk_spin_button_stop_spinning (spin); -- -- if (event->button == 3) -- { -- if (event->y >= 0 && event->x >= 0 && -- event->y <= widget->requisition.height && -- event->x <= arrow_size + 2 * widget->style->xthickness) -- { -- if (click_child == GTK_ARROW_UP && -- event->y <= widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->upper - spin->adjustment->value; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, diff); -- } -- else if (click_child == GTK_ARROW_DOWN && -- event->y > widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->value - spin->adjustment->lower; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, -diff); -- } -- } -- } -- spin_button_redraw (spin); -+ spin_button_redraw (spin); - -- return TRUE; -- } -- else -- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event); -+ return TRUE; - } - - static gint diff --git a/packages/gtk+/gtk+-2.6.3/xsettings.patch b/packages/gtk+/gtk+-2.6.3/xsettings.patch deleted file mode 100644 index b63e262d34..0000000000 --- a/packages/gtk+/gtk+-2.6.3/xsettings.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004 -+++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004 -@@ -2827,10 +2827,9 @@ - { - GdkScreenX11 *screen = data; - -- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent)) -- return GDK_FILTER_REMOVE; -- else -- return GDK_FILTER_CONTINUE; -+ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent); -+ -+ return GDK_FILTER_CONTINUE; - } - - static void diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch deleted file mode 100644 index 736473696f..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.0.6-exportsymbols.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -ruN gtk+-2.0.6.orig/configure gtk+-2.0.6/configure ---- gtk+-2.0.6.orig/configure 2002-08-31 03:49:07.000000000 +0900 -+++ gtk+-2.0.6/configure 2002-08-31 03:52:45.000000000 +0900 -@@ -7904,7 +7904,8 @@ - if test "$os_win32" != yes; then - # libtool option to control which symbols are exported - # right now, symbols starting with _ are not exported -- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[^_].*"' -+ # Disabled until -export-symbols-regex works (RH patch) -+ LIBTOOL_EXPORT_OPTIONS= - else - # We currently use .def files on Windows (for gdk-pixbuf, gdk and gtk) - LIBTOOL_EXPORT_OPTIONS= -diff -ruN gtk+-2.0.6.orig/configure.in gtk+-2.0.6/configure.in ---- gtk+-2.0.6.orig/configure.in 2002-08-31 03:49:07.000000000 +0900 -+++ gtk+-2.0.6/configure.in 2002-08-31 03:51:22.000000000 +0900 -@@ -273,7 +273,8 @@ - if test "$os_win32" != yes; then - # libtool option to control which symbols are exported - # right now, symbols starting with _ are not exported -- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"' -+ # Disabled until -export-symbols-regex works (RH patch) -+ LIBTOOL_EXPORT_OPTIONS= - else - # We currently use .def files on Windows (for gdk-pixbuf, gdk and gtk) - LIBTOOL_EXPORT_OPTIONS= diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch deleted file mode 100644 index 5d80daf0bc..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/000_gtk+-2.2.0-buildfix-immodule.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -ruN gtk+-2.2.0.orig/modules/input/Makefile.am gtk+-2.2.0/modules/input/Makefile.am ---- gtk+-2.2.0.orig/modules/input/Makefile.am 2003-01-06 23:40:37.000000000 +0900 -+++ gtk+-2.2.0/modules/input/Makefile.am 2003-01-06 23:46:35.000000000 +0900 -@@ -118,7 +118,12 @@ - im-viqr.la - - gtk.immodules: Makefile.am $(module_LTLIBRARIES) -- $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules -+ @if $(RUN_QUERY_IMMODULES_TEST) ; then \ -+ $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules ; \ -+ else \ -+ touch $@ ; \ -+ fi -+ - - CLEANFILES = gtk.immodules - -diff -ruN gtk+-2.2.0.orig/modules/input/Makefile.in gtk+-2.2.0/modules/input/Makefile.in ---- gtk+-2.2.0.orig/modules/input/Makefile.in 2003-01-06 23:39:08.000000000 +0900 -+++ gtk+-2.2.0/modules/input/Makefile.in 2003-01-06 23:46:44.000000000 +0900 -@@ -785,7 +785,11 @@ - rm -f $(DESTDIR)$(sysconfdir)/gtk-2.0/gtk.immodules - - gtk.immodules: Makefile.am $(module_LTLIBRARIES) -- $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules -+ @if $(RUN_QUERY_IMMODULES_TEST) ; then \ -+ $(top_builddir)/gtk/gtk-query-immodules-2.0 $(module_LTLIBRARIES) > gtk.immodules ; \ -+ else \ -+ touch $@ ; \ -+ fi - - @CROSS_COMPILING_FALSE@all-local: gtk.immodules - # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch deleted file mode 100644 index 21500db65a..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/002_xpmico.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -Nur gtk+-2.4.9.orig/gdk-pixbuf/io-ico.c gtk+-2.4.9/gdk-pixbuf/io-ico.c ---- gtk+-2.4.9.orig/gdk-pixbuf/io-ico.c 2004-08-25 18:52:18.000000000 +0200 -+++ gtk+-2.4.9/gdk-pixbuf/io-ico.c 2004-09-15 00:40:17.000000000 +0200 -@@ -210,6 +210,14 @@ - - State->HeaderSize = 6 + IconCount*16; - -+ if (State->HeaderSize < 0) { -+ g_set_error (error, -+ GDK_PIXBUF_ERROR, -+ GDK_PIXBUF_ERROR_CORRUPT_IMAGE, -+ _("Invalid header in icon")); -+ return; -+ } -+ - if (State->HeaderSize>State->BytesInHeaderBuf) { - guchar *tmp=g_try_realloc(State->HeaderBuf,State->HeaderSize); - if (!tmp) { diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch deleted file mode 100644 index e579c8e208..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/003_iconcache.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gtk/updateiconcache.c.orig 2005-02-06 21:08:09.638762480 +0100 -+++ gtk+-2.6.2/gtk/updateiconcache.c 2005-02-06 21:15:13.639304600 +0100 -@@ -53,7 +53,7 @@ - gchar *cache_path; - int retval; - -- retval = g_stat (path, &path_stat); -+ retval = stat (path, &path_stat); - - if (retval < 0) - { diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch deleted file mode 100644 index 0d423ddbb9..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/automake-lossage.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100 -+++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100 -@@ -52,21 +52,5 @@ - - dist-hook: html - cp -Rp $(srcdir)/html $(distdir) --else --html: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --pdf: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --dist-hook: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "*** DISTRIBUTION IS INCOMPLETE" -- echo "***" - endif - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff deleted file mode 100644 index 77cda1ce27..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.diff +++ /dev/null @@ -1,1885 +0,0 @@ ---- gtk+-2.6.4/configure 2005-03-30 15:05:06.000000000 +0300 -+++ gtk+-2.6.4/configure 2005-03-30 15:07:58.000000000 +0300 -@@ -1057,6 +1057,7 @@ - --enable-xkb support XKB [default=maybe] - --disable-rebuilds disable all source autogeneration rules - --disable-visibility don't use ELF visibility attributes -+ --disable-shortcuts disable keyboard shortcuts - --disable-shadowfb disable shadowfb support for linux-fb - --enable-fbmanager enable framebuffer manager support (GtkFB) - --enable-explicit-deps=[yes/no/auto] -@@ -1197,7 +1198,7 @@ - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi -- cd $ac_popdir -+ cd "$ac_popdir" - done - fi - -@@ -2663,8 +2664,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -2722,8 +2722,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -2839,8 +2838,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -2894,8 +2892,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -2940,8 +2937,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -2985,8 +2981,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -3759,7 +3754,7 @@ - ;; - *-*-irix6*) - # Find out which ABI we are using. -- echo '#line 3762 "configure"' > conftest.$ac_ext -+ echo '#line 3757 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -@@ -3879,8 +3874,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4189,8 +4183,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4360,8 +4353,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4428,8 +4420,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4689,8 +4680,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4748,8 +4738,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4820,8 +4809,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -4865,8 +4853,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -5331,7 +5318,7 @@ - - - # Provide some information about the compiler. --echo "$as_me:5334:" \ -+echo "$as_me:5321:" \ - "checking for Fortran 77 compiler version" >&5 - ac_compiler=`set X $ac_compile; echo $2` - { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 -@@ -5377,8 +5364,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_f77_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -5427,8 +5413,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_f77_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -6388,11 +6373,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:6391: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:6376: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:6395: \$? = $ac_status" >&5 -+ echo "$as_me:6380: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -6631,11 +6616,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:6634: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:6619: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:6638: \$? = $ac_status" >&5 -+ echo "$as_me:6623: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -6691,11 +6676,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:6694: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:6679: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:6698: \$? = $ac_status" >&5 -+ echo "$as_me:6683: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized -@@ -7082,8 +7067,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -7143,8 +7127,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8026,7 +8009,7 @@ - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) -- echo '#line 8029 "configure"' > conftest.$ac_ext -+ echo '#line 8012 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -@@ -8357,8 +8340,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8461,8 +8443,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8527,8 +8508,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8621,8 +8601,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8687,8 +8666,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8754,8 +8732,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8821,8 +8798,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -8897,7 +8873,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF --#line 8900 "configure" -+#line 8876 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -8995,7 +8971,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF --#line 8998 "configure" -+#line 8974 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -10032,8 +10008,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -10094,8 +10069,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -11188,11 +11162,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:11191: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:11165: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:11195: \$? = $ac_status" >&5 -+ echo "$as_me:11169: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -11248,11 +11222,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:11251: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:11225: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:11255: \$? = $ac_status" >&5 -+ echo "$as_me:11229: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized -@@ -11759,7 +11733,7 @@ - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) -- echo '#line 11762 "configure"' > conftest.$ac_ext -+ echo '#line 11736 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -@@ -12090,8 +12064,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12194,8 +12167,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12260,8 +12232,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12354,8 +12325,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12420,8 +12390,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12487,8 +12456,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12554,8 +12522,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_cxx_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -12630,7 +12597,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF --#line 12633 "configure" -+#line 12600 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -12728,7 +12695,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF --#line 12731 "configure" -+#line 12698 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -13565,11 +13532,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:13568: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:13535: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:13572: \$? = $ac_status" >&5 -+ echo "$as_me:13539: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -13625,11 +13592,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:13628: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:13595: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:13632: \$? = $ac_status" >&5 -+ echo "$as_me:13599: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized -@@ -14006,8 +13973,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_f77_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -14057,8 +14023,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_f77_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -14940,7 +14905,7 @@ - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) -- echo '#line 14943 "configure"' > conftest.$ac_ext -+ echo '#line 14908 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -@@ -15681,11 +15646,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:15684: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:15649: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:15688: \$? = $ac_status" >&5 -+ echo "$as_me:15653: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -15924,11 +15889,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:15927: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:15892: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:15931: \$? = $ac_status" >&5 -+ echo "$as_me:15896: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -15984,11 +15949,11 @@ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:15987: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:15952: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:15991: \$? = $ac_status" >&5 -+ echo "$as_me:15956: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized -@@ -16375,8 +16340,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -16436,8 +16400,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -17319,7 +17282,7 @@ - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) -- echo '#line 17322 "configure"' > conftest.$ac_ext -+ echo '#line 17285 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -@@ -17650,8 +17613,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -17754,8 +17716,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -17820,8 +17781,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -17914,8 +17874,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -17980,8 +17939,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -18047,8 +18005,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -18114,8 +18071,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -18190,7 +18146,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF --#line 18193 "configure" -+#line 18149 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -18288,7 +18244,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF --#line 18291 "configure" -+#line 18247 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -19354,8 +19310,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -19384,8 +19339,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -19455,8 +19409,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -19508,8 +19461,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -19580,8 +19532,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -19633,8 +19584,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -19849,6 +19799,18 @@ - else - enable_visibility=yes - fi; -+# modification for Device to disable keyboard shortcuts -+# Check whether --enable-shortcuts or --disable-shortcuts was given. -+if test "${enable_shortcuts+set}" = set; then -+ enableval="$enable_shortcuts" -+ -+else -+ enable_shortcuts=yes -+fi; -+ -+if test "x$enable_shortcuts" = "xno"; then -+ GTK_EXTRA_CFLAGS="$GTK_EXTRA_CFLAGS -DDISABLE_KEYBOARD_SHORTCUTS" -+fi; - - - # Check whether --with-xinput or --without-xinput was given. -@@ -20018,8 +19980,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -20124,8 +20085,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -20652,8 +20612,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -20716,8 +20675,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -20753,7 +20711,7 @@ - # sure that both po/ and po-properties/ have .po files that correspond - # to your language. If you only add one to po/, the build will break - # in po-properties/. --ALL_LINGUAS="af am ar az az_IR be bg bn br bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu ia id is it ja ko li lt lv mi mk ml mn mr ms nb ne nl nn no nso pa pl pt pt_BR ro ru rw sk sl sq sr sr@ije sr@Latn sv ta th tk tr uk uz uz@Latn vi wa xh yi zh_CN zh_TW" -+ALL_LINGUAS="" - - - for ac_header in locale.h -@@ -20789,8 +20747,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -20935,8 +20892,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21007,8 +20963,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21152,8 +21107,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21211,8 +21165,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21309,8 +21262,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21389,8 +21341,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21454,8 +21405,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21519,8 +21469,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21597,8 +21546,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21662,8 +21610,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21779,8 +21726,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -21947,8 +21893,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -22081,8 +22026,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -22167,8 +22111,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -22469,8 +22412,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -22514,8 +22456,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -22822,8 +22763,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -22949,8 +22889,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23018,8 +22957,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23171,8 +23109,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23324,8 +23261,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23486,8 +23422,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23572,8 +23507,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23666,8 +23600,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23876,8 +23809,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -23949,8 +23881,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24014,8 +23945,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24199,8 +24129,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24477,8 +24406,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24579,8 +24507,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24678,8 +24605,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24896,8 +24822,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -24962,8 +24887,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25037,8 +24961,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25249,8 +25172,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25306,8 +25228,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25460,8 +25381,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25517,8 +25437,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25671,8 +25590,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25728,8 +25646,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -25905,8 +25822,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26022,8 +25938,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26127,8 +26042,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26184,8 +26098,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26330,8 +26243,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26488,8 +26400,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26560,8 +26471,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26881,8 +26791,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -26939,8 +26848,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27183,8 +27091,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27295,8 +27202,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27347,8 +27253,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27424,8 +27329,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27480,8 +27384,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27549,8 +27452,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27658,8 +27560,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27723,8 +27624,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27792,8 +27692,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27897,8 +27796,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -27962,8 +27860,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28060,8 +27957,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28125,8 +28021,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28223,8 +28118,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28288,8 +28182,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28368,8 +28261,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28462,8 +28354,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28537,8 +28428,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28609,8 +28499,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28709,8 +28598,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28766,8 +28654,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28856,8 +28743,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28907,8 +28793,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -28999,8 +28884,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29043,8 +28927,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29119,8 +29002,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29198,8 +29080,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29272,8 +29153,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29350,8 +29230,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29447,8 +29326,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29558,8 +29436,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29609,8 +29486,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29809,8 +29685,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -29860,8 +29735,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -30015,6 +29889,116 @@ - GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS" - fi - -+ # Checks for XFixes extension -+ -+ have_xfixes=false -+ -+ succeeded=no -+ -+ if test -z "$PKG_CONFIG"; then -+ # Extract the first word of "pkg-config", so it can be a program name with args. -+set dummy pkg-config; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ case $PKG_CONFIG in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -+ ;; -+esac -+fi -+PKG_CONFIG=$ac_cv_path_PKG_CONFIG -+ -+if test -n "$PKG_CONFIG"; then -+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 -+echo "${ECHO_T}$PKG_CONFIG" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ fi -+ -+ if test "$PKG_CONFIG" = "no" ; then -+ echo "*** The pkg-config script could not be found. Make sure it is" -+ echo "*** in your path, or set the PKG_CONFIG environment variable" -+ echo "*** to the full path to pkg-config." -+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." -+ else -+ PKG_CONFIG_MIN_VERSION=0.9.0 -+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then -+ echo "$as_me:$LINENO: checking for xfixes" >&5 -+echo $ECHO_N "checking for xfixes... $ECHO_C" >&6 -+ -+ if $PKG_CONFIG --exists "xfixes" ; then -+ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+ succeeded=yes -+ -+ echo "$as_me:$LINENO: checking XFIXES_CFLAGS" >&5 -+echo $ECHO_N "checking XFIXES_CFLAGS... $ECHO_C" >&6 -+ XFIXES_CFLAGS=`$PKG_CONFIG --cflags "xfixes"` -+ echo "$as_me:$LINENO: result: $XFIXES_CFLAGS" >&5 -+echo "${ECHO_T}$XFIXES_CFLAGS" >&6 -+ -+ echo "$as_me:$LINENO: checking XFIXES_LIBS" >&5 -+echo $ECHO_N "checking XFIXES_LIBS... $ECHO_C" >&6 -+ XFIXES_LIBS=`$PKG_CONFIG --libs "xfixes"` -+ echo "$as_me:$LINENO: result: $XFIXES_LIBS" >&5 -+echo "${ECHO_T}$XFIXES_LIBS" >&6 -+ else -+ XFIXES_CFLAGS="" -+ XFIXES_LIBS="" -+ ## If we have a custom action on failure, don't print errors, but -+ ## do set a variable so people can do so. -+ XFIXES_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xfixes"` -+ -+ fi -+ -+ -+ -+ else -+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." -+ echo "*** See http://www.freedesktop.org/software/pkgconfig" -+ fi -+ fi -+ -+ if test $succeeded = yes; then -+ have_xfixes=true -+ else -+ : -+ fi -+ -+ -+ if $have_xfixes ; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_XFIXES 1 -+_ACEOF -+ -+ GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS" -+ GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS" -+ fi -+ - # Xshm checks - - if test "x$enable_shm" = "xyes"; then -@@ -30049,8 +30033,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -30196,8 +30179,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -30355,8 +30337,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -30651,8 +30632,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -30765,8 +30745,7 @@ - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? -@@ -30798,7 +30777,6 @@ - - GTK_PACKAGES=atk - GTK_EXTRA_LIBS= --GTK_EXTRA_CFLAGS= - GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS" - GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS" - -@@ -32514,11 +32492,6 @@ - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - -- if test x"$ac_file" != x-; then -- { echo "$as_me:$LINENO: creating $ac_file" >&5 --echo "$as_me: creating $ac_file" >&6;} -- rm -f "$ac_file" -- fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ -@@ -32557,6 +32530,12 @@ - fi;; - esac - done` || { (exit 1); exit 1; } -+ -+ if test x"$ac_file" != x-; then -+ { echo "$as_me:$LINENO: creating $ac_file" >&5 -+echo "$as_me: creating $ac_file" >&6;} -+ rm -f "$ac_file" -+ fi - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff deleted file mode 100644 index 8573b11739..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/configure.in.diff +++ /dev/null @@ -1,53 +0,0 @@ ---- gtk+-2.6.4/configure.in 2005-03-30 15:05:06.000000000 +0300 -+++ gtk+-2.6.4/configure.in 2005-03-30 15:07:36.000000000 +0300 -@@ -202,6 +202,15 @@ - [AC_HELP_STRING([--disable-visibility], - [don't use ELF visibility attributes])],, - [enable_visibility=yes]) -+# modification for Device to disable keyboard shortcuts -+AC_ARG_ENABLE(shortcuts, -+ [AC_HELP_STRING([--disable-shortcuts], -+ [disable keyboard shortcuts])],, -+ [enable_shortcuts=yes]) -+ -+if test "x$enable_shortcuts" = "xno"; then -+ GTK_EXTRA_CFLAGS="$GTK_EXTRA_CFLAGS -DDISABLE_KEYBOARD_SHORTCUTS" -+fi; - - AC_ARG_WITH(xinput, - [AC_HELP_STRING([--with-xinput=@<:@no/yes@:>@], [support XInput])]) -@@ -418,7 +427,7 @@ - # sure that both po/ and po-properties/ have .po files that correspond - # to your language. If you only add one to po/, the build will break - # in po-properties/. --ALL_LINGUAS="af am ar az az_IR be bg bn br bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu ia id is it ja ko li lt lv mi mk ml mn mr ms nb ne nl nn no nso pa pl pt pt_BR ro ru rw sk sl sq sr sr@ije sr@Latn sv ta th tk tr uk uz uz@Latn vi wa xh yi zh_CN zh_TW" -+ALL_LINGUAS="" - AM_GLIB_GNU_GETTEXT - LIBS="$LIBS $INTLLIBS" - AC_OUTPUT_COMMANDS([case "$CONFIG_FILES" in *po-properties/Makefile.in*) -@@ -1283,6 +1292,17 @@ - GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS" - GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS" - fi -+ -+ # Checks for XFixes extension -+ -+ have_xfixes=false -+ PKG_CHECK_MODULES(XFIXES, xfixes, have_xfixes=true, :) -+ -+ if $have_xfixes ; then -+ AC_DEFINE(HAVE_XFIXES, 1, Have the XFIXES X extension) -+ GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS" -+ GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS" -+ fi - - # Xshm checks - -@@ -1492,7 +1512,6 @@ - - GTK_PACKAGES=atk - GTK_EXTRA_LIBS= --GTK_EXTRA_CFLAGS= - GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS" - GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS" - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch deleted file mode 100644 index d71d839c3c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/disable-tooltips.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100 -@@ -118,7 +118,7 @@ - tooltips->tips_data_list = NULL; - - tooltips->delay = DEFAULT_DELAY; -- tooltips->enabled = TRUE; -+ tooltips->enabled = FALSE; - tooltips->timer_tag = 0; - tooltips->use_sticky_delay = FALSE; - tooltips->last_popdown.tv_sec = -1; diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff deleted file mode 100644 index 8104eb8559..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gdkwindow-x11.c.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- gtk+-2.6.4/gdk/x11/gdkwindow-x11.c 2005-01-25 20:51:36.000000000 +0200 -+++ gtk+-2.6.4/gdk/x11/gdkwindow-x11.c 2005-04-06 16:19:35.350164320 +0300 -@@ -1286,6 +1286,7 @@ - GdkToplevelX11 *toplevel; - Atom atoms[7]; - gint i; -+ gint propmode; - - private = (GdkWindowObject*) window; - toplevel = _gdk_x11_window_get_toplevel (window); -@@ -1295,6 +1296,12 @@ - - update_wm_hints (window, TRUE); - -+ /* If the window has _NET_WM_STATE key specified, use it as the property mode */ -+ propmode = (gint)g_object_get_data (G_OBJECT (window), "_NET_WM_STATE"); -+ -+ if (!propmode) -+ propmode = PropModeReplace; -+ - /* We set the spec hints regardless of whether the spec is supported, - * since it can't hurt and it's kind of expensive to check whether - * it's supported. -@@ -1366,10 +1373,11 @@ - XChangeProperty (xdisplay, - xwindow, - gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"), -- XA_ATOM, 32, PropModeReplace, -+ XA_ATOM, 32, propmode, - (guchar*) atoms, i); -- } -- else -+ } -+ /* Don't delete the property, unless we are replacing it */ -+ else if (propmode == PropModeReplace ) - { - XDeleteProperty (xdisplay, - xwindow, diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch deleted file mode 100644 index 20481f059b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk+-handhelds.patch +++ /dev/null @@ -1,236 +0,0 @@ ---- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000 -@@ -29,7 +29,7 @@ - #include "gtkarrow.h" - #include "gtkintl.h" - --#define MIN_ARROW_SIZE 15 -+#define MIN_ARROW_SIZE 7 - - enum { - PROP_0, -@@ -53,6 +53,8 @@ - guint prop_id, - GValue *value, - GParamSpec *pspec); -+static void gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition); - - GType - gtk_arrow_get_type (void) -@@ -111,6 +113,7 @@ - G_PARAM_READABLE | G_PARAM_WRITABLE)); - - widget_class->expose_event = gtk_arrow_expose; -+ widget_class->size_request = gtk_arrow_size_request; - } - - static void -@@ -166,13 +169,18 @@ - } - - static void -+gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition) -+{ -+ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -+ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -+} -+ -+static void - gtk_arrow_init (GtkArrow *arrow) - { - GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW); - -- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -- - arrow->arrow_type = GTK_ARROW_RIGHT; - arrow->shadow_type = GTK_SHADOW_OUT; - } ---- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000 -@@ -340,6 +340,9 @@ - static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar, - guint day); - -+static void gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day); -+ - static void gtk_calendar_paint_arrow (GtkWidget *widget, - guint arrow); - static void gtk_calendar_paint_day_num (GtkWidget *widget, -@@ -861,13 +864,13 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else - { - if (calendar->selected_day < 0) - calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1]; -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - } - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); -@@ -908,10 +911,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -939,10 +942,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -974,10 +977,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -2480,9 +2483,9 @@ - return TRUE; - } - --void --gtk_calendar_select_day (GtkCalendar *calendar, -- guint day) -+static void -+gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day) - { - g_return_if_fail (GTK_IS_CALENDAR (calendar)); - g_return_if_fail (day <= 31); -@@ -2499,6 +2502,13 @@ - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) - gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); - } -+} -+ -+void -+gtk_calendar_select_day (GtkCalendar *calendar, -+ guint day) -+{ -+ gtk_calendar_do_select_day (calendar, day); - - calendar->selected_day = day; - ---- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000 -+++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000 -@@ -557,6 +557,15 @@ - 0.0, - G_PARAM_READABLE | G_PARAM_WRITABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("min_width", -+ _("Minimum width"), -+ _("Minimum width of the entry field"), -+ 0, -+ G_MAXINT, -+ MIN_ENTRY_WIDTH, -+ G_PARAM_READABLE)); -+ - signals[POPULATE_POPUP] = - g_signal_new ("populate_popup", - G_OBJECT_CLASS_TYPE (gobject_class), -@@ -1124,7 +1133,7 @@ - { - GtkEntry *entry = GTK_ENTRY (widget); - PangoFontMetrics *metrics; -- gint xborder, yborder; -+ gint xborder, yborder, min_width; - PangoContext *context; - - gtk_widget_ensure_style (widget); -@@ -1140,9 +1149,11 @@ - - xborder += INNER_BORDER; - yborder += INNER_BORDER; -- -+ -+ gtk_widget_style_get (widget, "min_width", &min_width, NULL); -+ - if (entry->width_chars < 0) -- requisition->width = MIN_ENTRY_WIDTH + xborder * 2; -+ requisition->width = min_width + xborder * 2; - else - { - gint char_width = pango_font_metrics_get_approximate_char_width (metrics); ---- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000 -@@ -180,6 +180,7 @@ - static GtkWidgetClass *parent_class = NULL; - static guint signals[LAST_SIGNAL]; - -+static GdkAtom recognize_protocols_atom, atom_atom; - - GType - gtk_range_get_type (void) -@@ -220,6 +221,9 @@ - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - -+ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE); -+ atom_atom = gdk_atom_intern ("ATOM", FALSE); -+ - parent_class = g_type_class_peek_parent (class); - - gobject_class->set_property = gtk_range_set_property; -@@ -815,6 +819,12 @@ - &attributes, attributes_mask); - gdk_window_set_user_data (range->event_window, range); - -+ gdk_property_change (range->event_window, -+ recognize_protocols_atom, -+ atom_atom, -+ 32, GDK_PROP_MODE_REPLACE, -+ NULL, 0); -+ - widget->style = gtk_style_attach (widget->style, widget->window); - } - -@@ -1186,7 +1196,7 @@ - - /* ignore presses when we're already doing something else. */ - if (range->layout->grab_location != MOUSE_OUTSIDE) -- return FALSE; -+ return TRUE; - - range->layout->mouse_x = event->x; - range->layout->mouse_y = event->y; -@@ -1364,7 +1374,7 @@ - return TRUE; - } - -- return FALSE; -+ return TRUE; - } - - /** diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff deleted file mode 100644 index 090d0da0eb..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk.h.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.6.4/gtk/gtk.h 2004-09-27 21:37:33.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtk.h 2005-04-06 16:19:35.812094096 +0300 -@@ -156,6 +156,7 @@ - #include <gtk/gtktearoffmenuitem.h> - #include <gtk/gtktext.h> - #include <gtk/gtktextbuffer.h> -+#include <gtk/gtktextbufferserialize.h> - #include <gtk/gtktextview.h> - #include <gtk/gtktipsquery.h> - #include <gtk/gtktoggleaction.h> diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff deleted file mode 100644 index 0672df19b0..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.am.diff +++ /dev/null @@ -1,27 +0,0 @@ ---- gtk+-2.6.4/gtk/Makefile.am 2005-01-13 17:18:21.000000000 +0200 -+++ gtk+-2.6.4/gtk/Makefile.am 2005-04-06 16:19:35.806095008 +0300 -@@ -246,6 +246,7 @@ - gtktearoffmenuitem.h \ - gtktext.h \ - gtktextbuffer.h \ -+ gtktextbufferserialize.h\ - gtktextchild.h \ - gtktextdisplay.h \ - gtktextiter.h \ -@@ -387,6 +388,8 @@ - gtkframe.c \ - gtkgamma.c \ - gtkgc.c \ -+ gtkhashtable.c \ -+ gtkhashtable.h \ - gtkhandlebox.c \ - gtkhbbox.c \ - gtkhbox.c \ -@@ -470,6 +473,7 @@ - gtktext.c \ - gtktextbtree.c \ - gtktextbuffer.c \ -+ gtktextbufferserialize.c\ - gtktextchild.c \ - gtktextdisplay.c \ - gtktextiter.c \ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff deleted file mode 100644 index 56eca02b03..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtk_Makefile.in.diff +++ /dev/null @@ -1,292 +0,0 @@ ---- gtk+-2.6.4/gtk/Makefile.in 2005-03-01 17:31:32.000000000 +0200 -+++ gtk+-2.6.4/gtk/Makefile.in 2005-04-06 16:19:35.808094704 +0300 -@@ -485,6 +485,7 @@ - gtktearoffmenuitem.h \ - gtktext.h \ - gtktextbuffer.h \ -+ gtktextbufferserialize.h\ - gtktextchild.h \ - gtktextdisplay.h \ - gtktextiter.h \ -@@ -629,6 +630,8 @@ - gtkframe.c \ - gtkgamma.c \ - gtkgc.c \ -+ gtkhashtable.c \ -+ gtkhashtable.h \ - gtkhandlebox.c \ - gtkhbbox.c \ - gtkhbox.c \ -@@ -712,6 +715,7 @@ - gtktext.c \ - gtktextbtree.c \ - gtktextbuffer.c \ -+ gtktextbufferserialize.c\ - gtktextchild.c \ - gtktextdisplay.c \ - gtktextiter.c \ -@@ -927,14 +931,14 @@ - gtkfilechooserdefault.c gtkfilechooserutils.c \ - gtkfilechooserwidget.c gtkfilefilter.c gtkfilesel.c \ - gtkfilesystem.c gtkfilesystemmodel.c gtkfixed.c gtkfontbutton.c \ -- gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhandlebox.c \ -- gtkhbbox.c gtkhbox.c gtkhpaned.c gtkhruler.c gtkhscale.c \ -- gtkhscrollbar.c gtkhseparator.c gtkhsv.c gtkhsv.h \ -- gtkiconfactory.c gtkiconcache.c gtkicontheme.c gtkiconview.c \ -- gtkimage.c gtkimagemenuitem.c gtkimcontext.c \ -- gtkimcontextsimple.c gtkimmodule.c gtkimmulticontext.c \ -- gtkinputdialog.c gtkintl.h gtkinvisible.c gtkitem.c \ -- gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \ -+ gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhashtable.c \ -+ gtkhashtable.h gtkhandlebox.c gtkhbbox.c gtkhbox.c gtkhpaned.c \ -+ gtkhruler.c gtkhscale.c gtkhscrollbar.c gtkhseparator.c \ -+ gtkhsv.c gtkhsv.h gtkiconfactory.c gtkiconcache.c \ -+ gtkicontheme.c gtkiconview.c gtkimage.c gtkimagemenuitem.c \ -+ gtkimcontext.c gtkimcontextsimple.c gtkimmodule.c \ -+ gtkimmulticontext.c gtkinputdialog.c gtkintl.h gtkinvisible.c \ -+ gtkitem.c gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \ - gtklayout.c gtklist.c gtklistitem.c gtkliststore.c gtkmain.c \ - gtkmarshal.c gtkmarshalers.c gtkmenu.c gtkmenubar.c \ - gtkmenuitem.c gtkmenushell.c gtkmenutoolbutton.c \ -@@ -949,21 +953,21 @@ - gtkseparatortoolitem.c gtksettings.c gtksignal.c gtksizegroup.c \ - gtkspinbutton.c gtkstatusbar.c gtkstock.c gtkstyle.c gtktable.c \ - gtktearoffmenuitem.c gtktext.c gtktextbtree.c gtktextbuffer.c \ -- gtktextchild.c gtktextdisplay.c gtktextiter.c \ -- gtktextiterprivate.h gtktextlayout.c gtktextmark.c \ -- gtktextmarkprivate.h gtktextsegment.c gtktexttag.c \ -- gtktexttagtable.c gtktexttypes.c gtktextutil.c gtktextview.c \ -- gtkthemes.c gtktipsquery.c gtktoggleaction.c gtktogglebutton.c \ -- gtktoggletoolbutton.c gtktoolbar.c gtktoolbutton.c \ -- gtktoolitem.c gtktooltips.c gtktree.c gtktreedatalist.c \ -- gtktreednd.c gtktreeitem.c gtktreemodel.c gtktreemodelfilter.c \ -- gtktreemodelsort.c gtktreeselection.c gtktreesortable.c \ -- gtktreestore.c gtktreeview.c gtktreeviewcolumn.c \ -- gtktypebuiltins.c gtktypeutils.c gtkuimanager.c gtkvbbox.c \ -- gtkvbox.c gtkviewport.c gtkvpaned.c gtkvruler.c gtkvscale.c \ -- gtkvscrollbar.c gtkvseparator.c gtkwidget.c \ -- gtkwindow-decorate.c gtkwindow.c xembed.h gtkfilesystemunix.c \ -- gtkfilesystemwin32.c -+ gtktextbufferserialize.c gtktextchild.c gtktextdisplay.c \ -+ gtktextiter.c gtktextiterprivate.h gtktextlayout.c \ -+ gtktextmark.c gtktextmarkprivate.h gtktextsegment.c \ -+ gtktexttag.c gtktexttagtable.c gtktexttypes.c gtktextutil.c \ -+ gtktextview.c gtkthemes.c gtktipsquery.c gtktoggleaction.c \ -+ gtktogglebutton.c gtktoggletoolbutton.c gtktoolbar.c \ -+ gtktoolbutton.c gtktoolitem.c gtktooltips.c gtktree.c \ -+ gtktreedatalist.c gtktreednd.c gtktreeitem.c gtktreemodel.c \ -+ gtktreemodelfilter.c gtktreemodelsort.c gtktreeselection.c \ -+ gtktreesortable.c gtktreestore.c gtktreeview.c \ -+ gtktreeviewcolumn.c gtktypebuiltins.c gtktypeutils.c \ -+ gtkuimanager.c gtkvbbox.c gtkvbox.c gtkviewport.c gtkvpaned.c \ -+ gtkvruler.c gtkvscale.c gtkvscrollbar.c gtkvseparator.c \ -+ gtkwidget.c gtkwindow-decorate.c gtkwindow.c xembed.h \ -+ gtkfilesystemunix.c gtkfilesystemwin32.c - @OS_UNIX_TRUE@am__objects_1 = gtkfilesystemunix.lo - @OS_WIN32_TRUE@am__objects_2 = gtkfilesystemwin32.lo - am__objects_3 = fnmatch.lo gtkaboutdialog.lo gtkaccelgroup.lo \ -@@ -986,16 +990,16 @@ - gtkfilechooserutils.lo gtkfilechooserwidget.lo gtkfilefilter.lo \ - gtkfilesel.lo gtkfilesystem.lo gtkfilesystemmodel.lo \ - gtkfixed.lo gtkfontbutton.lo gtkfontsel.lo gtkframe.lo \ -- gtkgamma.lo gtkgc.lo gtkhandlebox.lo gtkhbbox.lo gtkhbox.lo \ -- gtkhpaned.lo gtkhruler.lo gtkhscale.lo gtkhscrollbar.lo \ -- gtkhseparator.lo gtkhsv.lo gtkiconfactory.lo gtkiconcache.lo \ -- gtkicontheme.lo gtkiconview.lo gtkimage.lo gtkimagemenuitem.lo \ -- gtkimcontext.lo gtkimcontextsimple.lo gtkimmodule.lo \ -- gtkimmulticontext.lo gtkinputdialog.lo gtkinvisible.lo \ -- gtkitem.lo gtkitemfactory.lo gtkkeyhash.lo gtklabel.lo \ -- gtklayout.lo gtklist.lo gtklistitem.lo gtkliststore.lo \ -- gtkmain.lo gtkmarshal.lo gtkmarshalers.lo gtkmenu.lo \ -- gtkmenubar.lo gtkmenuitem.lo gtkmenushell.lo \ -+ gtkgamma.lo gtkgc.lo gtkhashtable.lo gtkhandlebox.lo \ -+ gtkhbbox.lo gtkhbox.lo gtkhpaned.lo gtkhruler.lo gtkhscale.lo \ -+ gtkhscrollbar.lo gtkhseparator.lo gtkhsv.lo gtkiconfactory.lo \ -+ gtkiconcache.lo gtkicontheme.lo gtkiconview.lo gtkimage.lo \ -+ gtkimagemenuitem.lo gtkimcontext.lo gtkimcontextsimple.lo \ -+ gtkimmodule.lo gtkimmulticontext.lo gtkinputdialog.lo \ -+ gtkinvisible.lo gtkitem.lo gtkitemfactory.lo gtkkeyhash.lo \ -+ gtklabel.lo gtklayout.lo gtklist.lo gtklistitem.lo \ -+ gtkliststore.lo gtkmain.lo gtkmarshal.lo gtkmarshalers.lo \ -+ gtkmenu.lo gtkmenubar.lo gtkmenuitem.lo gtkmenushell.lo \ - gtkmenutoolbutton.lo gtkmessagedialog.lo gtkmisc.lo \ - gtkmnemonichash.lo gtkmodules.lo gtknotebook.lo gtkobject.lo \ - gtkoldeditable.lo gtkoptionmenu.lo gtkpaned.lo gtkpathbar.lo \ -@@ -1007,14 +1011,15 @@ - gtkseparatormenuitem.lo gtkseparatortoolitem.lo gtksettings.lo \ - gtksignal.lo gtksizegroup.lo gtkspinbutton.lo gtkstatusbar.lo \ - gtkstock.lo gtkstyle.lo gtktable.lo gtktearoffmenuitem.lo \ -- gtktext.lo gtktextbtree.lo gtktextbuffer.lo gtktextchild.lo \ -- gtktextdisplay.lo gtktextiter.lo gtktextlayout.lo \ -- gtktextmark.lo gtktextsegment.lo gtktexttag.lo \ -- gtktexttagtable.lo gtktexttypes.lo gtktextutil.lo \ -- gtktextview.lo gtkthemes.lo gtktipsquery.lo gtktoggleaction.lo \ -- gtktogglebutton.lo gtktoggletoolbutton.lo gtktoolbar.lo \ -- gtktoolbutton.lo gtktoolitem.lo gtktooltips.lo gtktree.lo \ -- gtktreedatalist.lo gtktreednd.lo gtktreeitem.lo gtktreemodel.lo \ -+ gtktext.lo gtktextbtree.lo gtktextbuffer.lo \ -+ gtktextbufferserialize.lo gtktextchild.lo gtktextdisplay.lo \ -+ gtktextiter.lo gtktextlayout.lo gtktextmark.lo \ -+ gtktextsegment.lo gtktexttag.lo gtktexttagtable.lo \ -+ gtktexttypes.lo gtktextutil.lo gtktextview.lo gtkthemes.lo \ -+ gtktipsquery.lo gtktoggleaction.lo gtktogglebutton.lo \ -+ gtktoggletoolbutton.lo gtktoolbar.lo gtktoolbutton.lo \ -+ gtktoolitem.lo gtktooltips.lo gtktree.lo gtktreedatalist.lo \ -+ gtktreednd.lo gtktreeitem.lo gtktreemodel.lo \ - gtktreemodelfilter.lo gtktreemodelsort.lo gtktreeselection.lo \ - gtktreesortable.lo gtktreestore.lo gtktreeview.lo \ - gtktreeviewcolumn.lo gtktypebuiltins.lo gtktypeutils.lo \ -@@ -1042,14 +1047,14 @@ - gtkfilechooserdefault.c gtkfilechooserutils.c \ - gtkfilechooserwidget.c gtkfilefilter.c gtkfilesel.c \ - gtkfilesystem.c gtkfilesystemmodel.c gtkfixed.c gtkfontbutton.c \ -- gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhandlebox.c \ -- gtkhbbox.c gtkhbox.c gtkhpaned.c gtkhruler.c gtkhscale.c \ -- gtkhscrollbar.c gtkhseparator.c gtkhsv.c gtkhsv.h \ -- gtkiconfactory.c gtkiconcache.c gtkicontheme.c gtkiconview.c \ -- gtkimage.c gtkimagemenuitem.c gtkimcontext.c \ -- gtkimcontextsimple.c gtkimmodule.c gtkimmulticontext.c \ -- gtkinputdialog.c gtkintl.h gtkinvisible.c gtkitem.c \ -- gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \ -+ gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhashtable.c \ -+ gtkhashtable.h gtkhandlebox.c gtkhbbox.c gtkhbox.c gtkhpaned.c \ -+ gtkhruler.c gtkhscale.c gtkhscrollbar.c gtkhseparator.c \ -+ gtkhsv.c gtkhsv.h gtkiconfactory.c gtkiconcache.c \ -+ gtkicontheme.c gtkiconview.c gtkimage.c gtkimagemenuitem.c \ -+ gtkimcontext.c gtkimcontextsimple.c gtkimmodule.c \ -+ gtkimmulticontext.c gtkinputdialog.c gtkintl.h gtkinvisible.c \ -+ gtkitem.c gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \ - gtklayout.c gtklist.c gtklistitem.c gtkliststore.c gtkmain.c \ - gtkmarshal.c gtkmarshalers.c gtkmenu.c gtkmenubar.c \ - gtkmenuitem.c gtkmenushell.c gtkmenutoolbutton.c \ -@@ -1064,21 +1069,21 @@ - gtkseparatortoolitem.c gtksettings.c gtksignal.c gtksizegroup.c \ - gtkspinbutton.c gtkstatusbar.c gtkstock.c gtkstyle.c gtktable.c \ - gtktearoffmenuitem.c gtktext.c gtktextbtree.c gtktextbuffer.c \ -- gtktextchild.c gtktextdisplay.c gtktextiter.c \ -- gtktextiterprivate.h gtktextlayout.c gtktextmark.c \ -- gtktextmarkprivate.h gtktextsegment.c gtktexttag.c \ -- gtktexttagtable.c gtktexttypes.c gtktextutil.c gtktextview.c \ -- gtkthemes.c gtktipsquery.c gtktoggleaction.c gtktogglebutton.c \ -- gtktoggletoolbutton.c gtktoolbar.c gtktoolbutton.c \ -- gtktoolitem.c gtktooltips.c gtktree.c gtktreedatalist.c \ -- gtktreednd.c gtktreeitem.c gtktreemodel.c gtktreemodelfilter.c \ -- gtktreemodelsort.c gtktreeselection.c gtktreesortable.c \ -- gtktreestore.c gtktreeview.c gtktreeviewcolumn.c \ -- gtktypebuiltins.c gtktypeutils.c gtkuimanager.c gtkvbbox.c \ -- gtkvbox.c gtkviewport.c gtkvpaned.c gtkvruler.c gtkvscale.c \ -- gtkvscrollbar.c gtkvseparator.c gtkwidget.c \ -- gtkwindow-decorate.c gtkwindow.c xembed.h gtkfilesystemunix.c \ -- gtkfilesystemwin32.c -+ gtktextbufferserialize.c gtktextchild.c gtktextdisplay.c \ -+ gtktextiter.c gtktextiterprivate.h gtktextlayout.c \ -+ gtktextmark.c gtktextmarkprivate.h gtktextsegment.c \ -+ gtktexttag.c gtktexttagtable.c gtktexttypes.c gtktextutil.c \ -+ gtktextview.c gtkthemes.c gtktipsquery.c gtktoggleaction.c \ -+ gtktogglebutton.c gtktoggletoolbutton.c gtktoolbar.c \ -+ gtktoolbutton.c gtktoolitem.c gtktooltips.c gtktree.c \ -+ gtktreedatalist.c gtktreednd.c gtktreeitem.c gtktreemodel.c \ -+ gtktreemodelfilter.c gtktreemodelsort.c gtktreeselection.c \ -+ gtktreesortable.c gtktreestore.c gtktreeview.c \ -+ gtktreeviewcolumn.c gtktypebuiltins.c gtktypeutils.c \ -+ gtkuimanager.c gtkvbbox.c gtkvbox.c gtkviewport.c gtkvpaned.c \ -+ gtkvruler.c gtkvscale.c gtkvscrollbar.c gtkvseparator.c \ -+ gtkwidget.c gtkwindow-decorate.c gtkwindow.c xembed.h \ -+ gtkfilesystemunix.c gtkfilesystemwin32.c - am_libgtk_win32_2_0_la_OBJECTS = $(am__objects_3) - libgtk_win32_2_0_la_OBJECTS = $(am_libgtk_win32_2_0_la_OBJECTS) - @OS_UNIX_TRUE@libgtk_x11_2_0_la_DEPENDENCIES = \ -@@ -1106,14 +1111,14 @@ - gtkfilechooserdefault.c gtkfilechooserutils.c \ - gtkfilechooserwidget.c gtkfilefilter.c gtkfilesel.c \ - gtkfilesystem.c gtkfilesystemmodel.c gtkfixed.c gtkfontbutton.c \ -- gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhandlebox.c \ -- gtkhbbox.c gtkhbox.c gtkhpaned.c gtkhruler.c gtkhscale.c \ -- gtkhscrollbar.c gtkhseparator.c gtkhsv.c gtkhsv.h \ -- gtkiconfactory.c gtkiconcache.c gtkicontheme.c gtkiconview.c \ -- gtkimage.c gtkimagemenuitem.c gtkimcontext.c \ -- gtkimcontextsimple.c gtkimmodule.c gtkimmulticontext.c \ -- gtkinputdialog.c gtkintl.h gtkinvisible.c gtkitem.c \ -- gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \ -+ gtkfontsel.c gtkframe.c gtkgamma.c gtkgc.c gtkhashtable.c \ -+ gtkhashtable.h gtkhandlebox.c gtkhbbox.c gtkhbox.c gtkhpaned.c \ -+ gtkhruler.c gtkhscale.c gtkhscrollbar.c gtkhseparator.c \ -+ gtkhsv.c gtkhsv.h gtkiconfactory.c gtkiconcache.c \ -+ gtkicontheme.c gtkiconview.c gtkimage.c gtkimagemenuitem.c \ -+ gtkimcontext.c gtkimcontextsimple.c gtkimmodule.c \ -+ gtkimmulticontext.c gtkinputdialog.c gtkintl.h gtkinvisible.c \ -+ gtkitem.c gtkitemfactory.c gtkkeyhash.c gtkkeyhash.h gtklabel.c \ - gtklayout.c gtklist.c gtklistitem.c gtkliststore.c gtkmain.c \ - gtkmarshal.c gtkmarshalers.c gtkmenu.c gtkmenubar.c \ - gtkmenuitem.c gtkmenushell.c gtkmenutoolbutton.c \ -@@ -1128,22 +1133,22 @@ - gtkseparatortoolitem.c gtksettings.c gtksignal.c gtksizegroup.c \ - gtkspinbutton.c gtkstatusbar.c gtkstock.c gtkstyle.c gtktable.c \ - gtktearoffmenuitem.c gtktext.c gtktextbtree.c gtktextbuffer.c \ -- gtktextchild.c gtktextdisplay.c gtktextiter.c \ -- gtktextiterprivate.h gtktextlayout.c gtktextmark.c \ -- gtktextmarkprivate.h gtktextsegment.c gtktexttag.c \ -- gtktexttagtable.c gtktexttypes.c gtktextutil.c gtktextview.c \ -- gtkthemes.c gtktipsquery.c gtktoggleaction.c gtktogglebutton.c \ -- gtktoggletoolbutton.c gtktoolbar.c gtktoolbutton.c \ -- gtktoolitem.c gtktooltips.c gtktree.c gtktreedatalist.c \ -- gtktreednd.c gtktreeitem.c gtktreemodel.c gtktreemodelfilter.c \ -- gtktreemodelsort.c gtktreeselection.c gtktreesortable.c \ -- gtktreestore.c gtktreeview.c gtktreeviewcolumn.c \ -- gtktypebuiltins.c gtktypeutils.c gtkuimanager.c gtkvbbox.c \ -- gtkvbox.c gtkviewport.c gtkvpaned.c gtkvruler.c gtkvscale.c \ -- gtkvscrollbar.c gtkvseparator.c gtkwidget.c \ -- gtkwindow-decorate.c gtkwindow.c xembed.h gtkfilesystemunix.c \ -- gtkfilesystemwin32.c gtkplug.c gtksocket.c gtkxembed.c \ -- gtkxembed.h -+ gtktextbufferserialize.c gtktextchild.c gtktextdisplay.c \ -+ gtktextiter.c gtktextiterprivate.h gtktextlayout.c \ -+ gtktextmark.c gtktextmarkprivate.h gtktextsegment.c \ -+ gtktexttag.c gtktexttagtable.c gtktexttypes.c gtktextutil.c \ -+ gtktextview.c gtkthemes.c gtktipsquery.c gtktoggleaction.c \ -+ gtktogglebutton.c gtktoggletoolbutton.c gtktoolbar.c \ -+ gtktoolbutton.c gtktoolitem.c gtktooltips.c gtktree.c \ -+ gtktreedatalist.c gtktreednd.c gtktreeitem.c gtktreemodel.c \ -+ gtktreemodelfilter.c gtktreemodelsort.c gtktreeselection.c \ -+ gtktreesortable.c gtktreestore.c gtktreeview.c \ -+ gtktreeviewcolumn.c gtktypebuiltins.c gtktypeutils.c \ -+ gtkuimanager.c gtkvbbox.c gtkvbox.c gtkviewport.c gtkvpaned.c \ -+ gtkvruler.c gtkvscale.c gtkvscrollbar.c gtkvseparator.c \ -+ gtkwidget.c gtkwindow-decorate.c gtkwindow.c xembed.h \ -+ gtkfilesystemunix.c gtkfilesystemwin32.c gtkplug.c gtksocket.c \ -+ gtkxembed.c gtkxembed.h - am__objects_4 = gtkplug.lo gtksocket.lo gtkxembed.lo - am_libgtk_x11_2_0_la_OBJECTS = $(am__objects_3) $(am__objects_4) - libgtk_x11_2_0_la_OBJECTS = $(am_libgtk_x11_2_0_la_OBJECTS) -@@ -1224,6 +1229,7 @@ - @AMDEP_TRUE@ ./$(DEPDIR)/gtkfontsel.Plo ./$(DEPDIR)/gtkframe.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtkgamma.Plo ./$(DEPDIR)/gtkgc.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtkhandlebox.Plo \ -+@AMDEP_TRUE@ ./$(DEPDIR)/gtkhashtable.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtkhbbox.Plo ./$(DEPDIR)/gtkhbox.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtkhpaned.Plo ./$(DEPDIR)/gtkhruler.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtkhscale.Plo \ -@@ -1292,6 +1298,7 @@ - @AMDEP_TRUE@ ./$(DEPDIR)/gtktext.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtktextbtree.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtktextbuffer.Plo \ -+@AMDEP_TRUE@ ./$(DEPDIR)/gtktextbufferserialize.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtktextchild.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtktextdisplay.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gtktextiter.Plo \ -@@ -1524,6 +1531,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkgamma.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkgc.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhandlebox.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhashtable.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhbbox.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhbox.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkhpaned.Plo@am__quote@ -@@ -1604,6 +1612,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktext.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextbtree.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextbuffer.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextbufferserialize.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextchild.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextdisplay.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtktextiter.Plo@am__quote@ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff deleted file mode 100644 index 8c87424ce8..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkalias.h.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkalias.h 2005-03-01 17:58:16.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkalias.h 2005-04-06 16:19:36.020062480 +0300 -@@ -5782,6 +5782,14 @@ - extern __typeof (gtk_menu_shell_select_item) gtk_menu_shell_select_item __attribute((alias("IA__gtk_menu_shell_select_item"), visibility("default"))); - #define gtk_menu_shell_select_item IA__gtk_menu_shell_select_item - -+extern __typeof (gtk_menu_shell_set_take_focus) IA__gtk_menu_shell_set_take_focus __attribute((visibility("hidden"))); -+extern __typeof (gtk_menu_shell_set_take_focus) gtk_menu_shell_set_take_focus __attribute((alias("IA__gtk_menu_shell_set_take_focus"), visibility("default"))); -+#define gtk_menu_shell_set_take_focus IA__gtk_menu_shell_set_take_focus -+ -+extern __typeof (gtk_menu_shell_get_take_focus) IA__gtk_menu_shell_get_take_focus __attribute((visibility("hidden"))); -+extern __typeof (gtk_menu_shell_get_take_focus) gtk_menu_shell_get_take_focus __attribute((alias("IA__gtk_menu_shell_get_take_focus"), visibility("default"))); -+#define gtk_menu_shell_get_take_focus IA__gtk_menu_shell_get_take_focus -+ - extern __typeof (gtk_menu_tool_button_get_menu) IA__gtk_menu_tool_button_get_menu __attribute((visibility("hidden"))); - extern __typeof (gtk_menu_tool_button_get_menu) gtk_menu_tool_button_get_menu __attribute((alias("IA__gtk_menu_tool_button_get_menu"), visibility("default"))); - #define gtk_menu_tool_button_get_menu IA__gtk_menu_tool_button_get_menu diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff deleted file mode 100644 index e5a007372a..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.c.diff +++ /dev/null @@ -1,471 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkbutton.c 2005-01-25 22:54:43.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkbutton.c 2005-04-06 16:19:36.249027672 +0300 -@@ -24,6 +24,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list -+ * of changes. -+ */ -+ - #include <config.h> - #include <string.h> - #include "gtkalias.h" -@@ -38,8 +42,33 @@ - #include "gtkiconfactory.h" - #include "gtkintl.h" - -+/* Osso addition: -+ * Here are the details for each attach -+ * bitmask combination. */ -+const gchar *osso_gtk_button_attach_details [OSSO_GTK_BUTTON_ATTACH_ENUM_END] = -+ { "osso_button", -+ "osso_button_n", -+ "osso_button_e", -+ "osso_button_ne", -+ "osso_button_s", -+ "osso_button_ns", -+ "osso_button_es", -+ "osso_button_nes", -+ "osso_button_w", -+ "osso_button_nw", -+ "osso_button_ew", -+ "osso_button_new", -+ "osso_button_sw", -+ "osso_button_nsw", -+ "osso_button_esw", -+ "osso_button_nesw", -+ }; -+ - #define CHILD_SPACING 1 - -+/* Take this away after font drawing is fixed */ -+#define OSSO_FONT_HACK TRUE -+ - static const GtkBorder default_default_border = { 1, 1, 1, 1 }; - static const GtkBorder default_default_outside_border = { 0, 0, 0, 0 }; - -@@ -68,6 +97,9 @@ - PROP_FOCUS_ON_CLICK, - PROP_XALIGN, - PROP_YALIGN, -+ PROP_DETAIL, -+ PROP_AUTOMATIC_DETAIL, -+ PROP_KEYBOARD_BUTTON - }; - - #define GTK_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_BUTTON, GtkButtonPrivate)) -@@ -80,6 +112,10 @@ - GtkWidget *image; - guint align_set : 1; - guint image_is_stock : 1; -+ gchar *detail; -+ gboolean automatic_detail; -+ gboolean keyboard_button; -+ GtkLabel *keyboard_label; - }; - - static void gtk_button_class_init (GtkButtonClass *klass); -@@ -231,6 +267,14 @@ - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (gobject_class, -+ PROP_KEYBOARD_BUTTON, -+ g_param_spec_boolean ("keyboard_button", -+ P_("Keyboard button"), -+ P_("If set, label foo"), -+ FALSE, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -+ -+ g_object_class_install_property (gobject_class, - PROP_USE_STOCK, - g_param_spec_boolean ("use_stock", - P_("Use stock"), -@@ -418,6 +462,77 @@ - P_("Whether stock icons should be shown in buttons"), - TRUE, - G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("child_spacing", -+ _("Child spacing"), -+ _("Spacing between button edges and child."), -+ 0, -+ G_MAXINT, -+ CHILD_SPACING, -+ G_PARAM_READABLE)); -+ /* Osso additions below */ -+ g_object_class_install_property (gobject_class, -+ PROP_DETAIL, -+ g_param_spec_string ("detail", -+ P_("Detail"), -+ P_("The detail the button is drawn with."), -+ "buttondefault", -+ G_PARAM_READWRITE)); -+ -+ g_object_class_install_property (gobject_class, -+ PROP_AUTOMATIC_DETAIL, -+ g_param_spec_boolean ("automatic_detail", -+ P_("Automatic Detail"), -+ P_("Whether setting detail is automatic based on GtkTable/GtkHButtonBox."), -+ TRUE, -+ G_PARAM_READWRITE)); -+ -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("child_offset_y", -+ _("Child Y Offset"), -+ _("Enable hack how many pixels to add/take away from GtkButton's child size allocation."), -+ G_MININT, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); -+ -+ /* OSSO: This is used to find out whether -+ * button is a GtkTreeView column Listbox -+ * header or not */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("listboxheader", -+ P_( "Listbox header" ), -+ P_( "Listbox header ( FALSE / TRUE )" ), -+ FALSE, -+ G_PARAM_READABLE)); -+ -+ /* OSSO: Column Listbox header separator height */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("separator-height", -+ P_( "Separator height" ), -+ P_( "Listbox header separator height ( FALSE / TRUE )" ), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boxed ("padding", -+ P_("Padding"), -+ P_("Paddings around the button child"), -+ GTK_TYPE_BORDER, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("minimum_width", -+ P_("Minimum Width"), -+ P_("Minimum width of the button"), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); - - g_type_class_add_private (gobject_class, sizeof (GtkButtonPrivate)); - } -@@ -445,7 +560,14 @@ - priv->xalign = 0.5; - priv->yalign = 0.5; - priv->align_set = 0; -+ priv->detail = g_strdup("buttondefault"); -+ priv->automatic_detail = TRUE; -+ priv->keyboard_button = FALSE; -+ priv->keyboard_label = NULL; - priv->image_is_stock = TRUE; -+ -+ g_object_set (G_OBJECT (button), "tap_and_hold_state", -+ GTK_STATE_ACTIVE, NULL); - } - - static void -@@ -560,6 +682,18 @@ - case PROP_YALIGN: - gtk_button_set_alignment (button, priv->xalign, g_value_get_float (value)); - break; -+ case PROP_DETAIL: -+ if (priv->detail) -+ g_free (priv->detail); -+ priv->detail = g_strdup (g_value_get_string (value)); -+ gtk_widget_queue_draw (GTK_WIDGET (button)); -+ break; -+ case PROP_AUTOMATIC_DETAIL: -+ priv->automatic_detail = g_value_get_boolean (value); -+ break; -+ case PROP_KEYBOARD_BUTTON: -+ priv->keyboard_button = g_value_get_boolean (value); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -601,6 +735,15 @@ - case PROP_YALIGN: - g_value_set_float (value, priv->yalign); - break; -+ case PROP_DETAIL: -+ g_value_set_string (value, priv->detail); -+ break; -+ case PROP_AUTOMATIC_DETAIL: -+ g_value_set_boolean (value, priv->automatic_detail); -+ break; -+ case PROP_KEYBOARD_BUTTON: -+ g_value_set_boolean (value, priv->keyboard_button); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -641,6 +784,26 @@ - if (button->label_text == NULL) - return; - -+ if (priv->keyboard_button) -+ { -+ if (priv->keyboard_label) -+ { -+ gtk_label_set_label (priv->keyboard_label, button->label_text); -+ } -+ else -+ { -+ GtkWidget *label = gtk_label_new (button->label_text); -+ priv->keyboard_label = GTK_LABEL (label); -+ -+ if (priv->align_set) -+ gtk_misc_set_alignment (GTK_MISC (label), -+ priv->xalign, priv->yalign); -+ gtk_widget_show (priv->keyboard_label); -+ gtk_container_add (GTK_CONTAINER (button), label); -+ } -+ return; -+ } -+ - if (GTK_BIN (button)->child) - { - if (priv->image && !priv->image_is_stock) -@@ -944,16 +1107,20 @@ - GtkBorder default_border; - gint focus_width; - gint focus_pad; -+ gint child_spacing; -+ gint separator_height; - - gtk_button_get_props (button, &default_border, NULL, NULL); - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, -+ "child-spacing", &child_spacing, -+ "separator-height", &separator_height, - NULL); - -- requisition->width = (GTK_CONTAINER (widget)->border_width + CHILD_SPACING + -+ requisition->width = (GTK_CONTAINER (widget)->border_width + child_spacing + - GTK_WIDGET (widget)->style->xthickness) * 2; -- requisition->height = (GTK_CONTAINER (widget)->border_width + CHILD_SPACING + -+ requisition->height = (GTK_CONTAINER (widget)->border_width + child_spacing + - GTK_WIDGET (widget)->style->ythickness) * 2; - - if (GTK_WIDGET_CAN_DEFAULT (widget)) -@@ -965,15 +1132,35 @@ - if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child)) - { - GtkRequisition child_requisition; -+ GtkBorder *padding; -+ gint minimum_width; - - gtk_widget_size_request (GTK_BIN (button)->child, &child_requisition); - -+ gtk_widget_style_get (widget, -+ "padding", -+ &padding, -+ "minimum_width", -+ &minimum_width, -+ NULL); -+ -+ if ( padding ) -+ { -+ requisition->width += padding->left + padding->right; -+ requisition->height += padding->top + padding->bottom; -+ } -+ - requisition->width += child_requisition.width; - requisition->height += child_requisition.height; -+ -+ if (requisition->width < minimum_width) -+ requisition->width = minimum_width; - } - - requisition->width += 2 * (focus_width + focus_pad); - requisition->height += 2 * (focus_width + focus_pad); -+ -+ requisition->height += separator_height; - } - - static void -@@ -989,14 +1176,15 @@ - GtkBorder default_border; - gint focus_width; - gint focus_pad; -+ gint child_spacing; - - gtk_button_get_props (button, &default_border, NULL, NULL); - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, -+ "child-spacing", &child_spacing, - NULL); -- -- -+ - widget->allocation = *allocation; - - if (GTK_WIDGET_REALIZED (widget)) -@@ -1008,14 +1196,27 @@ - - if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child)) - { -- child_allocation.x = widget->allocation.x + border_width + CHILD_SPACING + xthickness; -- child_allocation.y = widget->allocation.y + border_width + CHILD_SPACING + ythickness; -+ child_allocation.x = widget->allocation.x + border_width + child_spacing + xthickness; -+ child_allocation.y = widget->allocation.y + border_width + child_spacing + ythickness; - -- child_allocation.width = MAX (1, widget->allocation.width - (CHILD_SPACING + xthickness) * 2 - -+ child_allocation.width = MAX (1, widget->allocation.width - (child_spacing + xthickness) * 2 - - border_width * 2); -- child_allocation.height = MAX (1, widget->allocation.height - (CHILD_SPACING + ythickness) * 2 - -+ child_allocation.height = MAX (1, widget->allocation.height - (child_spacing + ythickness) * 2 - - border_width * 2); - -+#ifdef OSSO_FONT_HACK -+ { -+ gint child_offset_y; -+ -+ gtk_widget_style_get (widget, "child_offset_y", &child_offset_y, NULL); -+ -+ if( GTK_IS_LABEL(GTK_BIN (button)->child) ) -+ { -+ child_allocation.y += child_offset_y; -+ } -+ } -+#endif -+ - if (GTK_WIDGET_CAN_DEFAULT (button)) - { - child_allocation.x += default_border.left; -@@ -1066,7 +1267,14 @@ - gboolean interior_focus; - gint focus_width; - gint focus_pad; -- -+ gint separator_height; -+ gboolean listboxheader; -+ GtkButtonPrivate *priv; -+ -+ g_return_if_fail (GTK_IS_BUTTON (button)); -+ -+ priv = GTK_BUTTON_GET_PRIVATE (button); -+ - if (GTK_WIDGET_DRAWABLE (button)) - { - widget = GTK_WIDGET (button); -@@ -1076,6 +1284,8 @@ - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, -+ "listboxheader", &listboxheader, -+ "separator-height", &separator_height, - NULL); - - x = widget->allocation.x + border_width; -@@ -1083,13 +1293,55 @@ - width = widget->allocation.width - border_width * 2; - height = widget->allocation.height - border_width * 2; - -+ if (listboxheader) -+ { -+ /* this changes everything! */ -+ PangoLayout *layout; -+ int layout_height; -+ -+ /* construct layout - see get_layout in gtkcellrenderertext.c */ -+ layout = gtk_widget_create_pango_layout (widget, /* use parent treeview instead? */ -+ button->label_text); -+ pango_layout_set_width (layout, -1); -+ pango_layout_get_pixel_size (layout, NULL, &layout_height); -+ -+ /* render text */ -+ gtk_paint_layout (widget->style, -+ widget->window, -+ GTK_STATE_NORMAL, -+ TRUE, -+ area, -+ widget, -+ "listboxheader", -+ x, -+ y, -+ layout); -+ -+ g_object_unref (layout); -+ -+ /* draw separator */ -+ gtk_paint_hline (widget->style, -+ widget->window, -+ GTK_STATE_NORMAL, -+ area, -+ widget, -+ "listboxseparator", -+ area->x - focus_width - focus_pad, -+ area->x + area->width + focus_width + focus_pad, -+ layout_height + separator_height * 2); -+ return; -+ } -+ - if (GTK_WIDGET_HAS_DEFAULT (widget) && - GTK_BUTTON (widget)->relief == GTK_RELIEF_NORMAL) - { -- gtk_paint_box (widget->style, widget->window, -+ /* This comment is here because it's part of the -+ * normal GtkButton -+ */ -+ /* gtk_paint_box (widget->style, widget->window, - GTK_STATE_NORMAL, GTK_SHADOW_IN, - area, widget, "buttondefault", -- x, y, width, height); -+ x, y, width, height); */ - - x += default_border.left; - y += default_border.top; -@@ -1116,7 +1368,7 @@ - GTK_WIDGET_STATE(widget) == GTK_STATE_PRELIGHT) - gtk_paint_box (widget->style, widget->window, - state_type, -- shadow_type, area, widget, "button", -+ shadow_type, area, widget, priv->detail, - x, y, width, height); - - if (GTK_WIDGET_HAS_FOCUS (widget)) -@@ -1151,10 +1403,14 @@ - x += child_displacement_x; - y += child_displacement_y; - } -- -+ /* Comment exists, because it is part of normal GtkButton - gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget), - area, widget, "button", - x, y, width, height); -+ */ -+ gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget), -+ area, widget, priv->detail, -+ x, y, width, height); - } - } - } -@@ -1786,5 +2042,13 @@ - - return priv->image; - } -- -- -+void osso_gtk_button_set_detail_from_attach_flags (GtkButton *button,OssoGtkButtonAttachFlags flags) -+{ -+ g_return_if_fail (GTK_IS_BUTTON (button)); -+ g_object_set (G_OBJECT (button), -+ "automatic_detail", -+ FALSE, -+ "detail", -+ osso_gtk_button_attach_details[flags], -+ NULL); -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff deleted file mode 100644 index 4c233f905b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkbutton.h.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkbutton.h 2004-11-15 22:56:28.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkbutton.h 2005-04-06 16:19:36.264025392 +0300 -@@ -134,6 +134,20 @@ - const gchar *main_detail, - const gchar *default_detail); - -+/* Osso addition : Button attach flags */ -+typedef enum { -+ OSSO_GTK_BUTTON_ATTACH_NORTH = 1 << 0, -+ OSSO_GTK_BUTTON_ATTACH_EAST = 1 << 1, -+ OSSO_GTK_BUTTON_ATTACH_SOUTH = 1 << 2, -+ OSSO_GTK_BUTTON_ATTACH_WEST = 1 << 3, -+ OSSO_GTK_BUTTON_ATTACH_ENUM_END = 1 << 4 -+} OssoGtkButtonAttachFlags; -+ -+extern const gchar *osso_gtk_button_attach_details [OSSO_GTK_BUTTON_ATTACH_ENUM_END]; -+ -+void osso_gtk_button_set_detail_from_attach_flags (GtkButton *button, -+ OssoGtkButtonAttachFlags flags); -+ - #ifdef __cplusplus - } - #endif /* __cplusplus */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff deleted file mode 100644 index e32c05452d..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.c.diff +++ /dev/null @@ -1,2464 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcalendar.c 2004-11-12 19:51:58.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcalendar.c 2005-04-06 16:19:36.267024936 +0300 -@@ -169,14 +169,23 @@ - - /*** END OF lib_date routines ********************************************/ - -+/* HILDON: Spacings modified */ -+ -+#define HILDON_ARROW_WIDTH 20 -+#define HILDON_ARROW_HEIGHT 27 -+#define HILDON_ARROW_SEP 5 /* Space between arrows and data */ -+ -+#define HILDON_DAY_WIDTH 26 -+#define HILDON_DAY_HEIGHT 25 -+ - /* Spacing around day/week headers and main area, inside those windows */ - #define CALENDAR_MARGIN 0 - /* Spacing around day/week headers and main area, outside those windows */ --#define INNER_BORDER 4 -+#define INNER_BORDER 0 /* 4 */ - /* Separation between day headers and main area */ --#define CALENDAR_YSEP 4 -+#define CALENDAR_YSEP 3 /* 4 */ - /* Separation between week headers and main area */ --#define CALENDAR_XSEP 4 -+#define CALENDAR_XSEP 6 /* 4 */ - - #define DAY_XSEP 0 /* not really good for small calendar */ - #define DAY_YSEP 0 /* not really good for small calendar */ -@@ -193,6 +202,10 @@ - #define BACKGROUND_COLOR(widget) (& (widget)->style->base[GTK_WIDGET_STATE (widget)]) - #define HIGHLIGHT_BACK_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) - -+/* Default Min/Max years for hildon calendar */ -+#define HILDON_MIN_YEAR 0 -+#define HILDON_MAX_YEAR 2999 -+ - enum { - ARROW_YEAR_LEFT, - ARROW_YEAR_RIGHT, -@@ -214,6 +227,8 @@ - NEXT_MONTH_SIGNAL, - PREV_YEAR_SIGNAL, - NEXT_YEAR_SIGNAL, -+ ERRONEOUS_DATE_SIGNAL, -+ SELECTED_DATE_SIGNAL, - LAST_SIGNAL - }; - -@@ -238,16 +253,19 @@ - struct _GtkCalendarPrivateData - { - GdkWindow *header_win; -+ GdkWindow *footer_win; /* HILDON: Added below calendar */ - GdkWindow *day_name_win; - GdkWindow *main_win; - GdkWindow *week_win; - GdkWindow *arrow_win[4]; - -+ gint year_before; - guint header_h; - guint day_name_h; - guint main_h; - - guint arrow_state[4]; -+ /* guint arrow_width; This is now defined constant. Even normal Gtk don't allow to change this */ - guint arrow_width; - guint max_month_width; - guint max_year_width; -@@ -271,7 +289,7 @@ - guint dirty_main : 1; - guint dirty_week : 1; - -- guint year_before : 1; -+/* guint year_before : 1;*/ - - guint need_timer : 1; - -@@ -281,6 +299,27 @@ - guint32 timer; - gint click_child; - -+ /* Following variables are for current date */ -+ guint current_day; -+ guint current_month; -+ guint current_year; -+ -+ /* Keep track of day and month -+ * where mouse button was pressed -+ */ -+ guint pressed_day; -+ guint pressed_month; -+ -+ /* Boolean value to indicate if -+ * out of bound day was selected -+ */ -+ gboolean is_bad_day; -+ -+ /* Must check if we are sliding stylus */ -+ gboolean slide_stylus; -+ gint prev_row; -+ gint prev_col; -+ - gint week_start; - - gint drag_start_x; -@@ -336,6 +375,8 @@ - static void gtk_calendar_style_set (GtkWidget *widget, - GtkStyle *previous_style); - static void gtk_calendar_paint_header (GtkWidget *widget); -+static void gtk_calendar_paint_footer (GtkWidget *widget); -+ - static void gtk_calendar_paint_day_names (GtkWidget *widget); - static void gtk_calendar_paint_week_numbers (GtkWidget *widget); - static void gtk_calendar_paint_main (GtkWidget *widget); -@@ -381,7 +422,13 @@ - gint x, - gint y, - guint time); -- -+ -+/* This function was added because we need to mark current day according to -+ * specifications -+ */ -+static void -+gtk_calendar_check_current_date (GtkCalendar *calendar, gint x, gint y); -+ - static char *default_abbreviated_dayname[7]; - static char *default_monthname[12]; - -@@ -461,6 +508,8 @@ - class->next_month = NULL; - class->prev_year = NULL; - class->next_year = NULL; -+ class->erroneous_date = NULL; -+ class->selected_date = NULL; - - g_object_class_install_property (gobject_class, - PROP_YEAR, -@@ -543,6 +592,31 @@ - FALSE, - G_PARAM_READWRITE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("min-year", -+ P_("Minimum year for calendar"), -+ P_("Set minimum year calendar accepts"), -+ 0, -+ G_MAXINT, -+ HILDON_MIN_YEAR, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("max-year", -+ P_("Maximum year for calendar"), -+ P_("Set max year that calendar accepts"), -+ 0, -+ G_MAXINT, -+ HILDON_MAX_YEAR, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("hildonlike", -+ _("Size request"), -+ _("Size allocate"), -+ FALSE, -+ G_PARAM_READABLE)); -+ - gtk_calendar_signals[MONTH_CHANGED_SIGNAL] = - g_signal_new ("month_changed", - G_OBJECT_CLASS_TYPE (gobject_class), -@@ -599,6 +673,22 @@ - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); -+ gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL] = -+ g_signal_new ("erroneous_date", -+ G_OBJECT_CLASS_TYPE(gobject_class), -+ G_SIGNAL_RUN_FIRST, -+ G_STRUCT_OFFSET (GtkCalendarClass, erroneous_date), -+ NULL, NULL, -+ _gtk_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ gtk_calendar_signals[SELECTED_DATE_SIGNAL] = -+ g_signal_new ("selected_date", -+ G_OBJECT_CLASS_TYPE(gobject_class), -+ G_SIGNAL_RUN_FIRST, -+ G_STRUCT_OFFSET (GtkCalendarClass, selected_date), -+ NULL, NULL, -+ _gtk_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); - } - - static void -@@ -611,8 +701,10 @@ - time_t tmp_time; - GtkWidget *widget; - GtkCalendarPrivateData *private_data; -- gchar *year_before; -+/* gchar *year_before;*/ - gchar *week_start; -+/* gint row; -+ gint col; */ - - widget = GTK_WIDGET (calendar); - GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS); -@@ -645,16 +737,29 @@ - for (i=0;i<31;i++) - calendar->marked_date[i] = FALSE; - calendar->num_marked_dates = 0; -- calendar->selected_day = tm->tm_mday; -- -+ calendar->selected_day = tm->tm_mday; -+ - calendar->display_flags = ( GTK_CALENDAR_SHOW_HEADING | - GTK_CALENDAR_SHOW_DAY_NAMES ); - -+ /* Hildon: we should mark current day and we need to store current date */ -+ private_data->current_day = tm->tm_mday; -+ private_data->current_month = tm->tm_mon; -+ private_data->current_year = tm->tm_year + 1900; -+ -+ /* Hildon: following lines are for stylus sliding */ -+ private_data->slide_stylus = FALSE; -+ private_data->prev_row = -1; -+ private_data->prev_col = -1; -+ -+ /* Hildon: is_bad_day indicate if day was selected out of legal range */ -+ private_data->is_bad_day = FALSE; -+ - calendar->highlight_row = -1; -- calendar->highlight_col = -1; -+ calendar->highlight_col = -1; - - calendar->focus_row = -1; -- calendar->focus_col = -1; -+ calendar->focus_col = -1; - calendar->xor_gc = NULL; - - private_data->max_year_width = 0; -@@ -667,7 +772,7 @@ - private_data->max_label_char_ascent = 0; - private_data->max_label_char_descent = 0; - -- private_data->arrow_width = 10; -+/* private_data->arrow_width = 10;*/ - - private_data->freeze_count = 0; - -@@ -686,6 +791,7 @@ - gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_COPY); - gtk_drag_dest_add_text_targets (widget); - -+#if 0 - private_data->year_before = 0; - - /* Translate to calendar:YM if you want years to be displayed -@@ -702,11 +808,13 @@ - private_data->year_before = 1; - else if (strcmp (year_before, "calendar:MY") != 0) - g_warning ("Whoever translated calendar:MY did so wrongly.\n"); -+#endif - - /* Translate to calendar:week_start:0 if you want Sunday to be the - * first day of the week to calendar:week_start:1 if you want Monday - * to be the first day of the week, and so on. - */ -+ - week_start = _("calendar:week_start:0"); - - if (strncmp (week_start, "calendar:week_start:", 20) == 0) -@@ -752,7 +860,7 @@ - - return column; - } -- -+#if 0 - static gint - row_height (GtkCalendar *calendar) - { -@@ -760,7 +868,7 @@ - - ((calendar->display_flags & GTK_CALENDAR_SHOW_DAY_NAMES) - ? CALENDAR_YSEP : CALENDAR_MARGIN)) / 6; - } -- -+#endif - - /* row_from_y: returns the row 0-5 that the - * y pixel of the xwindow is in */ -@@ -769,16 +877,15 @@ - gint event_y) - { - gint r, row; -- gint height; -+ /*gint height;*/ - gint y_top, y_bottom; - -- height = row_height (calendar); - row = -1; - - for (r = 0; r < 6; r++) - { - y_top = top_y_for_row (calendar, r); -- y_bottom = y_top + height; -+ y_bottom = y_top + HILDON_DAY_HEIGHT /*height*/; - - if (event_y >= y_top && event_y < y_bottom) - { -@@ -796,16 +903,16 @@ - { - gint width; - gint x_left; -- -+ - if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL) - column = 6 - column; -- -+ - width = GTK_CALENDAR_PRIVATE_DATA (calendar)->day_width; - if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS) - x_left = CALENDAR_XSEP + (width + DAY_XSEP) * column; - else - x_left = CALENDAR_MARGIN + (width + DAY_XSEP) * column; -- -+ - return x_left; - } - -@@ -818,25 +925,41 @@ - - return (GTK_CALENDAR_PRIVATE_DATA (calendar)->main_h - - (CALENDAR_MARGIN + (6 - row) -- * row_height (calendar))); -+ * HILDON_DAY_HEIGHT)); - } - - static void - gtk_calendar_set_month_prev (GtkCalendar *calendar) - { - gint month_len; -- -+ gint min_year; -+ gboolean hildonlike; -+ -+ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike, -+ "min-year", &min_year, NULL); -+ - if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE) - return; - - if (calendar->month == 0) -- { -- calendar->month = 11; -- calendar->year--; -- } -- else -- calendar->month--; -- -+ { -+ if (hildonlike) -+ { -+ if (calendar->year > min_year) -+ { -+ calendar->month = 11; -+ calendar->year--; -+ } -+ } -+ else -+ { -+ calendar->month = 11; -+ calendar->year--; -+ } -+ } -+ else -+ calendar->month--; -+ - month_len = month_length[leap (calendar->year)][calendar->month + 1]; - - gtk_calendar_freeze (calendar); -@@ -870,17 +993,32 @@ - gtk_calendar_set_month_next (GtkCalendar *calendar) - { - gint month_len; -+ gint max_year; -+ gboolean hildonlike; - - g_return_if_fail (GTK_IS_WIDGET (calendar)); - -+ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike, -+ "max-year", &max_year, NULL); -+ - if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE) - return; - -- - if (calendar->month == 11) - { -- calendar->month = 0; -- calendar->year++; -+ if (hildonlike) -+ { -+ if (calendar->year < max_year) -+ { -+ calendar->month = 0; -+ calendar->year++; -+ } -+ } -+ else -+ { -+ calendar->month = 0; -+ calendar->year++; -+ } - } - else - calendar->month++; -@@ -912,10 +1050,22 @@ - gtk_calendar_set_year_prev (GtkCalendar *calendar) - { - gint month_len; -- -+ gint min_year; -+ gboolean hildonlike; -+ - g_return_if_fail (GTK_IS_WIDGET (calendar)); - -- calendar->year--; -+ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike, -+ "min-year", &min_year, NULL); -+ -+ if (hildonlike) -+ { -+ if (calendar->year > min_year) -+ calendar->year--; -+ } -+ else -+ calendar->year--; -+ - gtk_calendar_freeze (calendar); - gtk_calendar_compute_days (calendar); - g_signal_emit (calendar, -@@ -944,14 +1094,26 @@ - { - gint month_len; - GtkWidget *widget; -+ gint max_year; -+ gboolean hildonlike; - - g_return_if_fail (GTK_IS_WIDGET (calendar)); - - widget = GTK_WIDGET (calendar); -+ -+ gtk_widget_style_get(widget, "hildonlike", &hildonlike, -+ "max-year", &max_year, NULL); - - gtk_calendar_freeze (calendar); - -- calendar->year++; -+ if (hildonlike) -+ { -+ if (calendar->year < max_year) -+ calendar->year++; -+ } -+ else -+ calendar->year++; -+ - gtk_calendar_compute_days (calendar); - g_signal_emit (calendar, - gtk_calendar_signals[NEXT_YEAR_SIGNAL], -@@ -969,7 +1131,6 @@ - } - else - gtk_calendar_select_day (calendar, calendar->selected_day); -- - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); - } -@@ -984,6 +1145,8 @@ - gint row, col; - gint day_month; - gint day; -+ gint max_year, min_year; -+ gboolean hildonlike; - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -@@ -997,20 +1160,36 @@ - /* If row or column isn't found, just return. */ - if (row == -1 || col == -1) - return; -- -- day_month = calendar->day_month[row][col]; - -- if (event->type == GDK_BUTTON_PRESS) -+ gtk_widget_style_get (GTK_WIDGET (calendar), "hildonlike", &hildonlike, -+ "max-year", &max_year, "min-year", &min_year, NULL); -+ day_month = calendar->day_month[row][col]; -+ -+ if (hildonlike) -+ { -+ if ((calendar->year == min_year && calendar->month == 0 && day_month == MONTH_PREV) -+ || (calendar->year == max_year && calendar->month == 11 && day_month == MONTH_NEXT)) -+ { -+ private_data->is_bad_day = TRUE; -+ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0); -+ return; -+ } -+ } -+ if (event->type == (hildonlike ? GDK_BUTTON_RELEASE : GDK_BUTTON_PRESS)) - { - day = calendar->day[row][col]; - - if (day_month == MONTH_PREV) -- gtk_calendar_set_month_prev (calendar); -+ { -+ gtk_calendar_set_month_prev (calendar); -+ } - else if (day_month == MONTH_NEXT) -- gtk_calendar_set_month_next (calendar); -+ { -+ gtk_calendar_set_month_next (calendar); -+ } - - if (!GTK_WIDGET_HAS_FOCUS (widget)) -- gtk_widget_grab_focus (widget); -+ gtk_widget_grab_focus (widget); - - if (event->button == 1) - { -@@ -1025,9 +1204,8 @@ - { - private_data->in_drag = 0; - if (day_month == MONTH_CURRENT) -- g_signal_emit (calendar, -- gtk_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL], -- 0); -+ g_signal_emit (calendar, -+ gtk_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL], 0); - } - } - -@@ -1039,18 +1217,18 @@ - GdkWindowAttr attributes; - gint attributes_mask; - gint i; -- gboolean year_left; -+ /*gboolean year_left;*/ - - g_return_if_fail (GTK_IS_CALENDAR (widget)); - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -- -+/* - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - year_left = private_data->year_before; - else - year_left = !private_data->year_before; -- -+*/ - /* Arrow windows ------------------------------------- */ - if (! (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE) - && (calendar->display_flags & GTK_CALENDAR_SHOW_HEADING)) -@@ -1063,10 +1241,26 @@ - | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; -- attributes.y = 3; -- attributes.width = private_data->arrow_width; -- attributes.height = private_data->header_h - 7; -- for (i = 0; i < 4; i++) -+ attributes.y = 0; -+ attributes.width = HILDON_ARROW_WIDTH; -+ attributes.height = HILDON_ARROW_HEIGHT; -+ -+ attributes.x = (widget->allocation.width - private_data->max_year_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP; -+ private_data->arrow_win[ARROW_YEAR_LEFT] = gdk_window_new (private_data->header_win, -+ &attributes, attributes_mask); -+ -+ attributes.x = (widget->allocation.width + private_data->max_year_width) / 2 + HILDON_ARROW_SEP; -+ private_data->arrow_win[ARROW_YEAR_RIGHT] = gdk_window_new (private_data->header_win, -+ &attributes, attributes_mask); -+ attributes.x = (widget->allocation.width - private_data->max_month_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP; -+ private_data->arrow_win[ARROW_MONTH_LEFT] = gdk_window_new (private_data->footer_win, -+ &attributes, attributes_mask); -+ attributes.x = (widget->allocation.width + private_data->max_month_width) / 2 + HILDON_ARROW_SEP; -+ private_data->arrow_win[ARROW_MONTH_RIGHT] = gdk_window_new (private_data->footer_win, -+ &attributes, attributes_mask); -+ -+/* -+for (i = 0; i < 4; i++) - { - switch (i) - { -@@ -1105,7 +1299,10 @@ - } - private_data->arrow_win[i] = gdk_window_new (private_data->header_win, - &attributes, -- attributes_mask); -+ attributes_mask);*/ -+ -+ for (i = 0; i < 4; i++) -+ { - if (GTK_WIDGET_IS_SENSITIVE (widget)) - private_data->arrow_state[i] = GTK_STATE_NORMAL; - else -@@ -1145,23 +1342,33 @@ - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; -- attributes.x = widget->style->xthickness; -- attributes.y = widget->style->ythickness; -- attributes.width = widget->allocation.width - 2 * attributes.x; -- attributes.height = private_data->header_h - 2 * attributes.y; -+ attributes.x = 0 /*widget->style->xthickness*/; -+ attributes.y = 0 /*widget->style->ythickness*/; -+ attributes.width = widget->allocation.width; /* - 2 * attributes.x */; -+ attributes.height = HILDON_ARROW_HEIGHT /*private_data->header_h - 2 * attributes.y*/; - private_data->header_win = gdk_window_new (widget->window, - &attributes, attributes_mask); -- -+ -+ attributes.y = HILDON_ARROW_HEIGHT + 2 * CALENDAR_YSEP + private_data->main_h + private_data->day_name_h; -+ -+ private_data->footer_win = gdk_window_new(widget->window, -+ &attributes, attributes_mask); -+ - gdk_window_set_background (private_data->header_win, -- HEADER_BG_COLOR (GTK_WIDGET (calendar))); -+ HEADER_BG_COLOR (widget)); -+ gdk_window_set_background (private_data->footer_win, -+ HEADER_BG_COLOR (widget)); -+ - gdk_window_show (private_data->header_win); -+ gdk_window_show (private_data->footer_win); - gdk_window_set_user_data (private_data->header_win, widget); -- -+ gdk_window_set_user_data (private_data->footer_win, widget); - } - else - { - private_data->header_win = NULL; -- } -+ private_data->footer_win = NULL; -+ } - gtk_calendar_realize_arrows (widget); - } - -@@ -1172,7 +1379,7 @@ - GtkCalendarPrivateData *private_data; - GdkWindowAttr attributes; - gint attributes_mask; -- -+ - g_return_if_fail (GTK_IS_CALENDAR (widget)); - - calendar = GTK_CALENDAR (widget); -@@ -1187,18 +1394,16 @@ - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; -- attributes.x = (widget->style->xthickness + INNER_BORDER); -- attributes.y = private_data->header_h + (widget->style->ythickness -- + INNER_BORDER); -- attributes.width = (widget->allocation.width -- - (widget->style->xthickness + INNER_BORDER) -- * 2); -+ attributes.x = /*private_data->week_width*/ (widget->style->xthickness + INNER_BORDER); -+ attributes.y = private_data->header_h; -+ attributes.width = widget->allocation.width - attributes.x; - attributes.height = private_data->day_name_h; - private_data->day_name_win = gdk_window_new (widget->window, - &attributes, - attributes_mask); - gdk_window_set_background (private_data->day_name_win, -- BACKGROUND_COLOR ( GTK_WIDGET ( calendar))); -+ BACKGROUND_COLOR ( GTK_WIDGET (calendar))); -+ - gdk_window_show (private_data->day_name_win); - gdk_window_set_user_data (private_data->day_name_win, widget); - } -@@ -1215,7 +1420,7 @@ - GtkCalendarPrivateData *private_data; - GdkWindowAttr attributes; - gint attributes_mask; -- -+ - g_return_if_fail (GTK_IS_CALENDAR (widget)); - - calendar = GTK_CALENDAR (widget); -@@ -1231,15 +1436,15 @@ - attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; -- attributes.x = widget->style->xthickness + INNER_BORDER; -- attributes.y = (private_data->header_h + private_data->day_name_h -- + (widget->style->ythickness + INNER_BORDER)); -- attributes.width = private_data->week_width; -- attributes.height = private_data->main_h; -+ attributes.x = 0 /*widget->style->xthickness + INNER_BORDER*/; -+ attributes.y = private_data->header_h; -+ /*+ (widget->style->ythickness + INNER_BORDER))*/; -+ attributes.width = HILDON_DAY_WIDTH; -+ attributes.height = private_data->main_h + private_data->day_name_h; - private_data->week_win = gdk_window_new (widget->window, -- &attributes, attributes_mask); -+ &attributes, attributes_mask); - gdk_window_set_background (private_data->week_win, -- BACKGROUND_COLOR (GTK_WIDGET (calendar))); -+ BACKGROUND_COLOR (GTK_WIDGET (calendar))); - gdk_window_show (private_data->week_win); - gdk_window_set_user_data (private_data->week_win, widget); - } -@@ -1318,7 +1523,6 @@ - GDK_GC_FOREGROUND | - GDK_GC_FUNCTION); - } -- - static void - gtk_calendar_unrealize (GtkWidget *widget) - { -@@ -1343,7 +1547,10 @@ - gdk_window_set_user_data (private_data->header_win, NULL); - gdk_window_destroy (private_data->header_win); - private_data->header_win = NULL; -- } -+ gdk_window_set_user_data (private_data->footer_win, NULL); -+ gdk_window_destroy (private_data->footer_win); -+ private_data->footer_win = NULL; -+ } - - if (private_data->week_win) - { -@@ -1382,10 +1589,10 @@ - PangoLayout *layout; - PangoRectangle logical_rect; - -- gint height; -+ /*gint height;*/ - gint i; - gchar buffer[255]; -- gint calendar_margin = CALENDAR_MARGIN; -+ /*gint calendar_margin = CALENDAR_MARGIN;*/ - gint header_width, main_width; - gint max_header_height = 0; - gint focus_width; -@@ -1401,20 +1608,20 @@ - layout = gtk_widget_create_pango_layout (widget, NULL); - - /* -- * Calculate the requisition width for the widget. -+ * Calculate the requisition width for the widget. - */ - - /* Header width */ -- -+ - if (calendar->display_flags & GTK_CALENDAR_SHOW_HEADING) -- { -+ { - private_data->max_month_width = 0; - for (i = 0; i < 12; i++) - { - pango_layout_set_text (layout, default_monthname[i], -1); - pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - private_data->max_month_width = MAX (private_data->max_month_width, -- logical_rect.width + 8); -+ logical_rect.width +8 ); - max_header_height = MAX (max_header_height, logical_rect.height); - } - private_data->max_year_width = 0; -@@ -1427,13 +1634,13 @@ - logical_rect.width + 8); - max_header_height = MAX (max_header_height, logical_rect.height); - } -- } -+ } - else - { - private_data->max_month_width = 0; - private_data->max_year_width = 0; - } -- -+ - if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE) - header_width = (private_data->max_month_width - + private_data->max_year_width -@@ -1494,45 +1701,30 @@ - + (private_data->max_week_char_width - ? private_data->max_week_char_width * 2 + (focus_padding + focus_width) * 2 + CALENDAR_XSEP * 2 - : 0)); -- -- -+ - requisition->width = MAX (header_width, main_width + INNER_BORDER * 2) + widget->style->xthickness * 2; -+ /* FIXME: header_width is broken, when Calendar is themed ! -+ * Next line is workaround for this bug -+ */ -+ requisition->width = (main_width + INNER_BORDER * 2) + widget->style->xthickness * 2; - - /* - * Calculate the requisition height for the widget. -+ * This is Hildon calculation - */ -- -+ - if (calendar->display_flags & GTK_CALENDAR_SHOW_HEADING) -- { -- private_data->header_h = (max_header_height + CALENDAR_YSEP * 2); -- } -+ private_data->header_h = HILDON_ARROW_HEIGHT + CALENDAR_YSEP; - else -- { - private_data->header_h = 0; -- } -- -+ - if (calendar->display_flags & GTK_CALENDAR_SHOW_DAY_NAMES) -- { -- private_data->day_name_h = (private_data->max_label_char_ascent -- + private_data->max_label_char_descent -- + 2 * (focus_padding + focus_width) + calendar_margin); -- calendar_margin = CALENDAR_YSEP; -- } -+ private_data->day_name_h = HILDON_DAY_HEIGHT; - else -- { - private_data->day_name_h = 0; -- } - -- private_data->main_h = (CALENDAR_MARGIN + calendar_margin -- + 6 * (private_data->max_day_char_ascent -- + private_data->max_day_char_descent -- + 2 * (focus_padding + focus_width)) -- + DAY_YSEP * 5); -- -- height = (private_data->header_h + private_data->day_name_h -- + private_data->main_h); -- -- requisition->height = height + (widget->style->ythickness + INNER_BORDER) * 2; -+ private_data->main_h = 6 * HILDON_DAY_HEIGHT; -+ requisition->height = 2 * private_data->header_h + private_data->day_name_h + private_data->main_h; - - g_object_unref (layout); - } -@@ -1544,7 +1736,7 @@ - GtkCalendar *calendar; - GtkCalendarPrivateData *private_data; - gint xthickness = widget->style->xthickness; -- gint ythickness = widget->style->xthickness; -+ /*gint ythickness = widget->style->xthickness;*/ - gboolean year_left; - - widget->allocation = *allocation; -@@ -1569,58 +1761,24 @@ - } - else - { -- private_data->day_width = (allocation->width -+ private_data->day_width = (allocation->width - - (xthickness + INNER_BORDER) * 2 - - (CALENDAR_MARGIN * 2) - - (DAY_XSEP * 6))/7; - private_data->week_width = 0; - } -- -+ - if (GTK_WIDGET_REALIZED (widget)) - { - gdk_window_move_resize (widget->window, -- allocation->x, allocation->y, -- allocation->width, allocation->height); -+ widget->allocation.x, widget->allocation.y, -+ widget->allocation.width, widget->allocation.height); - if (private_data->header_win) - gdk_window_move_resize (private_data->header_win, -- xthickness, ythickness, -- allocation->width - 2 * xthickness, private_data->header_h); -- if (private_data->arrow_win[ARROW_MONTH_LEFT]) -- { -- if (year_left) -- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT], -- (allocation->width - 2 * xthickness -- - (3 + 2*private_data->arrow_width -- + private_data->max_month_width)), -- 3, -- private_data->arrow_width, -- private_data->header_h - 7); -- else -- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT], -- 3, 3, -- private_data->arrow_width, -- private_data->header_h - 7); -- } -- if (private_data->arrow_win[ARROW_MONTH_RIGHT]) -- { -- if (year_left) -- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT], -- (allocation->width - 2 * xthickness -- - 3 - private_data->arrow_width), -- 3, -- private_data->arrow_width, -- private_data->header_h - 7); -- else -- gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT], -- (private_data->arrow_width -- + private_data->max_month_width), -- 3, -- private_data->arrow_width, -- private_data->header_h - 7); -- } -+ 0, 0, widget->allocation.width, HILDON_ARROW_HEIGHT); - if (private_data->arrow_win[ARROW_YEAR_LEFT]) - { -- if (year_left) -+ /* if (year_left) - gdk_window_move_resize (private_data->arrow_win[ARROW_YEAR_LEFT], - 3, 3, - private_data->arrow_width, -@@ -1632,11 +1790,14 @@ - + private_data->max_year_width)), - 3, - private_data->arrow_width, -- private_data->header_h - 7); -+ private_data->header_h - 7);*/ -+ -+ gdk_window_move (private_data->arrow_win[ARROW_YEAR_LEFT], -+ (widget->allocation.width - private_data->max_year_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP, 0); - } - if (private_data->arrow_win[ARROW_YEAR_RIGHT]) - { -- if (year_left) -+/* if (year_left) - gdk_window_move_resize (private_data->arrow_win[ARROW_YEAR_RIGHT], - (private_data->arrow_width - + private_data->max_year_width), -@@ -1649,55 +1810,102 @@ - - 3 - private_data->arrow_width), - 3, - private_data->arrow_width, -+ private_data->header_h - 7);*/ -+ gdk_window_move (private_data->arrow_win[ARROW_YEAR_RIGHT], -+ (widget->allocation.width + private_data->max_year_width) / 2 + HILDON_ARROW_SEP, 0); -+ } -+ if (private_data->footer_win) -+ gdk_window_move_resize (private_data->footer_win, -+ 0, private_data->header_h + private_data->day_name_h + private_data->main_h + CALENDAR_YSEP, -+ widget->allocation.width, HILDON_ARROW_HEIGHT); -+ -+ if (private_data->arrow_win[ARROW_MONTH_LEFT]) -+ { -+/* if (year_left) -+ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT], -+ (allocation->width - 2 * xthickness -+ - (3 + 2*private_data->arrow_width -+ + private_data->max_month_width)), -+ 3, -+ private_data->arrow_width, - private_data->header_h - 7); -+ else -+ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_LEFT], -+ 3, 3, -+ private_data->arrow_width, -+ private_data->header_h - 7); -+*/ -+ -+ gdk_window_move (private_data->arrow_win[ARROW_MONTH_LEFT], -+ (widget->allocation.width - private_data->max_month_width) / 2 - HILDON_ARROW_WIDTH - HILDON_ARROW_SEP, 0); -+ } -+ if (private_data->arrow_win[ARROW_MONTH_RIGHT]) -+ { -+/* if (year_left) -+ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT], -+ (allocation->width - 2 * xthickness -+ - 3 - private_data->arrow_width), -+ 3, -+ private_data->arrow_width, -+ private_data->header_h - 7); -+ else -+ gdk_window_move_resize (private_data->arrow_win[ARROW_MONTH_RIGHT], -+ (private_data->arrow_width -+ + private_data->max_month_width), -+ 3, -+ private_data->arrow_width, -+ private_data->header_h - 7);*/ -+ gdk_window_move (private_data->arrow_win[ARROW_MONTH_RIGHT], -+ (widget->allocation.width + private_data->max_month_width) / 2 + HILDON_ARROW_SEP, 0); - } -+ -+ - if (private_data->day_name_win) - gdk_window_move_resize (private_data->day_name_win, -- xthickness + INNER_BORDER, -- private_data->header_h + (widget->style->ythickness + INNER_BORDER), -- allocation->width - (xthickness + INNER_BORDER) * 2, -+ private_data->week_width, /*xthickness + INNER_BORDER*/ -+ private_data->header_h /*+ (widget->style->ythickness + INNER_BORDER)*/, -+ widget->allocation.width - private_data->week_width /*- (xthickness + INNER_BORDER) * 2*/, - private_data->day_name_h); - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - { - if (private_data->week_win) - gdk_window_move_resize (private_data->week_win, -- (xthickness + INNER_BORDER), -- private_data->header_h + private_data->day_name_h -- + (widget->style->ythickness + INNER_BORDER), -- private_data->week_width, -- private_data->main_h); -+ 0 /*(xthickness + INNER_BORDER)*/, -+ private_data->header_h /*+ (widget->style->ythickness + INNER_BORDER)*/, -+ HILDON_DAY_WIDTH, -+ private_data->main_h + private_data->day_name_h); - gdk_window_move_resize (private_data->main_win, -- private_data->week_width + (xthickness + INNER_BORDER), -+ private_data->week_width /* + (xthickness + INNER_BORDER)*/, - private_data->header_h + private_data->day_name_h -- + (widget->style->ythickness + INNER_BORDER), -- allocation->width -- - private_data->week_width -- - (xthickness + INNER_BORDER) * 2, -+ /*+ (widget->style->ythickness + INNER_BORDER)*/, -+ widget->allocation.width - private_data->week_width -+ /*- (xthickness + INNER_BORDER) * 2*/, - private_data->main_h); - } - else - { - gdk_window_move_resize (private_data->main_win, -- (xthickness + INNER_BORDER), -+ 0 /*(xthickness + INNER_BORDER)*/, - private_data->header_h + private_data->day_name_h -- + (widget->style->ythickness + INNER_BORDER), -- allocation->width -+ /*+ (widget->style->ythickness + INNER_BORDER)*/, -+ widget->allocation.width - - private_data->week_width -- - (xthickness + INNER_BORDER) * 2, -+ /*- (xthickness + INNER_BORDER) * 2*/, - private_data->main_h); - if (private_data->week_win) - gdk_window_move_resize (private_data->week_win, -- allocation->width -+ widget->allocation.width - - private_data->week_width -- - (xthickness + INNER_BORDER), -+ /*- (xthickness + INNER_BORDER)*/, - private_data->header_h + private_data->day_name_h -- + (widget->style->ythickness + INNER_BORDER), -+ /*+ (widget->style->ythickness + INNER_BORDER)*/, - private_data->week_width, - private_data->main_h); - } - } - } - -+ - static gboolean - gtk_calendar_expose (GtkWidget *widget, - GdkEventExpose *event) -@@ -1711,22 +1919,24 @@ - if (GTK_WIDGET_DRAWABLE (widget)) - { - if (event->window == private_data->main_win) -- gtk_calendar_paint_main (widget); -+ gtk_calendar_paint_main (widget); - - if (event->window == private_data->header_win) -- gtk_calendar_paint_header (widget); -- -- if (event->window == private_data->day_name_win) -- gtk_calendar_paint_day_names (widget); -- -- if (event->window == private_data->week_win) -- gtk_calendar_paint_week_numbers (widget); -- if (event->window == widget->window) -+ gtk_calendar_paint_header (widget); -+ if (event->window == private_data->footer_win) -+ gtk_calendar_paint_footer(widget); -+ -+ if (event->window == private_data->day_name_win) -+ gtk_calendar_paint_day_names (widget); -+ -+ if (event->window == private_data->week_win) -+ gtk_calendar_paint_week_numbers (widget); -+/* if (event->window == widget->window) - { - gtk_paint_shadow (widget->style, widget->window, GTK_WIDGET_STATE (widget), - GTK_SHADOW_IN, NULL, widget, "calendar", - 0, 0, widget->allocation.width, widget->allocation.height); -- } -+ }*/ - } - - return FALSE; -@@ -1740,12 +1950,12 @@ - char buffer[255]; - int x, y; - gint header_width, cal_height; -- gint max_month_width; -+/* gint max_month_width;*/ - gint max_year_width; - GtkCalendarPrivateData *private_data; - PangoLayout *layout; - PangoRectangle logical_rect; -- gboolean year_left; -+/* gboolean year_left;*/ - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -@@ -1755,29 +1965,29 @@ - private_data->dirty_header = 1; - return; - } -- -+/* - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - year_left = private_data->year_before; - else - year_left = !private_data->year_before; -- -+*/ - private_data->dirty_header = 0; - gc = calendar->gc; - - /* Clear window */ - gdk_window_clear (private_data->header_win); - -- header_width = widget->allocation.width - 2 * widget->style->xthickness; -+ header_width = widget->allocation.width /*- 2 * widget->style->xthickness*/; - cal_height = widget->allocation.height; - -- max_month_width = private_data->max_month_width; -+ /*max_month_width = private_data->max_month_width;*/ - max_year_width = private_data->max_year_width; - -- gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar))); -- gtk_paint_shadow (widget->style, private_data->header_win, -+/* gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));*/ -+ /*gtk_paint_shadow (widget->style, private_data->header_win, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - NULL, widget, "calendar", -- 0, 0, header_width, private_data->header_h); -+ 0, 0, header_width, private_data->header_h);*/ - - - g_snprintf (buffer, sizeof (buffer), "%d", calendar->year); -@@ -1785,55 +1995,118 @@ - pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - - /* Draw title */ -- y = (private_data->header_h - logical_rect.height) / 2; -- -+ y = (HILDON_ARROW_HEIGHT /*private_data->header_h*/ - logical_rect.height) / 2; -+ x = (widget->allocation.width - logical_rect.width) / 2; -+ - /* Draw year and its arrows */ -- -+#if 0 - if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE) -- if (year_left) -- x = 3 + (max_year_width - logical_rect.width)/2; -- else -+/* if (year_left) */ -+ x = /*3+*/(widget->allocation.width - logical_rect.width)/2; -+/* else - x = header_width - (3 + max_year_width -- - (max_year_width - logical_rect.width)/2); -+ - (max_year_width - logical_rect.width)/2);*/ - else -- if (year_left) -- x = 3 + private_data->arrow_width + (max_year_width - logical_rect.width)/2; -- else -+/* if (year_left)*/ -+ x = 3 + HILDON_ARROW_WIDTH /*private_data->arrow_width*/ + (max_year_width - logical_rect.width)/2; -+ /* else - x = header_width - (3 + private_data->arrow_width + max_year_width - - (max_year_width - logical_rect.width)/2); -+ */ -+ #endif -+ gdk_gc_set_foreground (gc, HEADER_FG_COLOR (GTK_WIDGET (calendar))); -+ gdk_draw_layout (private_data->header_win, gc, x, y, layout); -+ -+ gtk_calendar_paint_arrow (widget, ARROW_YEAR_LEFT); -+ gtk_calendar_paint_arrow (widget, ARROW_YEAR_RIGHT); -+ -+ g_object_unref (layout); -+} -+ -+static void -+gtk_calendar_paint_footer (GtkWidget *widget) -+{ -+GtkCalendar *calendar; -+ GdkGC *gc; -+ char buffer[255]; -+ int x, y; -+ gint header_width, cal_height; -+/* gint max_month_width; -+ gint max_year_width;*/ -+ GtkCalendarPrivateData *private_data; -+ PangoLayout *layout; -+ PangoRectangle logical_rect; -+/* gboolean year_left;*/ -+ -+ calendar = GTK_CALENDAR (widget); -+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -+ -+ if (private_data->freeze_count) -+ { -+ private_data->dirty_header = 1; -+ return; -+ } -+/* -+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) -+ year_left = private_data->year_before; -+ else -+ year_left = !private_data->year_before; -+*/ -+ private_data->dirty_header = 0; -+ gc = calendar->gc; - -+ /* Clear window */ -+ gdk_window_clear (private_data->footer_win); -+ -+ header_width = widget->allocation.width - 2 * widget->style->xthickness; -+ cal_height = widget->allocation.height; -+ -+ /*max_month_width = private_data->max_month_width;*/ -+ /*max_year_width = private_data->max_year_width;*/ -+ -+ /*gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar)));*/ -+ /*gtk_paint_shadow (widget->style, private_data->footer_win, -+ GTK_STATE_NORMAL, GTK_SHADOW_OUT, -+ NULL, widget, "calendar", -+ 0, 0, header_width, private_data->header_h);*/ - -- gdk_gc_set_foreground (gc, HEADER_FG_COLOR (GTK_WIDGET (calendar))); -- gdk_draw_layout (private_data->header_win, gc, x, y, layout); - -+ /*g_snprintf (buffer, sizeof (buffer), "%d", calendar->year);*/ -+ -+/* pango_layout_get_pixel_extents (layout, NULL, &logical_rect);*/ -+ -+ /* Draw title */ -+ -+ - /* Draw month */ - g_snprintf (buffer, sizeof (buffer), "%s", default_monthname[calendar->month]); -- pango_layout_set_text (layout, buffer, -1); -+ layout = gtk_widget_create_pango_layout (widget, buffer); - pango_layout_get_pixel_extents (layout, NULL, &logical_rect); -- -+#if 0 - if (calendar->display_flags & GTK_CALENDAR_NO_MONTH_CHANGE) -- if (year_left) -+/* if (year_left)*/ - x = header_width - (3 + max_month_width - - (max_month_width - logical_rect.width)/2); -- else -- x = 3 + (max_month_width - logical_rect.width) / 2; -+ /* else -+ x = 3 + (max_month_width - logical_rect.width) / 2;*/ - else -- if (year_left) -- x = header_width - (3 + private_data->arrow_width + max_month_width -+/* if (year_left)*/ -+ x = header_width - (3 + HILDON_ARROW_WIDTH /*private_data->arrow_width*/ + max_month_width - - (max_month_width - logical_rect.width)/2); -- else -+/* else - x = 3 + private_data->arrow_width + (max_month_width - logical_rect.width)/2; -+*/ -+#endif -+ x = (widget->allocation.width - logical_rect.width) / 2; -+ y = (HILDON_ARROW_HEIGHT - logical_rect.height) / 2; -+ -+ gdk_gc_set_foreground (gc, HEADER_FG_COLOR(GTK_WIDGET (calendar))); -+ gdk_draw_layout (private_data->footer_win, gc, x, y, layout); - -- gdk_draw_layout (private_data->header_win, gc, x, y, layout); -- -- gdk_gc_set_foreground (gc, BACKGROUND_COLOR (GTK_WIDGET (calendar))); -- - gtk_calendar_paint_arrow (widget, ARROW_MONTH_LEFT); - gtk_calendar_paint_arrow (widget, ARROW_MONTH_RIGHT); -- gtk_calendar_paint_arrow (widget, ARROW_YEAR_LEFT); -- gtk_calendar_paint_arrow (widget, ARROW_YEAR_RIGHT); - -- g_object_unref (layout); -+ g_object_unref(layout); - } - - static void -@@ -1851,15 +2124,17 @@ - GtkCalendarPrivateData *private_data; - gint focus_padding; - gint focus_width; -+ gboolean hildonlike; - - g_return_if_fail (GTK_IS_CALENDAR (widget)); - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); - gc = calendar->gc; -- -+ - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_padding, -+ "hildonlike", &hildonlike, - NULL); - /* - * Handle freeze/thaw functionality -@@ -1887,18 +2162,22 @@ - * Draw rectangles as inverted background for the labels. - */ - -- gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget)); -- gdk_draw_rectangle (private_data->day_name_win, gc, TRUE, -- CALENDAR_MARGIN, CALENDAR_MARGIN, -- cal_width-CALENDAR_MARGIN * 2, -- private_data->day_name_h - CALENDAR_MARGIN); -- -- if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS) -- gdk_draw_rectangle (private_data->day_name_win, gc, TRUE, -- CALENDAR_MARGIN, -- private_data->day_name_h - CALENDAR_YSEP, -- private_data->week_width - CALENDAR_YSEP - CALENDAR_MARGIN, -- CALENDAR_YSEP); -+ /* Hildon: don't paint dayname window */ -+ if (!hildonlike) -+ { -+ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget)); -+ gdk_draw_rectangle (private_data->day_name_win, gc, TRUE, -+ CALENDAR_MARGIN, CALENDAR_MARGIN, -+ cal_width-CALENDAR_MARGIN * 2, -+ private_data->day_name_h - CALENDAR_MARGIN); -+ -+ if (calendar->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS) -+ gdk_draw_rectangle (private_data->day_name_win, gc, TRUE, -+ CALENDAR_MARGIN, -+ private_data->day_name_h - CALENDAR_YSEP, -+ private_data->week_width - CALENDAR_YSEP - CALENDAR_MARGIN, -+ CALENDAR_YSEP); -+ } - - /* - * Write the labels -@@ -1908,28 +2187,43 @@ - - gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget)); - for (i = 0; i < 7; i++) -- { -+ { - if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL) -- day = 6 - i; -+ day = 6 - i; - else -- day = i; -- day = (day + private_data->week_start) % 7; -- g_snprintf (buffer, sizeof (buffer), "%s", default_abbreviated_dayname[day]); -+ day = i; -+ day = (day + private_data->week_start) % 7; -+ g_snprintf (buffer, sizeof (buffer), "%s", default_abbreviated_dayname[day]); -+ -+ pango_layout_set_text (layout, buffer, -1); -+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - -- pango_layout_set_text (layout, buffer, -1); -- pango_layout_get_pixel_extents (layout, NULL, &logical_rect); -+ /* Hildon: draw passive focus for day name */ -+ if (hildonlike && calendar->focus_col == i) -+ { -+ guint x = left_x_for_column (calendar, calendar->focus_col); - -- gdk_draw_layout (private_data->day_name_win, gc, -- (CALENDAR_MARGIN + -- + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ? -- (private_data->week_width + (private_data->week_width ? CALENDAR_XSEP : 0)) -- : 0) -- + day_wid_sep * i -- + (day_width - logical_rect.width)/2), -- CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y, -- layout); -+ gtk_paint_box( GTK_WIDGET (calendar)->style, -+ private_data->day_name_win, -+ GTK_STATE_NORMAL, -+ GTK_SHADOW_OUT, NULL, -+ GTK_WIDGET (calendar), "passive-focus", -+ (x + 4) + HILDON_DAY_WIDTH, 0, -+ day_wid_sep + 2, -+ HILDON_DAY_HEIGHT); -+ } -+ gdk_draw_layout (private_data->day_name_win, gc, -+ (CALENDAR_MARGIN + -+ + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ? -+ (private_data->week_width + (private_data->week_width ? CALENDAR_XSEP : 0)) -+ : 0) -+ + day_wid_sep * i -+ + (day_width - logical_rect.width)/2), -+ CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y, -+ layout); -+ -+ - } -- - g_object_unref (layout); - } - -@@ -1940,14 +2234,15 @@ - GdkGC *gc; - gint row, week = 0, year; - gint x_loc; -- char buffer[3]; -- gint y_loc, day_height; -+ char buffer[10]; -+ gint y_loc /*, day_height*/; - GtkCalendarPrivateData *private_data; - PangoLayout *layout; - PangoRectangle logical_rect; - gint focus_padding; - gint focus_width; -- -+ gboolean hildonlike; -+ - g_return_if_fail (GTK_IS_CALENDAR (widget)); - g_return_if_fail (widget->window != NULL); - calendar = GTK_CALENDAR (widget); -@@ -1968,6 +2263,7 @@ - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_padding, -+ "hildonlike", &hildonlike, - NULL); - - /* -@@ -1981,18 +2277,23 @@ - */ - - gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (widget)); -- if (private_data->day_name_win) -- gdk_draw_rectangle (private_data->week_win, gc, TRUE, -- CALENDAR_MARGIN, -- 0, -- private_data->week_width - CALENDAR_MARGIN, -- private_data->main_h - CALENDAR_MARGIN); -- else -- gdk_draw_rectangle (private_data->week_win, gc, TRUE, -- CALENDAR_MARGIN, -- CALENDAR_MARGIN, -- private_data->week_width - CALENDAR_MARGIN, -- private_data->main_h - 2 * CALENDAR_MARGIN); -+ -+ /* Hildon: don't paint background for weekday window */ -+ if (!hildonlike) -+ { -+ if (private_data->day_name_win) -+ gdk_draw_rectangle (private_data->week_win, gc, TRUE, -+ CALENDAR_MARGIN, -+ 0, -+ private_data->week_width - CALENDAR_MARGIN, -+ private_data->main_h + private_data->day_name_h- CALENDAR_MARGIN); -+ else -+ gdk_draw_rectangle (private_data->week_win, gc, TRUE, -+ CALENDAR_MARGIN, -+ CALENDAR_MARGIN, -+ private_data->week_width - CALENDAR_MARGIN, -+ private_data->main_h - 2 * CALENDAR_MARGIN); -+ } - - /* - * Write the labels -@@ -2001,10 +2302,13 @@ - layout = gtk_widget_create_pango_layout (widget, NULL); - - gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (widget)); -- day_height = row_height (calendar); -+ gdk_draw_line(private_data->week_win, gc, -+ HILDON_DAY_WIDTH - 1, 0, HILDON_DAY_WIDTH - 1, private_data->main_h + private_data->day_name_h); -+ -+ /*day_height = row_height (calendar)*/; - for (row = 0; row < 6; row++) - { -- year = calendar->year; -+ year = calendar->year; - if (calendar->day[row][6] < 15 && row > 3 && calendar->month == 11) - year++; - -@@ -2012,15 +2316,30 @@ - ((calendar->day[row][6] < 15 && row > 3 ? 1 : 0) - + calendar->month) % 12 + 1, calendar->day[row][6])); - -- g_snprintf (buffer, sizeof (buffer), "%d", week); -- pango_layout_set_text (layout, buffer, -1); -- pango_layout_get_pixel_extents (layout, NULL, &logical_rect); -- -- y_loc = top_y_for_row (calendar, row) + (day_height - logical_rect.height) / 2; -- -- x_loc = (private_data->week_width -+ g_snprintf (buffer, sizeof (buffer), "%d", week); -+ pango_layout_set_text (layout, buffer, -1); -+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect); -+ -+ /* Hildon: draw passive focus for week */ -+ if (hildonlike && calendar->focus_row == row) -+ { -+ guint y = top_y_for_row (calendar, calendar->focus_row + 1); -+ -+ gtk_paint_box( GTK_WIDGET (calendar)->style, -+ private_data->week_win, -+ GTK_STATE_NORMAL, -+ GTK_SHADOW_OUT, NULL, -+ GTK_WIDGET (calendar), "passive-focus", -+ 0, y, -+ private_data->week_width - 4, -+ HILDON_DAY_HEIGHT); -+ } -+ -+ y_loc = private_data->day_name_h + top_y_for_row (calendar, row) + (HILDON_DAY_HEIGHT - logical_rect.height) / 2; -+ x_loc = (HILDON_DAY_WIDTH - logical_rect.width) / 2; -+ /*(private_data->week_width - - logical_rect.width -- - CALENDAR_XSEP - focus_padding - focus_width); -+ - CALENDAR_XSEP - focus_padding - focus_width);*/ - - gdk_draw_layout (private_data->week_win, gc, x_loc, y_loc, layout); - } -@@ -2034,11 +2353,13 @@ - { - GtkCalendar *calendar; - gint r, c, row, col; -- -+ GtkCalendarPrivateData *private_data; - g_return_if_fail (GTK_IS_CALENDAR (widget)); - - calendar = GTK_CALENDAR (widget); -- -+ -+ private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -+ - row = -1; - col = -1; - for (r = 0; r < 6; r++) -@@ -2054,6 +2375,7 @@ - g_return_if_fail (col != -1); - - gtk_calendar_paint_day (widget, row, col); -+ - } - - static void -@@ -2065,13 +2387,14 @@ - GdkGC *gc; - gchar buffer[255]; - gint day; -- gint day_height; -+ /*gint day_height;*/ - gint x_left; - gint x_loc; - gint y_top; - gint y_loc; -- gint day_xspace; -+ /*gint day_xspace;*/ - gint focus_width; -+ gboolean hildonlike; - - GtkCalendarPrivateData *private_data; - PangoLayout *layout; -@@ -2083,6 +2406,8 @@ - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); - -+ if (private_data->main_win == NULL) return; -+ - /* - * Handle freeze/thaw functionality - */ -@@ -2092,25 +2417,25 @@ - private_data->dirty_main = 1; - return; - } -- -- gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL); - -- day_height = row_height (calendar); -- -- day_xspace = private_data->day_width - private_data->max_day_char_width*2; -+ gtk_widget_style_get (widget, "focus-line-width", &focus_width, -+ "hildonlike", &hildonlike, NULL); -+ -+ /*day_height = row_height (calendar)*/; -+ /*day_xspace = HILDON_DAY_WIDTH private_data->day_width - private_data->max_day_char_width*2*/; - - day = calendar->day[row][col]; -- -+ - x_left = left_x_for_column (calendar, col); -- x_loc = x_left + private_data->day_width / 2 + private_data->max_day_char_width; -+ /*x_loc = x_left + private_data->day_width / 2 + private_data->max_day_char_width;*/ - - y_top = top_y_for_row (calendar, row); - - gdk_window_clear_area (private_data->main_win, x_left, y_top, -- private_data->day_width, day_height); -+ HILDON_DAY_WIDTH, HILDON_DAY_HEIGHT); - - gc = calendar->gc; -- -+ - if (calendar->day_month[row][col] == MONTH_PREV) - { - gdk_gc_set_foreground (gc, PREV_MONTH_COLOR (GTK_WIDGET (calendar))); -@@ -2123,44 +2448,43 @@ - { - /* - if (calendar->highlight_row == row && calendar->highlight_col == col) -- { -- gdk_gc_set_foreground (gc, HIGHLIGHT_BACK_COLOR (GTK_WIDGET (calendar))); -- gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -+ { -+ gdk_gc_set_foreground (gc, HIGHLIGHT_BACK_COLOR (GTK_WIDGET (calendar))); -+ gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, - private_data->day_width, day_height); -- } -+ } - */ - if (calendar->selected_day == day) -- { -- gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar))); -- gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -- private_data->day_width, day_height); -- } -- -+ { -+ /* Hildon: use custom graphics */ -+ if (hildonlike) -+ { -+ gtk_paint_box( GTK_WIDGET (calendar)->style, -+ private_data->main_win, -+ GTK_STATE_NORMAL, -+ GTK_SHADOW_NONE, NULL, -+ GTK_WIDGET (calendar), "active-day", -+ x_left, y_top, -+ HILDON_DAY_WIDTH, -+ HILDON_DAY_HEIGHT); -+ } -+ else -+ { -+ gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar))); -+ gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -+ HILDON_DAY_WIDTH, HILDON_DAY_HEIGHT); -+ } -+ } - if (calendar->marked_date[day-1]) -- gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar))); -+ gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar))); - else -- gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar))); -- -+ gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar))); - if (calendar->selected_day == day) -- gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar))); -+ gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar))); - else -- gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_WIDGET_STATE (calendar)])); -- } -- -- -- g_snprintf (buffer, sizeof (buffer), "%d", day); -- layout = gtk_widget_create_pango_layout (widget, buffer); -- pango_layout_get_pixel_extents (layout, NULL, &logical_rect); -+ gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_WIDGET_STATE (calendar)])); - -- x_loc -= logical_rect.width; -- -- y_loc = y_top + (day_height - logical_rect.height) / 2; -- gdk_draw_layout (private_data->main_win, gc, -- x_loc, y_loc, layout); -- if (calendar->marked_date[day-1] -- && calendar->day_month[row][col] == MONTH_CURRENT) -- gdk_draw_layout (private_data->main_win, gc, -- x_loc-1, y_loc, layout); -+ } - - if (GTK_WIDGET_HAS_FOCUS (calendar) - && calendar->focus_row == row && calendar->focus_col == col) -@@ -2168,9 +2492,9 @@ - GtkStateType state; - - if (calendar->selected_day == day) -- state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE; -+ state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE; - else -- state = GTK_STATE_NORMAL; -+ state = GTK_STATE_NORMAL; - - gtk_paint_focus (widget->style, - private_data->main_win, -@@ -2178,10 +2502,29 @@ - ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, - NULL, widget, "calendar-day", - x_left, y_top, -- private_data->day_width, -- day_height); -+ HILDON_DAY_WIDTH, -+ HILDON_DAY_HEIGHT); - } - -+ /* Hildon: paint green indicator for current day */ -+ if (hildonlike && (day == private_data->current_day && calendar->selected_day != -+ private_data->current_day) && (calendar->day_month[row][col] == MONTH_CURRENT)) -+ gtk_calendar_check_current_date (calendar, x_left, y_top); -+ -+ g_snprintf (buffer, sizeof (buffer), "%d", day); -+ layout = gtk_widget_create_pango_layout (widget, buffer); -+ pango_layout_get_pixel_extents (layout, NULL, &logical_rect); -+ -+ x_loc = x_left + (HILDON_DAY_WIDTH - logical_rect.width) / 2; -+ y_loc = y_top + (HILDON_DAY_HEIGHT - logical_rect.height) / 2; -+ -+ gdk_draw_layout (private_data->main_win, gc, -+ x_loc, y_loc, layout); -+ if (calendar->marked_date[day-1] -+ && calendar->day_month[row][col] == MONTH_CURRENT) -+ gdk_draw_layout (private_data->main_win, gc, -+ x_loc-1, y_loc, layout); -+ - g_object_unref (layout); - } - -@@ -2195,7 +2538,7 @@ - - g_return_if_fail (GTK_IS_CALENDAR (widget)); - g_return_if_fail (widget->window != NULL); -- -+ - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); - -@@ -2208,7 +2551,7 @@ - gdk_window_clear (private_data->main_win); - - /* gtk_calendar_compute_days (calendar); */ /* REMOVE later */ -- -+ - for (col = 0; col < 7; col++) - for (row = 0; row < 6; row++) - gtk_calendar_paint_day (widget, row, col); -@@ -2453,9 +2796,24 @@ - guint month, - guint year) - { -+ gboolean hildonlike; -+ guint min_year, max_year; -+ - g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE); - g_return_val_if_fail (month <= 11, FALSE); - -+ gtk_widget_style_get(GTK_WIDGET (calendar), "hildonlike", &hildonlike, -+ "max-year", &max_year, "min-year", -+ &min_year, NULL); -+ -+ if (hildonlike) -+ { -+ if (year >= max_year) -+ year = max_year; -+ else if (year <= min_year) -+ year = min_year; -+ } -+ - calendar->month = month; - calendar->year = year; - -@@ -2478,12 +2836,30 @@ - gtk_calendar_select_day (GtkCalendar *calendar, - guint day) - { -- g_return_if_fail (GTK_IS_CALENDAR (calendar)); -- g_return_if_fail (day <= 31); -- -- /* gtk_calendar_compute_days (calendar); */ -- -- /* Deselect the old day */ -+ gint row, col; -+ GtkCalendarPrivateData *priv; -+ g_return_if_fail (GTK_IS_CALENDAR (calendar)); -+ g_return_if_fail (day <= 31); -+ priv = GTK_CALENDAR_PRIVATE_DATA (calendar); -+ -+ for (row = 0; row < 6; row ++) -+ for (col = 0; col < 7; col++) -+ { -+ if (calendar->day_month[row][col] == MONTH_CURRENT -+ && calendar->day[row][col] == day) -+ { -+ calendar->focus_row = row; -+ calendar->focus_col = col; -+ } -+ } -+ -+ /* gtk_calendar_compute_days (calendar); */ -+ -+ if (calendar->month != priv->current_month || -+ calendar->year != priv->current_year) -+ gtk_calendar_unmark_day (calendar, priv->current_day); -+ -+ /* Deselect the old day */ - if (calendar->selected_day > 0) - { - gint selected_day; -@@ -2491,20 +2867,25 @@ - selected_day = calendar->selected_day; - calendar->selected_day = 0; - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -- gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); -+ { -+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); -+ } - } - - calendar->selected_day = day; - -+ /*printf("Selected day = %d\n", day);*/ -+ - /* Select the new day */ - if (day != 0) - { - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -- gtk_calendar_paint_day_num (GTK_WIDGET (calendar), day); -+ { -+ gtk_calendar_paint_day_num (GTK_WIDGET (calendar), day); -+ } - } -- -+ - g_object_notify (G_OBJECT (calendar), "day"); -- - g_signal_emit (calendar, - gtk_calendar_signals[DAY_SELECTED_SIGNAL], - 0); -@@ -2560,17 +2941,16 @@ - gtk_calendar_mark_day (GtkCalendar *calendar, - guint day) - { -- g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE); -- -- if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == FALSE) -- { -- calendar->marked_date[day - 1] = TRUE; -- calendar->num_marked_dates++; -- } -- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -- { -- gtk_calendar_paint_main (GTK_WIDGET (calendar)); -- } -+ g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE); -+ if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == FALSE) -+ { -+ calendar->marked_date[day - 1] = TRUE; -+ calendar->num_marked_dates++; -+ } -+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -+ { -+ gtk_calendar_paint_main (GTK_WIDGET (calendar)); -+ } - - return TRUE; - } -@@ -2629,14 +3009,15 @@ - gtk_calendar_set_year_next (calendar); - break; - case ARROW_MONTH_LEFT: -- gtk_calendar_set_month_prev (calendar); -- break; -+ gtk_calendar_set_month_prev (calendar); -+ break; - case ARROW_MONTH_RIGHT: - gtk_calendar_set_month_next (calendar); - break; - default:; - /* do nothing */ - } -+ gtk_calendar_select_and_focus_day(calendar, calendar->selected_day); - } - - static gboolean -@@ -2645,6 +3026,11 @@ - GtkCalendar *calendar = data; - GtkCalendarPrivateData *private_data = GTK_CALENDAR_PRIVATE_DATA (calendar); - gboolean retval = FALSE; -+ GtkSettings *settings; -+ guint timeout; -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL); - - GDK_THREADS_ENTER (); - -@@ -2655,7 +3041,7 @@ - if (private_data->need_timer) - { - private_data->need_timer = FALSE; -- private_data->timer = g_timeout_add (CALENDAR_TIMER_DELAY, -+ private_data->timer = g_timeout_add (/*CALENDAR_TIMER_DELAY*/timeout, - (GSourceFunc) calendar_timer, - (gpointer) calendar); - } -@@ -2673,13 +3059,18 @@ - gint click_child) - { - GtkCalendarPrivateData *private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -+ GtkSettings *settings; -+ guint timeout; - -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-initial-timeout", &timeout, NULL); -+ - private_data->click_child = click_child; - - if (!private_data->timer) - { - private_data->need_timer = TRUE; -- private_data->timer = g_timeout_add (CALENDAR_INITIAL_TIMER_DELAY, -+ private_data->timer = g_timeout_add (/*CALENDAR_INITIAL_TIMER_DELAY*/timeout, - calendar_timer, - (gpointer) widget); - } -@@ -2738,12 +3129,38 @@ - GtkCalendar *calendar; - GtkCalendarPrivateData *private_data; - gint arrow = -1; -- -+ gboolean hildonlike; -+ gint min_year, max_year; -+ - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -+ -+ gtk_widget_style_get(widget, "hildonlike", &hildonlike, -+ "min-year", &min_year, "max-year", &max_year, NULL); - -- if (event->window == private_data->main_win) -- gtk_calendar_main_button (widget, event); -+ if (!hildonlike) -+ { -+ if (event->window == private_data->main_win) -+ gtk_calendar_main_button (widget, event); -+ } -+ else if (hildonlike && (event->window == private_data->main_win)) -+ { -+ gint x = (gint) (event->x); -+ gint y = (gint) (event->y); -+ gint row = row_from_y (calendar, y); -+ gint col = column_from_x (calendar, x); -+ private_data->pressed_day = calendar->day[row][col]; -+ -+ if ((calendar->year == min_year && calendar->month == 0 && calendar->day_month[row][col] == MONTH_PREV) || -+ (calendar->year == max_year && calendar->month == 11 && calendar->day_month[row][col] == MONTH_NEXT)) -+ {} -+ else if (calendar->day_month[row][col] == MONTH_CURRENT) -+ gtk_calendar_select_and_focus_day (calendar, private_data->pressed_day); -+ -+ /* Remember month where button was pressed */ -+ private_data->pressed_month = calendar->month; -+ private_data->slide_stylus = TRUE; -+ } - - if (!GTK_WIDGET_HAS_FOCUS (widget)) - gtk_widget_grab_focus (widget); -@@ -2766,7 +3183,7 @@ - } - } - -- return FALSE; -+ return TRUE; - } - - static gboolean -@@ -2775,16 +3192,45 @@ - { - GtkCalendar *calendar; - GtkCalendarPrivateData *private_data; -+ gboolean hildonlike; - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); - -+ gtk_widget_style_get(widget, "hildonlike", &hildonlike, -+ NULL); -+ -+ if (hildonlike && (event->window == private_data->main_win)) -+ { -+ gtk_calendar_main_button (widget, event); -+ gint x = (gint) (event->x); -+ gint y = (gint) (event->y); -+ gint row = row_from_y (calendar, y); -+ gint col = column_from_x (calendar, x); -+ private_data->prev_col = -1; -+ private_data->prev_row = -1; -+ -+ if ((private_data->pressed_day == calendar->day[row][col]) && -+ (private_data->pressed_month == calendar->month)) -+ { -+ if (!private_data->is_bad_day) -+ { -+ g_signal_emit (calendar, gtk_calendar_signals[SELECTED_DATE_SIGNAL], 0); -+ } -+ else -+ { -+ private_data->is_bad_day = FALSE; -+ } -+ } -+ private_data->slide_stylus = FALSE; -+ } -+ - if (event->button == 1) - { - stop_spinning (widget); - - if (private_data->in_drag) -- private_data->in_drag = 0; -+ private_data->in_drag = 0; - } - - return TRUE; -@@ -2799,15 +3245,42 @@ - gint event_x, event_y; - gint row, col; - gint old_row, old_col; -+ gboolean hildonlike; - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); - event_x = (gint) (event->x); - event_y = (gint) (event->y); -- -+ -+ gtk_widget_style_get(widget, "hildonlike", &hildonlike, -+ NULL); -+ - if (event->window == private_data->main_win) - { -- -+ if (hildonlike) -+ { -+ /* Hildon: make active day to move, when stylus is slided */ -+ if (private_data->slide_stylus) -+ { -+ gint c_row = row_from_y (calendar, event_y); -+ gint c_col = column_from_x (calendar, event_x); -+ -+ if (calendar->day_month[c_row][c_col] == MONTH_PREV || -+ calendar->day_month[c_row][c_col] == MONTH_NEXT) -+ { } -+ else if ((private_data->prev_row != c_row || private_data->prev_col != c_col) && -+ (calendar->highlight_row != -1 && calendar->highlight_col != -1)) -+ { -+ gtk_calendar_select_and_focus_day (calendar, -+ calendar->day[c_row][c_col]); -+ /* Update passive focus indicators work weekday number and name */ -+ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar)); -+ gtk_calendar_paint_day_names (GTK_WIDGET (calendar)); -+ } -+ private_data->prev_col = c_col; -+ private_data->prev_row = c_row; -+ } -+ } - if (private_data->in_drag) - { - if (gtk_drag_check_threshold (widget, -@@ -2847,7 +3320,7 @@ - calendar->highlight_col = col; - - if (row > -1 && col > -1) -- gtk_calendar_paint_day (widget, row, col); -+ gtk_calendar_paint_day (widget, row, col); - } - } - } -@@ -2863,7 +3336,7 @@ - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -- -+ - if (event->window == private_data->arrow_win[ARROW_MONTH_LEFT]) - { - private_data->arrow_state[ARROW_MONTH_LEFT] = GTK_STATE_PRELIGHT; -@@ -2902,7 +3375,7 @@ - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -- -+ - if (event->window == private_data->main_win) - { - row = calendar->highlight_row; -@@ -2910,7 +3383,7 @@ - calendar->highlight_row = -1; - calendar->highlight_col = -1; - if (row > -1 && col > -1) -- gtk_calendar_paint_day (widget, row, col); -+ gtk_calendar_paint_day (widget, row, col); - } - - if (event->window == private_data->arrow_win[ARROW_MONTH_LEFT]) -@@ -2949,10 +3422,14 @@ - GdkGC *gc; - GtkCalendar *calendar; - gint state; -- gint width, height; -+ gint max_year, min_year; -+ gboolean hildonlike; -+/* gint width, height;*/ - - calendar = GTK_CALENDAR (widget); - private_data = GTK_CALENDAR_PRIVATE_DATA (widget); -+ gtk_widget_style_get (widget, "hildonlike", &hildonlike, "max-year", -+ &max_year, "min-year", &min_year, NULL); - - if (private_data->freeze_count) - { -@@ -2965,23 +3442,81 @@ - state = private_data->arrow_state[arrow]; - gc = calendar->gc; - -- gdk_window_clear (window); -+/* gdk_window_clear (window);*/ - gdk_window_set_background (window, &(widget)->style->bg[state]); -- gdk_drawable_get_size (window, &width, &height); -- gdk_window_clear_area (window, -+/* gdk_drawable_get_size (window, &width, &height);*/ -+/* gdk_window_clear_area (window, - 0,0, -- width,height); -- if (arrow == ARROW_MONTH_LEFT || arrow == ARROW_YEAR_LEFT) -- gtk_paint_arrow (widget->style, window, state, -+ width,height);*/ -+ -+ gdk_window_clear(window); -+ -+ /* Hildon: added support for dimmed arrows */ -+ if (hildonlike && (calendar->year <= min_year || calendar->year >= max_year)) -+ { -+ if (calendar->year <= min_year) -+ { -+ if (arrow == ARROW_YEAR_LEFT) -+ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_LEFT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else if (arrow == ARROW_YEAR_RIGHT || arrow == ARROW_MONTH_RIGHT) -+ gtk_paint_arrow (widget->style, window, state, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_RIGHT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else if (arrow == ARROW_MONTH_LEFT && calendar->month != 0) -+ gtk_paint_arrow (widget->style, window, state, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_LEFT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else if (arrow == ARROW_MONTH_LEFT && !calendar->month) -+ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_LEFT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ } -+ else if (calendar->year >= max_year) -+ { -+ if (arrow == ARROW_YEAR_RIGHT) -+ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_RIGHT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else if (arrow == ARROW_YEAR_LEFT || arrow == ARROW_MONTH_LEFT) -+ gtk_paint_arrow (widget->style, window, state, - GTK_SHADOW_OUT, NULL, widget, "calendar", - GTK_ARROW_LEFT, TRUE, -- width/2 - 3, height/2 - 4, 8, 8); -- else -- gtk_paint_arrow (widget->style, window, state, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else if (arrow == ARROW_MONTH_RIGHT && calendar->month != 11) -+ gtk_paint_arrow (widget->style, window, state, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_RIGHT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else if (arrow == ARROW_MONTH_RIGHT && calendar->month == 11) -+ gtk_paint_arrow (widget->style, window, GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_RIGHT, TRUE, -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ } -+ } -+ else -+ { -+ if (arrow == ARROW_MONTH_LEFT || arrow == ARROW_YEAR_LEFT) -+ gtk_paint_arrow (widget->style, window, state, -+ GTK_SHADOW_OUT, NULL, widget, "calendar", -+ GTK_ARROW_LEFT, TRUE, -+ /* width/2 - 3, height/2 - 4, 8, 8);*/ -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ else -+ gtk_paint_arrow (widget->style, window, state, - GTK_SHADOW_OUT, NULL, widget, "calendar", - GTK_ARROW_RIGHT, TRUE, -- width/2 - 2, height/2 - 4, 8, 8); -- } -+ /* width/2 - 2, height/2 - 4, 8, 8);*/ -+ 0, 0, HILDON_ARROW_WIDTH, HILDON_ARROW_HEIGHT); -+ } -+ } - } - - void -@@ -3159,17 +3694,26 @@ - GdkEventKey *event) - { - GtkCalendar *calendar; -+ GtkSettings *settings; - gint return_val; - gint old_focus_row; - gint old_focus_col; - gint row, col, day; -- -+ gint min_year, max_year; -+ gboolean knav; -+ - calendar = GTK_CALENDAR (widget); - return_val = FALSE; - - old_focus_row = calendar->focus_row; - old_focus_col = calendar->focus_col; - -+ gtk_widget_style_get (widget, "max-year", &max_year, -+ "min-year", &min_year, NULL); -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "hildon-keyboard-navigation", &knav, NULL); -+ - switch (event->keyval) - { - case GDK_KP_Left: -@@ -3179,10 +3723,41 @@ - gtk_calendar_set_month_prev (calendar); - else - { -- move_focus (calendar, -1); -- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -- gtk_calendar_paint_day (widget, calendar->focus_row, -- calendar->focus_col); -+ /* if we are at the first allowed day of the minimum year/month then do nothing */ -+ if (calendar->year == min_year && calendar->month == 0 && calendar->day_month[old_focus_row][old_focus_col-1] == MONTH_PREV) -+ { -+ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0); -+ return TRUE; -+ } -+ else /* else normal */ -+ { -+ move_focus (calendar, -1); -+ if (!knav) -+ { -+ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -+ gtk_calendar_paint_day (widget, calendar->focus_row, -+ calendar->focus_col); -+ } -+ else if (knav) -+ { -+ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col]; -+ if (day_month == MONTH_CURRENT && calendar->selected_day != 1) -+ { -+ gtk_calendar_select_day(calendar, calendar->selected_day - 1); -+ } -+ else -+ { -+ if (calendar->month != 0) { -+ calendar->selected_day = month_length[leap (calendar->year)][calendar->month]; -+ } else { -+ calendar->selected_day = month_length[leap (calendar->year -1)][12]; -+ } -+ gtk_calendar_set_month_prev (calendar); -+ } -+ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar)); -+ gtk_calendar_paint_day_names (GTK_WIDGET (calendar)); -+ } -+ } - } - break; - case GDK_KP_Right: -@@ -3192,10 +3767,36 @@ - gtk_calendar_set_month_next (calendar); - else - { -- move_focus (calendar, 1); -- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -- gtk_calendar_paint_day (widget, calendar->focus_row, -- calendar->focus_col); -+ if (calendar->year == max_year && calendar->month == 11 && calendar->day_month[old_focus_row][old_focus_col+1] == MONTH_NEXT) -+ { -+ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0); -+ return TRUE; -+ } -+ else -+ { -+ move_focus (calendar, 1); -+ if (!knav) -+ { -+ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -+ gtk_calendar_paint_day (widget, calendar->focus_row, -+ calendar->focus_col); -+ } -+ else if (knav) -+ { -+ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col]; -+ if (day_month == MONTH_CURRENT) -+ { -+ gtk_calendar_select_day (calendar, calendar->selected_day + 1); -+ } -+ else -+ { -+ calendar->selected_day = 1; -+ gtk_calendar_set_month_next (calendar); -+ } -+ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar)); -+ gtk_calendar_paint_day_names (GTK_WIDGET (calendar)); -+ } -+ } - } - break; - case GDK_KP_Up: -@@ -3205,11 +3806,48 @@ - gtk_calendar_set_year_prev (calendar); - else - { -- if (calendar->focus_row > 0) -- calendar->focus_row--; -- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -- gtk_calendar_paint_day (widget, calendar->focus_row, -- calendar->focus_col); -+ if (calendar->year == min_year && calendar->month == 0 && calendar->day_month[old_focus_row-1][old_focus_col] == MONTH_PREV) -+ { -+ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0); -+ return TRUE; -+ } -+ else -+ { -+ if (calendar->focus_row > 0) -+ calendar->focus_row--; -+ if (!knav) -+ { -+ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -+ gtk_calendar_paint_day (widget, calendar->focus_row, -+ calendar->focus_col); -+ } -+ else if (knav) -+ { -+ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col]; -+ if (day_month == MONTH_CURRENT) -+ { -+ if ((calendar->selected_day - 7) <= 0) -+ { -+ if (calendar->month != 0) -+ calendar->selected_day = month_length[leap (calendar->year)][calendar->month]; -+ else -+ calendar->selected_day = month_length[leap (calendar->year - 1)][12]; -+ gtk_calendar_set_month_prev (calendar); -+ } -+ else -+ { -+ gtk_calendar_select_day (calendar, calendar->selected_day - 7); -+ } -+ } -+ else -+ { -+ calendar->selected_day = calendar->day[calendar->focus_row][calendar->focus_col]; -+ gtk_calendar_set_month_prev (calendar); -+ } -+ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar)); -+ gtk_calendar_paint_day_names (GTK_WIDGET (calendar)); -+ } -+ } - } - break; - case GDK_KP_Down: -@@ -3219,12 +3857,49 @@ - gtk_calendar_set_year_next (calendar); - else - { -- if (calendar->focus_row < 5) -- calendar->focus_row++; -- gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -- gtk_calendar_paint_day (widget, calendar->focus_row, -- calendar->focus_col); -+ if (calendar->year == max_year && calendar->month == 11 && calendar->day_month[old_focus_row+1][old_focus_col] == MONTH_NEXT) -+ { -+ g_signal_emit (calendar, gtk_calendar_signals[ERRONEOUS_DATE_SIGNAL], 0); -+ return TRUE; -+ } -+ else -+ { -+ -+ if (calendar->focus_row < 5) -+ calendar->focus_row++; -+ if (!knav) -+ { -+ gtk_calendar_paint_day (widget, old_focus_row, old_focus_col); -+ gtk_calendar_paint_day (widget, calendar->focus_row, -+ calendar->focus_col); -+ } -+ else if (knav) -+ { -+ gint day_month = calendar->day_month[calendar->focus_row][calendar->focus_col]; -+ if (day_month == MONTH_CURRENT) -+ { -+ if ((calendar->selected_day + 7) > -+ month_length[leap (calendar->year)][calendar->month + 1]) -+ { -+ calendar->selected_day = 1; -+ gtk_calendar_set_month_next (calendar); -+ } -+ else -+ { -+ gtk_calendar_select_day (calendar, calendar->selected_day + 7); -+ } -+ } -+ else -+ { -+ calendar->selected_day = calendar->day[calendar->focus_row][calendar->focus_col]; -+ gtk_calendar_set_month_next (calendar); -+ } -+ gtk_calendar_paint_week_numbers (GTK_WIDGET (calendar)); -+ gtk_calendar_paint_day_names (GTK_WIDGET (calendar)); -+ } -+ } - } -+ - break; - case GDK_KP_Space: - case GDK_space: -@@ -3545,3 +4220,27 @@ - gtk_calendar_select_day (calendar, day); - g_object_thaw_notify (G_OBJECT (calendar)); - } -+ -+/* This function return TRUE if we should mark date and FALSE -+ * otherwise -+ */ -+static void -+gtk_calendar_check_current_date (GtkCalendar *calendar, gint x, gint y) -+{ -+ GtkCalendarPrivateData *private_data; -+ -+ private_data = GTK_CALENDAR_PRIVATE_DATA (calendar); -+ -+ if (calendar->month == private_data->current_month && -+ calendar->year == private_data->current_year) -+ { -+ gtk_paint_box( GTK_WIDGET (calendar)->style, -+ private_data->main_win, -+ GTK_STATE_NORMAL, -+ GTK_SHADOW_NONE, NULL, -+ GTK_WIDGET (calendar), "current-day", -+ x, y, -+ HILDON_DAY_WIDTH, -+ HILDON_DAY_HEIGHT); -+ } -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff deleted file mode 100644 index 185d27e8a2..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcalendar.h.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcalendar.h 2003-05-08 03:25:48.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkcalendar.h 2005-04-06 16:19:36.267024936 +0300 -@@ -111,6 +111,9 @@ - void (* next_month) (GtkCalendar *calendar); - void (* prev_year) (GtkCalendar *calendar); - void (* next_year) (GtkCalendar *calendar); -+ /* Hildon signals */ -+ void (* erroneous_date) (GtkCalendar *calendar); -+ void (* selected_date) (GtkCalendar *calendar); - - }; - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff deleted file mode 100644 index b24c26120a..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertext.c.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcellrenderertext.c 2005-01-09 19:32:25.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcellrenderertext.c 2005-04-06 16:19:36.274023872 +0300 -@@ -182,8 +182,8 @@ - - GTK_CELL_RENDERER (celltext)->xalign = 0.0; - GTK_CELL_RENDERER (celltext)->yalign = 0.5; -- GTK_CELL_RENDERER (celltext)->xpad = 2; -- GTK_CELL_RENDERER (celltext)->ypad = 2; -+ GTK_CELL_RENDERER (celltext)->xpad = 0; -+ GTK_CELL_RENDERER (celltext)->ypad = 0; - celltext->fixed_height_rows = -1; - celltext->font = pango_font_description_new (); - -@@ -1429,7 +1429,7 @@ - /* The minimum size for ellipsized labels is ~ 3 chars */ - if (width) - { -- if (priv->ellipsize || priv->width_chars > 0) -+ /*if (priv->ellipsize || priv->width_chars > 0) - { - PangoContext *context; - PangoFontMetrics *metrics; -@@ -1444,9 +1444,9 @@ - *width += (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3)); - } - else -- { -+ {*/ - *width = GTK_CELL_RENDERER (celltext)->xpad * 2 + rect.width; -- } -+ /*} */ - } - - if (cell_area) -@@ -1501,6 +1501,7 @@ - gint x_offset; - gint y_offset; - GtkCellRendererTextPrivate *priv; -+ PangoRectangle logical_rect; - - priv = GTK_CELL_RENDERER_TEXT_GET_PRIVATE (cell); - -@@ -1521,7 +1522,7 @@ - else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT && - GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT) - { -- state = GTK_STATE_PRELIGHT; -+ state = GTK_STATE_NORMAL; - } - else - { -@@ -1559,6 +1560,14 @@ - g_object_unref (gc); - } - -+ /* Dirty Hildon hack to force ellipsation */ -+ pango_layout_get_extents (layout, NULL, &logical_rect); -+ if (PANGO_PIXELS (logical_rect.width) > MIN (background_area->width, expose_area->width)) -+ { -+ priv->ellipsize = PANGO_ELLIPSIZE_END; -+ priv->ellipsize_set = TRUE; -+ } -+ - if (priv->ellipsize) - pango_layout_set_width (layout, - (cell_area->width - x_offset - 2 * cell->xpad) * PANGO_SCALE); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff deleted file mode 100644 index f6d47f2174..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellrenderertoggle.c.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcellrenderertoggle.c 2004-08-09 19:59:51.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkcellrenderertoggle.c 2005-04-06 16:19:36.274023872 +0300 -@@ -71,7 +71,7 @@ - PROP_INCONSISTENT - }; - --#define TOGGLE_WIDTH 12 -+#define TOGGLE_WIDTH 26 - - static guint toggle_cell_signals[LAST_SIGNAL] = { 0 }; - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff deleted file mode 100644 index a6dbfc6a4a..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.c.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcellview.c 2004-12-15 18:27:30.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcellview.c 2005-04-06 16:19:36.275023720 +0300 -@@ -82,7 +82,6 @@ - GValue *value); - static GtkCellViewCellInfo *gtk_cell_view_get_cell_info (GtkCellView *cellview, - GtkCellRenderer *renderer); --static void gtk_cell_view_set_cell_data (GtkCellView *cell_view); - - - static void gtk_cell_view_cell_layout_pack_start (GtkCellLayout *layout, -@@ -536,7 +535,7 @@ - return NULL; - } - --static void -+void - gtk_cell_view_set_cell_data (GtkCellView *cell_view) - { - GList *i; diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff deleted file mode 100644 index eb46720a90..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcellview.h.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcellview.h 2004-12-15 18:27:30.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcellview.h 2005-04-06 16:19:36.317017336 +0300 -@@ -67,6 +67,7 @@ - - void gtk_cell_view_set_background_color (GtkCellView *cell_view, - const GdkColor *color); -+void gtk_cell_view_set_cell_data (GtkCellView *cellview); - GList *gtk_cell_view_get_cell_renderers (GtkCellView *cell_view); - - G_END_DECLS diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff deleted file mode 100644 index c6922ddc16..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcheckbutton.c.diff +++ /dev/null @@ -1,520 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcheckbutton.c 2004-08-09 19:59:51.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkcheckbutton.c 2005-04-06 16:19:36.317017336 +0300 -@@ -31,27 +31,44 @@ - #include "gtklabel.h" - - --#define INDICATOR_SIZE 13 -+#define INDICATOR_SIZE 24 - #define INDICATOR_SPACING 2 - -+/* maJiK numbers for indicator */ -+#define INDICATOR_SIDE_PADDING 5 -+#define FOCUS_TOP_PADDING 7 -+#define FOCUS_DOWN_PADDING 1 -+ -+/* spacing to take account of the 1 pixel -+ transparency of the widgetfocus.png -+*/ -+#define HILDON_SPACING 1 -+ -+#define TOGGLE_ON_CLICK "toggle-on-click" - --static void gtk_check_button_class_init (GtkCheckButtonClass *klass); --static void gtk_check_button_init (GtkCheckButton *check_button); --static void gtk_check_button_size_request (GtkWidget *widget, -- GtkRequisition *requisition); --static void gtk_check_button_size_allocate (GtkWidget *widget, -- GtkAllocation *allocation); --static gint gtk_check_button_expose (GtkWidget *widget, -- GdkEventExpose *event); --static void gtk_check_button_paint (GtkWidget *widget, -- GdkRectangle *area); --static void gtk_check_button_draw_indicator (GtkCheckButton *check_button, -- GdkRectangle *area); --static void gtk_real_check_button_draw_indicator (GtkCheckButton *check_button, -- GdkRectangle *area); -+static void gtk_check_button_class_init (GtkCheckButtonClass *klass); -+static void gtk_check_button_init (GtkCheckButton *check_button); -+static void gtk_check_button_size_request (GtkWidget *widget, -+ GtkRequisition *requisition); -+static void gtk_check_button_size_allocate (GtkWidget *widget, -+ GtkAllocation *allocation); -+static gint gtk_check_button_expose (GtkWidget *widget, -+ GdkEventExpose *event); -+static void gtk_check_button_paint (GtkWidget *widget, -+ GdkRectangle *area); -+static void gtk_check_button_draw_indicator (GtkCheckButton *check_button, -+ GdkRectangle *area); -+static void gtk_real_check_button_draw_indicator -+ (GtkCheckButton *check_button, -+ GdkRectangle *area); - --static GtkToggleButtonClass *parent_class = NULL; -+static void gtk_check_button_calc_indicator_size( GtkCheckButton *button, -+ GdkRectangle *rect ); -+ -+static void gtk_check_button_clicked (GtkButton *button); -+static void gtk_check_button_update_state (GtkButton *button); - -+static GtkToggleButtonClass *parent_class = NULL; - - GType - gtk_check_button_get_type (void) -@@ -85,32 +102,36 @@ - gtk_check_button_class_init (GtkCheckButtonClass *class) - { - GtkWidgetClass *widget_class; -- -+ GtkButtonClass *button_class; -+ - widget_class = (GtkWidgetClass*) class; -+ button_class = (GtkButtonClass*) class; - parent_class = g_type_class_peek_parent (class); - - widget_class->size_request = gtk_check_button_size_request; - widget_class->size_allocate = gtk_check_button_size_allocate; - widget_class->expose_event = gtk_check_button_expose; - -+ button_class->clicked = gtk_check_button_clicked; -+ - class->draw_indicator = gtk_real_check_button_draw_indicator; - - gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("indicator_size", -- P_("Indicator Size"), -- P_("Size of check or radio indicator"), -- 0, -- G_MAXINT, -- INDICATOR_SIZE, -- G_PARAM_READABLE)); -+ P_("Indicator Size"), -+ P_("Size of check or radio indicator"), -+ 0, -+ G_MAXINT, -+ INDICATOR_SIZE, -+ G_PARAM_READABLE)); - gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("indicator_spacing", -- P_("Indicator Spacing"), -- P_("Spacing around check or radio indicator"), -- 0, -- G_MAXINT, -- INDICATOR_SPACING, -- G_PARAM_READABLE)); -+ P_("Indicator Spacing"), -+ P_("Spacing around check or radio indicator"), -+ 0, -+ G_MAXINT, -+ INDICATOR_SPACING, -+ G_PARAM_READABLE)); - } - - static void -@@ -148,7 +169,8 @@ - GtkWidget* - gtk_check_button_new_with_mnemonic (const gchar *label) - { -- return g_object_new (GTK_TYPE_CHECK_BUTTON, "label", label, "use_underline", TRUE, NULL); -+ return g_object_new (GTK_TYPE_CHECK_BUTTON, "label", label, -+ "use_underline", TRUE, NULL); - } - - -@@ -163,39 +185,70 @@ - - if (GTK_WIDGET_DRAWABLE (widget)) - { -- gint border_width; -- gint interior_focus; -- gint focus_width; -- gint focus_pad; -- -+ gint border_width = 0; -+ gint interior_focus = 0; -+ gint focus_width = 0; -+ gint focus_pad = 0; -+ gint indicator_size = 0; -+ gint indicator_spacing = 0; -+ - gtk_widget_style_get (widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, -+ "indicator-size", &indicator_size, -+ "indicator-spacing", &indicator_spacing, - NULL); -- -- gtk_check_button_draw_indicator (check_button, area); - - border_width = GTK_CONTAINER (widget)->border_width; -+ -+ /* Hildon: change the focus so that it draws around the entire -+ * widget - including both the indicator *and* the label -+ */ - if (GTK_WIDGET_HAS_FOCUS (widget)) - { - GtkWidget *child = GTK_BIN (widget)->child; - -+ int w = indicator_size + 2 * indicator_spacing + -+ 2 * (focus_width + focus_pad); -+ int h = indicator_size + 2 * indicator_spacing + -+ 2 * (focus_width + focus_pad) + 2 * HILDON_SPACING -+ - FOCUS_TOP_PADDING; -+ int x = widget->allocation.x; -+ int y = widget->allocation.y + (widget->allocation.height - h)/2 -+ + FOCUS_DOWN_PADDING; -+ -+ if (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL) -+ x = widget->allocation.x + widget->allocation.width - -+ (2 * HILDON_SPACING) - (indicator_size + 2) - -+ (indicator_spacing + 2); -+ - if (interior_focus && child && GTK_WIDGET_VISIBLE (child)) -- gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget), -- NULL, widget, "checkbutton", -- child->allocation.x - focus_width - focus_pad, -- child->allocation.y - focus_width - focus_pad, -- child->allocation.width + 2 * (focus_width + focus_pad), -- child->allocation.height + 2 * (focus_width + focus_pad)); -+ { -+ if (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL) -+ { -+ /* Move the "x" to the left, and enlarge the width, -+ both accounting for the child -+ */ -+ x += - child->allocation.width - HILDON_SPACING - -+ (widget->style->xthickness); -+ w += child->allocation.width + HILDON_SPACING + -+ (widget->style->xthickness); -+ } else { -+ w = child->allocation.x + child->allocation.width + -+ 2 * widget->style->xthickness - x; -+ } -+ -+ gtk_paint_focus (widget->style, widget->window, -+ GTK_WIDGET_STATE (widget), -+ NULL, widget, "checkbutton", x, y, w, h); -+ } - else -- gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget), -- NULL, widget, "checkbutton", -- border_width + widget->allocation.x, -- border_width + widget->allocation.y, -- widget->allocation.width - 2 * border_width, -- widget->allocation.height - 2 * border_width); -+ gtk_paint_focus (widget->style, widget->window, -+ GTK_WIDGET_STATE (widget), -+ NULL, widget, "checkbutton", x, y, w, h); - } -+ gtk_check_button_draw_indicator (check_button, area); - } - } - -@@ -205,10 +258,10 @@ - gint *indicator_spacing) - { - GtkWidget *widget = GTK_WIDGET (check_button); -- -+ - if (indicator_size) - gtk_widget_style_get (widget, "indicator_size", indicator_size, NULL); -- -+ - if (indicator_spacing) - gtk_widget_style_get (widget, "indicator_spacing", indicator_spacing, NULL); - } -@@ -233,7 +286,7 @@ - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); -- -+ - requisition->width = border_width * 2; - requisition->height = border_width * 2; - -@@ -246,15 +299,19 @@ - GtkRequisition child_requisition; - - gtk_widget_size_request (child, &child_requisition); -- -- requisition->width += child_requisition.width + indicator_spacing; -+ -+ requisition->width += child_requisition.width + -+ 2 * widget->style->xthickness; - requisition->height += child_requisition.height; -+ requisition->width += 2 * widget->style->xthickness; - } - -- requisition->width += (indicator_size + indicator_spacing * 2 + 2 * (focus_width + focus_pad)); -+ requisition->width += (indicator_size + indicator_spacing * 2 + -+ 2 * (focus_width + focus_pad)); - - temp = indicator_size + indicator_spacing * 2; -- requisition->height = MAX (requisition->height, temp) + 2 * (focus_width + focus_pad); -+ requisition->height = MAX (requisition->height, temp) + -+ 2 * (focus_width + focus_pad); - } - else - (* GTK_WIDGET_CLASS (parent_class)->size_request) (widget, requisition); -@@ -280,45 +337,59 @@ - gint focus_width; - gint focus_pad; - -- _gtk_check_button_get_props (check_button, &indicator_size, &indicator_spacing); -+ _gtk_check_button_get_props (check_button, -+ &indicator_size, &indicator_spacing); - gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); -- -+ - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (button->event_window, - allocation->x, allocation->y, - allocation->width, allocation->height); - -- if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child)) -+ if (GTK_BIN (button)->child && -+ GTK_WIDGET_VISIBLE (GTK_BIN (button)->child)) - { - GtkRequisition child_requisition; - gint border_width = GTK_CONTAINER (widget)->border_width; -- -- gtk_widget_get_child_requisition (GTK_BIN (button)->child, &child_requisition); -+ -+ gtk_widget_get_child_requisition (GTK_BIN (button)->child, -+ &child_requisition); - -- child_allocation.width = MIN (child_requisition.width, -+ child_allocation.width = MIN ( -+ child_requisition.width, - allocation->width - -- ((border_width + focus_width + focus_pad) * 2 -- + indicator_size + indicator_spacing * 3)); -- child_allocation.width = MAX (child_allocation.width, 1); -+ ((border_width + focus_width + -+ focus_pad) * 2 -+ - 2 * widget->style->xthickness + -+ indicator_size + -+ indicator_spacing * 2 ) ); - -+ child_allocation.width = MAX (child_allocation.width, 1); -+ - child_allocation.height = MIN (child_requisition.height, -- allocation->height - (border_width + focus_width + focus_pad) * 2); -+ allocation->height - -+ (border_width + focus_width + -+ focus_pad) * 2); - child_allocation.height = MAX (child_allocation.height, 1); - -- child_allocation.x = (border_width + indicator_size + indicator_spacing * 3 + -- widget->allocation.x + focus_width + focus_pad); -+ child_allocation.x = (border_width + indicator_size + -+ indicator_spacing * 2 + -+ widget->style->xthickness + -+ widget->allocation.x + -+ focus_width + focus_pad); - child_allocation.y = widget->allocation.y + -- (allocation->height - child_allocation.height) / 2; -- -+ (allocation->height - child_allocation.height) / 2; -+ - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- child_allocation.x = allocation->x + allocation->width -- - (child_allocation.x - allocation->x + child_allocation.width); -+ child_allocation.x = allocation->x + allocation->width - -+ (child_allocation.x - allocation->x + child_allocation.width); - -- gtk_widget_size_allocate (GTK_BIN (button)->child, &child_allocation); -+ gtk_widget_size_allocate (GTK_BIN (button)->child, -+ &child_allocation); - } - } - else -@@ -375,45 +446,33 @@ - GdkRectangle *area) - { - GtkWidget *widget; -- GtkWidget *child; - GtkButton *button; - GtkToggleButton *toggle_button; - GtkStateType state_type; - GtkShadowType shadow_type; -- gint x, y; -- gint indicator_size; -- gint indicator_spacing; -- gint focus_width; -- gint focus_pad; -- gboolean interior_focus; -+ -+ GdkRectangle indicator = {0, 0, 0, 0}; - - if (GTK_WIDGET_DRAWABLE (check_button)) - { - widget = GTK_WIDGET (check_button); - button = GTK_BUTTON (check_button); - toggle_button = GTK_TOGGLE_BUTTON (check_button); -- -- gtk_widget_style_get (widget, "interior_focus", &interior_focus, -- "focus-line-width", &focus_width, -- "focus-padding", &focus_pad, NULL); -- -- _gtk_check_button_get_props (check_button, &indicator_size, &indicator_spacing); -- -- x = widget->allocation.x + indicator_spacing + GTK_CONTAINER (widget)->border_width; -- y = widget->allocation.y + (widget->allocation.height - indicator_size) / 2; -- -- child = GTK_BIN (check_button)->child; -- if (!interior_focus || !(child && GTK_WIDGET_VISIBLE (child))) -- x += focus_width + focus_pad; -- -+ gtk_check_button_calc_indicator_size( check_button, &indicator ); -+ -+ /* move indicator to root coordinates */ -+ indicator.x += widget->allocation.x; -+ indicator.y += widget->allocation.y; -+ - if (toggle_button->inconsistent) - shadow_type = GTK_SHADOW_ETCHED_IN; - else if (toggle_button->active) - shadow_type = GTK_SHADOW_IN; - else - shadow_type = GTK_SHADOW_OUT; -- -- if (button->activate_timeout || (button->button_down && button->in_button)) -+ -+ if (button->activate_timeout || -+ (button->button_down && button->in_button)) - state_type = GTK_STATE_ACTIVE; - else if (button->in_button) - state_type = GTK_STATE_PRELIGHT; -@@ -422,32 +481,107 @@ - else - state_type = GTK_STATE_NORMAL; - -- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- x = widget->allocation.x + widget->allocation.width - (indicator_size + x - widget->allocation.x); -+ /* Hildon change. We want to draw active image always when we have -+ * focus. */ -+ if (GTK_WIDGET_HAS_FOCUS (widget)) -+ state_type = GTK_STATE_ACTIVE; - -- if (GTK_WIDGET_STATE (toggle_button) == GTK_STATE_PRELIGHT) -+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) - { -- GdkRectangle restrict_area; -- GdkRectangle new_area; -- -- restrict_area.x = widget->allocation.x + GTK_CONTAINER (widget)->border_width; -- restrict_area.y = widget->allocation.y + GTK_CONTAINER (widget)->border_width; -- restrict_area.width = widget->allocation.width - (2 * GTK_CONTAINER (widget)->border_width); -- restrict_area.height = widget->allocation.height - (2 * GTK_CONTAINER (widget)->border_width); -+ indicator.x = widget->allocation.x + widget->allocation.width -+ - (indicator.width + indicator.x - widget->allocation.x); - -- if (gdk_rectangle_intersect (area, &restrict_area, &new_area)) -- { -- gtk_paint_flat_box (widget->style, widget->window, GTK_STATE_PRELIGHT, -- GTK_SHADOW_ETCHED_OUT, -- area, widget, "checkbutton", -- new_area.x, new_area.y, -- new_area.width, new_area.height); -- } - } - - gtk_paint_check (widget->style, widget->window, - state_type, shadow_type, - area, widget, "checkbutton", -- x, y, indicator_size, indicator_size); -+ indicator.x, indicator.y, -+ indicator.width, indicator.height); -+ } -+} -+ -+ -+/* calculates the size and position of the indicator -+ * relative to the origin of the check button. -+ */ -+static void gtk_check_button_calc_indicator_size( GtkCheckButton *button, -+ GdkRectangle *rect ) -+{ -+ gint indicator_size; -+ gint indicator_spacing; -+ gint focus_width; -+ gint focus_pad; -+ gboolean interior_focus; -+ GtkWidget *child; -+ GtkWidget *widget = GTK_WIDGET(button); -+ -+ -+ gtk_widget_style_get (widget, "interior_focus", &interior_focus, -+ "focus-line-width", &focus_width, -+ "focus-padding", &focus_pad, -+ "indicator-size", &indicator_size, -+ "indicator-spacing", &indicator_spacing, -+ NULL -+ ); -+ -+ -+ /* HILDON: We want the indicator to be positioned according to the spec. -+ * -+ * NOTE: INDICATOR_SIDE_PADDING and INDICATOR_TOP_PADDING -+ * are maJiKal numbers that make the indicator to be drawn -+ * to correct coordinates, 1337 \o/ -+ */ -+ rect->x = INDICATOR_SIDE_PADDING; -+ rect->y = ( widget->allocation.height - indicator_size ) / 2; -+ -+ /* Hildon: we always add space for the focus */ -+ rect->x += focus_width + focus_pad; -+ -+ child = GTK_BIN (widget)->child; -+ if (interior_focus && child && GTK_WIDGET_VISIBLE (child)) -+ { -+ rect->y += HILDON_SPACING; - } -+ -+ rect->width = indicator_size; -+ rect->height = indicator_size; - } -+ -+static void -+gtk_check_button_clicked (GtkButton *button) -+{ -+ GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button); -+ -+ toggle_button->active = !toggle_button->active; -+ gtk_toggle_button_toggled (toggle_button); -+ -+ gtk_check_button_update_state (button); -+ -+ g_object_notify (G_OBJECT (toggle_button), "active"); -+} -+ -+static void -+gtk_check_button_update_state (GtkButton *button) -+{ -+ GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button); -+ gboolean depressed; -+ GtkStateType new_state; -+ -+ if (toggle_button->inconsistent) -+ depressed = FALSE; -+ else if (button->in_button && button->button_down) -+ depressed = TRUE; -+ else -+ depressed = toggle_button->active; -+ -+ if (button->in_button && -+ (!button->button_down || toggle_button->draw_indicator)) -+ new_state = GTK_STATE_PRELIGHT; -+ else -+ new_state = depressed ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL; -+ -+ _gtk_button_set_depressed (button, depressed); -+ gtk_widget_set_state (GTK_WIDGET (toggle_button), new_state); -+} -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff deleted file mode 100644 index 2376beaeaa..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcombobox.c.diff +++ /dev/null @@ -1,950 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcombobox.c 2005-02-25 21:11:08.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcombobox.c 2005-04-06 16:19:36.406003808 +0300 -@@ -17,6 +17,10 @@ - * Boston, MA 02111-1307, USA. - */ - -+/* -+ * Modified for Nokia Oyj during 2002-2004. -+ */ -+ - #include <config.h> - #include "gtkalias.h" - #include "gtkcombobox.h" -@@ -39,6 +43,8 @@ - #include "gtktreeselection.h" - #include "gtkvseparator.h" - #include "gtkwindow.h" -+#include "gtkcomboboxentry.h" -+#include "gtktoolbar.h" - - #include <gdk/gdkkeysyms.h> - -@@ -52,6 +58,13 @@ - - #include "gtktreeprivate.h" - -+#define HILDON_MAX_WIDTH 406 -+#define HILDON_MAX_HEIGHT 305 -+#define HILDON_MAX_ITEMS 8 -+/* this is also defined in gtkmenu.c and should be replaced with -+ a style property */ -+#define MENU_SCROLL_ARROW_HEIGHT 20 -+ - /* WELCOME, to THE house of evil code */ - - typedef struct _ComboCellInfo ComboCellInfo; -@@ -119,6 +132,9 @@ - GtkTreeViewRowSeparatorFunc row_separator_func; - gpointer row_separator_data; - GtkDestroyNotify row_separator_destroy; -+ -+ /* Hildon hack: state of our style property */ -+ gboolean autodimmed_button; - }; - - /* While debugging this evil code, I have learned that -@@ -201,6 +217,7 @@ - - #define BONUS_PADDING 4 - #define SCROLL_TIME 100 -+#define HILDON_PADDING 25 - - /* common */ - static void gtk_combo_box_class_init (GtkComboBoxClass *klass); -@@ -273,6 +290,14 @@ - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); -+static gboolean gtk_combo_box_focus_in (GtkWidget *widget, -+ GdkEventFocus *event); -+static gint gtk_combo_box_focus (GtkWidget *widget, -+ GtkDirectionType dir); -+static void gtk_combo_box_child_focus_in (GtkWidget *widget, -+ GdkEventFocus *event); -+static void gtk_combo_box_child_focus_out (GtkWidget *widget, -+ GdkEventFocus *event); - static gboolean gtk_combo_box_expose_event (GtkWidget *widget, - GdkEventExpose *event); - static gboolean gtk_combo_box_scroll_event (GtkWidget *widget, -@@ -285,6 +310,12 @@ - - static void gtk_combo_box_check_appearance (GtkComboBox *combo_box); - -+/* <Hildon addition> */ -+extern void gtk_grab_combo_box_entry_focus (GtkComboBoxEntry *entry_box); -+ -+static void gtk_combo_box_grab_focus (GtkWidget *focus_widget); -+/* </hildon addition> */ -+ - /* listening to the model */ - static void gtk_combo_box_model_row_inserted (GtkTreeModel *model, - GtkTreePath *path, -@@ -424,6 +455,9 @@ - static void gtk_combo_box_start_editing (GtkCellEditable *cell_editable, - GdkEvent *event); - -+static void gtk_combo_box_menu_position_above (GtkMenu *menu, gint *x, -+ gint *y, gboolean *push_in, -+ gpointer user_data); - - GType - gtk_combo_box_get_type (void) -@@ -479,6 +513,25 @@ - return combo_box_type; - } - -+/* Hildon addition: Check if the button needs to be dimmed */ -+static void hildon_check_autodim(GtkComboBox *combo_box) -+{ -+ GtkWidget *widget; -+ GtkTreeModel *model; -+ GtkTreeIter iter; -+ -+ widget = combo_box->priv->button; -+ model = combo_box->priv->model; -+ -+ if (combo_box->priv->autodimmed_button && widget != NULL) -+ { -+ if (model && gtk_tree_model_get_iter_first(model, &iter)) -+ gtk_widget_set_sensitive(widget, TRUE); -+ else -+ gtk_widget_set_sensitive(widget, FALSE); -+ } -+} -+ - /* common */ - static void - gtk_combo_box_class_init (GtkComboBoxClass *klass) -@@ -504,6 +557,11 @@ - widget_class->mnemonic_activate = gtk_combo_box_mnemonic_activate; - widget_class->style_set = gtk_combo_box_style_set; - widget_class->state_changed = gtk_combo_box_state_changed; -+ -+ /* Hildon addition */ -+ widget_class->grab_focus = gtk_combo_box_grab_focus; -+ widget_class->focus_in_event = gtk_combo_box_focus_in; -+ widget_class->focus = gtk_combo_box_focus; - - gtk_object_class = (GtkObjectClass *)klass; - gtk_object_class->destroy = gtk_combo_box_destroy; -@@ -687,6 +745,41 @@ - FALSE, - G_PARAM_READABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("hildonlike", -+ _("Size request"), -+ _("Size allocate"), -+ FALSE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("arrow-height", -+ P_("Arrow height for option menu"), -+ P_("Sets arrow height"), -+ 0, -+ G_MAXINT, -+ 28, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("arrow-width", -+ P_("Arrow width for option menu"), -+ P_("Sets arrow width"), -+ 0, -+ G_MAXINT, -+ 26, -+ G_PARAM_READWRITE)); -+ -+ -+ /* Hildon hack: style property for enabling the autodimming hack */ -+ gtk_widget_class_install_style_property ( -+ widget_class, -+ g_param_spec_boolean ("autodimmed_button", -+ _("Autodimmed button"), -+ _("Automatically dims the button if the list is empty"), -+ FALSE, -+ G_PARAM_READABLE)); -+ - g_type_class_add_private (object_class, sizeof (GtkComboBoxPrivate)); - } - -@@ -731,6 +824,11 @@ - combo_box->priv->editing_canceled = FALSE; - combo_box->priv->auto_scroll = FALSE; - combo_box->priv->focus_on_click = TRUE; -+ -+ /* Hildon hack: default value for our style property if it is queried before -+ * the style is set */ -+ combo_box->priv->autodimmed_button = FALSE; -+ GTK_WIDGET_SET_FLAGS ( combo_box, GTK_CAN_FOCUS ); - } - - static void -@@ -911,7 +1009,19 @@ - { - GtkComboBox *combo_box = GTK_COMBO_BOX (widget); - -+ /* Hildon hack: read the state of our style property */ -+ gtk_widget_style_get (GTK_WIDGET(combo_box), -+ "autodimmed_button", &(combo_box->priv->autodimmed_button), NULL); -+ - gtk_combo_box_check_appearance (combo_box); -+ -+ /* Hildon hack: handle the dimmed state of the button in regards whether -+ * the list is empty or not. This has to be done here because -+ * in the callback functions of GtkTreeModel the button widget -+ * may have not yet been set. However, we repeat this stuff in -+ * those functions, because later the button will be set and -+ * we want to update our state. */ -+ hildon_check_autodim(combo_box); - - if (combo_box->priv->tree_view && combo_box->priv->cell_view) - gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), -@@ -922,10 +1032,17 @@ - gtk_combo_box_button_toggled (GtkWidget *widget, - gpointer data) - { -+ gboolean hildonlike; - GtkComboBox *combo_box = GTK_COMBO_BOX (data); -+ -+ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", &hildonlike, NULL); - - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) - { -+ if (hildonlike) { -+ gtk_combo_box_grab_focus(GTK_WIDGET(combo_box)); -+ } -+ - if (!combo_box->priv->popup_in_progress) - gtk_combo_box_popup (combo_box); - } -@@ -1103,7 +1220,7 @@ - { - gtk_container_remove (GTK_CONTAINER (combo_box->priv->popup_frame), - combo_box->priv->popup_widget); -- g_object_unref (combo_box->priv->popup_widget); -+ g_object_unref (G_OBJECT (combo_box->priv->popup_widget)); - combo_box->priv->popup_widget = NULL; - } - -@@ -1175,7 +1292,7 @@ - popup); - - gtk_widget_show (popup); -- g_object_ref (popup); -+ g_object_ref (G_OBJECT (popup)); - combo_box->priv->popup_widget = popup; - } - } -@@ -1250,9 +1367,13 @@ - GtkRequisition requisition; - GList *children; - gint screen_width; -+ gint screen_height; - gint menu_xpos; - gint menu_ypos; -- gint menu_width; -+ gint menu_width, menu_height; -+ gint counter = 0; -+ gint scroll_offset = 0; -+ gint max_items = 0; - - g_return_if_fail (GTK_IS_COMBO_BOX (user_data)); - -@@ -1261,6 +1382,7 @@ - - gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition); - menu_width = requisition.width; -+ menu_height = requisition.height; - - active = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget)); - gdk_window_get_origin (widget->window, &menu_xpos, &menu_ypos); -@@ -1275,6 +1397,11 @@ - } - - children = GTK_MENU_SHELL (combo_box->priv->popup_widget)->children; -+ child = children->data; -+ gtk_widget_get_child_requisition (child, &requisition); -+ max_items = (HILDON_MAX_HEIGHT-2*MENU_SCROLL_ARROW_HEIGHT)/requisition.height; -+ max_items -= 1; -+ - while (children) - { - child = children->data; -@@ -1284,27 +1411,119 @@ - - if (GTK_WIDGET_VISIBLE (child)) - { -- gtk_widget_get_child_requisition (child, &requisition); -- menu_ypos -= requisition.height; -+ if (counter < max_items - 2) -+ menu_ypos -= requisition.height; -+ if (counter > max_items - 3) -+ scroll_offset += requisition.height; - } -- -+ -+ counter++; - children = children->next; - } -+ gtk_widget_get_child_requisition (GTK_WIDGET(menu), &requisition); - -+ if ( requisition.height >= HILDON_MAX_HEIGHT ) -+ menu_ypos -= MENU_SCROLL_ARROW_HEIGHT; -+ - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) - menu_xpos = menu_xpos + widget->allocation.width - menu_width; - -+ { -+ gint menu_xpad, menu_ypad; -+ gtk_widget_style_get (GTK_WIDGET (menu), -+ "horizontal-padding", &menu_xpad, -+ "vertical-padding", &menu_ypad, -+ NULL); -+ menu_xpos -= menu_xpad - 3; -+ menu_ypos -= menu_ypad - 1; -+ } -+ - /* Clamp the position on screen */ - screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget)); -+ screen_height = gdk_screen_get_height (gtk_widget_get_screen (widget)); - - if (menu_xpos < 0) - menu_xpos = 0; - else if ((menu_xpos + menu_width) > screen_width) - menu_xpos -= ((menu_xpos + menu_width) - screen_width); - -+ if (menu_ypos + menu_height > screen_height) -+ { -+ menu_ypos = screen_height - menu_height; -+ } -+ if (menu_ypos < 0) -+ { -+ menu_ypos = 0; -+ } -+ -+ GTK_MENU(combo_box->priv->popup_widget)->scroll_offset = scroll_offset; -+ - *x = menu_xpos; - *y = menu_ypos; - -+ *push_in = FALSE; -+} -+ -+static void -+gtk_combo_box_menu_position_above (GtkMenu *menu, -+ gint *x, -+ gint *y, -+ gboolean *push_in, -+ gpointer user_data) -+{ -+ /* -+ * This function positiones the menu above widgets. -+ * This is a modified version of the position function -+ * gtk_combo_box_position_over. -+ * NB: This is only used when gtkcombobox is in toolbar! -+ */ -+ -+ GtkWidget *child; -+ GtkRequisition requisition; -+ GList *children; -+ gint screen_width; -+ gint menu_xpos; -+ gint menu_ypos; -+ gint gx,gy; -+ gint menu_width; -+ GtkWidget *widget; -+ -+ widget = GTK_WIDGET(user_data); -+ -+ gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition); -+ menu_width = requisition.width; -+ -+ gdk_window_get_position(GDK_WINDOW(widget->window), &gx, &gy); -+ gtk_widget_translate_coordinates (widget, gtk_widget_get_toplevel(widget), -+ gx, gy, &menu_xpos, &menu_ypos); -+ -+ menu_ypos -= GTK_WIDGET(menu)->style->ythickness * 2; -+ menu_ypos -= GTK_WIDGET(widget)->style->ythickness * 2; -+ -+ menu_ypos -= widget->allocation.height; -+ -+ children = GTK_MENU_SHELL (menu)->children; -+ while (children) { -+ child = children->data; -+ if (GTK_WIDGET_VISIBLE (child)){ -+ gtk_widget_get_child_requisition (child, &requisition); -+ menu_ypos -= requisition.height; -+ } -+ children = children->next; -+ } -+ -+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -+ menu_xpos = menu_xpos + widget->allocation.width - menu_width; -+ -+ screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget)); -+ -+ if (menu_xpos < 0) -+ menu_xpos = 0; -+ else if ((menu_xpos + menu_width) > screen_width) -+ menu_xpos -= ((menu_xpos + menu_width) - screen_width); -+ -+ *x = menu_xpos; -+ *y = menu_ypos; - *push_in = TRUE; - } - -@@ -1318,21 +1537,44 @@ - GtkComboBox *combo_box; - GtkWidget *menu_item; - -+ gboolean hildonlike; -+ - combo_box = GTK_COMBO_BOX (user_data); - -- if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL) -- gtk_combo_box_menu_position_below (menu, x, y, push_in, user_data); -- else -+ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", &hildonlike, NULL); -+ -+ if (!(combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL)) - { - /* FIXME handle nested menus better */ - menu_item = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget)); - if (menu_item) - gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget), - menu_item); -+ } - -- gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data); -+ if (hildonlike) -+ { -+ /* HILDON: we check if combobox is in a toolbar */ -+ gboolean in_toolbar = gtk_widget_get_ancestor(GTK_WIDGET(combo_box), GTK_TYPE_TOOLBAR) != NULL; -+ if (in_toolbar) -+ { -+ /*due to limits in combo's sizes we use position_over here also*/ -+ gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data); -+ return; -+ } - } - -+ if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL) -+/* -+ * Changed because we always want the combo box position to be over -+ * the combo box, unless it's in toolbar. -+ * -+ gtk_combo_box_menu_position_below (menu, x, y, push_in, user_data); -+*/ -+ gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data); -+ else -+ gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data); -+ - } - - static void -@@ -1430,7 +1672,7 @@ - list = cells; - while (list) - { -- g_object_get (list->data, "sensitive", &sensitive, NULL); -+ g_object_get (G_OBJECT (list->data), "sensitive", &sensitive, NULL); - - if (sensitive) - break; -@@ -1469,7 +1711,7 @@ - list = cells; - while (list) - { -- g_object_get (list->data, "sensitive", &sensitive, NULL); -+ g_object_get (G_OBJECT (list->data), "sensitive", &sensitive, NULL); - - if (sensitive) - break; -@@ -1516,8 +1758,8 @@ - if (menu != combo_box->priv->popup_widget && child == children) - { - separator = GTK_WIDGET (child->next->data); -- g_object_set (item, "visible", sensitive, NULL); -- g_object_set (separator, "visible", sensitive, NULL); -+ g_object_set (G_OBJECT (item), "visible", sensitive, NULL); -+ g_object_set (G_OBJECT (separator), "visible", sensitive, NULL); - } - else - gtk_widget_set_sensitive (item, sensitive); -@@ -1543,16 +1785,19 @@ - if (gtk_tree_row_reference_valid (combo_box->priv->active_row)) - { - path = gtk_tree_row_reference_get_path (combo_box->priv->active_row); -- active_item = gtk_tree_path_get_indices (path)[0]; -- gtk_tree_path_free (path); -- -- if (combo_box->priv->add_tearoffs) -- active_item++; -+ if (path) -+ { -+ active_item = gtk_tree_path_get_indices (path)[0]; -+ gtk_tree_path_free (path); -+ -+ if (combo_box->priv->add_tearoffs) -+ active_item++; -+ } - } - - /* FIXME handle nested menus better */ -- gtk_menu_set_active (GTK_MENU (combo_box->priv->popup_widget), active_item); -- -+ gtk_menu_set_active (GTK_MENU (combo_box->priv->popup_widget), active_item); -+ - if (combo_box->priv->wrap_width == 0) - { - width = GTK_WIDGET (combo_box)->allocation.width; -@@ -1684,6 +1929,7 @@ - { - gint padding; - GtkRequisition req; -+ gboolean hildonlike; - - if (combo_box->priv->cell_view) - gtk_widget_style_get (combo_box->priv->cell_view, -@@ -1691,9 +1937,17 @@ - NULL); - else - padding = 0; -+ -+ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", &hildonlike, -+ NULL); - - /* add some pixels for good measure */ -- padding += BONUS_PADDING; -+ /* Hildon: we need more padding because our theming -+ * Not elegent way to do it anyway ... */ -+ if (hildonlike) -+ padding += HILDON_PADDING; -+ else -+ padding += BONUS_PADDING; - - if (combo_box->priv->cell_view) - gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view), -@@ -1709,6 +1963,7 @@ - { - GtkTreeIter iter; - GtkTreePath *path; -+ gboolean hildonlike; - - if (!combo_box->priv->model || - !gtk_tree_model_get_iter_first (combo_box->priv->model, &iter)) -@@ -1717,6 +1972,7 @@ - combo_box->priv->width = 0; - - path = gtk_tree_path_new_from_indices (0, -1); -+ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", &hildonlike, NULL); - - do - { -@@ -1727,8 +1983,11 @@ - path, &req); - else - req.width = 0; -+ /* Hildon: we need more padding because our theming -+ * Not elegent way to do it anyway ... */ - -- combo_box->priv->width = MAX (combo_box->priv->width, req.width); -+ combo_box->priv->width = MAX (combo_box->priv->width, -+ req.width + (hildonlike == 1) ? HILDON_PADDING : 0 ); - - gtk_tree_path_next (path); - } -@@ -1744,10 +2003,19 @@ - gint width, height; - gint focus_width, focus_pad; - GtkRequisition bin_req; -+ gboolean hildonlike; -+ gint arrow_width; -+ gint arrow_height; - - GtkComboBox *combo_box = GTK_COMBO_BOX (widget); - - gtk_combo_box_check_appearance (combo_box); -+ -+ /* get hildonlike style property */ -+ gtk_widget_style_get (widget, "hildonlike", -+ &hildonlike, "arrow-width", -+ &arrow_width, "arrow-height", -+ &arrow_height, NULL); - - /* common */ - gtk_widget_size_request (GTK_BIN (widget)->child, &bin_req); -@@ -1829,6 +2097,13 @@ - requisition->height = MAX (requisition->height, button_req.height); - requisition->width += button_req.width; - } -+ -+ requisition->width = MIN (requisition->width, HILDON_MAX_WIDTH); -+ -+ /* HILDON quick fix: height forced to be 28px as specified by Hildon specs. */ -+ if (hildonlike) -+ if (requisition->height > arrow_height) -+ requisition->height = arrow_height; - } - - static void -@@ -1839,17 +2114,32 @@ - gint focus_width, focus_pad; - GtkAllocation child; - GtkRequisition req; -+ GtkRequisition child_req; - gboolean is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; -+ gboolean hildonlike; -+ gint arrow_width; -+ gint arrow_height; - - gtk_combo_box_check_appearance (combo_box); - -- widget->allocation = *allocation; -- - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, -+ "hildonlike", &hildonlike, -+ "arrow-width", &arrow_width, -+ "arrow-height", &arrow_height, - NULL); - -+ /* HILDON: set height to fixed value */ -+ if (hildonlike) -+ if (allocation->height > arrow_height) -+ { -+ allocation->y += (allocation->height - arrow_height) / 2; -+ allocation->height = arrow_height; -+ } -+ -+ widget->allocation = *allocation; -+ - if (!combo_box->priv->tree_view) - { - if (combo_box->priv->cell_view) -@@ -1909,7 +2199,16 @@ - child.width = child.x; - child.x = allocation->x - + border_width + xthickness + focus_width + focus_pad; -- child.width -= child.x; -+ child.width -= child.x + xthickness; -+ } -+ -+ if (hildonlike) -+ { -+ gtk_widget_size_request(GTK_BIN(widget)->child, &child_req); -+ child.y += (child.height - child_req.height) / 2; -+ child.height = child_req.height; -+ gtk_widget_hide(combo_box->priv->separator); -+ gtk_widget_hide(combo_box->priv->arrow); - } - - child.width = MAX (1, child.width); -@@ -1928,6 +2227,11 @@ - child.height = allocation->height; - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); -+ -+ /* HILDON quick fix */ -+ if (hildonlike) -+ child.width = arrow_width; -+ - gtk_widget_size_allocate (combo_box->priv->button, &child); - - if (is_rtl) -@@ -1938,6 +2242,13 @@ - child.width = allocation->width - req.width; - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); -+ -+ if (hildonlike) -+ { -+ gtk_widget_size_request(GTK_BIN(widget)->child, &child_req); -+ child.y += (child.height - child_req.height) / 2; -+ child.height = child_req.height; -+ } - gtk_widget_size_allocate (GTK_BIN (widget)->child, &child); - } - } -@@ -1990,6 +2301,11 @@ - GTK_WIDGET (combo_box->priv->cell_view_frame)->style->ythickness); - } - } -+ -+ gtk_widget_size_request(GTK_BIN(widget)->child, &child_req); -+ -+ child.y += (child.height - child_req.height) / 2; -+ child.height = child_req.height; - - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); -@@ -2036,6 +2352,8 @@ - gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (combo_box->priv->cell_view), NULL); - } - -+ -+ - static void - gtk_combo_box_forall (GtkContainer *container, - gboolean include_internals, -@@ -2057,6 +2375,46 @@ - } - - static gboolean -+gtk_combo_box_focus_in (GtkWidget *widget, -+ GdkEventFocus *event) -+{ -+ g_return_val_if_fail( widget, FALSE ); -+ -+ if ( !GTK_CONTAINER( widget )->focus_child ) -+ { -+ gtk_combo_box_grab_focus ( GTK_WIDGET(widget) ); -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+static gint -+gtk_combo_box_focus (GtkWidget *widget, -+ GtkDirectionType dir) -+{ -+ g_return_val_if_fail (widget, FALSE); -+ if (GTK_WIDGET_HAS_FOCUS(widget)||GTK_CONTAINER(widget)->focus_child) -+ return FALSE; -+ -+ gtk_widget_grab_focus (widget); -+ return TRUE; -+} -+ -+static void -+gtk_combo_box_child_focus_in (GtkWidget * widget, -+ GdkEventFocus *event) -+{ -+ gtk_widget_event( widget, (GdkEvent*)event ); -+} -+ -+static void -+gtk_combo_box_child_focus_out (GtkWidget * widget, -+ GdkEventFocus *event) -+{ -+ gtk_widget_event( widget, (GdkEvent*)event ); -+} -+ -+static gboolean - gtk_combo_box_expose_event (GtkWidget *widget, - GdkEventExpose *event) - { -@@ -2357,11 +2715,13 @@ - gboolean add_children) - { - GtkWidget *menu; -+ gboolean hildonlike; -+ -+ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", &hildonlike, NULL); - - if (combo_box->priv->cell_view) - { - combo_box->priv->button = gtk_toggle_button_new (); -- - g_signal_connect (combo_box->priv->button, "toggled", - G_CALLBACK (gtk_combo_box_button_toggled), combo_box); - g_signal_connect_after (combo_box->priv->button, -@@ -2400,6 +2760,9 @@ - gtk_widget_show_all (combo_box->priv->button); - } - -+ g_signal_connect_swapped (combo_box->priv->button, "focus_in_event", G_CALLBACK (gtk_combo_box_child_focus_in), combo_box); -+ g_signal_connect_swapped (combo_box->priv->button, "focus_out_event", G_CALLBACK (gtk_combo_box_child_focus_out), combo_box); -+ - g_signal_connect (combo_box->priv->button, "button_press_event", - G_CALLBACK (gtk_combo_box_menu_button_press), - combo_box); -@@ -2749,6 +3112,9 @@ - { - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - -+ /* Hildon hack: sets the popup button sensitive if we have items in the list */ -+ hildon_check_autodim(combo_box); -+ - gtk_tree_row_reference_inserted (G_OBJECT (user_data), path); - - if (combo_box->priv->tree_view) -@@ -2783,7 +3149,10 @@ - if (combo_box->priv->tree_view) - gtk_combo_box_list_popup_resize (combo_box); - else -- gtk_combo_box_menu_row_deleted (model, path, user_data); -+ gtk_combo_box_menu_row_deleted (model, path, user_data); -+ -+ /* Hildon hack: dim the popup button in case item count reaches 0 */ -+ hildon_check_autodim(combo_box); - } - - static void -@@ -3458,10 +3827,46 @@ - gboolean found; - GtkTreeIter iter; - GtkTreeIter new_iter; -+ gboolean hildonlike; -+ gint index = gtk_combo_box_get_active (combo_box); -+ gint new_index; -+ gint items = 0; - - if (combo_box->priv->model == NULL) - return FALSE; - -+ items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL); -+ -+ gtk_widget_style_get (GTK_WIDGET (combo_box), "hildonlike", -+ &hildonlike, NULL); -+ -+ /* Hildon select key */ -+ if (hildonlike) -+ { -+ if (event->keyval == GDK_KP_Enter || event->keyval == GDK_Return) -+ { -+ gtk_combo_box_popup (combo_box); -+ return TRUE; -+ } -+ else if (event->keyval == GDK_Left && items != 0) -+ { -+ new_index = (index == 0) ? items - 1 : index - 1; -+ gtk_combo_box_set_active (combo_box, new_index); -+ return TRUE; -+ } -+ else if (event->keyval == GDK_Right && items != 0) -+ { -+ new_index = (index == items - 1) ? 0 : index + 1; -+ gtk_combo_box_set_active (combo_box, new_index); -+ return TRUE; -+ } -+ else if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) -+ || (event->keyval == GDK_Up || event->keyval == GDK_KP_Up)) -+ { -+ return FALSE; -+ } -+ } -+ - if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) && - state == GDK_MOD1_MASK) - { -@@ -3714,7 +4119,7 @@ - - combo_box = GTK_COMBO_BOX (layout); - -- g_object_ref (cell); -+ g_object_ref (G_OBJECT (cell)); - gtk_object_sink (GTK_OBJECT (cell)); - - info = g_new0 (ComboCellInfo, 1); -@@ -3771,7 +4176,7 @@ - - combo_box = GTK_COMBO_BOX (layout); - -- g_object_ref (cell); -+ g_object_ref (G_OBJECT (cell)); - gtk_object_sink (GTK_OBJECT (cell)); - - info = g_new0 (ComboCellInfo, 1); -@@ -3833,7 +4238,7 @@ - ComboCellInfo *info = (ComboCellInfo *)i->data; - - gtk_combo_box_cell_layout_clear_attributes (layout, info->cell); -- g_object_unref (info->cell); -+ g_object_unref (G_OBJECT (info->cell)); - g_free (info); - i->data = NULL; - } -@@ -3922,7 +4327,7 @@ - - if (GTK_IS_MENU_ITEM (parent) && - gtk_menu_item_get_submenu (GTK_MENU_ITEM (parent))) -- g_object_set (cell, "sensitive", TRUE, NULL); -+ g_object_set (G_OBJECT (cell), "sensitive", TRUE, NULL); - } - - -@@ -4137,7 +4542,7 @@ - GtkWidget * - gtk_combo_box_new (void) - { -- return g_object_new (GTK_TYPE_COMBO_BOX, NULL); -+ return GTK_WIDGET (g_object_new (GTK_TYPE_COMBO_BOX, NULL)); - } - - /** -@@ -4157,7 +4562,9 @@ - - g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL); - -- combo_box = g_object_new (GTK_TYPE_COMBO_BOX, "model", model, NULL); -+ combo_box = GTK_COMBO_BOX (g_object_new (GTK_TYPE_COMBO_BOX, -+ "model", model, -+ NULL)); - - return GTK_WIDGET (combo_box); - } -@@ -4512,6 +4919,7 @@ - if (!model) - { - gtk_combo_box_unset_model (combo_box); -+ hildon_check_autodim(combo_box); - return; - } - -@@ -4524,7 +4932,7 @@ - gtk_combo_box_unset_model (combo_box); - - combo_box->priv->model = model; -- g_object_ref (combo_box->priv->model); -+ g_object_ref (G_OBJECT (combo_box->priv->model)); - - combo_box->priv->inserted_id = - g_signal_connect (combo_box->priv->model, "row_inserted", -@@ -4561,6 +4969,8 @@ - if (combo_box->priv->cell_view) - gtk_cell_view_set_model (GTK_CELL_VIEW (combo_box->priv->cell_view), - combo_box->priv->model); -+ -+ hildon_check_autodim(combo_box); - } - - /** -@@ -5140,3 +5550,33 @@ - - return combo->priv->focus_on_click; - } -+/* Hildon addition: -+ * This is added, because we need to be able grab focus for our widget. -+ * Focus grabbing can happen it two ways: If we are using combobox entry -+ * we grab entry widget focus, otherwise togglebutton focus -+ */ -+static void gtk_combo_box_grab_focus (GtkWidget *focus_widget) -+{ -+ GtkComboBox *combo_box; -+ GtkComboBoxEntry *combo_entry; -+ gboolean hildonlike; -+ -+ combo_box = GTK_COMBO_BOX (focus_widget); -+ -+ gtk_widget_style_get (focus_widget, "hildonlike", -+ &hildonlike, NULL); -+ -+ if (hildonlike) -+ { -+ /* Are we in entry mode ? */ -+ if ( GTK_IS_COMBO_BOX_ENTRY(combo_box)) -+ { -+ combo_entry = GTK_COMBO_BOX_ENTRY (combo_box); -+ gtk_grab_combo_box_entry_focus (combo_entry); -+ } -+ else -+ { -+ gtk_widget_grab_focus (combo_box->priv->button); -+ } -+ } -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcomboboxentry.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcomboboxentry.c.diff deleted file mode 100644 index 43a861abd6..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcomboboxentry.c.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcomboboxentry.c 2004-11-20 01:18:37.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcomboboxentry.c 2005-04-06 16:19:36.407003656 +0300 -@@ -55,6 +55,8 @@ - gpointer user_data); - static gboolean gtk_combo_box_entry_mnemonic_activate (GtkWidget *entry, - gboolean group_cycling); -+/*static void gtk_grab_combo_box_entry_focus (GtkComboBoxEntry *entry_box);*/ -+ - static void has_frame_changed (GtkComboBoxEntry *entry_box, - GParamSpec *pspec, - gpointer data); -@@ -382,3 +384,12 @@ - - return entry_box; - } -+ -+/* Hildon: this is added because we need to grab focus from caption control -+ * to ComboBox entry. -+ */ -+void -+gtk_grab_combo_box_entry_focus (GtkComboBoxEntry *entry_box) -+{ -+ gtk_widget_grab_focus (entry_box->priv->entry); -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcontainer.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcontainer.c.diff deleted file mode 100644 index abd251bdcb..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkcontainer.c.diff +++ /dev/null @@ -1,284 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkcontainer.c 2005-03-01 08:28:55.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkcontainer.c 2005-04-06 16:19:36.410003200 +0300 -@@ -37,10 +37,13 @@ - #include "gtkwindow.h" - #include "gtkintl.h" - #include "gtktoolbar.h" -+#include "gtkmenu.h" -+#include "gtkentry.h" -+#include "gtktextview.h" -+#include "gtkwidget.h" - #include <gobject/gobjectnotifyqueue.c> - #include <gobject/gvaluecollector.h> - -- - enum { - ADD, - REMOVE, -@@ -56,6 +59,19 @@ - PROP_CHILD - }; - -+enum { -+ FOCUS_MOVE_OK, -+ FOCUS_MOVE_OK_NO_MOVE, -+ FOCUS_MOVE_FAIL_NO_TEXT -+}; -+ -+typedef struct -+{ -+ GtkWidget *menu; -+ void *func; -+ GtkWidgetTapAndHoldFlags flags; -+} GtkContainerTAH; -+ - #define PARAM_SPEC_PARAM_ID(pspec) ((pspec)->param_id) - #define PARAM_SPEC_SET_PARAM_ID(pspec, id) ((pspec)->param_id = (id)) - -@@ -87,6 +103,9 @@ - static gboolean gtk_container_focus_move (GtkContainer *container, - GList *children, - GtkDirectionType direction); -+static gint gtk_container_focus_move_with_tab (GtkContainer *container, -+ GtkDirectionType direction, -+ GtkWidget **fallback); - static void gtk_container_children_callback (GtkWidget *widget, - gpointer client_data); - static void gtk_container_show_all (GtkWidget *widget); -@@ -95,10 +114,14 @@ - GdkEventExpose *event); - static void gtk_container_map (GtkWidget *widget); - static void gtk_container_unmap (GtkWidget *widget); -- -+static void gtk_container_tap_and_hold_setup (GtkWidget *widget, -+ GtkWidget *menu, GtkCallback func, GtkWidgetTapAndHoldFlags flags); - static gchar* gtk_container_child_default_composite_name (GtkContainer *container, - GtkWidget *child); -+static void gtk_container_tap_and_hold_setup_forall( GtkWidget *widget, -+ GtkContainerTAH *tah ); - -+static void gtk_container_grab_focus( GtkWidget *focus_widget ); - - /* --- variables --- */ - static const gchar vadjustment_key[] = "gtk-vadjustment"; -@@ -190,7 +213,9 @@ - widget_class->map = gtk_container_map; - widget_class->unmap = gtk_container_unmap; - widget_class->focus = gtk_container_focus; -- -+ widget_class->tap_and_hold_setup = gtk_container_tap_and_hold_setup; -+ widget_class->grab_focus = gtk_container_grab_focus; -+ - class->add = gtk_container_add_unimplemented; - class->remove = gtk_container_remove_unimplemented; - class->check_resize = gtk_container_real_check_resize; -@@ -2011,6 +2036,24 @@ - GtkWidget *focus_child; - GtkWidget *child; - -+ /* -+ * If there's an item focus already and tab was pressed, only go thru -+ * GtkEntries and GtkTextviews. Do _not_ jump from last widget to the first -+ * one and vice verca. -+ */ -+ if ((direction == GTK_DIR_TAB_FORWARD || direction == GTK_DIR_TAB_BACKWARD) && -+ container->focus_child != NULL) -+ { -+ GtkWidget *fallback; -+ fallback = NULL; -+ if (gtk_container_focus_move_with_tab (container, direction, &fallback) -+ != FOCUS_MOVE_FAIL_NO_TEXT) -+ return TRUE; -+ -+ if (fallback && gtk_widget_child_focus (fallback, direction)) -+ return TRUE; -+ } -+ - focus_child = container->focus_child; - - while (children) -@@ -2019,7 +2062,7 @@ - children = children->next; - - if (!child) -- continue; -+ continue; - - if (focus_child) - { -@@ -2027,8 +2070,8 @@ - { - focus_child = NULL; - -- if (gtk_widget_child_focus (child, direction)) -- return TRUE; -+ if (gtk_widget_child_focus (child, direction)) -+ return TRUE; - } - } - else if (GTK_WIDGET_DRAWABLE (child) && -@@ -2042,6 +2085,105 @@ - return FALSE; - } - -+static gint -+gtk_container_focus_move_with_tab (GtkContainer *container, -+ GtkDirectionType direction, -+ GtkWidget **fallback) -+{ -+ GList *children, *sorted_children; -+ GtkWidget *child; -+ GtkWidget *focus_child; -+ gboolean found_text; -+ gint ret; -+ -+ found_text = FALSE; -+ focus_child = container->focus_child; -+ -+ /* This part is copied from gtk_container_focus() */ -+ if (container->has_focus_chain) -+ children = g_list_copy (get_focus_chain (container)); -+ else -+ children = gtk_container_get_all_children (container); -+ -+ if (container->has_focus_chain && -+ (direction == GTK_DIR_TAB_FORWARD || -+ direction == GTK_DIR_TAB_BACKWARD)) -+ { -+ sorted_children = g_list_copy (children); -+ -+ if (direction == GTK_DIR_TAB_BACKWARD) -+ sorted_children = g_list_reverse (sorted_children); -+ } -+ else -+ sorted_children = _gtk_container_focus_sort (container, children, -+ direction, NULL); -+ g_list_free(children); -+ children = sorted_children; -+ -+ while (children) -+ { -+ child = children->data; -+ children = children->next; -+ -+ if (!child) -+ continue; -+ -+ if (GTK_IS_ENTRY (child) || GTK_IS_TEXT_VIEW (child)) -+ found_text = TRUE; -+ -+ if (focus_child) -+ { -+ if (child == focus_child) -+ { -+ focus_child = NULL; -+ if (GTK_IS_CONTAINER (child)) -+ { -+ ret = gtk_container_focus_move_with_tab (GTK_CONTAINER (child), -+ direction, -+ fallback); -+ if (ret == FOCUS_MOVE_OK) -+ { -+ g_list_free (sorted_children); -+ return FOCUS_MOVE_OK; -+ } -+ else if (ret == FOCUS_MOVE_OK_NO_MOVE) -+ found_text = TRUE; -+ } -+ } -+ } -+ else if (GTK_WIDGET_DRAWABLE (child) && -+ gtk_widget_is_ancestor (child, GTK_WIDGET (container))) -+ { -+ if (GTK_IS_ENTRY (child) || GTK_IS_TEXT_VIEW (child)) -+ { -+ if (gtk_widget_child_focus (child, direction)) -+ { -+ g_list_free (sorted_children); -+ return FOCUS_MOVE_OK; -+ } -+ } -+ else if (GTK_IS_CONTAINER (child)) -+ { -+ ret = gtk_container_focus_move_with_tab (GTK_CONTAINER (child), -+ direction, -+ fallback); -+ if (ret == FOCUS_MOVE_OK) -+ { -+ g_list_free (sorted_children); -+ return FOCUS_MOVE_OK; -+ } -+ else if (ret == FOCUS_MOVE_OK_NO_MOVE) -+ found_text = TRUE; -+ } -+ if (GTK_WIDGET_CAN_FOCUS (child) && *fallback == NULL) -+ *fallback = child; -+ } -+ } -+ -+ g_list_free (sorted_children); -+ -+ return found_text ? FOCUS_MOVE_OK_NO_MOVE : FOCUS_MOVE_FAIL_NO_TEXT; -+} - - static void - gtk_container_children_callback (GtkWidget *widget, -@@ -2463,3 +2605,58 @@ - gdk_event_free (child_event); - } - } -+ -+static void gtk_container_tap_and_hold_setup_forall( GtkWidget *widget, -+ GtkContainerTAH *tah ) -+{ -+ gtk_widget_tap_and_hold_setup( widget, tah->menu, tah->func, -+ tah->flags ); -+} -+ -+static void gtk_container_tap_and_hold_setup( GtkWidget *widget, -+ GtkWidget *menu, GtkCallback func, GtkWidgetTapAndHoldFlags flags ) -+{ -+ GtkContainerTAH tah; -+ g_return_if_fail( GTK_IS_WIDGET(widget)); -+ g_return_if_fail( menu == NULL || GTK_IS_MENU(menu) ); -+ tah.menu = menu; -+ tah.func = func; -+ tah.flags = flags; -+ if (flags & GTK_TAP_AND_HOLD_NO_INTERNALS) -+ gtk_container_foreach( GTK_CONTAINER(widget), -+ (GtkCallback)gtk_container_tap_and_hold_setup_forall, &tah ); -+ else -+ gtk_container_forall( GTK_CONTAINER(widget), -+ (GtkCallback)gtk_container_tap_and_hold_setup_forall, &tah ); -+ parent_class->tap_and_hold_setup (widget, menu, func, flags); -+} -+ -+static void gtk_container_grab_focus( GtkWidget *focus_widget ) -+{ -+ if( GTK_WIDGET_CAN_FOCUS(focus_widget) ) -+ parent_class->grab_focus( focus_widget ); -+ else -+ { -+ GList *first = NULL; -+ GList *children = NULL; -+ GtkWidget *old_focus = NULL; -+ GtkWidget *toplevel = NULL; -+ -+ toplevel = gtk_widget_get_toplevel( focus_widget ); -+ if( !GTK_IS_WINDOW(toplevel) ) -+ return; -+ -+ old_focus = GTK_WINDOW(toplevel)->focus_widget; -+ first = gtk_container_get_all_children( -+ GTK_CONTAINER(focus_widget) ); -+ children = g_list_last( first ); -+ -+ while( children && GTK_WINDOW(toplevel)->focus_widget == old_focus ) -+ { -+ gtk_widget_grab_focus( GTK_WIDGET(children->data) ); -+ children = children->prev; -+ } -+ g_list_free( first ); -+ } -+} -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkdialog.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkdialog.c.diff deleted file mode 100644 index 39ecdf209b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkdialog.c.diff +++ /dev/null @@ -1,451 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkdialog.c 2005-01-20 21:52:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkdialog.c 2005-04-06 16:19:36.416002288 +0300 -@@ -24,6 +24,9 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2003. See CHANGES file for list -+ * of changes. -+ */ - #include <config.h> - #include "gtkalias.h" - #include "gtkbutton.h" -@@ -37,11 +40,14 @@ - #include "gtkmain.h" - #include "gtkintl.h" - #include "gtkbindings.h" -+#include "gtkalignment.h" - - #define GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_DIALOG, GtkDialogPrivate)) - - typedef struct { - guint ignore_separator : 1; -+ GtkWidget *first; -+ GtkWidget *last; - } GtkDialogPrivate; - - typedef struct _ResponseData ResponseData; -@@ -77,7 +83,18 @@ - static void gtk_dialog_close (GtkDialog *dialog); - - static ResponseData* get_response_data (GtkWidget *widget, -- gboolean create); -+ gboolean create); -+ -+static gboolean gtk_dialog_handle_focus (GtkWidget *widget, -+ GtkDirectionType dir, -+ gpointer user_data); -+ -+static gboolean gtk_dialog_move_to_next_active_button (GList *iter, -+ gboolean forward); -+ -+static GtkWidget *gtk_dialog_get_first_sensitive (GList *list); -+static GtkWidget *gtk_dialog_get_last_sensitive (GList *list); -+ - - enum { - PROP_0, -@@ -195,6 +212,23 @@ - 5, - G_PARAM_READABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("extended_left_border", -+ _("Content area extra left border"), -+ _("Width of extra left border around the main dialog area"), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("extended_right_border", -+ _("Content area extra right border"), -+ _("Width of extra right border around the main dialog area"), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); -+ - binding_set = gtk_binding_set_by_class (class); - - gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0, -@@ -205,9 +239,15 @@ - update_spacings (GtkDialog *dialog) - { - GtkWidget *widget; -+ GtkWidget *hbox; -+ GtkWidget *left_padding; -+ GtkWidget *right_padding; - gint content_area_border; - gint button_spacing; - gint action_area_border; -+ -+ gint extended_left_border; -+ gint extended_right_border; - - widget = GTK_WIDGET (dialog); - -@@ -218,6 +258,10 @@ - &button_spacing, - "action_area_border", - &action_area_border, -+ "extended_left_border", -+ &extended_left_border, -+ "extended_right_border", -+ &extended_right_border, - NULL); - - gtk_container_set_border_width (GTK_CONTAINER (dialog->vbox), -@@ -226,12 +270,36 @@ - button_spacing); - gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), - action_area_border); -+ -+ if ((extended_left_border == 0) && (extended_right_border == 0)) -+ /* no extended borders, so we are done */ -+ return; -+ -+ /* extended borders are in use, so reconstruct dialog */ -+ hbox = gtk_hbox_new(FALSE, 0); -+ left_padding = gtk_alignment_new(0.0, 0.0, 0.0, 0.0); -+ right_padding = gtk_alignment_new(0.0, 0.0, 0.0, 0.0); -+ gtk_widget_set_size_request(left_padding, extended_left_border, 0); -+ gtk_widget_set_size_request(right_padding, extended_right_border, 0); -+ -+ gtk_widget_ref(dialog->vbox); -+ gtk_container_remove(GTK_CONTAINER(dialog), dialog->vbox); -+ gtk_container_add(GTK_CONTAINER(hbox), left_padding); -+ gtk_container_add(GTK_CONTAINER(hbox), dialog->vbox); -+ gtk_container_add(GTK_CONTAINER(hbox), right_padding); -+ gtk_container_add(GTK_CONTAINER(dialog), hbox); -+ gtk_widget_unref(dialog->vbox); -+ -+ gtk_widget_show(left_padding); -+ gtk_widget_show(right_padding); -+ gtk_widget_show(hbox); - } - - static void - gtk_dialog_init (GtkDialog *dialog) - { - GtkDialogPrivate *priv; -+ GtkWidget *alignment; - - priv = GET_PRIVATE (dialog); - priv->ignore_separator = FALSE; -@@ -250,14 +318,23 @@ - gtk_container_add (GTK_CONTAINER (dialog), dialog->vbox); - gtk_widget_show (dialog->vbox); - -+ /* Hildon : Here we add an alignment widget to gtk because -+ * we want that the dialog buttons are all centered. */ -+ alignment = gtk_alignment_new (0.5, 0.5, 0, 0); -+ gtk_box_pack_end (GTK_BOX (dialog->vbox), alignment, FALSE, TRUE, 0); -+ - dialog->action_area = gtk_hbutton_box_new (); - - gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog->action_area), - GTK_BUTTONBOX_END); - -- gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->action_area, -- FALSE, TRUE, 0); -+ /* we need add-signal to allocate correct area for childs */ -+ gtk_container_add (GTK_CONTAINER (alignment), dialog->action_area); -+ /* gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->action_area, -+ FALSE, TRUE, 0); */ -+ - gtk_widget_show (dialog->action_area); -+ gtk_widget_show (alignment); - - dialog->separator = gtk_hseparator_new (); - gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->separator, FALSE, TRUE, 0); -@@ -616,9 +693,15 @@ - else - g_warning ("Only 'activatable' widgets can be packed into the action area of a GtkDialog"); - -+ gtk_container_add(GTK_CONTAINER(dialog->action_area), child); -+/* - gtk_box_pack_end (GTK_BOX (dialog->action_area), - child, - FALSE, TRUE, 0); -+*/ -+ -+ g_signal_connect (child, "focus", -+ (GCallback)gtk_dialog_handle_focus, (gpointer)dialog); - - if (response_id == GTK_RESPONSE_HELP) - gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (dialog->action_area), child, TRUE); -@@ -637,7 +720,7 @@ - * you don't need it. - * - * Return value: the button widget that was added -- **/ -+ **/ /*ROK*/ - GtkWidget* - gtk_dialog_add_button (GtkDialog *dialog, - const gchar *button_text, -@@ -653,7 +736,10 @@ - GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); - - gtk_widget_show (button); -- -+ -+ g_signal_connect (button, "focus", -+ (GCallback)gtk_dialog_handle_focus, -+ (gpointer)dialog); - gtk_dialog_add_action_widget (dialog, - button, - response_id); -@@ -990,6 +1076,8 @@ - gulong unmap_handler; - gulong destroy_handler; - gulong delete_handler; -+ GtkDialogPrivate *priv; -+ GList *list = NULL; - - g_return_val_if_fail (GTK_IS_DIALOG (dialog), -1); - -@@ -1001,6 +1089,27 @@ - - if (!GTK_WIDGET_VISIBLE (dialog)) - gtk_widget_show (GTK_WIDGET (dialog)); -+ -+ priv = GET_PRIVATE (dialog); -+ list = gtk_container_get_children (GTK_CONTAINER (dialog->vbox)); -+ priv->first = gtk_dialog_get_first_sensitive (list); -+ priv->last = gtk_dialog_get_last_sensitive (list); -+ -+ if (priv->first) -+ { -+ g_signal_connect (priv->first, "focus", -+ (GCallback)gtk_dialog_handle_focus, -+ (gpointer)dialog); -+ } -+ -+ if (priv->last) -+ { -+ g_signal_connect (priv->last, "focus", -+ (GCallback)gtk_dialog_handle_focus, -+ (gpointer)dialog); -+ } -+ -+ g_list_free (list); - - response_handler = - g_signal_connect (dialog, -@@ -1236,4 +1345,215 @@ - gtk_box_reorder_child (GTK_BOX (dialog->action_area), child, position); - } - } -+static gboolean -+gtk_dialog_handle_focus (GtkWidget *widget, -+ GtkDirectionType dir, -+ gpointer user_data) -+ { -+ GtkDialog *dialog = NULL; -+ GList *list = NULL; -+ GList *iter = NULL; -+ gint i = 0; -+ gint list_length = 0; -+ gboolean ret_val = FALSE; -+ GtkDialogPrivate *priv; -+ -+ dialog = GTK_DIALOG(user_data); -+ list = gtk_container_get_children (GTK_CONTAINER( -+ GTK_DIALOG(user_data)->action_area)); -+ iter = list; -+ priv = GET_PRIVATE (dialog); -+ -+ if (GTK_WIDGET_HAS_FOCUS (widget)) -+ if (widget == priv->first) -+ { -+ if (dir == GTK_DIR_UP) -+ { -+ ret_val = gtk_dialog_move_to_next_active_button (g_list_last (list), -+ FALSE); -+ } -+ else if (dir == GTK_DIR_DOWN && priv->first == priv->last) -+ ret_val = gtk_dialog_move_to_next_active_button (list, TRUE); -+ else if (dir == GTK_DIR_DOWN) -+ { -+ } -+ } -+ else if (widget == priv->last) -+ { -+ if (dir == GTK_DIR_DOWN) -+ { -+ ret_val = gtk_dialog_move_to_next_active_button (list, TRUE); -+ } -+ else if (dir == GTK_DIR_UP) -+ { -+ } -+ } -+ else -+ { -+ list_length = g_list_length(list); -+ while (iter != NULL) -+ { -+ ++i; -+ if (iter->data == widget) -+ { -+ switch (dir) { -+ case GTK_DIR_UP: -+ /* If in the first item -> the default works like it should */ -+ -+ if (i > 1) -+ { -+ /* If not in the first button, but in the first active -+ * button, the default should do, else handle movement -+ * by yourself -+ */ -+ ret_val = gtk_dialog_move_to_next_active_button ( -+ g_list_previous (iter), -+ FALSE); -+ } -+ else -+ { -+ /* gtk_widget_grab_focus (priv->last);*/ -+ g_signal_emit_by_name (dialog, "move-focus", -+ GTK_DIR_TAB_BACKWARD); -+ ret_val = TRUE; -+ } -+ break; -+ -+ /* If in the last item:jump to top, else select previous button */ -+ case GTK_DIR_DOWN: -+ if (i < list_length) -+ { -+ ret_val = gtk_dialog_move_to_next_active_button ( -+ g_list_next (iter), -+ TRUE); -+ if (!ret_val) -+ { -+ g_signal_emit_by_name (dialog, "move-focus", -+ GTK_DIR_TAB_FORWARD); -+ ret_val = TRUE; -+ } -+ } -+ else -+ { -+ g_signal_emit_by_name (dialog, "move-focus", -+ GTK_DIR_TAB_FORWARD); -+ ret_val = TRUE; -+ } -+ break; -+ -+ case GTK_DIR_TAB_BACKWARD: -+ case GTK_DIR_TAB_FORWARD: -+ case GTK_DIR_LEFT: -+ case GTK_DIR_RIGHT: -+ default: -+ break; -+ } -+ break; -+ } -+ iter = g_list_next(iter); -+ } -+ } -+ -+ g_list_free (list); -+ -+ return ret_val; -+ } -+static gboolean -+gtk_dialog_move_to_next_active_button (GList *iter, gboolean forward) -+{ -+ gboolean active; -+ gboolean visible; -+ -+ while (iter) -+ { -+ g_object_get (G_OBJECT (iter->data), "sensitive", &active, NULL); -+ g_object_get (G_OBJECT (iter->data), "visible", &visible, NULL); -+ if (active && visible) -+ { -+ gtk_widget_grab_focus (GTK_WIDGET (iter->data)); -+ return TRUE; -+ } -+ -+ if (forward) -+ iter = g_list_next (iter); -+ else -+ iter = g_list_previous (iter); -+ } -+ -+ return FALSE; -+} -+static GtkWidget* -+gtk_dialog_get_first_sensitive (GList *list) -+{ -+ GList *sublist = NULL; -+ GList *iter = NULL; -+ GtkWidget *widget = NULL; -+ gboolean active; -+ gboolean visible; -+ while (list) -+ { -+ widget = GTK_WIDGET (list->data); -+ if (GTK_IS_CONTAINER (widget)) -+ { -+ sublist = gtk_container_get_children (GTK_CONTAINER(widget)); -+ widget = gtk_dialog_get_first_sensitive (sublist); -+ g_list_free (sublist); -+ sublist = NULL; -+ -+ if (widget) -+ return widget; -+ } -+ else -+ { -+ g_object_get (G_OBJECT (widget), "sensitive", &active, NULL); -+ g_object_get (G_OBJECT (widget), "visible", &visible, NULL); -+ if (active && visible && GTK_WIDGET_CAN_FOCUS (widget)) -+ return widget; -+ } -+ -+ list = g_list_next (list); -+ } -+ -+ return NULL; -+} -+ -+static GtkWidget* -+gtk_dialog_get_last_sensitive (GList *list) -+{ -+ GList *sublist = NULL; -+ GtkWidget *widget = NULL; -+ gboolean active; -+ gboolean visible; -+ -+ list = g_list_last (list); -+ if (list && list->prev != NULL) -+ list = g_list_previous (list); -+ -+ while (list) -+ { -+ widget = GTK_WIDGET (list->data); -+ if (GTK_IS_CONTAINER (widget)) -+ { -+ sublist = gtk_container_get_children (GTK_CONTAINER(widget)); -+ widget = gtk_dialog_get_last_sensitive (sublist); -+ g_list_free (sublist); -+ sublist = NULL; -+ -+ if (widget) -+ return widget; -+ } -+ else -+ { -+ g_object_get (G_OBJECT (widget), "sensitive", &active, NULL); -+ g_object_get (G_OBJECT (widget), "visible", &visible, NULL); -+ if (active && visible && GTK_WIDGET_CAN_FOCUS (widget)) -+ return widget; -+ } -+ -+ list = g_list_previous (list); -+ } -+ -+ return NULL; -+} -+ - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkdnd.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkdnd.c.diff deleted file mode 100644 index 247d3f9b46..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkdnd.c.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkdnd.c 2005-02-01 20:07:40.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkdnd.c 2005-04-06 16:19:36.432999704 +0300 -@@ -2145,6 +2145,9 @@ - g_signal_connect (widget, "button_press_event", - G_CALLBACK (gtk_drag_source_event_cb), - site); -+ g_signal_connect (widget, "button_release_event", -+ G_CALLBACK (gtk_drag_source_event_cb), -+ site); - g_signal_connect (widget, "motion_notify_event", - G_CALLBACK (gtk_drag_source_event_cb), - site); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkentry.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkentry.c.diff deleted file mode 100644 index fae911305c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkentry.c.diff +++ /dev/null @@ -1,1308 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkentry.c 2005-02-04 17:36:02.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkentry.c 2005-04-06 16:19:36.466994536 +0300 -@@ -24,6 +24,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+ /* Modified for Nokia Oyj during 2002-2003. See CHANGES file for list -+ * of changes. -+ */ -+ - #include <config.h> - #include <string.h> - -@@ -53,6 +57,7 @@ - #include "gtktreeselection.h" - #include "gtkentryprivate.h" - #include "gtkcelllayout.h" -+#include "gtkscrolledwindow.h" - - #define GTK_ENTRY_COMPLETION_KEY "gtk-entry-completion-key" - -@@ -60,6 +65,8 @@ - #define DRAW_TIMEOUT 20 - #define INNER_BORDER 2 - #define COMPLETION_TIMEOUT 300 -+#define HILDON_EDITED_CHARACTER_MAX 8 -+#define HILDON_EDITED_CHARACTER_MS 600 /* 0.6 seconds */ - - /* Initial size of buffer, in bytes */ - #define MIN_SIZE 16 -@@ -75,6 +82,18 @@ - { - gfloat xalign; - gint insert_pos; -+ /* Hildon additions: -+ * following variables are needed -+ * for Hildon password 'preview' -+ * functionality; last inputted character -+ * is showed for defined period, before it is -+ * rendered to '*' -+ */ -+ gchar hildon_edited_character[HILDON_EDITED_CHARACTER_MAX]; -+ gboolean hildon_edited_character_timeout; -+ gint hildon_edited_character_length; -+ gboolean keep_focus; -+ gboolean menu_popped; - }; - - enum { -@@ -104,7 +123,9 @@ - PROP_WIDTH_CHARS, - PROP_SCROLL_OFFSET, - PROP_TEXT, -- PROP_XALIGN -+ PROP_XALIGN, -+ PROP_AUTOCAP, -+ PROP_INPUT_MODE - }; - - static guint signals[LAST_SIGNAL] = { 0 }; -@@ -324,6 +345,23 @@ - gint *y, - gint *width, - gint *height); -+static void gtk_entry_update_scrolled_window (GtkEntry *entry); -+static void gtk_entry_set_autocap (GtkEntry *entry, -+ gboolean autocap); -+static gboolean gtk_entry_get_autocap (GtkEntry *entry); -+static void gtk_entry_set_input_mode (GtkEntry *entry, -+ gboolean mode); -+static gint gtk_entry_get_input_mode (GtkEntry *entry); -+ -+/*Change for Hildon -+ *returns an iterator to the character at position x,y of the -+ *layout -+ *returns NULL if no iterator was found at that position -+ *Caller must call pango_layout_free_iter on the returned iterator -+ */ -+static PangoLayoutIter *get_char_at_pos( PangoLayout *layout, gint x, gint y ); -+ -+static gboolean hildon_remove_visible_character( gpointer data ); - - /* Completion */ - static gint gtk_entry_completion_timeout (gpointer data); -@@ -523,7 +561,25 @@ - P_("FALSE displays the \"invisible char\" instead of the actual text (password mode)"), - TRUE, - G_PARAM_READABLE | G_PARAM_WRITABLE)); -- -+ -+ g_object_class_install_property (gobject_class, -+ PROP_AUTOCAP, -+ g_param_spec_boolean ("autocap", -+ P_("auto capitalization"), -+ P_("Enable autocap support"), -+ TRUE, -+ G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ -+ g_object_class_install_property (gobject_class, -+ PROP_INPUT_MODE, -+ g_param_spec_int ("input_mode", -+ P_("input mode"), -+ P_("Define widget's input mode"), -+ 0, -+ 9, /* keep me updated */ -+ 0, -+ G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ - g_object_class_install_property (gobject_class, - PROP_HAS_FRAME, - g_param_spec_boolean ("has_frame", -@@ -593,6 +649,40 @@ - 0.0, - G_PARAM_READABLE | G_PARAM_WRITABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("horizontal-border", -+ P_("Horizontal borders for entry"), -+ P_("Set left/right borders"), -+ 0, -+ G_MAXINT, -+ INNER_BORDER, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("vertical-border", -+ P_("Vertical borders for entry"), -+ P_("Set top/bottom borders"), -+ 0, -+ G_MAXINT, -+ INNER_BORDER, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("icon-width", -+ P_("Icon Width"), -+ P_("Size of the purpose icon."), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("show-last-char", -+ P_("Show last char in invisible mode for a while"), -+ P_("Last char is shown before it is rendered to asterisk"), -+ FALSE, -+ G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ - signals[POPULATE_POPUP] = - g_signal_new ("populate_popup", - G_OBJECT_CLASS_TYPE (gobject_class), -@@ -853,6 +943,22 @@ - iface->start_editing = gtk_entry_start_editing; - } - -+/* HILDON: Timed function to hide the most recently inputted character in password mode -+*/ -+static gboolean -+ hildon_remove_visible_character( gpointer data ) -+{ -+ g_return_val_if_fail (GTK_IS_WIDGET (data), FALSE); -+ -+ GtkEntry * entry = GTK_ENTRY( data ); -+ -+ /* Force the string to redrawn, but now without a visible character */ -+ gtk_entry_recompute( entry ); -+ -+ /* Return false so this timeout is not called again and destroyed */ -+ return FALSE; -+} -+ - static void - gtk_entry_set_property (GObject *object, - guint prop_id, -@@ -867,9 +973,10 @@ - { - gboolean new_value = g_value_get_boolean (value); - -+ gtk_widget_set_sensitive( GTK_WIDGET( entry ), entry->editable ); - if (new_value != entry->editable) - { -- if (!new_value) -+ if (!new_value) - { - gtk_entry_reset_im_context (entry); - if (GTK_WIDGET_HAS_FOCUS (entry)) -@@ -896,6 +1003,14 @@ - case PROP_VISIBILITY: - gtk_entry_set_visibility (entry, g_value_get_boolean (value)); - break; -+ -+ case PROP_AUTOCAP: -+ gtk_entry_set_autocap (entry, g_value_get_boolean (value)); -+ break; -+ -+ case PROP_INPUT_MODE: -+ gtk_entry_set_input_mode (entry, g_value_get_int (value)); -+ break; - - case PROP_HAS_FRAME: - gtk_entry_set_has_frame (entry, g_value_get_boolean (value)); -@@ -954,6 +1069,12 @@ - case PROP_VISIBILITY: - g_value_set_boolean (value, entry->visible); - break; -+ case PROP_AUTOCAP: -+ g_value_set_boolean (value, gtk_entry_get_autocap (entry)); -+ break; -+ case PROP_INPUT_MODE: -+ g_value_set_int (value, gtk_entry_get_input_mode (entry)); -+ break; - case PROP_HAS_FRAME: - g_value_set_boolean (value, entry->has_frame); - break; -@@ -1000,7 +1121,20 @@ - entry->width_chars = -1; - entry->is_cell_renderer = FALSE; - entry->editing_canceled = FALSE; -- entry->has_frame = TRUE; -+#ifdef HILDON_SINGLE_LINE_EDITOR -+ entry->has_frame = FALSE; -+#else -+ entry->has_frame = TRUE; -+#endif -+ -+ /* Hildon */ -+ memset( &priv->hildon_edited_character, 0x00, HILDON_EDITED_CHARACTER_MAX ); -+ priv->hildon_edited_character_length = 0; -+ priv->hildon_edited_character_timeout = FALSE; -+ -+ priv->keep_focus = FALSE; -+ priv->menu_popped = FALSE; -+ - priv->xalign = 0.0; - - gtk_drag_dest_set (GTK_WIDGET (entry), -@@ -1013,6 +1147,10 @@ - * to it; so we create it here and destroy it in finalize(). - */ - entry->im_context = gtk_im_multicontext_new (); -+ /* Set default stuff. */ -+ gtk_entry_set_autocap (entry, TRUE); -+ gtk_entry_set_input_mode (entry, 0); /* alpha-numeric-special */ -+ g_object_set (G_OBJECT (entry->im_context), "use-show-hide", TRUE, NULL); - - g_signal_connect (entry->im_context, "commit", - G_CALLBACK (gtk_entry_commit_cb), entry); -@@ -1058,7 +1196,8 @@ - gtk_entry_finalize (GObject *object) - { - GtkEntry *entry = GTK_ENTRY (object); -- -+ GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (GTK_WIDGET (entry)); -+ - gtk_entry_set_completion (entry, NULL); - - if (entry->cached_layout) -@@ -1072,6 +1211,9 @@ - if (entry->recompute_idle) - g_source_remove (entry->recompute_idle); - -+ if (priv->hildon_edited_character_timeout) -+ g_source_remove (priv->hildon_edited_character_timeout); -+ - entry->text_size = 0; - - if (entry->text) -@@ -1213,7 +1355,14 @@ - PangoFontMetrics *metrics; - gint xborder, yborder; - PangoContext *context; -- -+ gint border_x, border_y; -+ gint icon_width; -+ -+ gtk_widget_style_get (widget, -+ "horizontal-border", &border_x, -+ "vertical-border", &border_y, -+ "icon-width", &icon_width, NULL); -+ - gtk_widget_ensure_style (widget); - context = gtk_widget_get_pango_context (widget); - metrics = pango_context_get_metrics (context, -@@ -1225,21 +1374,22 @@ - - _gtk_entry_get_borders (entry, &xborder, &yborder); - -- xborder += INNER_BORDER; -- yborder += INNER_BORDER; -+ xborder += border_x<<1; -+ yborder += border_y<<1; - - if (entry->width_chars < 0) -- requisition->width = MIN_ENTRY_WIDTH + xborder * 2; -+ requisition->width = MIN_ENTRY_WIDTH + xborder; - else - { - gint char_width = pango_font_metrics_get_approximate_char_width (metrics); - gint digit_width = pango_font_metrics_get_approximate_digit_width (metrics); - gint char_pixels = (MAX (char_width, digit_width) + PANGO_SCALE - 1) / PANGO_SCALE; - -- requisition->width = char_pixels * entry->width_chars + xborder * 2; -+ requisition->width = char_pixels * entry->width_chars + xborder; - } -- -- requisition->height = PANGO_PIXELS (entry->ascent + entry->descent) + yborder * 2; -+ -+ requisition->width += icon_width; -+ requisition->height = PANGO_PIXELS (entry->ascent + entry->descent) + yborder; - - pango_font_metrics_unref (metrics); - } -@@ -1253,23 +1403,39 @@ - { - gint xborder, yborder; - GtkRequisition requisition; -+ gint icon_width; - GtkWidget *widget = GTK_WIDGET (entry); - -+ gtk_widget_style_get (widget, "icon-width", &icon_width, NULL); -+ - gtk_widget_get_child_requisition (widget, &requisition); - - _gtk_entry_get_borders (entry, &xborder, &yborder); - - if (x) -- *x = xborder; -+ *x = xborder + icon_width; - - if (y) -+ { - *y = yborder; -+ if( widget->allocation.height < requisition.height ) -+ *y += ((widget->allocation.height - requisition.height) / 2); -+ if( *y < yborder ) -+ *y = yborder; -+ } - - if (width) -- *width = GTK_WIDGET (entry)->allocation.width - xborder * 2; -+ *width = GTK_WIDGET (entry)->allocation.width - xborder * 2 - icon_width; - - if (height) -- *height = requisition.height - yborder * 2; -+ { -+ if( widget->allocation.height < requisition.height ) -+ *height = widget->allocation.height - yborder * 2; -+ else -+ *height = widget->requisition.height - yborder * 2; -+ if( *height <=0 ) -+ *height = 1; -+ } - } - - static void -@@ -1289,10 +1455,9 @@ - - if (y) - { -- if (entry->is_cell_renderer) -- *y = widget->allocation.y; -- else -- *y = widget->allocation.y + (widget->allocation.height - requisition.height) / 2; -+ *y = widget->allocation.y; -+ if( widget->allocation.height > requisition.height ) -+ *y += ((widget->allocation.height - requisition.height) / 2); - } - - if (width) -@@ -1300,10 +1465,10 @@ - - if (height) - { -- if (entry->is_cell_renderer) -- *height = widget->allocation.height; -- else -+ if( widget->allocation.height > requisition.height ) - *height = requisition.height; -+ else -+ *height = widget->allocation.height; - } - } - -@@ -1383,20 +1548,19 @@ - GdkEventExpose *event) - { - GtkEntry *entry = GTK_ENTRY (widget); -+ gint area_width, area_height; -+ -+ get_widget_window_size (entry, NULL, NULL, &area_width, &area_height); - - if (widget->window == event->window) -- gtk_entry_draw_frame (widget); -+ { -+ gtk_paint_box (widget->style, widget->window, -+ GTK_WIDGET_STATE (widget), GTK_SHADOW_NONE, -+ NULL, widget, "entry_frame", -+ 0, 0, area_width, area_height); -+ } - else if (entry->text_area == event->window) - { -- gint area_width, area_height; -- -- get_text_area_size (entry, NULL, NULL, &area_width, &area_height); -- -- gtk_paint_flat_box (widget->style, entry->text_area, -- GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE, -- NULL, widget, "entry_bg", -- 0, 0, area_width, area_height); -- - if ((entry->visible || entry->invisible_char != 0) && - GTK_WIDGET_HAS_FOCUS (widget) && - entry->selection_bound == entry->current_pos && entry->cursor_visible) -@@ -1490,16 +1654,19 @@ - return FALSE; - - entry->button = event->button; -- -+ - if (!GTK_WIDGET_HAS_FOCUS (widget)) - { - entry->in_click = TRUE; - gtk_widget_grab_focus (widget); - entry->in_click = FALSE; - } -- -+ -+ /* Hildon: we need to reset IM context so pre-edit string can be committed */ -+ gtk_entry_reset_im_context (entry); -+ - tmp_pos = gtk_entry_find_position (entry, event->x + entry->scroll_offset); -- -+ - if (event->button == 1) - { - gboolean have_selection = gtk_editable_get_selection_bounds (editable, &sel_start, &sel_end); -@@ -1509,8 +1676,6 @@ - - if (event->state & GDK_SHIFT_MASK) - { -- gtk_entry_reset_im_context (entry); -- - if (!have_selection) /* select from the current position to the clicked position */ - sel_start = sel_end = entry->current_pos; - -@@ -1575,9 +1740,20 @@ - entry->drag_start_x = event->x + entry->scroll_offset; - entry->drag_start_y = event->y + entry->scroll_offset; - } -- else -- gtk_editable_set_position (editable, tmp_pos); -- break; -+ else { -+ /* HILDON: do not move the cursor inside the textarea if invisible -+ * as per the specifications */ -+ if (!entry->visible) -+ if(tmp_pos == strlen(gtk_entry_get_text(entry))){ -+ gtk_editable_set_position( editable, entry->text_length); -+ } else { -+ gtk_editable_select_region (editable, 0, -1); -+ } -+ else -+ gtk_editable_set_position (editable, tmp_pos); -+ } -+ -+ break; - - case GDK_2BUTTON_PRESS: - /* We ALWAYS receive a GDK_BUTTON_PRESS immediately before -@@ -1614,8 +1790,16 @@ - } - else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) - { -+ /* Hildon: if we are in password mode selection and Cut & Copy should -+ be disabled. */ -+ if (!entry->visible) -+ { -+ gtk_editable_set_position (GTK_EDITABLE(entry), 0); -+ } -+ - gtk_entry_do_popup (entry, event); - entry->button = 0; /* Don't wait for release, since the menu will gtk_grab_add */ -+ priv->keep_focus = TRUE; - - return TRUE; - } -@@ -1632,11 +1816,23 @@ - if (event->window != entry->text_area || entry->button != event->button) - return FALSE; - -+ if (entry->editable) -+ gtk_im_context_show (entry->im_context); -+ - if (entry->in_drag) - { - gint tmp_pos = gtk_entry_find_position (entry, entry->drag_start_x); - -- gtk_editable_set_position (GTK_EDITABLE (entry), tmp_pos); -+ /* HILDON: If not visible, do not allow cursor to be positioned inside the string */ -+ if (!entry->visible){ -+ if(tmp_pos == strlen(gtk_entry_get_text(entry))){ -+ gtk_editable_set_position( GTK_EDITABLE(entry), entry->text_length); -+ } else { -+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1); -+ } -+ } else { -+ gtk_editable_set_position (GTK_EDITABLE (entry), tmp_pos); -+ } - - entry->in_drag = 0; - } -@@ -1822,6 +2018,13 @@ - } - } - -+ if (event->keyval == GDK_Return) -+ return FALSE; -+ if (event->keyval == GDK_KP_Enter) -+ g_signal_emit_by_name (G_OBJECT(gtk_widget_get_ancestor (widget, -+ GTK_TYPE_WINDOW)), "move-focus", -+ GTK_DIR_TAB_FORWARD); -+ - if (GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event)) - /* Activate key bindings - */ -@@ -1835,6 +2038,8 @@ - GdkEventKey *event) - { - GtkEntry *entry = GTK_ENTRY (widget); -+ -+ gtk_entry_update_scrolled_window( entry ); - - if (entry->editable) - { -@@ -1853,7 +2058,35 @@ - GdkEventFocus *event) - { - GtkEntry *entry = GTK_ENTRY (widget); -- -+ GtkEntryPrivate *priv; -+ -+ priv = GTK_ENTRY_GET_PRIVATE (widget); -+ /* Hildon : If the text doesn't fit the entry, upon focusing -+ * to an text field, move the caret to the end of the entry. -+ * Force the entry to recompute, otherwise it doesn't update -+ * if the cursor is currently at the end*/ -+ /* hildon : If the text has no selection and focus returned with -+ other means than pointer click, set cursor before first -+ character of the text, otherwise behave normally */ -+ -+ if (!entry->in_click) -+ { -+ /*gboolean has_selection; -+ has_selection = gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), NULL, NULL); -+ if (!has_selection) -+ { -+ gtk_editable_set_position (GTK_EDITABLE (entry), -1); -+ }*//*FIXME need a better hack here*/ -+ /* Hildon: If in SecretEditor mode highlight selection if entry got focus -+ * otherways than mouse/stylus */ -+ if (!entry->visible && priv->keep_focus) -+ { -+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1); -+ } -+ } -+ -+ gtk_entry_recompute (GTK_ENTRY (entry)); -+ - gtk_widget_queue_draw (widget); - - if (entry->editable) -@@ -1876,6 +2109,8 @@ - GdkEventFocus *event) - { - GtkEntry *entry = GTK_ENTRY (widget); -+ GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget); -+ guint tmp_pos; - GtkEntryCompletion *completion; - - gtk_widget_queue_draw (widget); -@@ -1886,6 +2121,20 @@ - gtk_im_context_focus_out (entry->im_context); - } - -+ tmp_pos = gtk_editable_get_position (GTK_EDITABLE (widget)); -+ if (priv->keep_focus){ -+ if (!entry->visible) -+ gtk_editable_set_position (GTK_EDITABLE (widget), tmp_pos); -+ priv->keep_focus = FALSE; -+ } -+ else { -+ if (priv->menu_popped) -+ priv->menu_popped = FALSE; -+ else gtk_editable_set_position (GTK_EDITABLE (widget), tmp_pos); -+ } -+ -+ gtk_widget_queue_draw(widget); -+ - gtk_entry_check_cursor_blink (entry); - - g_signal_handlers_disconnect_by_func (gdk_keymap_get_for_display (gtk_widget_get_display (widget)), -@@ -1902,7 +2151,6 @@ - static void - gtk_entry_grab_focus (GtkWidget *widget) - { -- GtkEntry *entry = GTK_ENTRY (widget); - gboolean select_on_focus; - - GTK_WIDGET_CLASS (parent_class)->grab_focus (widget); -@@ -1912,8 +2160,8 @@ - &select_on_focus, - NULL); - -- if (select_on_focus && entry->editable && !entry->in_click) -- gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1); -+/* Hildon : When focusing to an entry, it shouldn't become -+ * highlighted. */ - } - - static void -@@ -1987,7 +2235,7 @@ - - if (new_text_length > 63) - g_free (text); -- -+ gtk_entry_update_scrolled_window( entry ); - g_object_unref (editable); - } - -@@ -2074,7 +2322,7 @@ - if (end < 0) - end = entry->text_length; - -- gtk_entry_reset_im_context (entry); -+ /*gtk_entry_reset_im_context (entry);*//*FIXME tmp kludge, might break something*/ - - gtk_entry_set_positions (entry, - MIN (end, entry->text_length), -@@ -2168,13 +2416,19 @@ - { - gint index; - gint n_chars; -+ gboolean show_last_char = FALSE; - - GtkEntry *entry = GTK_ENTRY (editable); -- -+ GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (GTK_WIDGET (entry)); - if (new_text_length < 0) - new_text_length = strlen (new_text); - - n_chars = g_utf8_strlen (new_text, new_text_length); -+ -+ -+ gtk_widget_style_get (GTK_WIDGET (entry), "show-last-char", -+ &show_last_char, NULL); -+ - if (entry->text_max_length > 0 && n_chars + entry->text_length > entry->text_max_length) - { - gdk_display_beep (gtk_widget_get_display (GTK_WIDGET (entry))); -@@ -2238,6 +2492,14 @@ - - if (entry->selection_bound > *position) - entry->selection_bound += n_chars; -+ -+ /* Hildon: store this addition IF it was only 1 char (user inputted) and we are currently in secret mode (invisible) */ -+ -+ if (show_last_char && n_chars == 1 && !entry->visible && (new_text_length < HILDON_EDITED_CHARACTER_MAX)) { -+ memset( &priv->hildon_edited_character, 0x00, HILDON_EDITED_CHARACTER_MAX ); -+ priv->hildon_edited_character_length = new_text_length; -+ memcpy( &priv->hildon_edited_character, new_text, new_text_length ); /* Guaranteed to be < total length */ -+ } - - *position += n_chars; - -@@ -2339,6 +2601,11 @@ - - gtk_entry_reset_im_context (entry); - -+ /* Hildon, if not visible set the position to the end */ -+ /* New SecretEditor specs say that with cursor should move -+ * With left/right arrows -+ */ -+ - if (entry->current_pos != entry->selection_bound && !extend_selection) - { - /* If we have a current selection and aren't extending it, move to the -@@ -2445,7 +2712,7 @@ - gint start_pos = entry->current_pos; - gint end_pos = entry->current_pos; - -- gtk_entry_reset_im_context (entry); -+ /* Hildon: code removed - backspace should not clear the word completion */ - - if (!entry->editable) - return; -@@ -2515,7 +2782,8 @@ - GtkEditable *editable = GTK_EDITABLE (entry); - gint prev_pos; - -- gtk_entry_reset_im_context (entry); -+/* gtk_entry_reset_im_context (entry); */ /*backspace should not clear -+ the word completion*/ - - if (!entry->editable || !entry->text) - return; -@@ -2883,21 +3151,28 @@ - ++i; - } - } -- -+ -+#define HILDON_EDITED_CHARACTER_MS 600 /* 0.6 seconds */ -+ - static PangoLayout * - gtk_entry_create_layout (GtkEntry *entry, - gboolean include_preedit) - { - GtkWidget *widget = GTK_WIDGET (entry); -+ GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry); - PangoLayout *layout = gtk_widget_create_pango_layout (widget, NULL); - PangoAttrList *tmp_attrs = pango_attr_list_new (); - - gchar *preedit_string = NULL; - gint preedit_length = 0; - PangoAttrList *preedit_attrs = NULL; -+ gboolean show_last_char = FALSE; - - pango_layout_set_single_paragraph_mode (layout, TRUE); - -+ gtk_widget_style_get (widget, "show-last-char", -+ &show_last_char, NULL); -+ - if (include_preedit) - { - gtk_im_context_get_preedit_string (entry->im_context, -@@ -3003,7 +3278,49 @@ - else - invisible_char = ' '; /* just pick a char */ - -- append_char (str, invisible_char, entry->text_length); -+ if (!show_last_char) -+ append_char (str, invisible_char, entry->text_length); -+ else if (show_last_char) -+ { -+ /* Hildon */ -+ if (priv->hildon_edited_character_length > 0) -+ { -+ -+ /* If we have an outstanding timeout, remove it, because the character it is set to hide -+ * is already hidden now. We do this first to prevent possible race conditions if the timout -+ * were to trigger while in here -+ */ -+ -+ if (priv->hildon_edited_character_timeout) -+ { -+ g_source_remove( priv->hildon_edited_character_timeout ); -+ priv->hildon_edited_character_timeout = FALSE; -+ } -+ -+ /* Draw the secret character length-1 times, because the last char will be visible */ -+ append_char (str, invisible_char, entry->text_length > 1 ? entry->text_length - 1 : 0); -+ -+ /* Add our visible char, the most recently inputted one */ -+ g_string_append_len (str, (char *)&priv->hildon_edited_character, priv->hildon_edited_character_length); -+ -+ /* Now remove this last inputted character, don't need it anymore */ -+ -+ memset( priv->hildon_edited_character, 0x00, HILDON_EDITED_CHARACTER_MAX ); -+ priv->hildon_edited_character_length = 0; -+ -+ priv->hildon_edited_character_timeout = g_timeout_add( HILDON_EDITED_CHARACTER_MS, (GSourceFunc) -+ hildon_remove_visible_character, entry ); -+ -+ } -+ else -+ { -+ /* No last character known. This could be for example because the application has filled -+ * in the password already. In that case we of course don't want to view it -+ */ -+ append_char (str, invisible_char, entry->text_length); -+ } -+ } -+ - pango_layout_set_text (layout, str->str, str->len); - g_string_free (str, TRUE); - } -@@ -3048,12 +3365,17 @@ - gint area_width, area_height; - gint y_pos; - PangoLayoutLine *line; -- -+ gint border_x, border_y; -+ -+ gtk_widget_style_get (GTK_WIDGET (entry), "horizontal-border", &border_x, -+ "vertical-border", &border_y, -+ NULL); -+ - layout = gtk_entry_ensure_layout (entry, TRUE); - - get_text_area_size (entry, NULL, NULL, &area_width, &area_height); - -- area_height = PANGO_SCALE * (area_height - 2 * INNER_BORDER); -+ area_height = PANGO_SCALE * (area_height - 2 * border_y); - - line = pango_layout_get_lines (layout)->data; - pango_layout_line_get_extents (line, NULL, &logical_rect); -@@ -3070,10 +3392,10 @@ - else if (y_pos + logical_rect.height > area_height) - y_pos = area_height - logical_rect.height; - -- y_pos = INNER_BORDER + y_pos / PANGO_SCALE; -+ y_pos = border_y + y_pos / PANGO_SCALE; - - if (x) -- *x = INNER_BORDER - entry->scroll_offset; -+ *x = border_x - entry->scroll_offset; - - if (y) - *y = y_pos; -@@ -3083,6 +3405,10 @@ - gtk_entry_draw_text (GtkEntry *entry) - { - GtkWidget *widget; -+ gint border_y, border_x; -+ -+ gtk_widget_style_get (GTK_WIDGET (entry), "horizontal-border", &border_x, -+ "vertical-border", &border_y, NULL); - - if (!entry->visible && entry->invisible_char == 0) - return; -@@ -3092,14 +3418,76 @@ - PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE); - gint x, y; - gint start_pos, end_pos; -+ GdkRectangle clip_rect; - - widget = GTK_WIDGET (entry); - - get_layout_position (entry, &x, &y); - -+ /* Use a clipping rectangle so that we always get enough empty space around -+ * the text. -+ */ -+ clip_rect.x = border_x; -+ clip_rect.y = 0; -+ -+ gdk_drawable_get_size (entry->text_area, &clip_rect.width, &clip_rect.height); -+ clip_rect.width -= border_x * 2; -+ -+ /*changes for Hildon -+ *Reduce the size of the clip rect, so that only full characters are displayed -+ */ -+ -+ /* NOTE: Commented out because it does not work with bidi text where -+the indexes are in random -+ * left-right or right-left order. Code causes Pango assert aborts. Because gtkentry itself -+ * is broken with regard to bidi anyway (bug #478) we ignore this requirement of the spec -+ * until gtkentry itself is fixed. (bug #477) -+ */ -+ -+ /* Better yet, let's enable this only when not in RTL mode */ -+ -+ /* Note: BUG #857. patched gtkentry crashed when pasting scalable fonts. This is pango problem -+ * and we tested patched gtkentry with pango version 1.3.2 and it appears to be fixed. Section is commented -+ out until we upgrade to new version of pango -+ if (gtk_widget_get_direction( entry ) != GTK_TEXT_DIR_RTL) -+ { -+ PangoRectangle char_rect; // used for getting character's onscreen pos -+ PangoLayoutIter *iter; // used to iterate over the text -+ -+ // get the position of the character currently at the clip border -+ iter = get_char_at_pos( layout, (clip_rect.x + clip_rect.width + entry->scroll_offset), 0 ); -+ if ( iter ) -+ { -+ // get the position of that character on the screen -+ pango_layout_iter_get_char_extents( iter, &char_rect ); -+ char_rect.x /= PANGO_SCALE; -+ char_rect.x -= entry->scroll_offset; -+ char_rect.width /= PANGO_SCALE; -+ -+ // if the ending position is > the clip rectangle, then the -+ // character is only partially visible, and we should -+ // clip the entire character. -+ -+ if ( char_rect.x + char_rect.width > clip_rect.x + clip_rect.width ) -+ { -+ clip_rect.width = char_rect.x; -+ } -+ -+ pango_layout_iter_free( iter ); -+ } -+ -+ } -+ */ -+ /******************************************************************/ -+ -+ gdk_gc_set_clip_rectangle (widget->style->text_gc [widget->state], &clip_rect); -+ - gdk_draw_layout (entry->text_area, widget->style->text_gc [widget->state], - x, y, - layout); -+ -+ gdk_gc_set_clip_rectangle (widget->style->text_gc [widget->state], NULL); -+ - - if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos)) - { -@@ -3128,7 +3516,7 @@ - { - GdkRectangle rect; - -- rect.x = INNER_BORDER - entry->scroll_offset + ranges[2 * i]; -+ rect.x = border_x - entry->scroll_offset + ranges[2 * i]; - rect.y = y; - rect.width = ranges[2 * i + 1]; - rect.height = logical_rect.height; -@@ -3177,14 +3565,18 @@ - { - GdkKeymap *keymap = gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET (entry))); - PangoDirection keymap_direction = gdk_keymap_get_direction (keymap); -+ gint border_x, border_y; - -+ gtk_widget_style_get (GTK_WIDGET (entry), "horizontal-border", &border_x, -+ "vertical-border", &border_y, -+ NULL); - if (GTK_WIDGET_DRAWABLE (entry)) - { - GtkWidget *widget = GTK_WIDGET (entry); - GdkRectangle cursor_location; - gboolean split_cursor; - -- gint xoffset = INNER_BORDER - entry->scroll_offset; -+ gint xoffset = border_x - entry->scroll_offset; - gint strong_x, weak_x; - gint text_area_height; - PangoDirection dir1 = PANGO_DIRECTION_NEUTRAL; -@@ -3221,9 +3613,9 @@ - } - - cursor_location.x = xoffset + x1; -- cursor_location.y = INNER_BORDER; -+ cursor_location.y = border_y; - cursor_location.width = 0; -- cursor_location.height = text_area_height - 2 * INNER_BORDER ; -+ cursor_location.height = text_area_height - 2 * border_y; - - draw_insertion_cursor (entry, - &cursor_location, TRUE, dir1, -@@ -3249,11 +3641,8 @@ - static void - gtk_entry_reset_im_context (GtkEntry *entry) - { -- if (entry->need_im_reset) -- { -- entry->need_im_reset = 0; -- gtk_im_context_reset (entry->im_context); -- } -+ /* Hildon: We want reset to be sent more often */ -+ gtk_im_context_reset (entry->im_context); - } - - static gint -@@ -3266,8 +3655,12 @@ - gint pos; - gboolean trailing; - const gchar *text; -- gint cursor_index; -- -+ gint border_x, cursor_index; -+ -+ gtk_widget_style_get (GTK_WIDGET (entry), "horizontal-border", &border_x, -+ NULL); -+ x -= border_x; -+ - layout = gtk_entry_ensure_layout (entry, TRUE); - text = pango_layout_get_text (layout); - cursor_index = g_utf8_offset_to_pointer (text, entry->current_pos) - text; -@@ -3355,12 +3748,17 @@ - PangoLayout *layout; - PangoLayoutLine *line; - PangoRectangle logical_rect; -+ gint border_x, border_y; -+ -+ gtk_widget_style_get (GTK_WIDGET (entry), "horizontal-border", &border_x, -+ "vertical-border", &border_y, -+ NULL); - - if (!GTK_WIDGET_REALIZED (entry)) - return; - - gdk_drawable_get_size (entry->text_area, &text_area_width, NULL); -- text_area_width -= 2 * INNER_BORDER; -+ text_area_width -= 2 * border_x; - - layout = gtk_entry_ensure_layout (entry, TRUE); - line = pango_layout_get_lines (layout)->data; -@@ -3390,13 +3788,13 @@ - entry->scroll_offset = CLAMP (entry->scroll_offset, min_offset, max_offset); - - /* And make sure cursors are on screen. Note that the cursor is -- * actually drawn one pixel into the INNER_BORDER space on -+ * actually drawn one pixel into the border_x space on - * the right, when the scroll is at the utmost right. This - * looks better to to me than confining the cursor inside the - * border entirely, though it means that the cursor gets one - * pixel closer to the edge of the widget on the right than - * on the left. This might need changing if one changed -- * INNER_BORDER from 2 to 1, as one would do on a -+ * border_x from 2 to 1, as one would do on a - * small-screen-real-estate display. - * - * We always make sure that the strong cursor is on screen, and -@@ -3430,6 +3828,52 @@ - entry->scroll_offset += weak_xoffset - text_area_width; - } - -+ /*Changes for Hildon -+ * now we make it so that if a character is partially visible, -+ * then we also scroll that off the screen. -+ */ -+ -+ /* NOTE: Commented out because it does not work with bidi text where the indexes are in random -+ * left-right or right-left order. Code causes Pango assert aborts. Because gtkentry itself -+ * is broken with regard to bidi anyway (bug #478) we ignore this requirement of the spec -+ * until gtkentry itself is fixed. (bug #477) -+ */ -+ -+ /* Better yet, let's disable this (for now) only when using RTL text */ -+ -+/*Note: BUG #857. patched gtkentry crashed when pasting scalable fonts. This is pango problem -+ * and we tested patched gtkentry with pango version 1.3.2 and it appears to be fixed. Section is comment ed out until we upgrade to new version of pango -+ if (gtk_widget_get_direction( entry ) != GTK_TEXT_DIR_RTL) -+ { -+ PangoLayoutIter *iter = get_char_at_pos( layout, entry->scroll_offset, 0 ); -+ // if we found the char we were looking for -+ if ( iter ) -+ { -+ PangoRectangle char_rect; // used for getting character's onscreen pos -+ -+ // get the position of that character on the screen -+ pango_layout_iter_get_char_extents( iter, &char_rect ); -+ char_rect.x /= PANGO_SCALE; -+ -+ // if the starting position is < the current scroll offset, then the -+ // character is only partially visible, and we should scroll to the -+ // start of the next character instead -+ -+ if ( char_rect.x < entry->scroll_offset ) -+ { -+ if ( pango_layout_iter_next_char( iter ) ) -+ { -+ pango_layout_iter_get_char_extents( iter, &char_rect); -+ entry->scroll_offset = char_rect.x / PANGO_SCALE; -+ } -+ } -+ -+ pango_layout_iter_free( iter ); -+ } -+ -+ -+ }*/ -+ - g_object_notify (G_OBJECT (entry), "scroll_offset"); - } - -@@ -3552,8 +3996,9 @@ - pango_layout_get_log_attrs (layout, &log_attrs, &n_attrs); - - /* Find the next word end */ -+ /*Hildon: cursor should seek to the start of the next word*/ - new_pos++; -- while (new_pos < n_attrs && !log_attrs[new_pos].is_word_end) -+ while (new_pos < n_attrs && !log_attrs[new_pos].is_word_start) - new_pos++; - - g_free (log_attrs); -@@ -3648,14 +4093,9 @@ - - if (entry->visible) - return gtk_editable_get_chars (GTK_EDITABLE (entry), start, end); -- else if (!entry->invisible_char) -+ /*Hildon: when not visible, no chars are public*/ -+ else - return g_strdup (""); -- else -- { -- GString *str = g_string_new (NULL); -- append_char (str, entry->invisible_char, end - start); -- return g_string_free (str, FALSE); -- } - } - - static void -@@ -3678,9 +4118,12 @@ - - if (text) - { -- gint pos, start, end; -+ gint pos, start, end, index; - GtkEntryCompletion *completion = gtk_entry_get_completion (entry); - -+ /* when pasting multiline text, ignore everything but the first line */ -+ for (index = 0; text[index] != 0 && text[index] != '\n'; index++); -+ - if (completion) - { - g_signal_handler_block (entry, completion->priv->changed_id); -@@ -3692,7 +4135,7 @@ - gtk_editable_delete_text (editable, start, end); - - pos = entry->current_pos; -- gtk_editable_insert_text (editable, text, -1, &pos); -+ gtk_editable_insert_text (editable, text, index, &pos); - gtk_editable_set_position (editable, pos); - - if (completion) -@@ -3888,6 +4331,7 @@ - { - g_return_if_fail (GTK_IS_ENTRY (entry)); - -+ g_object_set(G_OBJECT(entry->im_context), "visibility", visible, NULL); - entry->visible = visible ? TRUE : FALSE; - g_object_notify (G_OBJECT (entry), "visibility"); - gtk_entry_recompute (entry); -@@ -4569,6 +5013,7 @@ - GdkEventButton *event) - { - PopupInfo *info = g_new (PopupInfo, 1); -+ GtkEntryPrivate *priv; - - /* In order to know what entries we should make sensitive, we - * ask for the current targets of the clipboard, and when -@@ -4576,6 +5021,8 @@ - */ - info->entry = g_object_ref (entry); - -+ priv = GTK_ENTRY_GET_PRIVATE (entry); -+ - if (event) - { - info->button = event->button; -@@ -4591,6 +5038,8 @@ - gdk_atom_intern ("TARGETS", FALSE), - popup_targets_received, - info); -+ -+ priv->menu_popped = TRUE; - } - - static gboolean -@@ -5389,3 +5838,156 @@ - - return completion; - } -+ -+static PangoLayoutIter *get_char_at_pos( PangoLayout *layout, gint x, gint y ) -+{ -+ gint index = 0; /*the index of the first character */ -+ gint trailing = 0; /*not used*/ -+ PangoLayoutIter *iter; /*used to iterate over the text*/ -+ gboolean valid_char = TRUE; -+ -+ /*get the position of the character currently at the scroll offset*/ -+ pango_layout_xy_to_index( layout, x * PANGO_SCALE, y * PANGO_SCALE, &index, &trailing ); -+ iter = pango_layout_get_iter( layout ); -+ -+ /*iterate until we get to the character at the same index*/ -+ while ( valid_char && pango_layout_iter_get_index( iter ) != index ) -+ { -+ valid_char = pango_layout_iter_next_char( iter ); -+ } -+ -+ if ( valid_char == FALSE ) -+ iter = NULL; -+ -+ return iter; -+} -+ -+static void gtk_entry_update_scrolled_window( GtkEntry *entry) -+{ -+ GtkWidget *parent; -+ GtkWidget *widget; -+ GtkWidget *direct_parent = NULL; -+ GtkScrolledWindow *sw = NULL; -+ gboolean need_update = FALSE; -+ GtkAdjustment *vadjustment; -+ gdouble value; -+ -+ widget = parent = GTK_WIDGET(entry); -+ if(parent->parent != NULL) -+ direct_parent = parent->parent; -+ while(parent && !GTK_WIDGET_TOPLEVEL(parent)) -+ { -+ if(GTK_IS_SCROLLED_WINDOW(parent)) -+ { -+ need_update = TRUE; -+ sw = GTK_SCROLLED_WINDOW(parent); -+ break; -+ } -+ parent = parent->parent; -+ } -+ -+ if(need_update) -+ { -+ gint x=0, y=0; -+ vadjustment = gtk_scrolled_window_get_vadjustment(sw); -+ value = gtk_adjustment_get_value(vadjustment); -+ -+ if(direct_parent != NULL) -+ gtk_widget_translate_coordinates( direct_parent, parent, -+ widget->allocation.x, widget->allocation.y, &x, &y ); -+ -+ if( (gdouble) y < 0 ) -+ { -+ value = value + (gdouble) y; -+ if (value < vadjustment->lower) -+ value = vadjustment->lower; -+ } -+ else if( (gdouble )y + widget->allocation.height > vadjustment->page_size) -+ { -+ value = value + (gdouble)y + widget->allocation.height -+ - vadjustment->page_size; -+ if(value > vadjustment->upper - vadjustment->page_size) -+ value = vadjustment->upper - vadjustment->page_size; -+ } -+ gtk_adjustment_set_value(vadjustment, value); -+ gtk_scrolled_window_set_vadjustment(sw, GTK_ADJUSTMENT(vadjustment)); -+ } -+} -+ -+/* -+ * gtk_entry_set_autocap: -+ * @entry: a #GtkEntry -+ * @autocap: autocap -+ * -+ * Sets autocapitalization of the widget. -+ */ -+static void -+gtk_entry_set_autocap (GtkEntry *entry, -+ gboolean autocap) -+{ -+ g_return_if_fail (GTK_IS_ENTRY (entry)); -+ -+ if (gtk_entry_get_autocap (entry) != autocap) -+ { -+ g_object_set (G_OBJECT (entry->im_context), "autocap", autocap, NULL); -+ g_object_notify (G_OBJECT (entry), "autocap"); -+ } -+} -+ -+/* -+ * gtk_entry_get_autocap: -+ * @entry: a #GtkEntry -+ * -+ * Gets autocapitalization state of the widget. -+ * -+ * Return value: a state -+ */ -+static gboolean -+gtk_entry_get_autocap (GtkEntry *entry) -+{ -+ gboolean autocap; -+ g_return_val_if_fail (GTK_IS_ENTRY (entry), FALSE); -+ -+ g_object_get (G_OBJECT (entry->im_context), "autocap", &autocap, NULL); -+ -+ return autocap; -+} -+ -+/* -+ * gtk_entry_set_input_mode: -+ * @entry: a #GtkEntry -+ * @autocap: input mode -+ * -+ * Sets autocapitalization of the widget. -+ */ -+static void -+gtk_entry_set_input_mode (GtkEntry *entry, -+ gint mode) -+{ -+ g_return_if_fail (GTK_IS_ENTRY (entry)); -+ -+ if (gtk_entry_get_input_mode (entry) != mode) -+ { -+ g_object_set (G_OBJECT (entry->im_context), "input_mode", mode, NULL); -+ g_object_notify (G_OBJECT (entry), "input_mode"); -+ } -+} -+ -+/* -+ * gtk_entry_get_input_mode: -+ * @entry: a #GtkEntry -+ * -+ * Gets input mode of the widget. -+ * -+ * Return value: input mode -+ */ -+static gint -+gtk_entry_get_input_mode (GtkEntry *entry) -+{ -+ gint mode; -+ g_return_val_if_fail (GTK_IS_ENTRY (entry), FALSE); -+ -+ g_object_get (G_OBJECT (entry->im_context), "input_mode", &mode, NULL); -+ -+ return mode; -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkenums.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkenums.h.diff deleted file mode 100644 index 5978100c97..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkenums.h.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkenums.h 2003-07-18 21:52:02.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkenums.h 2005-04-06 16:19:36.500989368 +0300 -@@ -133,7 +133,11 @@ - GTK_ICON_SIZE_LARGE_TOOLBAR, - GTK_ICON_SIZE_BUTTON, - GTK_ICON_SIZE_DND, -- GTK_ICON_SIZE_DIALOG -+ GTK_ICON_SIZE_DIALOG, -+ HILDON_ICON_SIZE_26, -+ HILDON_ICON_SIZE_40, -+ HILDON_ICON_SIZE_50, -+ HILDON_ICON_SIZE_64 - } GtkIconSize; - - #ifndef GTK_DISABLE_DEPRECATED diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.c.diff deleted file mode 100644 index 87346c0260..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.c.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkfilesystem.c 2004-09-13 19:00:00.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkfilesystem.c 2005-04-06 16:19:36.518986632 +0300 -@@ -1147,4 +1147,9 @@ - return fs; - } - -+/* In Hildon we need to publish the previous symbol */ -+GtkFileSystem *hildon_gtk_file_system_create(const char *file_system_name) -+{ -+ return _gtk_file_system_create (file_system_name); -+} - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.h.diff deleted file mode 100644 index a555ca230b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkfilesystem.h.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkfilesystem.h 2005-01-03 01:15:21.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkfilesystem.h 2005-04-06 16:19:36.518986632 +0300 -@@ -364,6 +364,9 @@ - - GtkFileSystem *_gtk_file_system_create (const char *file_system_name); - -+/* In Hildon we need to publish the previous symbol */ -+GtkFileSystem *hildon_gtk_file_system_create(const char *file_system_name); -+ - G_END_DECLS - - #endif /* __GTK_FILE_SYSTEM_H__ */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkframe.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkframe.c.diff deleted file mode 100644 index 6ca54c0c99..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkframe.c.diff +++ /dev/null @@ -1,82 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkframe.c 2004-08-17 22:10:24.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkframe.c 2005-04-06 16:19:36.583976752 +0300 -@@ -24,6 +24,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2003. See CHANGES file for list -+ * of changes. -+ */ -+ - #include <config.h> - #include <string.h> - #include "gtkalias.h" -@@ -33,6 +37,7 @@ - - #define LABEL_PAD 1 - #define LABEL_SIDE_PAD 2 -+#define FRAME_BORDER_WIDTH 3 - - enum { - PROP_0, -@@ -172,6 +177,14 @@ - P_("A widget to display in place of the usual frame label"), - GTK_TYPE_WIDGET, - G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ -+ /* draw hildonlike frame */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("hildonlike", -+ _("hildonlike looks"), -+ _("Draw frame, 1/0"), -+ FALSE, -+ G_PARAM_READABLE)); - - widget_class->expose_event = gtk_frame_expose; - widget_class->size_request = gtk_frame_size_request; -@@ -276,7 +289,7 @@ - GtkWidget* - gtk_frame_new (const gchar *label) - { -- return g_object_new (GTK_TYPE_FRAME, "label", label, NULL); -+ return g_object_new (GTK_TYPE_FRAME, "label", label, "border-width", FRAME_BORDER_WIDTH, NULL); - } - - static void -@@ -533,6 +546,9 @@ - { - GtkFrame *frame; - gint x, y, width, height; -+ gboolean hildonlike; -+ -+ gtk_widget_style_get ( widget, "hildonlike", &hildonlike, NULL ); - - if (GTK_WIDGET_DRAWABLE (widget)) - { -@@ -543,7 +559,16 @@ - width = frame->child_allocation.width + 2 * widget->style->xthickness; - height = frame->child_allocation.height + 2 * widget->style->ythickness; - -- if (frame->label_widget) -+ if (hildonlike) { -+ /* draw hildon application borders */ -+ gtk_paint_box (widget->style, -+ widget->window, -+ GTK_WIDGET_STATE( widget ), -+ GTK_SHADOW_OUT, -+ NULL, widget, "frame", -+ x, y, width, height); -+ } -+ else if (frame->label_widget) - { - GtkRequisition child_requisition; - gfloat xalign; -@@ -586,7 +611,7 @@ - { - if (GTK_WIDGET_DRAWABLE (widget)) - { -- gtk_frame_paint (widget, &event->area); -+ gtk_frame_paint (widget, &event->area); - - (* GTK_WIDGET_CLASS (parent_class)->expose_event) (widget, event); - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.c.diff deleted file mode 100644 index fc6e15810b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.c.diff +++ /dev/null @@ -1,102 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkhashtable.c 1970-01-01 02:00:00.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkhashtable.c 2005-04-06 16:19:36.596974776 +0300 -@@ -0,0 +1,99 @@ -+/* GTK - The GIMP Toolkit -+ * Copyright (C) 2005 Nokia -+ * Author: Jorn Baayen <jbaayen@gnome.org> -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+ -+#include <config.h> -+#include "gtkhashtable.h" -+ -+static gpointer parent_class = NULL; -+ -+static void _gtk_hash_table_init (GtkHashTable *hash_table); -+static void _gtk_hash_table_class_init (GtkHashTableClass *klass); -+static void _gtk_hash_table_finalize (GObject *object); -+ -+GType -+_gtk_hash_table_get_type (void) -+{ -+ static GType hash_table_type = 0; -+ -+ if (!hash_table_type) -+ { -+ static const GTypeInfo hash_table_info = -+ { -+ sizeof (GtkHashTableClass), -+ NULL, /* base_init */ -+ NULL, /* base_finalize */ -+ (GClassInitFunc) _gtk_hash_table_class_init, -+ NULL, /* class_finalize */ -+ NULL, /* class_data */ -+ sizeof (GtkHashTable), -+ 0, /* n_preallocs */ -+ (GInstanceInitFunc) _gtk_hash_table_init, -+ }; -+ -+ hash_table_type = -+ g_type_register_static (G_TYPE_OBJECT, "GtkHashTable", -+ &hash_table_info, 0); -+ } -+ -+ return hash_table_type; -+} -+ -+static void -+_gtk_hash_table_init (GtkHashTable *hash_table) -+{ -+ hash_table->hash = g_hash_table_new_full (g_str_hash, g_str_equal, -+ g_free, g_free); -+} -+ -+static void -+_gtk_hash_table_class_init (GtkHashTableClass *klass) -+{ -+ GObjectClass *object_class = G_OBJECT_CLASS (klass); -+ -+ parent_class = g_type_class_peek_parent (klass); -+ -+ object_class->finalize = _gtk_hash_table_finalize; -+} -+ -+static void -+_gtk_hash_table_finalize (GObject *object) -+{ -+ GtkHashTable *hash_table = GTK_HASH_TABLE (object); -+ -+ g_hash_table_destroy (hash_table->hash); -+ -+ G_OBJECT_CLASS (parent_class)->finalize (object); -+} -+ -+/** -+ * _gtk_hash_table_new: -+ * -+ * Creates a new #GtkHashTable. This is a #GHashTable wrapped in a GObject, -+ * thereby supporting refcounting. -+ * -+ * Return value: a new #GtkHashTable -+ **/ -+GtkHashTable* -+_gtk_hash_table_new (void) -+{ -+ return g_object_new (GTK_TYPE_HASH_TABLE, NULL); -+} -+ -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.h.diff deleted file mode 100644 index 733d68c35a..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhashtable.h.diff +++ /dev/null @@ -1,64 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkhashtable.h 1970-01-01 02:00:00.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkhashtable.h 2005-04-06 16:19:36.606973256 +0300 -@@ -0,0 +1,61 @@ -+/* GTK - The GIMP Toolkit -+ * Copyright (C) 2005 Nokia -+ * Author: Jorn Baayen <jbaayen@gnome.org> -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+ -+#ifndef __GTK_HASH_TABLE_H__ -+#define __GTK_HASH_TABLE_H__ -+ -+#include <glib-object.h> -+ -+#ifdef __cplusplus -+extern "C" { -+#endif /* __cplusplus */ -+ -+typedef struct _GtkHashTable GtkHashTable; -+typedef struct _GtkHashTableClass GtkHashTableClass; -+ -+#define GTK_TYPE_HASH_TABLE (_gtk_hash_table_get_type ()) -+#define GTK_HASH_TABLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_HASH_TABLE, GtkHashTable)) -+#define GTK_HASH_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_HASH_TABLE, GtkHashTableClass)) -+#define GTK_IS_HASH_TABLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_HASH_TABLE)) -+#define GTK_IS_HASH_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_HASH_TABLE)) -+#define GTK_HASH_TABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_HASH_TABLE, GtkHashTableClass)) -+ -+struct _GtkHashTable -+{ -+ GObject parent_instance; -+ -+ GHashTable *hash; -+}; -+ -+struct _GtkHashTableClass -+{ -+ GObjectClass parent_class; -+}; -+ -+GType _gtk_hash_table_get_type (void) G_GNUC_CONST; -+GtkHashTable* _gtk_hash_table_new (void); -+ -+#ifdef __cplusplus -+} -+#endif /* __cplusplus */ -+ -+#endif /* __GTK_HASH_TABLE_H__ */ -+ -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff deleted file mode 100644 index e43db37f5c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff +++ /dev/null @@ -1,344 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkhbbox.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkhbbox.c 2005-04-06 16:19:36.644967480 +0300 -@@ -24,10 +24,20 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list -+ * of changes. -+ */ -+ -+/* Hildon : Button spacing according to the spec. */ -+#define HILDON_BUTTON_SPACING 5 -+/* Selecting hetefogenous mode for a childlayout */ -+#define GTK_BUTTONBOX_HETEROGENOUS 6 -+ - #include <config.h> - #include "gtkalias.h" - #include "gtkhbbox.h" -- -+/* Hildon : We need this to mess with buttons graphics. */ -+#include "gtkbutton.h" - - static void gtk_hbutton_box_class_init (GtkHButtonBoxClass *klass); - static void gtk_hbutton_box_init (GtkHButtonBox *box); -@@ -36,6 +46,15 @@ - static void gtk_hbutton_box_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); - -+static void osso_gtk_hbutton_child_showhide_handler (GtkWidget *widget, -+ gpointer user_data); -+static void osso_gtk_hbutton_box_remove_child_signal_handlers (GtkHButtonBox *hbbox, -+ GtkWidget *removed_widget, -+ gpointer data); -+static void osso_gtk_hbutton_box_find_button_detail (GtkHButtonBox *hbbox, -+ GtkWidget *addremovewidget, -+ gpointer data); -+ - static gint default_spacing = 30; - static gint default_layout_style = GTK_BUTTONBOX_EDGE; - -@@ -76,12 +95,23 @@ - - widget_class->size_request = gtk_hbutton_box_size_request; - widget_class->size_allocate = gtk_hbutton_box_size_allocate; -+ -+ /* HILDON: -+ * Name buttons only if hildon like style property is set -+ */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean -+ ( "hildonlike", -+ "hildonlike looks", -+ "Name buttons, 1/0", -+ FALSE, -+ G_PARAM_READABLE) ); - } - - static void - gtk_hbutton_box_init (GtkHButtonBox *hbutton_box) - { -- /* button_box_init has done everything allready */ -+ /* button_box_init has done everything allready */ - } - - GtkWidget* -@@ -91,6 +121,24 @@ - - hbutton_box = g_object_new (GTK_TYPE_HBUTTON_BOX, NULL); - -+ /* Attach signal handler for 'hildonizing' buttons. -+ * gtk_hbutton_box_hildonize_buttons will check the name -+ * and if it is something we're interested in i.e. -+ * -+ * hildon_dialogbuttons -+ * hildon_viewbuttons -+ * -+ * it will do the hildonizing -+ */ -+ g_signal_connect_after (G_OBJECT (hbutton_box), "remove", -+ G_CALLBACK (osso_gtk_hbutton_box_remove_child_signal_handlers), -+ NULL); -+ g_signal_connect_after( G_OBJECT( hbutton_box ), "add", -+ G_CALLBACK( osso_gtk_hbutton_box_find_button_detail ), -+ NULL ); -+ g_signal_connect_after( G_OBJECT( hbutton_box ), "remove", -+ G_CALLBACK( osso_gtk_hbutton_box_find_button_detail ), -+ NULL ); - return GTK_WIDGET (hbutton_box); - } - -@@ -145,6 +193,11 @@ - gint child_height; - gint spacing; - GtkButtonBoxStyle layout; -+ gint child_xpad=0; -+ GtkBoxChild *child_req; -+ GList *children_req; -+ GtkRequisition treq; -+ - - box = GTK_BOX (widget); - bbox = GTK_BUTTON_BOX (widget); -@@ -159,6 +212,12 @@ - &child_width, - &child_height); - -+ /* should GTK_BUTTONBOX_HETEROGENOUS add into the GtkButtonBoxStyle -+ enum struct -+ */ -+ if( !box->homogeneous ) -+ layout = GTK_BUTTONBOX_HETEROGENOUS; -+ - if (nvis_children == 0) - { - requisition->width = 0; -@@ -177,11 +236,36 @@ - case GTK_BUTTONBOX_END: - requisition->width = nvis_children*child_width + ((nvis_children-1)*spacing); - break; -+ case GTK_BUTTONBOX_HETEROGENOUS: -+ children_req = GTK_BOX (box)->children; -+ child_req = children_req->data; -+ requisition->width = 0; -+ -+ while (children_req) -+ { -+ child_req = children_req->data; -+ children_req = children_req->next; -+ -+ if (GTK_WIDGET_VISIBLE (child_req->widget)) -+ { -+ gtk_widget_get_child_requisition( child_req->widget, -+ &(treq) ); -+ requisition->width += treq.width; -+ -+ gtk_widget_style_get(widget, -+ "child-internal-pad-x", -+ &(child_xpad), NULL); -+ requisition->width += (child_xpad*2); -+ } -+ } -+ requisition->width += ((nvis_children-1)*spacing); -+ -+ break; - default: - g_assert_not_reached(); - break; - } -- -+ - requisition->height = child_height; - } - -@@ -227,6 +311,10 @@ - &child_height); - widget->allocation = *allocation; - width = allocation->width - GTK_CONTAINER (box)->border_width*2; -+ -+ if( !base_box->homogeneous ) -+ layout = GTK_BUTTONBOX_HETEROGENOUS; -+ - switch (layout) - { - case GTK_BUTTONBOX_SPREAD: -@@ -264,6 +352,39 @@ - - GTK_CONTAINER (box)->border_width; - secondary_x = allocation->x + GTK_CONTAINER (box)->border_width; - break; -+ case GTK_BUTTONBOX_HETEROGENOUS: -+ { -+ gint sumwidth = 0; -+ GtkBoxChild *child_h; -+ GList *children_h = GTK_BOX (box)->children; -+ /* heterogenous sized childs onto center */ -+ childspacing = spacing; -+ child_h = children_h->data; -+ -+ while (children_h ) -+ { -+ if ( g_list_length (children_h) == 0 ) break; -+ -+ child_h = children_h->data; -+ children_h = children_h->next; -+ -+ if (GTK_WIDGET_VISIBLE (child_h->widget)) -+ { -+ gint child_xpad = 0; -+ GtkRequisition treq; -+ gtk_widget_get_child_requisition( child_h->widget, &(treq) ); -+ sumwidth += treq.width; -+ -+ gtk_widget_style_get(widget, -+ "child-internal-pad-x", -+ &(child_xpad), NULL); -+ sumwidth += (child_xpad*2); -+ } -+ } -+ x = secondary_x = allocation->x + -+ ( (allocation->width - sumwidth - (spacing * (nvis_children - 1)))/2 ); -+ break; -+ } - default: - g_assert_not_reached(); - break; -@@ -282,10 +403,33 @@ - - if (GTK_WIDGET_VISIBLE (child->widget)) - { -- child_allocation.width = child_width; - child_allocation.height = child_height; - child_allocation.y = y; - -+ if(layout != GTK_BUTTONBOX_HETEROGENOUS) -+ { -+ child_allocation.width = child_width; -+ } -+ else /* if layout will be hetergenous */ -+ { -+ gint child_hwidth = 0; -+ GtkRequisition treq; -+ gint child_xpad = 0; -+ -+ gtk_widget_get_child_requisition( child->widget, &(treq) ); -+ child_hwidth += treq.width; -+ -+ gtk_widget_style_get(widget, -+ "child-internal-pad-x", -+ &child_xpad, NULL); -+ child_hwidth += (child_xpad*2); -+ -+ child_allocation.width = child_hwidth; -+ childspace = child_hwidth + childspacing; -+ -+ } -+ -+ /* calculate the horizontal location */ - if (child->is_secondary) - { - child_allocation.x = secondary_x; -@@ -304,4 +448,104 @@ - } - } - } -+ -+/* Function to wrap "hide" and "show" signals to call -+ * osso_gtk_hbutton_box_find_button_detail -function.*/ -+static void osso_gtk_hbutton_child_showhide_handler (GtkWidget *widget, -+ gpointer user_data) -+{ -+ osso_gtk_hbutton_box_find_button_detail (widget, GTK_WIDGET (user_data), NULL); -+} - -+/* Function to remove "show"&"hide" signal handlers -+ * from a child when it's removed. */ -+static void osso_gtk_hbutton_box_remove_child_signal_handlers (GtkHButtonBox *hbbox, -+ GtkWidget *removed_widget, -+ gpointer data) -+{ -+ g_signal_handlers_disconnect_by_func (G_OBJECT (removed_widget), osso_gtk_hbutton_box_find_button_detail, hbbox); -+} -+ -+/* Signal handler called when we have to set -+ * painting detail values for buttons in this -+ * gtk_horizontal_button_box. -+ */ -+static void osso_gtk_hbutton_box_find_button_detail (GtkHButtonBox *hbbox, -+ GtkWidget *addremovewidget, -+ gpointer data) -+{ -+ GList *child; -+ gint visible_buttons = 0; -+ gint secondary_buttons = 0; -+ GtkWidget *leftmost_button = NULL; -+ GtkWidget *rightmost_button = NULL; -+ -+ for( child = GTK_BOX (hbbox)->children ; child ; child = child->next ) -+ { -+ GtkBoxChild *box_child = child->data; -+ GtkWidget *child_widget = box_child->widget; -+ gulong signal_handler = g_signal_handler_find ( G_OBJECT( child_widget ), -+ G_SIGNAL_MATCH_FUNC, -+ 0, 0, NULL, -+ G_CALLBACK (osso_gtk_hbutton_child_showhide_handler), -+ NULL); -+ -+ if (signal_handler == 0) -+ { -+ g_signal_connect_object ( G_OBJECT( child_widget ), -+ "hide", -+ G_CALLBACK ( osso_gtk_hbutton_child_showhide_handler ), -+ hbbox, G_CONNECT_SWAPPED); -+ g_signal_connect_object ( G_OBJECT( child_widget ), -+ "show", -+ G_CALLBACK ( osso_gtk_hbutton_child_showhide_handler ), -+ hbbox, G_CONNECT_SWAPPED); -+ } -+ -+ if ((GTK_WIDGET_VISIBLE (child_widget)) && -+ (GTK_IS_BUTTON (child_widget))) -+ visible_buttons++; -+ else -+ continue; -+ -+ if (leftmost_button == NULL) -+ leftmost_button = child_widget; -+ -+ if (secondary_buttons == 0) -+ rightmost_button = child_widget; -+ else -+ if (box_child->is_secondary) -+ { -+ rightmost_button = child_widget; -+ secondary_buttons++; -+ } -+ -+ if (box_child->is_secondary) -+ rightmost_button = child_widget; -+ } -+ -+ if (visible_buttons == 0) -+ return; -+ -+ for( child = GTK_BOX (hbbox)->children ; child ; child = child->next ) -+ { -+ GtkBoxChild *box_child = child->data; -+ GtkWidget *child_widget = box_child->widget; -+ OssoGtkButtonAttachFlags attachflags = OSSO_GTK_BUTTON_ATTACH_NORTH | OSSO_GTK_BUTTON_ATTACH_SOUTH; -+ gboolean automatic_detail; -+ -+ if (!((GTK_WIDGET_VISIBLE (child_widget)) && -+ (GTK_IS_BUTTON (child_widget)))) -+ continue; -+ -+ if (child_widget == leftmost_button) -+ attachflags |= OSSO_GTK_BUTTON_ATTACH_WEST; -+ -+ if (child_widget == rightmost_button) -+ attachflags |= OSSO_GTK_BUTTON_ATTACH_EAST; -+ -+ g_object_get (G_OBJECT (child_widget), "automatic_detail", &automatic_detail, NULL); -+ if (automatic_detail == TRUE) -+ g_object_set (G_OBJECT (child_widget), "detail", osso_gtk_button_attach_details[attachflags], NULL); -+ } -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhseparator.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhseparator.c.diff deleted file mode 100644 index 814c6ae5c7..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhseparator.c.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkhseparator.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkhseparator.c 2005-04-06 16:19:36.667963984 +0300 -@@ -91,13 +91,29 @@ - gtk_hseparator_expose (GtkWidget *widget, - GdkEventExpose *event) - { -- if (GTK_WIDGET_DRAWABLE (widget)) -- gtk_paint_hline (widget->style, widget->window, GTK_WIDGET_STATE (widget), -- &event->area, widget, "hseparator", -- widget->allocation.x, -- widget->allocation.x + widget->allocation.width - 1, -- widget->allocation.y + (widget->allocation.height - -- widget->style->ythickness) / 2); -+ gboolean hildonlike_drawing = FALSE; -+ gtk_widget_style_get ( widget, "hildonlike-drawing", &hildonlike_drawing, NULL ); - -- return FALSE; -+ if (GTK_WIDGET_DRAWABLE (widget)) -+ { -+ if(hildonlike_drawing) -+ gtk_paint_box (widget->style, widget->window, GTK_STATE_NORMAL, -+ GTK_SHADOW_NONE, &event->area, widget, "hseparator", -+ widget->allocation.x, -+ widget->allocation.y + (widget->allocation.height - -+ widget->style->ythickness) / 2, -+ widget->allocation.width - 1, -+ widget->style->ythickness); -+ else -+ gtk_paint_hline (widget->style, widget->window, GTK_STATE_NORMAL, -+ &event->area, widget, "hseparator", -+ widget->allocation.x, -+ widget->allocation.x + widget->allocation.width - 1, -+ widget->allocation.y + (widget->allocation.height - -+ widget->style->ythickness) / 2); -+ } -+ -+ -+ -+ return FALSE; - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkiconfactory.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkiconfactory.c.diff deleted file mode 100644 index 91874b9ce4..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkiconfactory.c.diff +++ /dev/null @@ -1,69 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkiconfactory.c 2005-01-03 16:44:33.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkiconfactory.c 2005-04-06 16:19:36.804943160 +0300 -@@ -813,7 +813,7 @@ - { - if (icon_sizes == NULL) - { --#define NUM_BUILTIN_SIZES 7 -+#define NUM_BUILTIN_SIZES 11 - gint i; - - icon_aliases = g_hash_table_new (g_str_hash, g_str_equal); -@@ -863,7 +863,27 @@ - icon_sizes[GTK_ICON_SIZE_DIALOG].width = 48; - icon_sizes[GTK_ICON_SIZE_DIALOG].height = 48; - -- g_assert ((GTK_ICON_SIZE_DIALOG + 1) == NUM_BUILTIN_SIZES); -+ icon_sizes[HILDON_ICON_SIZE_26].size = HILDON_ICON_SIZE_26; -+ icon_sizes[HILDON_ICON_SIZE_26].name = "hildon-26"; -+ icon_sizes[HILDON_ICON_SIZE_26].width = 26; -+ icon_sizes[HILDON_ICON_SIZE_26].height = 26; -+ -+ icon_sizes[HILDON_ICON_SIZE_40].size = HILDON_ICON_SIZE_40; -+ icon_sizes[HILDON_ICON_SIZE_40].name = "hildon-40"; -+ icon_sizes[HILDON_ICON_SIZE_40].width = 40; -+ icon_sizes[HILDON_ICON_SIZE_40].height = 40; -+ -+ icon_sizes[HILDON_ICON_SIZE_50].size = HILDON_ICON_SIZE_50; -+ icon_sizes[HILDON_ICON_SIZE_50].name = "hildon-50"; -+ icon_sizes[HILDON_ICON_SIZE_50].width = 50; -+ icon_sizes[HILDON_ICON_SIZE_50].height = 50; -+ -+ icon_sizes[HILDON_ICON_SIZE_64].size = HILDON_ICON_SIZE_64; -+ icon_sizes[HILDON_ICON_SIZE_64].name = "hildon-64"; -+ icon_sizes[HILDON_ICON_SIZE_64].width = 54; -+ icon_sizes[HILDON_ICON_SIZE_64].height = 64; -+ -+ g_assert ((HILDON_ICON_SIZE_64 + 1) == NUM_BUILTIN_SIZES); - - /* Alias everything to itself. */ - i = 1; /* skip invalid size */ -@@ -1658,7 +1678,7 @@ - gint width, height, pixel_size; - gint *sizes, *s, dist; - GError *error = NULL; -- -+ - if (widget && gtk_widget_has_screen (widget)) - screen = gtk_widget_get_screen (widget); - else if (style && style->colormap) -@@ -1734,8 +1754,10 @@ - tmp_source.type = GTK_ICON_SOURCE_PIXBUF; - tmp_source.source.pixbuf = tmp_pixbuf; - -+ /* Hildon: no scaling allowed for Hildon icons */ - pixbuf = gtk_style_render_icon (style, &tmp_source, -- direction, state, -1, -+ direction, state, -+ (size < HILDON_ICON_SIZE_26) ? -1 : size, - widget, detail); - - if (!pixbuf) -@@ -1818,7 +1840,6 @@ - { - /* This icon can be used for any direction/state/size */ - static GtkIconSource fallback_source = GTK_ICON_SOURCE_INIT (TRUE, TRUE, TRUE); -- - if (fallback_source.type == GTK_ICON_SOURCE_EMPTY) - { - GdkPixbuf *pixbuf = gdk_pixbuf_new_from_inline (-1, stock_missing_image_24, FALSE, NULL); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkicontheme.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkicontheme.c.diff deleted file mode 100644 index ff9cf71096..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkicontheme.c.diff +++ /dev/null @@ -1,48 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkicontheme.c 2005-03-01 17:24:48.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkicontheme.c 2005-04-06 16:19:36.807942704 +0300 -@@ -64,7 +64,8 @@ - ICON_SUFFIX_XPM = 1 << 0, - ICON_SUFFIX_SVG = 1 << 1, - ICON_SUFFIX_PNG = 1 << 2, -- HAS_ICON_FILE = 1 << 3 -+ HAS_ICON_FILE = 1 << 3, -+ ICON_SUFFIX_ANI = 1 << 4 - } IconSuffix; - - -@@ -1743,6 +1744,8 @@ - return ".svg"; - case ICON_SUFFIX_PNG: - return ".png"; -+ case ICON_SUFFIX_ANI: -+ return ".ani"; - default: - g_assert_not_reached(); - } -@@ -1760,6 +1763,8 @@ - retval = ICON_SUFFIX_SVG; - else if (g_str_has_suffix (name, ".xpm")) - retval = ICON_SUFFIX_XPM; -+ else if (g_str_has_suffix (name, ".ani")) -+ retval = ICON_SUFFIX_ANI; - else - retval = ICON_SUFFIX_NONE; - -@@ -1776,6 +1781,8 @@ - return ICON_SUFFIX_SVG; - else if ((suffix & ICON_SUFFIX_XPM) != 0) - return ICON_SUFFIX_XPM; -+ else if ((suffix & ICON_SUFFIX_ANI) != 0) -+ return ICON_SUFFIX_ANI; - else - return ICON_SUFFIX_NONE; - } -@@ -2558,7 +2565,7 @@ - icon_info->pixbuf = gdk_pixbuf_scale_simple (source_pixbuf, - 0.5 + image_width * icon_info->scale, - 0.5 + image_height * icon_info->scale, -- GDK_INTERP_BILINEAR); -+ GDK_INTERP_NEAREST); - g_object_unref (source_pixbuf); - } - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.c.diff deleted file mode 100644 index 03d990c6dd..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.c.diff +++ /dev/null @@ -1,52 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkimcontext.c 2004-09-26 07:23:56.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkimcontext.c 2005-04-06 16:19:36.814941640 +0300 -@@ -360,6 +360,44 @@ - } - - /** -+ * gtk_im_context_show: -+ * @context: a #GtkIMContext -+ * -+ * Notify the input method that widget thinks the actual -+ * input method show be opened. -+ **/ -+void -+gtk_im_context_show (GtkIMContext *context) -+{ -+ GtkIMContextClass *klass; -+ -+ g_return_if_fail (GTK_IS_IM_CONTEXT (context)); -+ -+ klass = GTK_IM_CONTEXT_GET_CLASS (context); -+ if (klass->show) -+ klass->show (context); -+} -+ -+/** -+ * gtk_im_context_hide: -+ * @context: a #GtkIMContext -+ * -+ * Notify the input method that widget thinks the actual -+ * input method show be closed. -+ **/ -+void -+gtk_im_context_hide (GtkIMContext *context) -+{ -+ GtkIMContextClass *klass; -+ -+ g_return_if_fail (GTK_IS_IM_CONTEXT (context)); -+ -+ klass = GTK_IM_CONTEXT_GET_CLASS (context); -+ if (klass->hide) -+ klass->hide (context); -+} -+ -+/** - * gtk_im_context_reset: - * @context: a #GtkIMContext - * -@@ -553,4 +591,3 @@ - - return result; - } -- diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.h.diff deleted file mode 100644 index 068d18a7d3..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimcontext.h.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkimcontext.h 2002-10-11 01:18:36.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkimcontext.h 2005-04-06 16:19:36.815941488 +0300 -@@ -85,14 +85,15 @@ - gboolean (*get_surrounding) (GtkIMContext *context, - gchar **text, - gint *cursor_index); -+ void (*show) (GtkIMContext *context); -+ void (*hide) (GtkIMContext *context); -+ - - /* Padding for future expansion */ - void (*_gtk_reserved1) (void); - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); - void (*_gtk_reserved4) (void); -- void (*_gtk_reserved5) (void); -- void (*_gtk_reserved6) (void); - }; - - GType gtk_im_context_get_type (void) G_GNUC_CONST; -@@ -122,6 +123,8 @@ - gboolean gtk_im_context_delete_surrounding (GtkIMContext *context, - gint offset, - gint n_chars); -+void gtk_im_context_show (GtkIMContext *context); -+void gtk_im_context_hide (GtkIMContext *context); - - #ifdef __cplusplus - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimmulticontext.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimmulticontext.c.diff deleted file mode 100644 index 4332a9c318..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkimmulticontext.c.diff +++ /dev/null @@ -1,155 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkimmulticontext.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkimmulticontext.c 2005-04-06 16:19:36.818941032 +0300 -@@ -59,6 +59,8 @@ - static void gtk_im_multicontext_focus_in (GtkIMContext *context); - static void gtk_im_multicontext_focus_out (GtkIMContext *context); - static void gtk_im_multicontext_reset (GtkIMContext *context); -+static void gtk_im_multicontext_show (GtkIMContext *context); -+static void gtk_im_multicontext_hide (GtkIMContext *context); - static void gtk_im_multicontext_set_cursor_location (GtkIMContext *context, - GdkRectangle *area); - static void gtk_im_multicontext_set_use_preedit (GtkIMContext *context, -@@ -118,6 +120,67 @@ - return im_multicontext_type; - } - -+static GtkIMContext * -+gtk_im_multicontext_get_slave (GtkIMMulticontext *multicontext); -+ -+enum { -+ PROP_INPUT_MODE = 1, -+ PROP_AUTOCAP, -+ PROP_VISIBILITY, -+ PROP_USE_SHOW_HIDE -+}; -+ -+static void gtk_im_multicontext_set_property(GObject * object, -+ guint property_id, -+ const GValue * value, -+ GParamSpec * pspec) -+{ -+ GtkIMContext *slave = gtk_im_multicontext_get_slave (GTK_IM_MULTICONTEXT(object)); -+ -+ GParamSpec *param_spec = g_object_class_find_property -+ (G_OBJECT_GET_CLASS(slave), -+ pspec->name); -+ -+ if(param_spec != NULL) -+ g_object_set_property(G_OBJECT(slave), pspec->name, value); -+} -+ -+static void gtk_im_multicontext_get_property(GObject * object, -+ guint property_id, -+ GValue * value, -+ GParamSpec * pspec) -+{ -+ GtkIMContext *slave = gtk_im_multicontext_get_slave (GTK_IM_MULTICONTEXT(object)); -+ GParamSpec *param_spec = g_object_class_find_property -+ (G_OBJECT_GET_CLASS(slave), -+ pspec->name); -+ -+ if(param_spec != NULL) -+ g_object_get_property(G_OBJECT(slave), pspec->name, value); -+ else -+ { -+ switch (property_id) -+ { -+ case PROP_INPUT_MODE: -+ /* return 0 */ -+ g_value_set_int(value, 0); -+ break; -+ case PROP_AUTOCAP: -+ /* return FALSE */ -+ g_value_set_boolean(value, FALSE); -+ break; -+ case PROP_VISIBILITY: -+ /* return TRUE */ -+ g_value_set_boolean(value, TRUE); -+ break; -+ case PROP_USE_SHOW_HIDE: -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -+ break; -+ } -+ } -+} -+ - static void - gtk_im_multicontext_class_init (GtkIMMulticontextClass *class) - { -@@ -132,12 +195,38 @@ - im_context_class->focus_in = gtk_im_multicontext_focus_in; - im_context_class->focus_out = gtk_im_multicontext_focus_out; - im_context_class->reset = gtk_im_multicontext_reset; -+ im_context_class->show = gtk_im_multicontext_show; -+ im_context_class->hide = gtk_im_multicontext_hide; - im_context_class->set_cursor_location = gtk_im_multicontext_set_cursor_location; - im_context_class->set_use_preedit = gtk_im_multicontext_set_use_preedit; - im_context_class->set_surrounding = gtk_im_multicontext_set_surrounding; - im_context_class->get_surrounding = gtk_im_multicontext_get_surrounding; - - gobject_class->finalize = gtk_im_multicontext_finalize; -+ -+ gobject_class->set_property = gtk_im_multicontext_set_property; -+ gobject_class->get_property = gtk_im_multicontext_get_property; -+ -+ g_object_class_install_property(gobject_class, PROP_INPUT_MODE, -+ g_param_spec_int("input-mode", "Input mode", -+ "Specifies the set of allowed characters", -+ 0, 9, 0, /* We don't move symbolic definitions here. See hildon-input-mode.h */ -+ G_PARAM_READWRITE)); -+ -+ g_object_class_install_property(gobject_class, PROP_AUTOCAP, -+ g_param_spec_boolean("autocap", "Autocap", -+ "Whether the client wants the first character in a sentense to be automatic upper case", -+ FALSE, G_PARAM_READWRITE)); -+ -+ g_object_class_install_property(gobject_class, PROP_VISIBILITY, -+ g_param_spec_boolean("visibility", "Visibility", -+ "FALSE displays the \"invisible char\"instead of the actual text (password mode)", -+ TRUE, G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ -+ g_object_class_install_property(gobject_class, PROP_VISIBILITY, -+ g_param_spec_boolean("use-show-hide", "Use show/hide functions", -+ "Use show/hide functions to show/hide IM instead of focus_in/focus_out", -+ FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE)); - } - - static void -@@ -567,3 +656,36 @@ - g_free (contexts); - } - -+static void -+gtk_im_multicontext_show (GtkIMContext *context) -+{ -+ GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context); -+ GtkIMContext *slave; -+ -+ /* If the global context type is different from the context we were -+ * using before, get rid of the old slave and create a new one -+ * for the new global context type. -+ */ -+ if (!multicontext->context_id || -+ strcmp (global_context_id, multicontext->context_id) != 0) -+ gtk_im_multicontext_set_slave (multicontext, NULL, FALSE); -+ -+ slave = gtk_im_multicontext_get_slave (multicontext); -+ -+ multicontext->priv->focus_in = TRUE; -+ -+ if (slave) -+ gtk_im_context_show (slave); -+} -+ -+static void -+gtk_im_multicontext_hide (GtkIMContext *context) -+{ -+ GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context); -+ GtkIMContext *slave = gtk_im_multicontext_get_slave (multicontext); -+ -+ multicontext->priv->focus_in = FALSE; -+ -+ if (slave) -+ gtk_im_context_hide (slave); -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel-resize-patch deleted file mode 100644 index df29656343..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel-resize-patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100 -@@ -1623,6 +1623,7 @@ - - /* We have to clear the layout, fonts etc. may have changed */ - gtk_label_clear_layout (label); -+ gtk_widget_queue_resize (GTK_WIDGET (label)); - } - - static void diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.c.diff deleted file mode 100644 index e730b66b7f..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.c.diff +++ /dev/null @@ -1,390 +0,0 @@ ---- gtk+-2.6.4/gtk/gtklabel.c 2005-02-28 06:32:03.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtklabel.c 2005-04-06 16:19:36.878931912 +0300 -@@ -23,6 +23,11 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+ -+/* Modified for Nokia Oyj during 2004. See CHANGES file for list -+ * of changes. -+ */ -+ - #include <config.h> - #include <math.h> - #include <string.h> -@@ -52,6 +57,7 @@ - guint single_line_mode : 1; - guint have_transform : 1; - gdouble angle; -+ gboolean request_full_width; - } - GtkLabelPrivate; - -@@ -75,6 +81,9 @@ - LAST_SIGNAL - }; - -+/* Hildon mod. -+ A property PROP_TRANSLATABLE has been added here. If new Gtk+ -+ versions add items here, the compability will break. */ - enum { - PROP_0, - PROP_LABEL, -@@ -89,6 +98,7 @@ - PROP_MNEMONIC_WIDGET, - PROP_CURSOR_POSITION, - PROP_SELECTION_BOUND, -+ PROP_TRANSLATABLE, - PROP_ELLIPSIZE, - PROP_WIDTH_CHARS, - PROP_SINGLE_LINE_MODE, -@@ -96,6 +106,12 @@ - PROP_MAX_WIDTH_CHARS - }; - -+/* Hildon mod. A few keys. These are used to store data for label -+ * without changing the private structures. */ -+#define LABEL_KEY_TRANSLATABLE "label_translatable" -+#define LABEL_KEY_TRANSLATABLETEXT "label_translatabletext" -+#define LABEL_KEY_ORIGINAL_LAYOUT "label_original_layout" -+ - static guint signals[LAST_SIGNAL] = { 0 }; - - static void gtk_label_class_init (GtkLabelClass *klass); -@@ -149,7 +165,7 @@ - static void gtk_label_set_uline_text_internal (GtkLabel *label, - const gchar *str); - static void gtk_label_set_pattern_internal (GtkLabel *label, -- const gchar *pattern); -+ const gchar *pattern); - static void set_markup (GtkLabel *label, - const gchar *str, - gboolean with_uline); -@@ -516,6 +532,24 @@ - G_MAXINT, - -1, - G_PARAM_READWRITE)); -+ /* Hildon mod. Add property for a widget - whether it supports run-time -+ + locale change. Please note that this functionality is not yet -+ + completed and may change. */ -+ g_object_class_install_property (gobject_class, -+ PROP_TRANSLATABLE, -+ g_param_spec_boolean ("translatable", -+ _("Is translatable"), -+ _("Whether label should be translatable."), -+ FALSE, -+ G_PARAM_READWRITE)); -+ -+ /* Hildonlike class property */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("hildonlike", -+ _("hildonlike looks"), -+ _("Changes wrapping etc behaviour, 1/0"), -+ FALSE, -+ G_PARAM_READABLE)); - /* - * Key bindings - */ -@@ -650,6 +684,10 @@ - case PROP_MAX_WIDTH_CHARS: - gtk_label_set_max_width_chars (label, g_value_get_int (value)); - break; -+/* Hildon add. */ -+ case PROP_TRANSLATABLE: -+ gtk_label_set_translatable (label, g_value_get_boolean (value)); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -730,6 +768,10 @@ - case PROP_MAX_WIDTH_CHARS: - g_value_set_int (value, gtk_label_get_max_width_chars (label)); - break; -+/* Hildon mod. */ -+ case PROP_TRANSLATABLE: -+ g_value_set_boolean (value, gtk_label_get_translatable (label)); -+ break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); -@@ -748,6 +790,7 @@ - priv->width_chars = -1; - priv->angle = 0.0; - priv->max_width_chars = -1; -+ priv->request_full_width = FALSE; - label->label = NULL; - - label->jtype = GTK_JUSTIFY_LEFT; -@@ -766,6 +809,15 @@ - label->mnemonic_window = NULL; - - gtk_label_set_text (label, ""); -+ -+/* Hildon Addition. */ -+ -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLE, FALSE); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT, NULL); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_ORIGINAL_LAYOUT, NULL); -+ -+/* /Hildon Addition. */ -+ - } - - /** -@@ -822,7 +874,7 @@ - - if (str && *str) - gtk_label_set_text_with_mnemonic (label, str); -- -+ - return GTK_WIDGET (label); - } - -@@ -1257,7 +1309,7 @@ - GError *error = NULL; - PangoAttrList *attrs = NULL; - gunichar accel_char = 0; -- -+ - if (!pango_parse_markup (str, - -1, - with_uline ? '_' : 0, -@@ -1340,12 +1392,14 @@ - g_return_if_fail (GTK_IS_LABEL (label)); - - last_keyval = label->mnemonic_keyval; -+ - gtk_label_set_label_internal (label, g_strdup (str ? str : "")); - gtk_label_set_use_markup_internal (label, TRUE); - gtk_label_set_use_underline_internal (label, TRUE); -- - gtk_label_recalculate (label); -+ - gtk_label_setup_mnemonic (label, last_keyval); -+ - } - - /** -@@ -1409,7 +1463,7 @@ - - static void - gtk_label_set_pattern_internal (GtkLabel *label, -- const gchar *pattern) -+ const gchar *pattern) - { - PangoAttrList *attrs; - g_return_if_fail (GTK_IS_LABEL (label)); -@@ -1421,7 +1475,16 @@ - - if (label->effective_attrs) - pango_attr_list_unref (label->effective_attrs); -+/* Following will disable undercores from -+ keyboard shortcuts if DISABLE_KEYBOARD_SHORTCUTS -+ is enabled during compile time -+ */ -+#ifndef DISABLE_KEYBOARD_SHORTCUTS - label->effective_attrs = attrs; -+#else -+ pango_attr_list_unref (attrs); -+#endif /* DISABLE_KEYBOARD_SHORTCUTS */ -+ - } - - void -@@ -1742,8 +1805,13 @@ - { - PangoLayout *layout; - GtkStyle *style = GTK_WIDGET (label)->style; -- -+ -+ gboolean hildonlike; - LabelWrapWidth *wrap_width = g_object_get_data (G_OBJECT (style), "gtk-label-wrap-width"); -+ -+ /* Hildon: get hildonlike property */ -+ gtk_widget_style_get (GTK_WIDGET (label), "hildonlike", &hildonlike, NULL); -+ - if (!wrap_width) - { - wrap_width = g_new0 (LabelWrapWidth, 1); -@@ -1763,7 +1831,12 @@ - "This long string gives a good enough length for any line to have."); - pango_layout_get_size (layout, &wrap_width->width, NULL); - g_object_unref (layout); -- -+ /* A hildon mod for "fixing line wrapping". Remember to remove this -+ when GtkLabel will implement width for height size negotiation.*/ -+ if (hildonlike) -+ { -+ wrap_width->width = wrap_width->width * 1.25; -+ } - return wrap_width->width; - } - -@@ -1774,8 +1847,12 @@ - PangoRectangle logical_rect; - gint rwidth, rheight; - gboolean rtl; -+ gboolean hildonlike; - - widget = GTK_WIDGET (label); -+ -+ /* Hildon: get hildonlike property */ -+ gtk_widget_style_get (widget, "hildonlike", &hildonlike, NULL); - - rtl = gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL; - rwidth = label->misc.xpad * 2; -@@ -1864,8 +1941,18 @@ - - wrap_width = get_label_wrap_width (label); - width = MIN (width, wrap_width); -- width = MIN (width, -+ -+ if (!hildonlike) -+ { -+ width = MIN (width, - PANGO_SCALE * (gdk_screen_get_width (screen) + 1) / 2); -+ } -+ else -+ { -+ width = MIN (width, -+ PANGO_SCALE * (gdk_screen_get_width (screen) + 1)); -+ } -+ - - pango_layout_set_width (label->layout, width); - pango_layout_get_extents (label->layout, NULL, &logical_rect); -@@ -1910,6 +1997,7 @@ - else /* !label->wrap */ - pango_layout_set_width (label->layout, -1); - } -+ - } - - /* Gets the bounds of a layout in device coordinates. Note cut-and-paste -@@ -2017,7 +2105,8 @@ - priv->width_chars > 0 || priv->max_width_chars > 0) && - aux_info && aux_info->width > 0) - width += aux_info->width; -- else if (label->ellipsize || priv->width_chars > 0 || priv->max_width_chars > 0) -+ else if ((label->ellipsize || priv->width_chars > 0 || priv->max_width_chars > 0) && -+ !priv->request_full_width) - { - PangoContext *context; - PangoFontMetrics *metrics; -@@ -2081,11 +2170,24 @@ - GtkAllocation *allocation) - { - GtkLabel *label; -+ GtkRequisition req; -+ GtkLabelPrivate *priv; - - label = GTK_LABEL (widget); -+ priv = GTK_LABEL_GET_PRIVATE (label); - - (* GTK_WIDGET_CLASS (parent_class)->size_allocate) (widget, allocation); - -+ gtk_widget_get_child_requisition (widget, &req); -+ -+ if (allocation->width < req.width && !label->wrap) -+ { -+ gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END); -+ priv->request_full_width = TRUE; -+ } -+ else -+ priv->request_full_width = FALSE; -+ - if (label->ellipsize) - { - if (label->layout) -@@ -2479,7 +2581,7 @@ - } - *dest = 0; - *pattern_dest = 0; -- -+ - gtk_label_set_text_internal (label, new_str); - gtk_label_set_pattern_internal (label, pattern); - -@@ -2541,13 +2643,11 @@ - last_keyval = label->mnemonic_keyval; - - g_object_freeze_notify (G_OBJECT (label)); -- - gtk_label_set_label_internal (label, g_strdup (str ? str : "")); - gtk_label_set_use_markup_internal (label, FALSE); - gtk_label_set_use_underline_internal (label, TRUE); -- -- gtk_label_recalculate (label); - -+ gtk_label_recalculate (label); - gtk_label_setup_mnemonic (label, last_keyval); - - g_object_thaw_notify (G_OBJECT (label)); -@@ -3948,3 +4048,67 @@ - popup_position_func, label, - 0, gtk_get_current_event_time ()); - } -+ -+/* Hildon mod. -+ * Functions for run-time locale changing. Beware though that this -+ functionality is not yet completed. Therefore it's suggested -+ that these functions shouldn't be used yet outside testing. */ -+ -+void gtk_label_set_translatable (GtkLabel *label, gboolean newstatus) -+{ -+ if (newstatus == gtk_label_get_translatable (label)) return; -+ -+ if (newstatus == TRUE) -+ { -+ if (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT) != NULL) -+ g_free (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT)); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT, g_strdup (label->label)); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLE, (void*) TRUE); -+ if (label->text != NULL) -+ g_free (label->text); -+ if (label->label != NULL) -+ g_free (label->label); -+ label->text = g_strdup(_(g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT))); -+ label->label = g_strdup(_(g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT))); -+ } -+ else -+ { -+ if (label->text != NULL) -+ g_free (label->text); -+ if (label->label != NULL) -+ g_free (label->label); -+ label->text = g_strdup (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT)); -+ label->label = g_strdup (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT)); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLE, FALSE); -+ if (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT) != NULL) -+ g_free (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT)); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT, NULL); -+ } -+ gtk_label_recalculate (label); -+} -+ -+gboolean gtk_label_get_translatable (GtkLabel *label) -+{ -+ return (gboolean) (g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLE)); -+} -+ -+ -+void gtk_label_retranslate (GtkLabel *label) -+{ -+ g_object_freeze_notify (G_OBJECT (label)); -+ if (gtk_label_get_translatable (label) == TRUE) -+ { -+ if (label->label != NULL) -+ g_free (label->label); -+ label->label = g_strdup(gettext(g_object_get_data (G_OBJECT (label), LABEL_KEY_TRANSLATABLETEXT))); -+ } -+ if (g_object_get_data (G_OBJECT (label), LABEL_KEY_ORIGINAL_LAYOUT)) g_object_unref (g_object_get_data (G_OBJECT (label), LABEL_KEY_ORIGINAL_LAYOUT)); -+ g_object_set_data (G_OBJECT (label), LABEL_KEY_ORIGINAL_LAYOUT, NULL); -+ g_object_notify (G_OBJECT (label), "label"); -+ gtk_label_recalculate (label); -+ g_object_thaw_notify (G_OBJECT (label)); -+ gtk_label_set_text (label, label->label); -+} -+ -+/* End of hildon mods for run-time locale change. */ -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.h.diff deleted file mode 100644 index 5aef5e5a62..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtklabel.h.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.6.4/gtk/gtklabel.h 2004-12-13 08:34:54.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtklabel.h 2005-04-06 16:19:36.889930240 +0300 -@@ -23,6 +23,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2004. See CHANGES file for list -+ * of changes. -+ */ -+ - #ifndef __GTK_LABEL_H__ - #define __GTK_LABEL_H__ - -@@ -165,6 +169,15 @@ - gboolean single_line_mode); - gboolean gtk_label_get_single_line_mode (GtkLabel *label); - -+/* Additional Hildon functions for run-time locale change */ -+ -+void gtk_label_set_translatable (GtkLabel *label, gboolean newstatus); -+gboolean gtk_label_get_translatable (GtkLabel *label); -+ -+void gtk_label_retranslate (GtkLabel *label); -+ -+/* ----- */ -+ - #ifndef GTK_DISABLE_DEPRECATED - - #define gtk_label_set gtk_label_set_text diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmain.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmain.c.diff deleted file mode 100644 index 2132487bdf..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmain.c.diff +++ /dev/null @@ -1,35 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmain.c 2004-12-27 07:25:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmain.c 2005-04-06 16:19:36.897929024 +0300 -@@ -68,6 +68,7 @@ - #include "gtkwindow.h" - #include "gtkprivate.h" - #include "gtkdebug.h" -+#include "gtkwidget.h" - - /* Private type definitions - */ -@@ -1297,6 +1298,15 @@ - { - grab_widget = event_widget; - } -+ -+ /* Hildon: insensitive press handling is moved here */ -+ if (event->type == GDK_BUTTON_PRESS) -+ { -+ if (!GTK_WIDGET_IS_SENSITIVE (event_widget)) -+ { -+ gtk_widget_insensitive_press(event_widget); -+ } -+ } - - /* Not all events get sent to the grabbing widget. - * The delete, destroy, expose, focus change and resize -@@ -2090,7 +2100,7 @@ - handled_event = FALSE; - - g_object_ref (widget); -- -+ - if ((event->type == GDK_KEY_PRESS) || - (event->type == GDK_KEY_RELEASE)) - { diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.c.diff deleted file mode 100644 index 80c0618bf9..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.c.diff +++ /dev/null @@ -1,266 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmarshal.c 2005-03-01 17:58:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmarshal.c 2005-04-06 16:19:36.898928872 +0300 -@@ -48,7 +48,7 @@ - #endif /* !G_ENABLE_DEBUG */ - - --/* BOOL:NONE (./gtkmarshal.list:1) */ -+/* BOOL:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:1) */ - void - gtk_marshal_BOOLEAN__VOID (GClosure *closure, - GValue *return_value, -@@ -85,7 +85,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOL:POINTER (./gtkmarshal.list:2) */ -+/* BOOL:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:2) */ - void - gtk_marshal_BOOLEAN__POINTER (GClosure *closure, - GValue *return_value, -@@ -124,7 +124,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOL:POINTER,POINTER,INT,INT (./gtkmarshal.list:3) */ -+/* BOOL:POINTER,POINTER,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:3) */ - void - gtk_marshal_BOOLEAN__POINTER_POINTER_INT_INT (GClosure *closure, - GValue *return_value, -@@ -169,7 +169,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOL:POINTER,INT,INT (./gtkmarshal.list:4) */ -+/* BOOL:POINTER,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:4) */ - void - gtk_marshal_BOOLEAN__POINTER_INT_INT (GClosure *closure, - GValue *return_value, -@@ -212,7 +212,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOL:POINTER,INT,INT,UINT (./gtkmarshal.list:5) */ -+/* BOOL:POINTER,INT,INT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:5) */ - void - gtk_marshal_BOOLEAN__POINTER_INT_INT_UINT (GClosure *closure, - GValue *return_value, -@@ -257,7 +257,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOL:POINTER,STRING,STRING,POINTER (./gtkmarshal.list:6) */ -+/* BOOL:POINTER,STRING,STRING,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:6) */ - void - gtk_marshal_BOOLEAN__POINTER_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, -@@ -302,7 +302,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* ENUM:ENUM (./gtkmarshal.list:7) */ -+/* ENUM:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:7) */ - void - gtk_marshal_ENUM__ENUM (GClosure *closure, - GValue *return_value, -@@ -341,7 +341,7 @@ - g_value_set_enum (return_value, v_return); - } - --/* INT:POINTER (./gtkmarshal.list:8) */ -+/* INT:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:8) */ - void - gtk_marshal_INT__POINTER (GClosure *closure, - GValue *return_value, -@@ -380,7 +380,7 @@ - g_value_set_int (return_value, v_return); - } - --/* INT:POINTER,CHAR,CHAR (./gtkmarshal.list:9) */ -+/* INT:POINTER,CHAR,CHAR (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:9) */ - void - gtk_marshal_INT__POINTER_CHAR_CHAR (GClosure *closure, - GValue *return_value, -@@ -423,13 +423,13 @@ - g_value_set_int (return_value, v_return); - } - --/* NONE:BOOL (./gtkmarshal.list:10) */ -+/* NONE:BOOL (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:10) */ - --/* NONE:BOXED (./gtkmarshal.list:11) */ -+/* NONE:BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:11) */ - --/* NONE:ENUM (./gtkmarshal.list:12) */ -+/* NONE:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:12) */ - --/* NONE:ENUM,FLOAT (./gtkmarshal.list:13) */ -+/* NONE:ENUM,FLOAT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:13) */ - void - gtk_marshal_VOID__ENUM_FLOAT (GClosure *closure, - GValue *return_value, -@@ -466,7 +466,7 @@ - data2); - } - --/* NONE:ENUM,FLOAT,BOOL (./gtkmarshal.list:14) */ -+/* NONE:ENUM,FLOAT,BOOL (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:14) */ - void - gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -505,9 +505,9 @@ - data2); - } - --/* NONE:INT (./gtkmarshal.list:15) */ -+/* NONE:INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:15) */ - --/* NONE:INT,INT (./gtkmarshal.list:16) */ -+/* NONE:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:16) */ - void - gtk_marshal_VOID__INT_INT (GClosure *closure, - GValue *return_value, -@@ -544,7 +544,7 @@ - data2); - } - --/* NONE:INT,INT,POINTER (./gtkmarshal.list:17) */ -+/* NONE:INT,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:17) */ - void - gtk_marshal_VOID__INT_INT_POINTER (GClosure *closure, - GValue *return_value, -@@ -583,13 +583,13 @@ - data2); - } - --/* NONE:NONE (./gtkmarshal.list:18) */ -+/* NONE:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:18) */ - --/* NONE:OBJECT (./gtkmarshal.list:19) */ -+/* NONE:OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:19) */ - --/* NONE:POINTER (./gtkmarshal.list:20) */ -+/* NONE:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:20) */ - --/* NONE:POINTER,INT (./gtkmarshal.list:21) */ -+/* NONE:POINTER,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:21) */ - void - gtk_marshal_VOID__POINTER_INT (GClosure *closure, - GValue *return_value, -@@ -626,7 +626,7 @@ - data2); - } - --/* NONE:POINTER,POINTER (./gtkmarshal.list:22) */ -+/* NONE:POINTER,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:22) */ - void - gtk_marshal_VOID__POINTER_POINTER (GClosure *closure, - GValue *return_value, -@@ -663,7 +663,7 @@ - data2); - } - --/* NONE:POINTER,POINTER,POINTER (./gtkmarshal.list:23) */ -+/* NONE:POINTER,POINTER,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:23) */ - void - gtk_marshal_VOID__POINTER_POINTER_POINTER (GClosure *closure, - GValue *return_value, -@@ -702,7 +702,7 @@ - data2); - } - --/* NONE:POINTER,STRING,STRING (./gtkmarshal.list:24) */ -+/* NONE:POINTER,STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:24) */ - void - gtk_marshal_VOID__POINTER_STRING_STRING (GClosure *closure, - GValue *return_value, -@@ -741,7 +741,7 @@ - data2); - } - --/* NONE:POINTER,UINT (./gtkmarshal.list:25) */ -+/* NONE:POINTER,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:25) */ - void - gtk_marshal_VOID__POINTER_UINT (GClosure *closure, - GValue *return_value, -@@ -778,7 +778,7 @@ - data2); - } - --/* NONE:POINTER,UINT,ENUM (./gtkmarshal.list:26) */ -+/* NONE:POINTER,UINT,ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:26) */ - void - gtk_marshal_VOID__POINTER_UINT_ENUM (GClosure *closure, - GValue *return_value, -@@ -817,7 +817,7 @@ - data2); - } - --/* NONE:POINTER,POINTER,UINT,UINT (./gtkmarshal.list:27) */ -+/* NONE:POINTER,POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:27) */ - void - gtk_marshal_VOID__POINTER_POINTER_UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -858,7 +858,7 @@ - data2); - } - --/* NONE:POINTER,INT,INT,POINTER,UINT,UINT (./gtkmarshal.list:28) */ -+/* NONE:POINTER,INT,INT,POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:28) */ - void - gtk_marshal_VOID__POINTER_INT_INT_POINTER_UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -903,7 +903,7 @@ - data2); - } - --/* NONE:POINTER,UINT,UINT (./gtkmarshal.list:29) */ -+/* NONE:POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:29) */ - void - gtk_marshal_VOID__POINTER_UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -942,11 +942,11 @@ - data2); - } - --/* NONE:POINTER,UINT,UINT (./gtkmarshal.list:30) */ -+/* NONE:POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:30) */ - --/* NONE:STRING (./gtkmarshal.list:31) */ -+/* NONE:STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:31) */ - --/* NONE:STRING,INT,POINTER (./gtkmarshal.list:32) */ -+/* NONE:STRING,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:32) */ - void - gtk_marshal_VOID__STRING_INT_POINTER (GClosure *closure, - GValue *return_value, -@@ -985,9 +985,9 @@ - data2); - } - --/* NONE:UINT (./gtkmarshal.list:33) */ -+/* NONE:UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:33) */ - --/* NONE:UINT,POINTER,UINT,ENUM,ENUM,POINTER (./gtkmarshal.list:34) */ -+/* NONE:UINT,POINTER,UINT,ENUM,ENUM,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:34) */ - void - gtk_marshal_VOID__UINT_POINTER_UINT_ENUM_ENUM_POINTER (GClosure *closure, - GValue *return_value, -@@ -1032,7 +1032,7 @@ - data2); - } - --/* NONE:UINT,POINTER,UINT,UINT,ENUM (./gtkmarshal.list:35) */ -+/* NONE:UINT,POINTER,UINT,UINT,ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:35) */ - void - gtk_marshal_VOID__UINT_POINTER_UINT_UINT_ENUM (GClosure *closure, - GValue *return_value, -@@ -1075,7 +1075,7 @@ - data2); - } - --/* NONE:UINT,STRING (./gtkmarshal.list:36) */ -+/* NONE:UINT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:36) */ - void - gtk_marshal_VOID__UINT_STRING (GClosure *closure, - GValue *return_value, diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.h.diff deleted file mode 100644 index 9740129005..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshal.h.diff +++ /dev/null @@ -1,284 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmarshal.h 2005-03-01 17:58:16.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmarshal.h 2005-04-06 16:19:36.899928720 +0300 -@@ -7,7 +7,7 @@ - - G_BEGIN_DECLS - --/* BOOL:NONE (./gtkmarshal.list:1) */ -+/* BOOL:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:1) */ - extern void gtk_marshal_BOOLEAN__VOID (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -16,7 +16,7 @@ - gpointer marshal_data); - #define gtk_marshal_BOOL__NONE gtk_marshal_BOOLEAN__VOID - --/* BOOL:POINTER (./gtkmarshal.list:2) */ -+/* BOOL:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:2) */ - extern void gtk_marshal_BOOLEAN__POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -25,7 +25,7 @@ - gpointer marshal_data); - #define gtk_marshal_BOOL__POINTER gtk_marshal_BOOLEAN__POINTER - --/* BOOL:POINTER,POINTER,INT,INT (./gtkmarshal.list:3) */ -+/* BOOL:POINTER,POINTER,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:3) */ - extern void gtk_marshal_BOOLEAN__POINTER_POINTER_INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -34,7 +34,7 @@ - gpointer marshal_data); - #define gtk_marshal_BOOL__POINTER_POINTER_INT_INT gtk_marshal_BOOLEAN__POINTER_POINTER_INT_INT - --/* BOOL:POINTER,INT,INT (./gtkmarshal.list:4) */ -+/* BOOL:POINTER,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:4) */ - extern void gtk_marshal_BOOLEAN__POINTER_INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -43,7 +43,7 @@ - gpointer marshal_data); - #define gtk_marshal_BOOL__POINTER_INT_INT gtk_marshal_BOOLEAN__POINTER_INT_INT - --/* BOOL:POINTER,INT,INT,UINT (./gtkmarshal.list:5) */ -+/* BOOL:POINTER,INT,INT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:5) */ - extern void gtk_marshal_BOOLEAN__POINTER_INT_INT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -52,7 +52,7 @@ - gpointer marshal_data); - #define gtk_marshal_BOOL__POINTER_INT_INT_UINT gtk_marshal_BOOLEAN__POINTER_INT_INT_UINT - --/* BOOL:POINTER,STRING,STRING,POINTER (./gtkmarshal.list:6) */ -+/* BOOL:POINTER,STRING,STRING,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:6) */ - extern void gtk_marshal_BOOLEAN__POINTER_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -61,7 +61,7 @@ - gpointer marshal_data); - #define gtk_marshal_BOOL__POINTER_STRING_STRING_POINTER gtk_marshal_BOOLEAN__POINTER_STRING_STRING_POINTER - --/* ENUM:ENUM (./gtkmarshal.list:7) */ -+/* ENUM:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:7) */ - extern void gtk_marshal_ENUM__ENUM (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -69,7 +69,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* INT:POINTER (./gtkmarshal.list:8) */ -+/* INT:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:8) */ - extern void gtk_marshal_INT__POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -77,7 +77,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* INT:POINTER,CHAR,CHAR (./gtkmarshal.list:9) */ -+/* INT:POINTER,CHAR,CHAR (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:9) */ - extern void gtk_marshal_INT__POINTER_CHAR_CHAR (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -85,19 +85,19 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* NONE:BOOL (./gtkmarshal.list:10) */ -+/* NONE:BOOL (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:10) */ - #define gtk_marshal_VOID__BOOLEAN g_cclosure_marshal_VOID__BOOLEAN - #define gtk_marshal_NONE__BOOL gtk_marshal_VOID__BOOLEAN - --/* NONE:BOXED (./gtkmarshal.list:11) */ -+/* NONE:BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:11) */ - #define gtk_marshal_VOID__BOXED g_cclosure_marshal_VOID__BOXED - #define gtk_marshal_NONE__BOXED gtk_marshal_VOID__BOXED - --/* NONE:ENUM (./gtkmarshal.list:12) */ -+/* NONE:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:12) */ - #define gtk_marshal_VOID__ENUM g_cclosure_marshal_VOID__ENUM - #define gtk_marshal_NONE__ENUM gtk_marshal_VOID__ENUM - --/* NONE:ENUM,FLOAT (./gtkmarshal.list:13) */ -+/* NONE:ENUM,FLOAT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:13) */ - extern void gtk_marshal_VOID__ENUM_FLOAT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -106,7 +106,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__ENUM_FLOAT gtk_marshal_VOID__ENUM_FLOAT - --/* NONE:ENUM,FLOAT,BOOL (./gtkmarshal.list:14) */ -+/* NONE:ENUM,FLOAT,BOOL (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:14) */ - extern void gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -115,11 +115,11 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__ENUM_FLOAT_BOOL gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN - --/* NONE:INT (./gtkmarshal.list:15) */ -+/* NONE:INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:15) */ - #define gtk_marshal_VOID__INT g_cclosure_marshal_VOID__INT - #define gtk_marshal_NONE__INT gtk_marshal_VOID__INT - --/* NONE:INT,INT (./gtkmarshal.list:16) */ -+/* NONE:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:16) */ - extern void gtk_marshal_VOID__INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -128,7 +128,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__INT_INT gtk_marshal_VOID__INT_INT - --/* NONE:INT,INT,POINTER (./gtkmarshal.list:17) */ -+/* NONE:INT,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:17) */ - extern void gtk_marshal_VOID__INT_INT_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -137,19 +137,19 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__INT_INT_POINTER gtk_marshal_VOID__INT_INT_POINTER - --/* NONE:NONE (./gtkmarshal.list:18) */ -+/* NONE:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:18) */ - #define gtk_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID - #define gtk_marshal_NONE__NONE gtk_marshal_VOID__VOID - --/* NONE:OBJECT (./gtkmarshal.list:19) */ -+/* NONE:OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:19) */ - #define gtk_marshal_VOID__OBJECT g_cclosure_marshal_VOID__OBJECT - #define gtk_marshal_NONE__OBJECT gtk_marshal_VOID__OBJECT - --/* NONE:POINTER (./gtkmarshal.list:20) */ -+/* NONE:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:20) */ - #define gtk_marshal_VOID__POINTER g_cclosure_marshal_VOID__POINTER - #define gtk_marshal_NONE__POINTER gtk_marshal_VOID__POINTER - --/* NONE:POINTER,INT (./gtkmarshal.list:21) */ -+/* NONE:POINTER,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:21) */ - extern void gtk_marshal_VOID__POINTER_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -158,7 +158,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_INT gtk_marshal_VOID__POINTER_INT - --/* NONE:POINTER,POINTER (./gtkmarshal.list:22) */ -+/* NONE:POINTER,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:22) */ - extern void gtk_marshal_VOID__POINTER_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -167,7 +167,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_POINTER gtk_marshal_VOID__POINTER_POINTER - --/* NONE:POINTER,POINTER,POINTER (./gtkmarshal.list:23) */ -+/* NONE:POINTER,POINTER,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:23) */ - extern void gtk_marshal_VOID__POINTER_POINTER_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -176,7 +176,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_POINTER_POINTER gtk_marshal_VOID__POINTER_POINTER_POINTER - --/* NONE:POINTER,STRING,STRING (./gtkmarshal.list:24) */ -+/* NONE:POINTER,STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:24) */ - extern void gtk_marshal_VOID__POINTER_STRING_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -185,7 +185,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_STRING_STRING gtk_marshal_VOID__POINTER_STRING_STRING - --/* NONE:POINTER,UINT (./gtkmarshal.list:25) */ -+/* NONE:POINTER,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:25) */ - extern void gtk_marshal_VOID__POINTER_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -194,7 +194,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_UINT gtk_marshal_VOID__POINTER_UINT - --/* NONE:POINTER,UINT,ENUM (./gtkmarshal.list:26) */ -+/* NONE:POINTER,UINT,ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:26) */ - extern void gtk_marshal_VOID__POINTER_UINT_ENUM (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -203,7 +203,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_UINT_ENUM gtk_marshal_VOID__POINTER_UINT_ENUM - --/* NONE:POINTER,POINTER,UINT,UINT (./gtkmarshal.list:27) */ -+/* NONE:POINTER,POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:27) */ - extern void gtk_marshal_VOID__POINTER_POINTER_UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -212,7 +212,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_POINTER_UINT_UINT gtk_marshal_VOID__POINTER_POINTER_UINT_UINT - --/* NONE:POINTER,INT,INT,POINTER,UINT,UINT (./gtkmarshal.list:28) */ -+/* NONE:POINTER,INT,INT,POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:28) */ - extern void gtk_marshal_VOID__POINTER_INT_INT_POINTER_UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -221,7 +221,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_INT_INT_POINTER_UINT_UINT gtk_marshal_VOID__POINTER_INT_INT_POINTER_UINT_UINT - --/* NONE:POINTER,UINT,UINT (./gtkmarshal.list:29) */ -+/* NONE:POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:29) */ - extern void gtk_marshal_VOID__POINTER_UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -230,13 +230,13 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__POINTER_UINT_UINT gtk_marshal_VOID__POINTER_UINT_UINT - --/* NONE:POINTER,UINT,UINT (./gtkmarshal.list:30) */ -+/* NONE:POINTER,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:30) */ - --/* NONE:STRING (./gtkmarshal.list:31) */ -+/* NONE:STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:31) */ - #define gtk_marshal_VOID__STRING g_cclosure_marshal_VOID__STRING - #define gtk_marshal_NONE__STRING gtk_marshal_VOID__STRING - --/* NONE:STRING,INT,POINTER (./gtkmarshal.list:32) */ -+/* NONE:STRING,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:32) */ - extern void gtk_marshal_VOID__STRING_INT_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -245,11 +245,11 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__STRING_INT_POINTER gtk_marshal_VOID__STRING_INT_POINTER - --/* NONE:UINT (./gtkmarshal.list:33) */ -+/* NONE:UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:33) */ - #define gtk_marshal_VOID__UINT g_cclosure_marshal_VOID__UINT - #define gtk_marshal_NONE__UINT gtk_marshal_VOID__UINT - --/* NONE:UINT,POINTER,UINT,ENUM,ENUM,POINTER (./gtkmarshal.list:34) */ -+/* NONE:UINT,POINTER,UINT,ENUM,ENUM,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:34) */ - extern void gtk_marshal_VOID__UINT_POINTER_UINT_ENUM_ENUM_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -258,7 +258,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__UINT_POINTER_UINT_ENUM_ENUM_POINTER gtk_marshal_VOID__UINT_POINTER_UINT_ENUM_ENUM_POINTER - --/* NONE:UINT,POINTER,UINT,UINT,ENUM (./gtkmarshal.list:35) */ -+/* NONE:UINT,POINTER,UINT,UINT,ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:35) */ - extern void gtk_marshal_VOID__UINT_POINTER_UINT_UINT_ENUM (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -267,7 +267,7 @@ - gpointer marshal_data); - #define gtk_marshal_NONE__UINT_POINTER_UINT_UINT_ENUM gtk_marshal_VOID__UINT_POINTER_UINT_UINT_ENUM - --/* NONE:UINT,STRING (./gtkmarshal.list:36) */ -+/* NONE:UINT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshal.list:36) */ - extern void gtk_marshal_VOID__UINT_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.c.diff deleted file mode 100644 index 7f22a0e5d9..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.c.diff +++ /dev/null @@ -1,606 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmarshalers.c 2005-03-01 17:58:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmarshalers.c 2005-04-06 16:19:36.902928264 +0300 -@@ -48,7 +48,7 @@ - #endif /* !G_ENABLE_DEBUG */ - - --/* BOOLEAN:BOXED (./gtkmarshalers.list:24) */ -+/* BOOLEAN:BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:24) */ - void - _gtk_marshal_BOOLEAN__BOXED (GClosure *closure, - GValue *return_value, -@@ -87,7 +87,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:BOXED,BOXED (./gtkmarshalers.list:25) */ -+/* BOOLEAN:BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:25) */ - void - _gtk_marshal_BOOLEAN__BOXED_BOXED (GClosure *closure, - GValue *return_value, -@@ -128,7 +128,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:ENUM (./gtkmarshalers.list:26) */ -+/* BOOLEAN:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:26) */ - void - _gtk_marshal_BOOLEAN__ENUM (GClosure *closure, - GValue *return_value, -@@ -167,7 +167,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:ENUM,DOUBLE (./gtkmarshalers.list:27) */ -+/* BOOLEAN:ENUM,DOUBLE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:27) */ - void - _gtk_marshal_BOOLEAN__ENUM_DOUBLE (GClosure *closure, - GValue *return_value, -@@ -208,7 +208,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:ENUM,INT (./gtkmarshalers.list:28) */ -+/* BOOLEAN:ENUM,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:28) */ - void - _gtk_marshal_BOOLEAN__ENUM_INT (GClosure *closure, - GValue *return_value, -@@ -249,7 +249,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:OBJECT,UINT,FLAGS (./gtkmarshalers.list:29) */ -+/* BOOLEAN:OBJECT,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:29) */ - void - _gtk_marshal_BOOLEAN__OBJECT_UINT_FLAGS (GClosure *closure, - GValue *return_value, -@@ -292,7 +292,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:OBJECT,INT,INT,UINT (./gtkmarshalers.list:30) */ -+/* BOOLEAN:OBJECT,INT,INT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:30) */ - void - _gtk_marshal_BOOLEAN__OBJECT_INT_INT_UINT (GClosure *closure, - GValue *return_value, -@@ -337,7 +337,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:OBJECT,STRING,STRING,BOXED (./gtkmarshalers.list:31) */ -+/* BOOLEAN:OBJECT,STRING,STRING,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:31) */ - void - _gtk_marshal_BOOLEAN__OBJECT_STRING_STRING_BOXED (GClosure *closure, - GValue *return_value, -@@ -382,7 +382,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:OBJECT,BOXED (./gtkmarshalers.list:32) */ -+/* BOOLEAN:OBJECT,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:32) */ - void - _gtk_marshal_BOOLEAN__OBJECT_BOXED (GClosure *closure, - GValue *return_value, -@@ -423,7 +423,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:OBJECT,BOXED,BOXED (./gtkmarshalers.list:33) */ -+/* BOOLEAN:OBJECT,BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:33) */ - void - _gtk_marshal_BOOLEAN__OBJECT_BOXED_BOXED (GClosure *closure, - GValue *return_value, -@@ -466,7 +466,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:OBJECT,STRING,STRING (./gtkmarshalers.list:34) */ -+/* BOOLEAN:OBJECT,STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:34) */ - void - _gtk_marshal_BOOLEAN__OBJECT_STRING_STRING (GClosure *closure, - GValue *return_value, -@@ -509,7 +509,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:INT,INT (./gtkmarshalers.list:35) */ -+/* BOOLEAN:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:35) */ - void - _gtk_marshal_BOOLEAN__INT_INT (GClosure *closure, - GValue *return_value, -@@ -550,7 +550,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:INT,INT,INT (./gtkmarshalers.list:36) */ -+/* BOOLEAN:INT,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:36) */ - void - _gtk_marshal_BOOLEAN__INT_INT_INT (GClosure *closure, - GValue *return_value, -@@ -593,7 +593,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:UINT (./gtkmarshalers.list:37) */ -+/* BOOLEAN:UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:37) */ - void - _gtk_marshal_BOOLEAN__UINT (GClosure *closure, - GValue *return_value, -@@ -632,7 +632,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:VOID (./gtkmarshalers.list:38) */ -+/* BOOLEAN:VOID (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:38) */ - void - _gtk_marshal_BOOLEAN__VOID (GClosure *closure, - GValue *return_value, -@@ -669,7 +669,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:BOOLEAN (./gtkmarshalers.list:39) */ -+/* BOOLEAN:BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:39) */ - void - _gtk_marshal_BOOLEAN__BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -708,9 +708,9 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:NONE (./gtkmarshalers.list:40) */ -+/* BOOLEAN:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:40) */ - --/* BOOLEAN:BOOLEAN,BOOLEAN,BOOLEAN (./gtkmarshalers.list:41) */ -+/* BOOLEAN:BOOLEAN,BOOLEAN,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:41) */ - void - _gtk_marshal_BOOLEAN__BOOLEAN_BOOLEAN_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -753,7 +753,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* BOOLEAN:STRING (./gtkmarshalers.list:42) */ -+/* BOOLEAN:STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:42) */ - void - _gtk_marshal_BOOLEAN__STRING (GClosure *closure, - GValue *return_value, -@@ -792,7 +792,7 @@ - g_value_set_boolean (return_value, v_return); - } - --/* ENUM:ENUM (./gtkmarshalers.list:43) */ -+/* ENUM:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:43) */ - void - _gtk_marshal_ENUM__ENUM (GClosure *closure, - GValue *return_value, -@@ -831,7 +831,7 @@ - g_value_set_enum (return_value, v_return); - } - --/* INT:POINTER (./gtkmarshalers.list:44) */ -+/* INT:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:44) */ - void - _gtk_marshal_INT__POINTER (GClosure *closure, - GValue *return_value, -@@ -870,13 +870,13 @@ - g_value_set_int (return_value, v_return); - } - --/* NONE:BOOLEAN (./gtkmarshalers.list:45) */ -+/* NONE:BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:45) */ - --/* NONE:ENUM (./gtkmarshalers.list:46) */ -+/* NONE:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:46) */ - --/* NONE:INT (./gtkmarshalers.list:47) */ -+/* NONE:INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:47) */ - --/* NONE:INT,BOOL (./gtkmarshalers.list:48) */ -+/* NONE:INT,BOOL (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:48) */ - void - _gtk_marshal_VOID__INT_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -913,7 +913,7 @@ - data2); - } - --/* NONE:INT,INT (./gtkmarshalers.list:49) */ -+/* NONE:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:49) */ - void - _gtk_marshal_VOID__INT_INT (GClosure *closure, - GValue *return_value, -@@ -950,9 +950,9 @@ - data2); - } - --/* NONE:NONE (./gtkmarshalers.list:50) */ -+/* NONE:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:50) */ - --/* NONE:STRING,INT,POINTER (./gtkmarshalers.list:51) */ -+/* NONE:STRING,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:51) */ - void - _gtk_marshal_VOID__STRING_INT_POINTER (GClosure *closure, - GValue *return_value, -@@ -991,7 +991,7 @@ - data2); - } - --/* STRING:DOUBLE (./gtkmarshalers.list:52) */ -+/* STRING:DOUBLE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:52) */ - void - _gtk_marshal_STRING__DOUBLE (GClosure *closure, - GValue *return_value, -@@ -1030,11 +1030,11 @@ - g_value_take_string (return_value, v_return); - } - --/* VOID:DOUBLE (./gtkmarshalers.list:53) */ -+/* VOID:DOUBLE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:53) */ - --/* VOID:BOOLEAN (./gtkmarshalers.list:54) */ -+/* VOID:BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:54) */ - --/* VOID:BOOLEAN,BOOLEAN,BOOLEAN (./gtkmarshalers.list:55) */ -+/* VOID:BOOLEAN,BOOLEAN,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:55) */ - void - _gtk_marshal_VOID__BOOLEAN_BOOLEAN_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -1073,9 +1073,9 @@ - data2); - } - --/* VOID:BOXED (./gtkmarshalers.list:56) */ -+/* VOID:BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:56) */ - --/* VOID:BOXED,BOXED (./gtkmarshalers.list:57) */ -+/* VOID:BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:57) */ - void - _gtk_marshal_VOID__BOXED_BOXED (GClosure *closure, - GValue *return_value, -@@ -1112,7 +1112,7 @@ - data2); - } - --/* VOID:BOXED,BOXED,POINTER (./gtkmarshalers.list:58) */ -+/* VOID:BOXED,BOXED,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:58) */ - void - _gtk_marshal_VOID__BOXED_BOXED_POINTER (GClosure *closure, - GValue *return_value, -@@ -1151,7 +1151,7 @@ - data2); - } - --/* VOID:BOXED,OBJECT (./gtkmarshalers.list:59) */ -+/* VOID:BOXED,OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:59) */ - void - _gtk_marshal_VOID__BOXED_OBJECT (GClosure *closure, - GValue *return_value, -@@ -1188,7 +1188,7 @@ - data2); - } - --/* VOID:BOXED,STRING,INT (./gtkmarshalers.list:60) */ -+/* VOID:BOXED,STRING,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:60) */ - void - _gtk_marshal_VOID__BOXED_STRING_INT (GClosure *closure, - GValue *return_value, -@@ -1227,7 +1227,7 @@ - data2); - } - --/* VOID:BOXED,UINT (./gtkmarshalers.list:61) */ -+/* VOID:BOXED,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:61) */ - void - _gtk_marshal_VOID__BOXED_UINT (GClosure *closure, - GValue *return_value, -@@ -1264,7 +1264,7 @@ - data2); - } - --/* VOID:BOXED,UINT,FLAGS (./gtkmarshalers.list:62) */ -+/* VOID:BOXED,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:62) */ - void - _gtk_marshal_VOID__BOXED_UINT_FLAGS (GClosure *closure, - GValue *return_value, -@@ -1303,7 +1303,7 @@ - data2); - } - --/* VOID:BOXED,UINT,UINT (./gtkmarshalers.list:63) */ -+/* VOID:BOXED,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:63) */ - void - _gtk_marshal_VOID__BOXED_UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -1342,9 +1342,9 @@ - data2); - } - --/* VOID:ENUM (./gtkmarshalers.list:64) */ -+/* VOID:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:64) */ - --/* VOID:ENUM,BOOLEAN (./gtkmarshalers.list:65) */ -+/* VOID:ENUM,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:65) */ - void - _gtk_marshal_VOID__ENUM_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -1381,7 +1381,7 @@ - data2); - } - --/* VOID:ENUM,ENUM (./gtkmarshalers.list:66) */ -+/* VOID:ENUM,ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:66) */ - void - _gtk_marshal_VOID__ENUM_ENUM (GClosure *closure, - GValue *return_value, -@@ -1418,7 +1418,7 @@ - data2); - } - --/* VOID:ENUM,FLOAT (./gtkmarshalers.list:67) */ -+/* VOID:ENUM,FLOAT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:67) */ - void - _gtk_marshal_VOID__ENUM_FLOAT (GClosure *closure, - GValue *return_value, -@@ -1455,7 +1455,7 @@ - data2); - } - --/* VOID:ENUM,FLOAT,BOOLEAN (./gtkmarshalers.list:68) */ -+/* VOID:ENUM,FLOAT,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:68) */ - void - _gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -1494,7 +1494,7 @@ - data2); - } - --/* VOID:ENUM,INT (./gtkmarshalers.list:69) */ -+/* VOID:ENUM,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:69) */ - void - _gtk_marshal_VOID__ENUM_INT (GClosure *closure, - GValue *return_value, -@@ -1531,7 +1531,7 @@ - data2); - } - --/* VOID:ENUM,INT,BOOLEAN (./gtkmarshalers.list:70) */ -+/* VOID:ENUM,INT,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:70) */ - void - _gtk_marshal_VOID__ENUM_INT_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -1570,11 +1570,11 @@ - data2); - } - --/* VOID:INT (./gtkmarshalers.list:71) */ -+/* VOID:INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:71) */ - --/* VOID:INT,INT (./gtkmarshalers.list:72) */ -+/* VOID:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:72) */ - --/* VOID:INT,INT,BOXED (./gtkmarshalers.list:73) */ -+/* VOID:INT,INT,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:73) */ - void - _gtk_marshal_VOID__INT_INT_BOXED (GClosure *closure, - GValue *return_value, -@@ -1613,7 +1613,7 @@ - data2); - } - --/* VOID:INT,INT,INT (./gtkmarshalers.list:74) */ -+/* VOID:INT,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:74) */ - void - _gtk_marshal_VOID__INT_INT_INT (GClosure *closure, - GValue *return_value, -@@ -1652,9 +1652,9 @@ - data2); - } - --/* VOID:OBJECT (./gtkmarshalers.list:75) */ -+/* VOID:OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:75) */ - --/* VOID:OBJECT,BOOLEAN (./gtkmarshalers.list:76) */ -+/* VOID:OBJECT,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:76) */ - void - _gtk_marshal_VOID__OBJECT_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -1691,7 +1691,7 @@ - data2); - } - --/* VOID:OBJECT,BOXED,BOXED (./gtkmarshalers.list:77) */ -+/* VOID:OBJECT,BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:77) */ - void - _gtk_marshal_VOID__OBJECT_BOXED_BOXED (GClosure *closure, - GValue *return_value, -@@ -1730,7 +1730,7 @@ - data2); - } - --/* VOID:OBJECT,BOXED,UINT,UINT (./gtkmarshalers.list:78) */ -+/* VOID:OBJECT,BOXED,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:78) */ - void - _gtk_marshal_VOID__OBJECT_BOXED_UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -1771,7 +1771,7 @@ - data2); - } - --/* VOID:OBJECT,INT,INT (./gtkmarshalers.list:79) */ -+/* VOID:OBJECT,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:79) */ - void - _gtk_marshal_VOID__OBJECT_INT_INT (GClosure *closure, - GValue *return_value, -@@ -1810,7 +1810,7 @@ - data2); - } - --/* VOID:OBJECT,INT,INT,BOXED,UINT,UINT (./gtkmarshalers.list:80) */ -+/* VOID:OBJECT,INT,INT,BOXED,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:80) */ - void - _gtk_marshal_VOID__OBJECT_INT_INT_BOXED_UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -1855,7 +1855,7 @@ - data2); - } - --/* VOID:OBJECT,OBJECT (./gtkmarshalers.list:81) */ -+/* VOID:OBJECT,OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:81) */ - void - _gtk_marshal_VOID__OBJECT_OBJECT (GClosure *closure, - GValue *return_value, -@@ -1892,7 +1892,7 @@ - data2); - } - --/* VOID:OBJECT,STRING (./gtkmarshalers.list:82) */ -+/* VOID:OBJECT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:82) */ - void - _gtk_marshal_VOID__OBJECT_STRING (GClosure *closure, - GValue *return_value, -@@ -1929,7 +1929,7 @@ - data2); - } - --/* VOID:OBJECT,STRING,STRING (./gtkmarshalers.list:83) */ -+/* VOID:OBJECT,STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:83) */ - void - _gtk_marshal_VOID__OBJECT_STRING_STRING (GClosure *closure, - GValue *return_value, -@@ -1968,7 +1968,7 @@ - data2); - } - --/* VOID:OBJECT,UINT (./gtkmarshalers.list:84) */ -+/* VOID:OBJECT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:84) */ - void - _gtk_marshal_VOID__OBJECT_UINT (GClosure *closure, - GValue *return_value, -@@ -2005,7 +2005,7 @@ - data2); - } - --/* VOID:OBJECT,UINT,FLAGS (./gtkmarshalers.list:85) */ -+/* VOID:OBJECT,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:85) */ - void - _gtk_marshal_VOID__OBJECT_UINT_FLAGS (GClosure *closure, - GValue *return_value, -@@ -2044,11 +2044,11 @@ - data2); - } - --/* VOID:OBJECT,STRING (./gtkmarshalers.list:86) */ -+/* VOID:OBJECT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:86) */ - --/* VOID:POINTER (./gtkmarshalers.list:87) */ -+/* VOID:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:87) */ - --/* VOID:POINTER,INT (./gtkmarshalers.list:88) */ -+/* VOID:POINTER,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:88) */ - void - _gtk_marshal_VOID__POINTER_INT (GClosure *closure, - GValue *return_value, -@@ -2085,7 +2085,7 @@ - data2); - } - --/* VOID:POINTER,BOOLEAN (./gtkmarshalers.list:89) */ -+/* VOID:POINTER,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:89) */ - void - _gtk_marshal_VOID__POINTER_BOOLEAN (GClosure *closure, - GValue *return_value, -@@ -2122,7 +2122,7 @@ - data2); - } - --/* VOID:POINTER,POINTER,POINTER (./gtkmarshalers.list:90) */ -+/* VOID:POINTER,POINTER,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:90) */ - void - _gtk_marshal_VOID__POINTER_POINTER_POINTER (GClosure *closure, - GValue *return_value, -@@ -2161,7 +2161,7 @@ - data2); - } - --/* VOID:POINTER,UINT (./gtkmarshalers.list:91) */ -+/* VOID:POINTER,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:91) */ - void - _gtk_marshal_VOID__POINTER_UINT (GClosure *closure, - GValue *return_value, -@@ -2198,9 +2198,9 @@ - data2); - } - --/* VOID:STRING (./gtkmarshalers.list:92) */ -+/* VOID:STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:92) */ - --/* VOID:STRING,STRING (./gtkmarshalers.list:93) */ -+/* VOID:STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:93) */ - void - _gtk_marshal_VOID__STRING_STRING (GClosure *closure, - GValue *return_value, -@@ -2237,9 +2237,9 @@ - data2); - } - --/* VOID:STRING,INT,POINTER (./gtkmarshalers.list:94) */ -+/* VOID:STRING,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:94) */ - --/* VOID:STRING,UINT,FLAGS (./gtkmarshalers.list:95) */ -+/* VOID:STRING,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:95) */ - void - _gtk_marshal_VOID__STRING_UINT_FLAGS (GClosure *closure, - GValue *return_value, -@@ -2278,7 +2278,7 @@ - data2); - } - --/* VOID:UINT,FLAGS,BOXED (./gtkmarshalers.list:96) */ -+/* VOID:UINT,FLAGS,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:96) */ - void - _gtk_marshal_VOID__UINT_FLAGS_BOXED (GClosure *closure, - GValue *return_value, -@@ -2317,7 +2317,7 @@ - data2); - } - --/* VOID:UINT,UINT (./gtkmarshalers.list:97) */ -+/* VOID:UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:97) */ - void - _gtk_marshal_VOID__UINT_UINT (GClosure *closure, - GValue *return_value, -@@ -2354,7 +2354,7 @@ - data2); - } - --/* VOID:UINT,STRING (./gtkmarshalers.list:98) */ -+/* VOID:UINT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:98) */ - void - _gtk_marshal_VOID__UINT_STRING (GClosure *closure, - GValue *return_value, -@@ -2391,7 +2391,7 @@ - data2); - } - --/* VOID:UINT,BOXED,UINT,FLAGS,FLAGS (./gtkmarshalers.list:99) */ -+/* VOID:UINT,BOXED,UINT,FLAGS,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:99) */ - void - _gtk_marshal_VOID__UINT_BOXED_UINT_FLAGS_FLAGS (GClosure *closure, - GValue *return_value, -@@ -2434,7 +2434,7 @@ - data2); - } - --/* VOID:UINT,OBJECT,UINT,FLAGS,FLAGS (./gtkmarshalers.list:100) */ -+/* VOID:UINT,OBJECT,UINT,FLAGS,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:100) */ - void - _gtk_marshal_VOID__UINT_OBJECT_UINT_FLAGS_FLAGS (GClosure *closure, - GValue *return_value, -@@ -2477,5 +2477,5 @@ - data2); - } - --/* VOID:VOID (./gtkmarshalers.list:101) */ -+/* VOID:VOID (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:101) */ - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.h.diff deleted file mode 100644 index e6941631e4..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmarshalers.h.diff +++ /dev/null @@ -1,622 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmarshalers.h 2005-03-01 17:58:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmarshalers.h 2005-04-06 16:19:36.903928112 +0300 -@@ -6,7 +6,7 @@ - - G_BEGIN_DECLS - --/* BOOLEAN:BOXED (./gtkmarshalers.list:24) */ -+/* BOOLEAN:BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:24) */ - extern void _gtk_marshal_BOOLEAN__BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -14,7 +14,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:BOXED,BOXED (./gtkmarshalers.list:25) */ -+/* BOOLEAN:BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:25) */ - extern void _gtk_marshal_BOOLEAN__BOXED_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -22,7 +22,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:ENUM (./gtkmarshalers.list:26) */ -+/* BOOLEAN:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:26) */ - extern void _gtk_marshal_BOOLEAN__ENUM (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -30,7 +30,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:ENUM,DOUBLE (./gtkmarshalers.list:27) */ -+/* BOOLEAN:ENUM,DOUBLE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:27) */ - extern void _gtk_marshal_BOOLEAN__ENUM_DOUBLE (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -38,7 +38,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:ENUM,INT (./gtkmarshalers.list:28) */ -+/* BOOLEAN:ENUM,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:28) */ - extern void _gtk_marshal_BOOLEAN__ENUM_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -46,7 +46,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:OBJECT,UINT,FLAGS (./gtkmarshalers.list:29) */ -+/* BOOLEAN:OBJECT,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:29) */ - extern void _gtk_marshal_BOOLEAN__OBJECT_UINT_FLAGS (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -54,7 +54,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:OBJECT,INT,INT,UINT (./gtkmarshalers.list:30) */ -+/* BOOLEAN:OBJECT,INT,INT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:30) */ - extern void _gtk_marshal_BOOLEAN__OBJECT_INT_INT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -62,7 +62,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:OBJECT,STRING,STRING,BOXED (./gtkmarshalers.list:31) */ -+/* BOOLEAN:OBJECT,STRING,STRING,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:31) */ - extern void _gtk_marshal_BOOLEAN__OBJECT_STRING_STRING_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -70,7 +70,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:OBJECT,BOXED (./gtkmarshalers.list:32) */ -+/* BOOLEAN:OBJECT,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:32) */ - extern void _gtk_marshal_BOOLEAN__OBJECT_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -78,7 +78,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:OBJECT,BOXED,BOXED (./gtkmarshalers.list:33) */ -+/* BOOLEAN:OBJECT,BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:33) */ - extern void _gtk_marshal_BOOLEAN__OBJECT_BOXED_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -86,7 +86,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:OBJECT,STRING,STRING (./gtkmarshalers.list:34) */ -+/* BOOLEAN:OBJECT,STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:34) */ - extern void _gtk_marshal_BOOLEAN__OBJECT_STRING_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -94,7 +94,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:INT,INT (./gtkmarshalers.list:35) */ -+/* BOOLEAN:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:35) */ - extern void _gtk_marshal_BOOLEAN__INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -102,7 +102,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:INT,INT,INT (./gtkmarshalers.list:36) */ -+/* BOOLEAN:INT,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:36) */ - extern void _gtk_marshal_BOOLEAN__INT_INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -110,7 +110,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:UINT (./gtkmarshalers.list:37) */ -+/* BOOLEAN:UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:37) */ - extern void _gtk_marshal_BOOLEAN__UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -118,7 +118,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:VOID (./gtkmarshalers.list:38) */ -+/* BOOLEAN:VOID (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:38) */ - extern void _gtk_marshal_BOOLEAN__VOID (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -126,7 +126,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:BOOLEAN (./gtkmarshalers.list:39) */ -+/* BOOLEAN:BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:39) */ - extern void _gtk_marshal_BOOLEAN__BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -134,10 +134,10 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:NONE (./gtkmarshalers.list:40) */ -+/* BOOLEAN:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:40) */ - #define _gtk_marshal_BOOLEAN__NONE _gtk_marshal_BOOLEAN__VOID - --/* BOOLEAN:BOOLEAN,BOOLEAN,BOOLEAN (./gtkmarshalers.list:41) */ -+/* BOOLEAN:BOOLEAN,BOOLEAN,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:41) */ - extern void _gtk_marshal_BOOLEAN__BOOLEAN_BOOLEAN_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -145,7 +145,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* BOOLEAN:STRING (./gtkmarshalers.list:42) */ -+/* BOOLEAN:STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:42) */ - extern void _gtk_marshal_BOOLEAN__STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -153,7 +153,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* ENUM:ENUM (./gtkmarshalers.list:43) */ -+/* ENUM:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:43) */ - extern void _gtk_marshal_ENUM__ENUM (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -161,7 +161,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* INT:POINTER (./gtkmarshalers.list:44) */ -+/* INT:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:44) */ - extern void _gtk_marshal_INT__POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -169,19 +169,19 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* NONE:BOOLEAN (./gtkmarshalers.list:45) */ -+/* NONE:BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:45) */ - #define _gtk_marshal_VOID__BOOLEAN g_cclosure_marshal_VOID__BOOLEAN - #define _gtk_marshal_NONE__BOOLEAN _gtk_marshal_VOID__BOOLEAN - --/* NONE:ENUM (./gtkmarshalers.list:46) */ -+/* NONE:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:46) */ - #define _gtk_marshal_VOID__ENUM g_cclosure_marshal_VOID__ENUM - #define _gtk_marshal_NONE__ENUM _gtk_marshal_VOID__ENUM - --/* NONE:INT (./gtkmarshalers.list:47) */ -+/* NONE:INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:47) */ - #define _gtk_marshal_VOID__INT g_cclosure_marshal_VOID__INT - #define _gtk_marshal_NONE__INT _gtk_marshal_VOID__INT - --/* NONE:INT,BOOL (./gtkmarshalers.list:48) */ -+/* NONE:INT,BOOL (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:48) */ - extern void _gtk_marshal_VOID__INT_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -190,7 +190,7 @@ - gpointer marshal_data); - #define _gtk_marshal_NONE__INT_BOOL _gtk_marshal_VOID__INT_BOOLEAN - --/* NONE:INT,INT (./gtkmarshalers.list:49) */ -+/* NONE:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:49) */ - extern void _gtk_marshal_VOID__INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -199,11 +199,11 @@ - gpointer marshal_data); - #define _gtk_marshal_NONE__INT_INT _gtk_marshal_VOID__INT_INT - --/* NONE:NONE (./gtkmarshalers.list:50) */ -+/* NONE:NONE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:50) */ - #define _gtk_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID - #define _gtk_marshal_NONE__NONE _gtk_marshal_VOID__VOID - --/* NONE:STRING,INT,POINTER (./gtkmarshalers.list:51) */ -+/* NONE:STRING,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:51) */ - extern void _gtk_marshal_VOID__STRING_INT_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -212,7 +212,7 @@ - gpointer marshal_data); - #define _gtk_marshal_NONE__STRING_INT_POINTER _gtk_marshal_VOID__STRING_INT_POINTER - --/* STRING:DOUBLE (./gtkmarshalers.list:52) */ -+/* STRING:DOUBLE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:52) */ - extern void _gtk_marshal_STRING__DOUBLE (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -220,12 +220,12 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:DOUBLE (./gtkmarshalers.list:53) */ -+/* VOID:DOUBLE (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:53) */ - #define _gtk_marshal_VOID__DOUBLE g_cclosure_marshal_VOID__DOUBLE - --/* VOID:BOOLEAN (./gtkmarshalers.list:54) */ -+/* VOID:BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:54) */ - --/* VOID:BOOLEAN,BOOLEAN,BOOLEAN (./gtkmarshalers.list:55) */ -+/* VOID:BOOLEAN,BOOLEAN,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:55) */ - extern void _gtk_marshal_VOID__BOOLEAN_BOOLEAN_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -233,10 +233,10 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED (./gtkmarshalers.list:56) */ -+/* VOID:BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:56) */ - #define _gtk_marshal_VOID__BOXED g_cclosure_marshal_VOID__BOXED - --/* VOID:BOXED,BOXED (./gtkmarshalers.list:57) */ -+/* VOID:BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:57) */ - extern void _gtk_marshal_VOID__BOXED_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -244,7 +244,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED,BOXED,POINTER (./gtkmarshalers.list:58) */ -+/* VOID:BOXED,BOXED,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:58) */ - extern void _gtk_marshal_VOID__BOXED_BOXED_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -252,7 +252,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED,OBJECT (./gtkmarshalers.list:59) */ -+/* VOID:BOXED,OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:59) */ - extern void _gtk_marshal_VOID__BOXED_OBJECT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -260,7 +260,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED,STRING,INT (./gtkmarshalers.list:60) */ -+/* VOID:BOXED,STRING,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:60) */ - extern void _gtk_marshal_VOID__BOXED_STRING_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -268,7 +268,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED,UINT (./gtkmarshalers.list:61) */ -+/* VOID:BOXED,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:61) */ - extern void _gtk_marshal_VOID__BOXED_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -276,7 +276,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED,UINT,FLAGS (./gtkmarshalers.list:62) */ -+/* VOID:BOXED,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:62) */ - extern void _gtk_marshal_VOID__BOXED_UINT_FLAGS (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -284,7 +284,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:BOXED,UINT,UINT (./gtkmarshalers.list:63) */ -+/* VOID:BOXED,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:63) */ - extern void _gtk_marshal_VOID__BOXED_UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -292,9 +292,9 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:ENUM (./gtkmarshalers.list:64) */ -+/* VOID:ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:64) */ - --/* VOID:ENUM,BOOLEAN (./gtkmarshalers.list:65) */ -+/* VOID:ENUM,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:65) */ - extern void _gtk_marshal_VOID__ENUM_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -302,7 +302,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:ENUM,ENUM (./gtkmarshalers.list:66) */ -+/* VOID:ENUM,ENUM (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:66) */ - extern void _gtk_marshal_VOID__ENUM_ENUM (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -310,7 +310,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:ENUM,FLOAT (./gtkmarshalers.list:67) */ -+/* VOID:ENUM,FLOAT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:67) */ - extern void _gtk_marshal_VOID__ENUM_FLOAT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -318,7 +318,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:ENUM,FLOAT,BOOLEAN (./gtkmarshalers.list:68) */ -+/* VOID:ENUM,FLOAT,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:68) */ - extern void _gtk_marshal_VOID__ENUM_FLOAT_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -326,7 +326,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:ENUM,INT (./gtkmarshalers.list:69) */ -+/* VOID:ENUM,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:69) */ - extern void _gtk_marshal_VOID__ENUM_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -334,7 +334,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:ENUM,INT,BOOLEAN (./gtkmarshalers.list:70) */ -+/* VOID:ENUM,INT,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:70) */ - extern void _gtk_marshal_VOID__ENUM_INT_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -342,11 +342,11 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:INT (./gtkmarshalers.list:71) */ -+/* VOID:INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:71) */ - --/* VOID:INT,INT (./gtkmarshalers.list:72) */ -+/* VOID:INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:72) */ - --/* VOID:INT,INT,BOXED (./gtkmarshalers.list:73) */ -+/* VOID:INT,INT,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:73) */ - extern void _gtk_marshal_VOID__INT_INT_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -354,7 +354,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:INT,INT,INT (./gtkmarshalers.list:74) */ -+/* VOID:INT,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:74) */ - extern void _gtk_marshal_VOID__INT_INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -362,10 +362,10 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT (./gtkmarshalers.list:75) */ -+/* VOID:OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:75) */ - #define _gtk_marshal_VOID__OBJECT g_cclosure_marshal_VOID__OBJECT - --/* VOID:OBJECT,BOOLEAN (./gtkmarshalers.list:76) */ -+/* VOID:OBJECT,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:76) */ - extern void _gtk_marshal_VOID__OBJECT_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -373,7 +373,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,BOXED,BOXED (./gtkmarshalers.list:77) */ -+/* VOID:OBJECT,BOXED,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:77) */ - extern void _gtk_marshal_VOID__OBJECT_BOXED_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -381,7 +381,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,BOXED,UINT,UINT (./gtkmarshalers.list:78) */ -+/* VOID:OBJECT,BOXED,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:78) */ - extern void _gtk_marshal_VOID__OBJECT_BOXED_UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -389,7 +389,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,INT,INT (./gtkmarshalers.list:79) */ -+/* VOID:OBJECT,INT,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:79) */ - extern void _gtk_marshal_VOID__OBJECT_INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -397,7 +397,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,INT,INT,BOXED,UINT,UINT (./gtkmarshalers.list:80) */ -+/* VOID:OBJECT,INT,INT,BOXED,UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:80) */ - extern void _gtk_marshal_VOID__OBJECT_INT_INT_BOXED_UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -405,7 +405,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,OBJECT (./gtkmarshalers.list:81) */ -+/* VOID:OBJECT,OBJECT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:81) */ - extern void _gtk_marshal_VOID__OBJECT_OBJECT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -413,7 +413,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,STRING (./gtkmarshalers.list:82) */ -+/* VOID:OBJECT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:82) */ - extern void _gtk_marshal_VOID__OBJECT_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -421,7 +421,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,STRING,STRING (./gtkmarshalers.list:83) */ -+/* VOID:OBJECT,STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:83) */ - extern void _gtk_marshal_VOID__OBJECT_STRING_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -429,7 +429,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,UINT (./gtkmarshalers.list:84) */ -+/* VOID:OBJECT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:84) */ - extern void _gtk_marshal_VOID__OBJECT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -437,7 +437,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,UINT,FLAGS (./gtkmarshalers.list:85) */ -+/* VOID:OBJECT,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:85) */ - extern void _gtk_marshal_VOID__OBJECT_UINT_FLAGS (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -445,12 +445,12 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:OBJECT,STRING (./gtkmarshalers.list:86) */ -+/* VOID:OBJECT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:86) */ - --/* VOID:POINTER (./gtkmarshalers.list:87) */ -+/* VOID:POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:87) */ - #define _gtk_marshal_VOID__POINTER g_cclosure_marshal_VOID__POINTER - --/* VOID:POINTER,INT (./gtkmarshalers.list:88) */ -+/* VOID:POINTER,INT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:88) */ - extern void _gtk_marshal_VOID__POINTER_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -458,7 +458,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:POINTER,BOOLEAN (./gtkmarshalers.list:89) */ -+/* VOID:POINTER,BOOLEAN (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:89) */ - extern void _gtk_marshal_VOID__POINTER_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -466,7 +466,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:POINTER,POINTER,POINTER (./gtkmarshalers.list:90) */ -+/* VOID:POINTER,POINTER,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:90) */ - extern void _gtk_marshal_VOID__POINTER_POINTER_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -474,7 +474,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:POINTER,UINT (./gtkmarshalers.list:91) */ -+/* VOID:POINTER,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:91) */ - extern void _gtk_marshal_VOID__POINTER_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -482,10 +482,10 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:STRING (./gtkmarshalers.list:92) */ -+/* VOID:STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:92) */ - #define _gtk_marshal_VOID__STRING g_cclosure_marshal_VOID__STRING - --/* VOID:STRING,STRING (./gtkmarshalers.list:93) */ -+/* VOID:STRING,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:93) */ - extern void _gtk_marshal_VOID__STRING_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -493,9 +493,9 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:STRING,INT,POINTER (./gtkmarshalers.list:94) */ -+/* VOID:STRING,INT,POINTER (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:94) */ - --/* VOID:STRING,UINT,FLAGS (./gtkmarshalers.list:95) */ -+/* VOID:STRING,UINT,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:95) */ - extern void _gtk_marshal_VOID__STRING_UINT_FLAGS (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -503,7 +503,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:UINT,FLAGS,BOXED (./gtkmarshalers.list:96) */ -+/* VOID:UINT,FLAGS,BOXED (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:96) */ - extern void _gtk_marshal_VOID__UINT_FLAGS_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -511,7 +511,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:UINT,UINT (./gtkmarshalers.list:97) */ -+/* VOID:UINT,UINT (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:97) */ - extern void _gtk_marshal_VOID__UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -519,7 +519,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:UINT,STRING (./gtkmarshalers.list:98) */ -+/* VOID:UINT,STRING (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:98) */ - extern void _gtk_marshal_VOID__UINT_STRING (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -527,7 +527,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:UINT,BOXED,UINT,FLAGS,FLAGS (./gtkmarshalers.list:99) */ -+/* VOID:UINT,BOXED,UINT,FLAGS,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:99) */ - extern void _gtk_marshal_VOID__UINT_BOXED_UINT_FLAGS_FLAGS (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -535,7 +535,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:UINT,OBJECT,UINT,FLAGS,FLAGS (./gtkmarshalers.list:100) */ -+/* VOID:UINT,OBJECT,UINT,FLAGS,FLAGS (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:100) */ - extern void _gtk_marshal_VOID__UINT_OBJECT_UINT_FLAGS_FLAGS (GClosure *closure, - GValue *return_value, - guint n_param_values, -@@ -543,7 +543,7 @@ - gpointer invocation_hint, - gpointer marshal_data); - --/* VOID:VOID (./gtkmarshalers.list:101) */ -+/* VOID:VOID (/home/jlehto/teema4/3rdparty/gtk+2.0-2.6/gtk/gtkmarshalers.list:101) */ - - G_END_DECLS - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.c.diff deleted file mode 100644 index 16fac1b155..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.c.diff +++ /dev/null @@ -1,1223 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmenu.c 2005-03-01 08:28:56.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmenu.c 2005-04-06 16:19:36.921925376 +0300 -@@ -24,10 +24,16 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list -+ * of changes. -+ */ -+ - #define GTK_MENU_INTERNALS - - #include <config.h> - #include <string.h> /* memset */ -+#include <math.h> -+#include <stdlib.h> - #include "gdk/gdkkeysyms.h" - #include "gtkalias.h" - #include "gtkaccellabel.h" -@@ -44,7 +50,11 @@ - #include "gtkvscrollbar.h" - #include "gtksettings.h" - #include "gtkintl.h" -+#include "gtkcombobox.h" - -+/* Hildon : We need this to figure out if menu should have -+ * corners etc. */ -+#include "gtkmenubar.h" - - #define MENU_ITEM_CLASS(w) GTK_MENU_ITEM_GET_CLASS (w) - -@@ -55,16 +65,43 @@ - * extends below the submenu - */ - -+/* HILDON: -+ * Urgh, nasty thing to hard-code things like these :p -+ * One should really do some rewriting here... -+ */ -+ - #define MENU_SCROLL_STEP1 8 - #define MENU_SCROLL_STEP2 15 --#define MENU_SCROLL_ARROW_HEIGHT 16 --#define MENU_SCROLL_FAST_ZONE 8 -+#define MENU_SCROLL_ARROW_HEIGHT 20 /* This used to be: 23; This hard-coding should be -+ * changed. Add arrow_height style property into -+ * commongtkrc and read it from there everywhere -+ * where a reference to MENU_SCROLL_ARROW_HEIGHT -+ * is made. -+ * If these changes are made, please modify also -+ * gtkcombobox.c. -+ */ -+#define MENU_SCROLL_FAST_ZONE MENU_SCROLL_ARROW_HEIGHT /* Was originally 8 */ - #define MENU_SCROLL_TIMEOUT1 50 - #define MENU_SCROLL_TIMEOUT2 20 - - #define ATTACH_INFO_KEY "gtk-menu-child-attach-info-key" - #define ATTACHED_MENUS "gtk-attached-menus" - -+/* HILDON: */ -+#define HILDON_MENU_NAME_SHARP "menu_with_corners" -+ -+/* needed to allow different themeing for first level menus */ -+#define HILDON_MENU_NAME_ROUND_FIRST_LEVEL "menu_without_corners_first_level" -+#define HILDON_MENU_NAME_ROUND "menu_without_corners" -+#define HILDON_MENU_NAME_FORCE_SHARP "menu_force_with_corners" -+#define HILDON_MENU_NAME_FORCE_ROUND "menu_force_without_corners" -+ -+/* maximum sizes for menus when attached to comboboxes */ -+#define HILDON_MENU_COMBO_MAX_WIDTH 406 -+#define HILDON_MENU_COMBO_MIN_WIDTH 66 -+#define HILDON_MENU_COMBO_MAX_HEIGHT 305 -+#define HILDON_MENU_COMBO_MIN_HEIGHT 70 -+ - typedef struct _GtkMenuAttachData GtkMenuAttachData; - typedef struct _GtkMenuPrivate GtkMenuPrivate; - -@@ -92,6 +129,15 @@ - gboolean have_layout; - gint n_rows; - gint n_columns; -+ -+ /* Arrow states */ -+ GtkStateType lower_arrow_state; -+ GtkStateType upper_arrow_state; -+ -+ /* For context menu behavior */ -+ gboolean context_menu; -+ int popup_pointer_x; -+ int popup_pointer_y; - }; - - typedef struct -@@ -108,6 +154,7 @@ - - enum { - MOVE_SCROLL, -+ CLOSE_CURRENT, - LAST_SIGNAL - }; - -@@ -191,7 +238,8 @@ - static void gtk_menu_handle_scrolling (GtkMenu *menu, - gint event_x, - gint event_y, -- gboolean enter); -+ gboolean enter, -+ gboolean motion); - static void gtk_menu_set_tearoff_hints (GtkMenu *menu, - gint width); - static void gtk_menu_style_set (GtkWidget *widget, -@@ -232,6 +280,9 @@ - guint signal_id); - static void _gtk_menu_refresh_accel_paths (GtkMenu *menu, - gboolean group_changed); -+static gboolean gtk_menu_check_name (GtkWidget *widget); -+ -+static void _gtk_menu_close_current (GtkMenu *menu); - - static GtkMenuShellClass *parent_class = NULL; - static const gchar attach_data_key[] = "gtk-menu-attach-data"; -@@ -496,7 +547,6 @@ - widget_class->hide_all = gtk_menu_hide_all; - widget_class->enter_notify_event = gtk_menu_enter_notify; - widget_class->leave_notify_event = gtk_menu_leave_notify; -- widget_class->motion_notify_event = gtk_menu_motion_notify; - widget_class->style_set = gtk_menu_style_set; - widget_class->focus = gtk_menu_focus; - widget_class->can_activate_accel = gtk_menu_real_can_activate_accel; -@@ -521,6 +571,15 @@ - _gtk_marshal_VOID__ENUM, - G_TYPE_NONE, 1, - GTK_TYPE_SCROLL_TYPE); -+ -+ menu_signals[CLOSE_CURRENT] = -+ _gtk_binding_signal_new ("close_current", -+ G_OBJECT_CLASS_TYPE (object_class), -+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, -+ G_CALLBACK (_gtk_menu_close_current), -+ NULL, NULL, -+ _gtk_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); - - g_object_class_install_property (gobject_class, - PROP_TEAROFF_TITLE, -@@ -606,6 +665,11 @@ - G_PARAM_READWRITE)); - - binding_set = gtk_binding_set_by_class (class); -+ /* Hildon : We moved handling of escape-key here because we need it to -+ * work like closing a submenu, not closing all the menus. */ -+ gtk_binding_entry_add_signal (binding_set, -+ GDK_Escape, 0, -+ "close_current", 0); - gtk_binding_entry_add_signal (binding_set, - GDK_Up, 0, - "move_current", 1, -@@ -709,6 +773,25 @@ - DEFAULT_POPDOWN_DELAY, - G_PARAM_READWRITE)); - -+ /* Hildon addition : border width was -+ replaced with horizontal-padding and -+ vertical-padding (which already is an style -+ property for GtkMenu). */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("horizontal-padding", -+ P_("Horizontal Padding"), -+ P_("Extra space at the left and right edges of the menu"), -+ 0, -+ G_MAXINT, -+ 0, /* 1, */ -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("double_arrows", -+ P_("Double Arrows"), -+ P_("When scrolling, always show both arrows."), -+ FALSE, -+ G_PARAM_READABLE)); - } - - -@@ -884,13 +967,14 @@ - menu->toggle_size = 0; - - menu->toplevel = g_object_connect (g_object_new (GTK_TYPE_WINDOW, -- "type", GTK_WINDOW_POPUP, -- "child", menu, -- NULL), -+ "type", GTK_WINDOW_POPUP, -+ "child", menu, -+ NULL), - "signal::event", gtk_menu_window_event, menu, - "signal::size_request", gtk_menu_window_size_request, menu, - "signal::destroy", gtk_widget_destroyed, &menu->toplevel, - NULL); -+ - gtk_window_set_resizable (GTK_WINDOW (menu->toplevel), FALSE); - gtk_window_set_mnemonic_modifier (GTK_WINDOW (menu->toplevel), 0); - -@@ -919,6 +1003,15 @@ - menu->lower_arrow_visible = FALSE; - menu->upper_arrow_prelight = FALSE; - menu->lower_arrow_prelight = FALSE; -+ -+ /* <Hildon> */ -+ priv->upper_arrow_state = GTK_STATE_NORMAL; -+ priv->lower_arrow_state = GTK_STATE_NORMAL; -+ -+ priv->context_menu = FALSE; -+ priv->popup_pointer_x = -1; -+ priv->popup_pointer_y = -1; -+ /* </hildon */ - - priv->have_layout = FALSE; - } -@@ -1220,7 +1313,8 @@ - - static gboolean - popup_grab_on_window (GdkWindow *window, -- guint32 activate_time) -+ guint32 activate_time, -+ gboolean grab_keyboard) - { - if ((gdk_pointer_grab (window, TRUE, - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | -@@ -1228,7 +1322,8 @@ - GDK_POINTER_MOTION_MASK, - NULL, NULL, activate_time) == 0)) - { -- if (gdk_keyboard_grab (window, TRUE, -+ if (!grab_keyboard || -+ gdk_keyboard_grab (window, TRUE, - activate_time) == 0) - return TRUE; - else -@@ -1282,6 +1377,7 @@ - GtkWidget *parent; - GdkEvent *current_event; - GtkMenuShell *menu_shell; -+ gboolean grab_keyboard; - GtkMenuPrivate *priv = gtk_menu_get_private (menu); - - g_return_if_fail (GTK_IS_MENU (menu)); -@@ -1333,10 +1429,28 @@ - * probably could just leave the grab on the other window, with a - * little reorganization of the code in gtkmenu*). - */ -+ -+ grab_keyboard = gtk_menu_shell_get_take_focus (menu_shell); -+ gtk_window_set_accept_focus (GTK_WINDOW (menu->toplevel), grab_keyboard); -+ - if (xgrab_shell && xgrab_shell != widget) - { -- if (popup_grab_on_window (xgrab_shell->window, activate_time)) -+ if (popup_grab_on_window (xgrab_shell->window, activate_time, grab_keyboard)) - GTK_MENU_SHELL (xgrab_shell)->have_xgrab = TRUE; -+ -+ /* HILDON: -+ * Check wheter parent is GtkMenuBar. If so, -+ * then we need sharp upper corners for this menu. -+ */ -+ if (gtk_menu_check_name (widget)) -+ { -+ if (GTK_IS_MENU_BAR (parent_menu_shell)) -+ gtk_widget_set_name (widget, HILDON_MENU_NAME_SHARP); -+ else if (GTK_IS_MENU (parent_menu_shell)) -+ gtk_widget_set_name( widget, HILDON_MENU_NAME_ROUND); -+ else -+ gtk_widget_set_name (widget, HILDON_MENU_NAME_ROUND_FIRST_LEVEL); -+ } - } - else - { -@@ -1344,8 +1458,14 @@ - - xgrab_shell = widget; - transfer_window = menu_grab_transfer_window_get (menu); -- if (popup_grab_on_window (transfer_window, activate_time)) -+ if (popup_grab_on_window (transfer_window, activate_time, grab_keyboard)) - GTK_MENU_SHELL (xgrab_shell)->have_xgrab = TRUE; -+ -+ /* HILDON: -+ * We want this menu to have round corners (Used by default) -+ */ -+ if (gtk_menu_check_name (widget)) -+ gtk_widget_set_name (widget, HILDON_MENU_NAME_ROUND_FIRST_LEVEL); - } - - if (!GTK_MENU_SHELL (xgrab_shell)->have_xgrab) -@@ -1409,6 +1529,23 @@ - - /* Position the menu, possibly changing the size request - */ -+ if (GTK_IS_COMBO_BOX (gtk_menu_get_attach_widget (menu))) -+ { -+ /* Hildon - limit the size if the menu is attached to a ComboBox */ -+ GtkRequisition req; -+ gint width, height; -+ -+ gtk_widget_set_size_request (widget, -1, -1); -+ gtk_widget_size_request (widget, &req); -+ -+ width = MAX (MIN (req.width, HILDON_MENU_COMBO_MAX_WIDTH), -+ HILDON_MENU_COMBO_MIN_WIDTH); -+ height = MAX (MIN (req.height, HILDON_MENU_COMBO_MAX_HEIGHT), -+ HILDON_MENU_COMBO_MIN_HEIGHT); -+ -+ gtk_widget_set_size_request (widget, width, height); -+ } -+ - gtk_menu_position (menu); - - /* Compute the size of the toplevel and realize it so we -@@ -1430,13 +1567,29 @@ - - gtk_menu_scroll_to (menu, menu->scroll_offset); - -+ if (priv->context_menu) -+ { -+ /* Save position of the pointer during popup */ -+ /* currently not-multihead safe */ -+ GdkScreen *screen; -+ GdkDisplay *display; -+ -+ screen = gtk_widget_get_screen (widget); -+ display = gdk_screen_get_display (screen); -+ -+ gdk_display_get_pointer (display, NULL, -+ &priv->popup_pointer_x, -+ &priv->popup_pointer_y, -+ NULL); -+ } -+ - /* Once everything is set up correctly, map the toplevel window on - the screen. - */ - gtk_widget_show (menu->toplevel); - - if (xgrab_shell == widget) -- popup_grab_on_window (widget->window, activate_time); /* Should always succeed */ -+ popup_grab_on_window (widget->window, activate_time, grab_keyboard); /* Should always succeed */ - gtk_grab_add (GTK_WIDGET (menu)); - } - -@@ -1996,6 +2149,7 @@ - GtkWidget *child; - GList *children; - guint vertical_padding; -+ guint horizontal_padding; - - g_return_if_fail (GTK_IS_MENU (widget)); - -@@ -2025,9 +2179,10 @@ - - gtk_widget_style_get (GTK_WIDGET (menu), - "vertical-padding", &vertical_padding, -+ "horizontal-padding", &horizontal_padding, - NULL); - -- attributes.x = border_width + widget->style->xthickness; -+ attributes.x = border_width + widget->style->xthickness + horizontal_padding; - attributes.y = border_width + widget->style->ythickness + vertical_padding; - attributes.width = MAX (1, widget->allocation.width - attributes.x * 2); - attributes.height = MAX (1, widget->allocation.height - attributes.y * 2); -@@ -2040,11 +2195,14 @@ - if (menu->lower_arrow_visible) - attributes.height -= MENU_SCROLL_ARROW_HEIGHT; - -+ attributes.window_type = GDK_WINDOW_CHILD; -+ - menu->view_window = gdk_window_new (widget->window, &attributes, attributes_mask); - gdk_window_set_user_data (menu->view_window, menu); - - attributes.x = 0; - attributes.y = 0; -+ attributes.width = MAX (1, widget->requisition.width - (border_width + widget->style->xthickness + horizontal_padding) * 2); - attributes.height = MAX (1, widget->requisition.height - (border_width + widget->style->ythickness + vertical_padding) * 2); - - menu->bin_window = gdk_window_new (menu->view_window, &attributes, attributes_mask); -@@ -2164,6 +2322,10 @@ - guint vertical_padding; - GtkRequisition child_requisition; - GtkMenuPrivate *priv; -+ guint horizontal_padding; -+ GdkScreen *screen; -+ GdkRectangle monitor; -+ gint monitor_num; - - g_return_if_fail (GTK_IS_MENU (widget)); - g_return_if_fail (requisition != NULL); -@@ -2182,6 +2344,16 @@ - priv->heights = g_new0 (guint, gtk_menu_get_n_rows (menu)); - priv->heights_length = gtk_menu_get_n_rows (menu); - -+/* Hildon addition to find out the monitor width */ -+ screen = gtk_widget_get_screen (widget); -+ if (widget->window != NULL) -+ monitor_num = gdk_screen_get_monitor_at_window (screen, widget->window); -+ else -+ monitor_num = 0; -+ if (monitor_num < 0) -+ monitor_num = 0; -+ gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); -+ - children = menu_shell->children; - while (children) - { -@@ -2223,15 +2395,18 @@ - - requisition->width += max_toggle_size + max_accel_width; - requisition->width *= gtk_menu_get_n_columns (menu); -- requisition->width += (GTK_CONTAINER (menu)->border_width + -- widget->style->xthickness) * 2; - - gtk_widget_style_get (GTK_WIDGET (menu), -+ "horizontal-padding", &horizontal_padding, - "vertical-padding", &vertical_padding, - NULL); -+ requisition->width += (GTK_CONTAINER (menu)->border_width + horizontal_padding + -+ widget->style->xthickness) * 2; - requisition->height += (GTK_CONTAINER (menu)->border_width + vertical_padding + - widget->style->ythickness) * 2; - -+/* Hildon addition to not make the menu too wide for the screen. */ -+ requisition->width = MIN (requisition->width, monitor.width); - menu->toggle_size = max_toggle_size; - - /* Don't resize the tearoff if it is not active, because it won't redraw (it is only a background pixmap). -@@ -2253,6 +2428,7 @@ - GList *children; - gint x, y; - gint width, height; -+ guint horizontal_padding; - guint vertical_padding; - - g_return_if_fail (GTK_IS_MENU (widget)); -@@ -2266,10 +2442,11 @@ - gtk_widget_get_child_requisition (GTK_WIDGET (menu), &child_requisition); - - gtk_widget_style_get (GTK_WIDGET (menu), -+ "horizontal-padding", &horizontal_padding, - "vertical-padding", &vertical_padding, - NULL); - -- x = GTK_CONTAINER (menu)->border_width + widget->style->xthickness; -+ x = GTK_CONTAINER (menu)->border_width + widget->style->xthickness + horizontal_padding; - y = GTK_CONTAINER (menu)->border_width + widget->style->ythickness + vertical_padding; - - width = MAX (1, allocation->width - x * 2); -@@ -2407,27 +2584,32 @@ - GdkEventExpose *event) - { - GtkMenu *menu; -- gint width, height; -- gint border_x, border_y; -- guint vertical_padding; - - g_return_if_fail (GTK_IS_MENU (widget)); - - menu = GTK_MENU (widget); - -- gtk_widget_style_get (GTK_WIDGET (menu), -- "vertical-padding", &vertical_padding, -- NULL); -- -- border_x = GTK_CONTAINER (widget)->border_width + widget->style->xthickness; -- border_y = GTK_CONTAINER (widget)->border_width + widget->style->ythickness + vertical_padding; -- gdk_drawable_get_size (widget->window, &width, &height); -- - if (event->window == widget->window) - { -+ gint width, height; -+ gint border_x, border_y; -+ guint vertical_padding; -+ guint horizontal_padding; -+ GtkMenuPrivate *priv; - gint arrow_space = MENU_SCROLL_ARROW_HEIGHT - 2 * widget->style->ythickness; - gint arrow_size = 0.7 * arrow_space; - -+ priv = gtk_menu_get_private (menu); -+ -+ gtk_widget_style_get (GTK_WIDGET (menu), -+ "vertical-padding", &vertical_padding, -+ "horizontal-padding", &horizontal_padding, -+ NULL); -+ -+ border_x = GTK_CONTAINER (widget)->border_width + widget->style->xthickness + horizontal_padding; -+ border_y = GTK_CONTAINER (widget)->border_width + widget->style->ythickness + vertical_padding; -+ gdk_drawable_get_size (widget->window, &width, &height); -+ - gtk_paint_box (widget->style, - widget->window, - GTK_STATE_NORMAL, -@@ -2436,21 +2618,9 @@ - 0, 0, -1, -1); - if (menu->upper_arrow_visible && !menu->tearoff_active) - { -- gtk_paint_box (widget->style, -- widget->window, -- menu->upper_arrow_prelight ? -- GTK_STATE_PRELIGHT : GTK_STATE_NORMAL, -- GTK_SHADOW_OUT, -- NULL, widget, "menu", -- border_x, -- border_y, -- width - 2 * border_x, -- MENU_SCROLL_ARROW_HEIGHT); -- - gtk_paint_arrow (widget->style, - widget->window, -- menu->upper_arrow_prelight ? -- GTK_STATE_PRELIGHT : GTK_STATE_NORMAL, -+ priv->upper_arrow_state, - GTK_SHADOW_OUT, - NULL, widget, "menu_scroll_arrow_up", - GTK_ARROW_UP, -@@ -2462,21 +2632,9 @@ - - if (menu->lower_arrow_visible && !menu->tearoff_active) - { -- gtk_paint_box (widget->style, -- widget->window, -- menu->lower_arrow_prelight ? -- GTK_STATE_PRELIGHT : GTK_STATE_NORMAL, -- GTK_SHADOW_OUT, -- NULL, widget, "menu", -- border_x, -- height - border_y - MENU_SCROLL_ARROW_HEIGHT, -- width - 2*border_x, -- MENU_SCROLL_ARROW_HEIGHT); -- - gtk_paint_arrow (widget->style, - widget->window, -- menu->lower_arrow_prelight ? -- GTK_STATE_PRELIGHT : GTK_STATE_NORMAL, -+ priv->lower_arrow_state, - GTK_SHADOW_OUT, - NULL, widget, "menu_scroll_arrow_down", - GTK_ARROW_DOWN, -@@ -2516,18 +2674,82 @@ - GTK_WIDGET_CLASS (parent_class)->show (widget); - } - -+static GtkWidget * -+find_active_menu_item (GdkEventButton *event) -+{ -+ GtkWidget *menu_item; -+ -+ menu_item = gtk_get_event_widget ((GdkEvent*) event); -+ while (menu_item && !GTK_IS_MENU_ITEM (menu_item)) -+ menu_item = menu_item->parent; -+ -+ return menu_item; -+} -+ -+static gboolean -+pointer_in_menu_tree (GtkWidget *widget) -+{ -+ GtkMenuShell *mshell; -+ int width, height, x, y; -+ -+ mshell = GTK_MENU_SHELL (widget); -+ -+ gdk_window_get_pointer (widget->window, &x, &y, NULL); -+ gdk_drawable_get_size (widget->window, &width, &height); -+ -+ if ((x <= width) && (x >= 0) && (y <= height) && (y >= 0)) -+ return TRUE; -+ -+ if ((mshell->parent_menu_shell != NULL) && -+ GTK_IS_MENU (mshell->parent_menu_shell)) -+ return pointer_in_menu_tree (mshell->parent_menu_shell); -+ -+ return FALSE; -+} -+ -+static int -+distance_traveled (GtkWidget *widget) -+{ -+ GtkMenuPrivate *priv; -+ GdkScreen *screen; -+ GdkDisplay *display; -+ int x, y, dx, dy; -+ -+ priv = gtk_menu_get_private (GTK_MENU (widget)); -+ -+ screen = gtk_widget_get_screen (widget); -+ display = gdk_screen_get_display (screen); -+ -+ gdk_display_get_pointer (display, NULL, &x, &y, NULL); -+ -+ dx = (priv->popup_pointer_x - x); -+ dy = (priv->popup_pointer_y - y); -+ -+ return abs ((int) sqrt ((double) (dx * dx + dy * dy))); -+} -+ - static gboolean - gtk_menu_button_press (GtkWidget *widget, -- GdkEventButton *event) -+ GdkEventButton *event) - { -- /* Don't pop down the menu for releases over scroll arrows -- */ -- if (GTK_IS_MENU (widget)) -+ GtkWidget *menu_item; -+ -+ menu_item = find_active_menu_item (event); -+ if (menu_item == NULL) - { - GtkMenu *menu = GTK_MENU (widget); - -- if (menu->upper_arrow_prelight || menu->lower_arrow_prelight) -- return TRUE; -+ if (menu->upper_arrow_prelight || menu->lower_arrow_prelight) -+ { -+ gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, TRUE, FALSE); -+ -+ return TRUE; -+ } -+ -+ /* Don't pass down to menu shell if a non-menuitem part -+ * of the menu was clicked. */ -+ if (pointer_in_menu_tree (widget)) -+ return TRUE; - } - - return GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, event); -@@ -2537,14 +2759,44 @@ - gtk_menu_button_release (GtkWidget *widget, - GdkEventButton *event) - { -- /* Don't pop down the menu for releases over scroll arrows -- */ -- if (GTK_IS_MENU (widget)) -+ GtkMenuPrivate *priv; -+ GtkWidget *menu_item; -+ -+ priv = gtk_menu_get_private (GTK_MENU (widget)); -+ -+ menu_item = find_active_menu_item (event); -+ if (menu_item == NULL) - { - GtkMenu *menu = GTK_MENU (widget); - -- if (menu->upper_arrow_prelight || menu->lower_arrow_prelight) -- return TRUE; -+ if (menu->upper_arrow_prelight || menu->lower_arrow_prelight) -+ { -+ gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, FALSE, FALSE); -+ -+ return TRUE; -+ } -+ -+ if (priv->context_menu && -+ (priv->popup_pointer_x >= 0) && -+ (priv->popup_pointer_y >= 0)) -+ { -+ int distance; -+ -+ distance = distance_traveled (widget); -+ -+ priv->popup_pointer_x = -1; -+ priv->popup_pointer_y = -1; -+ -+ /* Don't popdown if we traveled less than 20px since popup point, -+ * as per the specs. */ -+ if (distance < 20) -+ return TRUE; -+ } -+ -+ /* Don't pass down to menu shell if a non-menuitem part -+ * of the menu was clicked. */ -+ if (pointer_in_menu_tree (widget)) -+ return TRUE; - } - - return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event); -@@ -2765,7 +3017,7 @@ - gboolean need_enter; - - if (GTK_IS_MENU (widget)) -- gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, TRUE); -+ gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, TRUE, TRUE); - - /* We received the event for one of two reasons: - * -@@ -2779,7 +3031,27 @@ - menu_item = gtk_get_event_widget ((GdkEvent*) event); - if (!menu_item || !GTK_IS_MENU_ITEM (menu_item) || - !GTK_IS_MENU (menu_item->parent)) -- return FALSE; -+ { -+ GtkMenuPrivate *priv; -+ -+ priv = gtk_menu_get_private (GTK_MENU (widget)); -+ -+ if (priv->context_menu) -+ { -+ /* Context menu mode. If we dragged out of the menu, -+ * close the menu, as by the specs. */ -+ if (!pointer_in_menu_tree (widget) && -+ (distance_traveled (widget) >= 20) && -+ (event->state & GDK_BUTTON1_MASK)) -+ { -+ gtk_menu_deactivate (GTK_MENU_SHELL (widget)); -+ -+ return TRUE; -+ } -+ } -+ -+ return FALSE; -+ } - - menu_shell = GTK_MENU_SHELL (menu_item->parent); - menu = GTK_MENU (menu_shell); -@@ -2795,6 +3067,11 @@ - */ - if (gtk_menu_navigating_submenu (menu, event->x_root, event->y_root)) - return TRUE; -+/* HILDON MOD. -+ * Close the submenus that are two levels down from the currently selected. -+ * This ensures that the focus is correct all the time.*/ -+ if (GTK_MENU_ITEM(menu_item)->submenu != NULL) -+ gtk_menu_shell_deselect (GTK_MENU_SHELL(&(GTK_MENU(GTK_MENU_ITEM(menu_item)->submenu)->menu_shell))); - - /* Make sure we pop down if we enter a non-selectable menu item, so we - * don't show a submenu when the cursor is outside the stay-up triangle. -@@ -2828,6 +3105,7 @@ - send_event->crossing.y_root = event->y_root; - send_event->crossing.x = event->x; - send_event->crossing.y = event->y; -+ send_event->crossing.state = event->state; - - /* We send the event to 'widget', the currently active menu, - * instead of 'menu', the menu that the pointer is in. This -@@ -2852,17 +3130,24 @@ - GtkWidget *widget; - gint offset; - gint view_width, view_height; -+ gboolean double_arrows; - - widget = GTK_WIDGET (menu); - offset = menu->scroll_offset + step; - -+ /* get double_arrows style property */ -+ gtk_widget_style_get (widget, -+ "double_arrows", &double_arrows, -+ NULL); -+ - /* If we scroll upward and the non-visible top part - * is smaller than the scroll arrow it would be - * pretty stupid to show the arrow and taking more - * screen space than just scrolling to the top. - */ -- if ((step < 0) && (offset < MENU_SCROLL_ARROW_HEIGHT)) -- offset = 0; -+ if (!double_arrows) -+ if ((step < 0) && (offset < MENU_SCROLL_ARROW_HEIGHT)) -+ offset = 0; - - /* Don't scroll over the top if we weren't before: */ - if ((menu->scroll_offset >= 0) && (offset < 0)) -@@ -2874,6 +3159,12 @@ - if (menu->scroll_offset > 0) - view_height -= MENU_SCROLL_ARROW_HEIGHT; - -+ /* When both arrows are always shown, reduce -+ * view height even more. -+ */ -+ if (double_arrows) -+ view_height -= MENU_SCROLL_ARROW_HEIGHT; -+ - if ((menu->scroll_offset + view_height <= widget->requisition.height) && - (offset + view_height > widget->requisition.height)) - offset = widget->requisition.height - view_height; -@@ -2922,18 +3213,21 @@ - gtk_menu_handle_scrolling (GtkMenu *menu, - gint x, - gint y, -- gboolean enter) -+ gboolean enter, -+ gboolean motion) - { - GtkMenuShell *menu_shell; -+ GtkMenuPrivate *priv; - gint width, height; - gint border; - GdkRectangle rect; -- gboolean in_arrow; - gboolean scroll_fast = FALSE; - guint vertical_padding; - gint top_x, top_y; - gint win_x, win_y; - -+ priv = gtk_menu_get_private (menu); -+ - menu_shell = GTK_MENU_SHELL (menu); - - gdk_drawable_get_size (GTK_WIDGET (menu)->window, &width, &height); -@@ -2946,10 +3240,11 @@ - GTK_WIDGET (menu)->style->ythickness + vertical_padding; - - gdk_window_get_position (menu->toplevel->window, &top_x, &top_y); -+ x -= top_x; -+ y -= top_y; -+ - gdk_window_get_position (GTK_WIDGET (menu)->window, &win_x, &win_y); -- win_x += top_x; -- win_y += top_y; -- -+ - if (menu->upper_arrow_visible && !menu->tearoff_active) - { - rect.x = win_x; -@@ -2957,35 +3252,49 @@ - rect.width = width; - rect.height = MENU_SCROLL_ARROW_HEIGHT + border; - -- in_arrow = FALSE; -+ menu->upper_arrow_prelight = FALSE; - if ((x >= rect.x) && (x < rect.x + rect.width) && - (y >= rect.y) && (y < rect.y + rect.height)) -- { -- in_arrow = TRUE; -- scroll_fast = (y < rect.y + MENU_SCROLL_FAST_ZONE); -- } -- -- if (enter && in_arrow && -- (!menu->upper_arrow_prelight || menu->scroll_fast != scroll_fast)) -- { -- menu->upper_arrow_prelight = TRUE; -- menu->scroll_fast = scroll_fast; -- gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -- -- /* Deselect the active item so that any submenus are poped down */ -- gtk_menu_shell_deselect (menu_shell); -+ menu->upper_arrow_prelight = TRUE; - -- gtk_menu_remove_scroll_timeout (menu); -- menu->scroll_step = (scroll_fast) ? -MENU_SCROLL_STEP2 : -MENU_SCROLL_STEP1; -- menu->timeout_id = g_timeout_add ((scroll_fast) ? MENU_SCROLL_TIMEOUT2 : MENU_SCROLL_TIMEOUT1, -- gtk_menu_scroll_timeout, -- menu); -- } -- else if (!enter && !in_arrow && menu->upper_arrow_prelight) -+ if (priv->upper_arrow_state != GTK_STATE_INSENSITIVE) - { -- gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -- -- gtk_menu_stop_scrolling (menu); -+ if (enter && menu->upper_arrow_prelight && -+ (menu->timeout_id == 0 || menu->scroll_fast != scroll_fast)) -+ { -+ menu->scroll_fast = scroll_fast; -+ -+ /* Deselect the active item so that any submenus are poped down */ -+ gtk_menu_shell_deselect (menu_shell); -+ -+ gtk_menu_remove_scroll_timeout (menu); -+ menu->scroll_step = (scroll_fast) ? -MENU_SCROLL_STEP2 : -MENU_SCROLL_STEP1; -+ -+ if (!motion) -+ { -+ /* Only do stuff on click. */ -+ GtkSettings *settings; -+ guint timeout; -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL); -+ -+ menu->timeout_id = g_timeout_add (timeout / 2, gtk_menu_scroll_timeout, menu); -+ -+ priv->upper_arrow_state = GTK_STATE_ACTIVE; -+ } -+ -+ gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -+ } -+ else if (!enter) -+ { -+ gtk_menu_stop_scrolling (menu); -+ -+ priv->upper_arrow_state = menu->upper_arrow_prelight ? -+ GTK_STATE_PRELIGHT : GTK_STATE_NORMAL; -+ -+ gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -+ } - } - } - -@@ -2996,36 +3305,50 @@ - rect.width = width; - rect.height = MENU_SCROLL_ARROW_HEIGHT + border; - -- in_arrow = FALSE; -+ menu->lower_arrow_prelight = FALSE; - if ((x >= rect.x) && (x < rect.x + rect.width) && - (y >= rect.y) && (y < rect.y + rect.height)) -- { -- in_arrow = TRUE; -- scroll_fast = (y > rect.y + rect.height - MENU_SCROLL_FAST_ZONE); -- } -+ menu->lower_arrow_prelight = TRUE; - -- if (enter && in_arrow && -- (!menu->lower_arrow_prelight || menu->scroll_fast != scroll_fast)) -+ if (priv->lower_arrow_state != GTK_STATE_INSENSITIVE) - { -- menu->lower_arrow_prelight = TRUE; -- menu->scroll_fast = scroll_fast; -- gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -+ if (enter && menu->lower_arrow_prelight && -+ (menu->timeout_id == 0 || menu->scroll_fast != scroll_fast)) -+ { -+ menu->scroll_fast = scroll_fast; - -- /* Deselect the active item so that any submenus are poped down */ -- gtk_menu_shell_deselect (menu_shell); -+ /* Deselect the active item so that any submenus are poped down */ -+ gtk_menu_shell_deselect (menu_shell); - -- gtk_menu_remove_scroll_timeout (menu); -- menu->scroll_step = (scroll_fast) ? MENU_SCROLL_STEP2 : MENU_SCROLL_STEP1; -- menu->timeout_id = g_timeout_add ((scroll_fast) ? MENU_SCROLL_TIMEOUT2 : MENU_SCROLL_TIMEOUT1, -- gtk_menu_scroll_timeout, -- menu); -- } -- else if (!enter && !in_arrow && menu->lower_arrow_prelight) -- { -- gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -- -- gtk_menu_stop_scrolling (menu); -- } -+ gtk_menu_remove_scroll_timeout (menu); -+ menu->scroll_step = (scroll_fast) ? MENU_SCROLL_STEP2 : MENU_SCROLL_STEP1; -+ -+ if (!motion) -+ { -+ /* Only do stuff on click. */ -+ GtkSettings *settings; -+ guint timeout; -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL); -+ -+ menu->timeout_id = g_timeout_add (timeout / 2, gtk_menu_scroll_timeout, menu); -+ -+ priv->lower_arrow_state = GTK_STATE_ACTIVE; -+ } -+ -+ gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -+ } -+ else if (!enter) -+ { -+ gtk_menu_stop_scrolling (menu); -+ -+ priv->lower_arrow_state = menu->lower_arrow_prelight ? -+ GTK_STATE_PRELIGHT : GTK_STATE_NORMAL; -+ -+ gdk_window_invalidate_rect (GTK_WIDGET (menu)->window, &rect, FALSE); -+ } -+ } - } - } - -@@ -3041,7 +3364,7 @@ - GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); - - if (!menu_shell->ignore_enter) -- gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, TRUE); -+ gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, TRUE, TRUE); - } - - if (menu_item && GTK_IS_MENU_ITEM (menu_item)) -@@ -3106,7 +3429,7 @@ - if (gtk_menu_navigating_submenu (menu, event->x_root, event->y_root)) - return TRUE; - -- gtk_menu_handle_scrolling (menu, event->x_root, event->y_root, FALSE); -+ gtk_menu_handle_scrolling (menu, event->x_root, event->y_root, FALSE, TRUE); - - event_widget = gtk_get_event_widget ((GdkEvent*) event); - -@@ -3611,7 +3934,13 @@ - requisition.width, requisition.height); - } - -- menu->scroll_offset = scroll_offset; -+ /* Hildon hack for menu in comboboxes: -+ * in case the menu in attached to a ComboBox, the scroll_offset is -+ * calculated in the positioning function so we dont't overwrite it -+ * with the value calculated above (in this function) */ -+ if ( !GTK_IS_COMBO_BOX(gtk_menu_get_attach_widget(menu)) ) -+ menu->scroll_offset = scroll_offset; -+ - } - - static void -@@ -3628,9 +3957,6 @@ - gtk_menu_stop_scrolling (GtkMenu *menu) - { - gtk_menu_remove_scroll_timeout (menu); -- -- menu->upper_arrow_prelight = FALSE; -- menu->lower_arrow_prelight = FALSE; - } - - static void -@@ -3644,6 +3970,8 @@ - gboolean last_visible; - gint menu_height; - guint vertical_padding; -+ guint horizontal_padding; -+ gboolean double_arrows; - - widget = GTK_WIDGET (menu); - -@@ -3663,19 +3991,93 @@ - - gtk_widget_style_get (GTK_WIDGET (menu), - "vertical-padding", &vertical_padding, -+ "horizontal-padding", &horizontal_padding, -+ "double_arrows", &double_arrows, - NULL); - - border_width = GTK_CONTAINER (menu)->border_width; -- view_width -= (border_width + widget->style->xthickness) * 2; -+ view_width -= (border_width + widget->style->xthickness + horizontal_padding) * 2; - view_height -= (border_width + widget->style->ythickness + vertical_padding) * 2; - menu_height = widget->requisition.height - - (border_width + widget->style->ythickness + vertical_padding) * 2; - -- x = border_width + widget->style->xthickness; -+ x = border_width + widget->style->xthickness + horizontal_padding; - y = border_width + widget->style->ythickness + vertical_padding; - -+ if (double_arrows && !menu->tearoff_active && (view_height < menu_height)) -+ { -+ GtkMenuPrivate *priv; -+ GtkStateType upper_arrow_previous_state, lower_arrow_previous_state; -+ -+ priv = gtk_menu_get_private (menu); -+ -+ upper_arrow_previous_state = priv->upper_arrow_state; -+ lower_arrow_previous_state = priv->lower_arrow_state; -+ -+ if (!menu->upper_arrow_visible || !menu->lower_arrow_visible) -+ gtk_widget_queue_draw (GTK_WIDGET (menu)); -+ -+ view_height -= 2*MENU_SCROLL_ARROW_HEIGHT; -+ y += MENU_SCROLL_ARROW_HEIGHT; -+ -+ menu->upper_arrow_visible = menu->lower_arrow_visible = TRUE; -+ if (priv->upper_arrow_state == GTK_STATE_INSENSITIVE) -+ { -+ priv->upper_arrow_state = menu->upper_arrow_prelight ? -+ GTK_STATE_PRELIGHT : GTK_STATE_NORMAL; -+ } -+ if (priv->lower_arrow_state == GTK_STATE_INSENSITIVE) -+ { -+ priv->lower_arrow_state = menu->lower_arrow_prelight ? -+ GTK_STATE_PRELIGHT : GTK_STATE_NORMAL; -+ } -+ -+ if (offset <= 0) -+ { -+ offset = 0; -+ priv->upper_arrow_state = GTK_STATE_INSENSITIVE; -+ } -+ if (offset >= menu_height - view_height) -+ { -+ offset = menu_height - view_height; -+ priv->lower_arrow_state = GTK_STATE_INSENSITIVE; -+ } -+ -+ if ((priv->upper_arrow_state != upper_arrow_previous_state) || -+ (priv->lower_arrow_state != lower_arrow_previous_state)) -+ gtk_widget_queue_draw (GTK_WIDGET (menu)); -+ -+ if (upper_arrow_previous_state != GTK_STATE_INSENSITIVE && -+ priv->upper_arrow_state == GTK_STATE_INSENSITIVE) -+ { -+ /* If we hid the upper arrow, possibly remove timeout */ -+ if (menu->scroll_step < 0) -+ { -+ gtk_menu_stop_scrolling (menu); -+ gtk_widget_queue_draw (GTK_WIDGET (menu)); -+ } -+ } -+ -+ if (lower_arrow_previous_state != GTK_STATE_INSENSITIVE && -+ priv->lower_arrow_state == GTK_STATE_INSENSITIVE) -+ { -+ /* If we hid the lower arrow, possibly remove timeout */ -+ if (menu->scroll_step > 0) -+ { -+ gtk_menu_stop_scrolling (menu); -+ gtk_widget_queue_draw (GTK_WIDGET (menu)); -+ } -+ } -+ } -+ else - if (!menu->tearoff_active) - { -+ if (offset <= 0) -+ offset = 0; -+ -+ if (offset >= menu_height - view_height) -+ offset = menu_height - view_height; -+ - last_visible = menu->upper_arrow_visible; - menu->upper_arrow_visible = offset > 0; - -@@ -3685,8 +4087,6 @@ - if ( (last_visible != menu->upper_arrow_visible) && - !menu->upper_arrow_visible) - { -- menu->upper_arrow_prelight = FALSE; -- - /* If we hid the upper arrow, possibly remove timeout */ - if (menu->scroll_step < 0) - { -@@ -3704,8 +4104,6 @@ - if ( (last_visible != menu->lower_arrow_visible) && - !menu->lower_arrow_visible) - { -- menu->lower_arrow_prelight = FALSE; -- - /* If we hid the lower arrow, possibly remove timeout */ - if (menu->scroll_step > 0) - { -@@ -3792,12 +4190,14 @@ - &child_offset, &child_height, &last_child)) - { - guint vertical_padding; -+ gboolean double_arrows; - - y = menu->scroll_offset; - gdk_drawable_get_size (GTK_WIDGET (menu)->window, &width, &height); - - gtk_widget_style_get (GTK_WIDGET (menu), - "vertical-padding", &vertical_padding, -+ "double_arrows", &double_arrows, - NULL); - - height -= 2*GTK_CONTAINER (menu)->border_width + 2*GTK_WIDGET (menu)->style->ythickness + 2*vertical_padding; -@@ -3820,11 +4220,11 @@ - if (child_offset + child_height > y + height - arrow_height) - { - arrow_height = 0; -- if (!last_child && !menu->tearoff_active) -+ if ((!last_child && !menu->tearoff_active) || (double_arrows)) - arrow_height += MENU_SCROLL_ARROW_HEIGHT; - - y = child_offset + child_height - height + arrow_height; -- if ((y > 0) && !menu->tearoff_active) -+ if (((y > 0) && !menu->tearoff_active) || (double_arrows)) - { - /* Need upper arrow */ - arrow_height += MENU_SCROLL_ARROW_HEIGHT; -@@ -4374,3 +4774,60 @@ - return list; - } - -+/* Little help function for making some sanity tests on this menu. -+ * Checks that given widget really is a menu and that it has no name -+ * assigned to it yet. -+ * Names used to do hildon theming: -+ * HILDON_MENU_NAME_SHARP for menu with sharp upper corners -+ * HILDON_MENU_NAME_ROUND for menu with round corners -+ */ -+static gboolean -+gtk_menu_check_name (GtkWidget *widget) -+{ -+ gboolean legal_name = FALSE; -+ gchar **tmp = NULL; -+ const gchar *name = NULL; -+ static gchar *menu_names[] = { "GtkMenu", -+ HILDON_MENU_NAME_SHARP, -+ HILDON_MENU_NAME_ROUND, -+ HILDON_MENU_NAME_ROUND_FIRST_LEVEL, -+ NULL }; -+ if (GTK_IS_MENU (widget) && -+ (name = gtk_widget_get_name (widget))) -+ { -+ if (!g_ascii_strcasecmp (name, HILDON_MENU_NAME_FORCE_SHARP) || !g_ascii_strcasecmp (name, HILDON_MENU_NAME_FORCE_ROUND)) -+ return FALSE; -+ for (tmp = menu_names; *tmp; tmp++) -+ if (!g_ascii_strcasecmp (name, *tmp )) -+ { -+ legal_name = TRUE; -+ break; -+ } -+ } -+ -+ return legal_name; -+} -+ -+/* A function called when esc-key is pressed. */ -+static void -+_gtk_menu_close_current (GtkMenu * menu) -+{ -+ GtkMenuShell * shell = GTK_MENU_SHELL (menu); -+ -+ /* Check is a submenu of current menu item is visible. -+ * If it is, close that first. */ -+ if (shell->active_menu_item && (GTK_MENU_ITEM (shell->active_menu_item)->submenu) && GTK_WIDGET_VISIBLE (GTK_MENU_ITEM (shell->active_menu_item)->submenu)) -+ gtk_menu_popdown (GTK_MENU (GTK_MENU_ITEM (shell->active_menu_item)->submenu)); -+ else -+ gtk_menu_popdown (menu); -+ -+} -+ -+/* Hildon function to make context menus behave according to spec */ -+void -+_gtk_menu_enable_context_menu_behavior (GtkMenu *menu) -+{ -+ GtkMenuPrivate *priv = gtk_menu_get_private (menu); -+ -+ priv->context_menu = TRUE; -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.h.diff deleted file mode 100644 index fc29e7965e..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenu.h.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmenu.h 2004-05-06 10:35:26.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkmenu.h 2005-04-06 16:19:36.943922032 +0300 -@@ -200,6 +200,9 @@ - gint monitor_num); - GList* gtk_menu_get_for_attach_widget (GtkWidget *widget); - -+/* Private functions */ -+void _gtk_menu_enable_context_menu_behavior (GtkMenu *menu); -+ - #ifndef GTK_DISABLE_DEPRECATED - #define gtk_menu_append(menu,child) gtk_menu_shell_append ((GtkMenuShell *)(menu),(child)) - #define gtk_menu_prepend(menu,child) gtk_menu_shell_prepend ((GtkMenuShell *)(menu),(child)) diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.c.diff deleted file mode 100644 index 7d8133e891..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.c.diff +++ /dev/null @@ -1,457 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmenuitem.c 2004-12-28 09:39:31.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmenuitem.c 2005-04-06 16:19:36.973917472 +0300 -@@ -24,6 +24,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2003. See CHANGES file for list -+ * of changes. -+ */ -+ - #define GTK_MENU_INTERNALS - - #include <config.h> -@@ -38,6 +42,9 @@ - #include "gtkmenuitem.h" - #include "gtkseparatormenuitem.h" - -+#define HILDON_HEIGHT_INCREMENT 1 -+#define HILDON_ARROW_SPACE 6 -+ - #define MENU_ITEM_CLASS(w) GTK_MENU_ITEM_CLASS (GTK_OBJECT (w)->klass) - - enum { -@@ -95,6 +102,8 @@ - guint signal_id); - - -+static void _gtk_menu_item_activate_submenus (GtkMenuItem *item); -+ - static GtkItemClass *parent_class; - static guint menu_item_signals[LAST_SIGNAL] = { 0 }; - -@@ -158,7 +167,9 @@ - item_class->select = gtk_real_menu_item_select; - item_class->deselect = gtk_real_menu_item_deselect; - -- klass->activate = NULL; -+ /* Hildon addition : Added this to catch the -+ * activation of meuuitems with submenus. */ -+ klass->activate = _gtk_menu_item_activate_submenus; - klass->activate_item = gtk_real_menu_item_activate_item; - klass->toggle_size_request = gtk_real_menu_item_toggle_size_request; - klass->toggle_size_allocate = gtk_real_menu_item_toggle_size_allocate; -@@ -239,6 +250,16 @@ - G_MAXINT, - 10, - G_PARAM_READABLE)); -+ -+ /* Hildon modification - allow themeing of separator height */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("separator_height", -+ "Separator height", -+ "Draw a separator graphics with height of x pixels.", -+ 0, -+ G_MAXINT, -+ 5, -+ G_PARAM_READABLE)); - } - - static void -@@ -415,6 +436,13 @@ - g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); - - gtk_item_select (GTK_ITEM (menu_item)); -+ /* HILDON MOD. This is required as changed focus isn't drawn automatically -+ * and drawing it must be requested. */ -+ if ((GTK_WIDGET(menu_item)->parent) && GTK_IS_MENU (GTK_WIDGET(menu_item)->parent)) -+ { -+ GtkMenu *menu = GTK_MENU (GTK_WIDGET(menu_item)->parent); -+ if (menu->parent_menu_item) gtk_widget_queue_draw(GTK_WIDGET(menu->parent_menu_item)); -+ } - } - - void -@@ -423,6 +451,13 @@ - g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); - - gtk_item_deselect (GTK_ITEM (menu_item)); -+ /* HILDON MOD. This is required as changed focus isn't drawn automatically -+ * and drawing it must be requested. */ -+ if ((GTK_WIDGET(menu_item)->parent) && GTK_IS_MENU (GTK_WIDGET(menu_item)->parent)) -+ { -+ GtkMenu *menu = GTK_MENU (GTK_WIDGET(menu_item)->parent); -+ if (menu->parent_menu_item) gtk_widget_queue_draw(GTK_WIDGET(menu->parent_menu_item)); -+ } - } - - void -@@ -531,7 +566,7 @@ - "arrow_spacing", &arrow_spacing, - NULL); - -- requisition->width += child_requisition.height; -+ requisition->width += child_requisition.height + HILDON_ARROW_SPACE; - requisition->width += arrow_spacing; - - requisition->width = MAX (requisition->width, get_minimum_width (widget)); -@@ -543,6 +578,12 @@ - requisition->height += 4; - } - -+ /* We get correct focus size if we make the widget a bit bigger. -+ * (If the increment would be big, we should probably adjust the text -+ * position aswell.) -+ */ -+ requisition->height += HILDON_HEIGHT_INCREMENT; -+ - accel_width = 0; - gtk_container_foreach (GTK_CONTAINER (menu_item), - gtk_menu_item_accel_width_foreach, -@@ -596,7 +637,8 @@ - { - if (direction == GTK_TEXT_DIR_RTL) - child_allocation.x += child_requisition.height; -- child_allocation.width -= child_requisition.height; -+ /* HILDON Modification. */ -+ child_allocation.width -= child_requisition.height + HILDON_ARROW_SPACE; - } - - if (child_allocation.width < 1) -@@ -688,6 +730,7 @@ - GtkShadowType shadow_type, selected_shadow_type; - gint width, height; - gint x, y; -+ - gint border_width = GTK_CONTAINER (widget)->border_width; - - if (GTK_WIDGET_DRAWABLE (widget)) -@@ -704,10 +747,56 @@ - if ((state_type == GTK_STATE_PRELIGHT) && - (GTK_BIN (menu_item)->child)) - { -+ gint focus_x = x; -+ gint focus_width = width; - gtk_widget_style_get (widget, - "selected_shadow_type", &selected_shadow_type, - NULL); -- gtk_paint_box (widget->style, -+ -+ if (menu_item->submenu && menu_item->show_submenu_indicator) -+ { -+ GtkRequisition child_requisition; -+ gint arrow_size; -+ /* gint arrow_extent; */ -+ gtk_widget_get_child_requisition (GTK_BIN (menu_item)->child, -+ &child_requisition); -+ -+ arrow_size = child_requisition.height - 2 * widget->style->ythickness; -+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) { -+ focus_width = x + width - arrow_size - 2 - HILDON_ARROW_SPACE; -+ } -+ else { -+ focus_x = x + arrow_size + 2 + HILDON_ARROW_SPACE; -+ } -+ } -+ -+ /* -+ * Hildon modification: -+ * This draws different focus depending on if it's the toplevel -+ * focused menu item. All items that have submenus that in turn -+ * have an item selected will be drawn with SELECTED - state focus. -+ * If this isn't the case, PRELIGHT - state focus is used. */ -+ if (menu_item->submenu) -+ { -+ GtkMenuItem *msi; -+ msi = GTK_MENU_ITEM(GTK_MENU_SHELL(&((GTK_MENU(menu_item->submenu))->menu_shell))->active_menu_item); -+ if ((msi == NULL) || (GTK_WIDGET (msi)->state == 0)) -+ gtk_paint_box (widget->style, -+ widget->window, -+ GTK_STATE_PRELIGHT, -+ selected_shadow_type, -+ area, widget, "menuitem", -+ focus_x, y, focus_width, height); -+ else -+ gtk_paint_box (widget->style, -+ widget->window, -+ GTK_STATE_SELECTED, -+ selected_shadow_type, -+ area, widget, "menuitem", -+ focus_x, y, focus_width, height); -+ } -+ else -+ gtk_paint_box (widget->style, - widget->window, - GTK_STATE_PRELIGHT, - selected_shadow_type, -@@ -747,8 +836,12 @@ - arrow_extent = arrow_size * 0.8; - - shadow_type = GTK_SHADOW_OUT; -- if (state_type == GTK_STATE_PRELIGHT) -- shadow_type = GTK_SHADOW_IN; -+ /*Hildon: only show the pressed arrow if the submenu is visible*/ -+ if (state_type == GTK_STATE_PRELIGHT -+ && GTK_WIDGET_VISIBLE( menu_item->submenu)) -+ { -+ shadow_type = GTK_SHADOW_IN; -+ } - - if (direction == GTK_TEXT_DIR_LTR) - { -@@ -763,6 +856,9 @@ - - arrow_y = y + (height - arrow_extent) / 2; - -+/* HILDON modification to correct focus drawing with submenu arrow */ -+ arrow_x = arrow_x - 4; -+ - gtk_paint_arrow (widget->style, widget->window, - state_type, shadow_type, - area, widget, "menuitem", -@@ -772,18 +868,20 @@ - } - else if (!GTK_BIN (menu_item)->child) - { -- guint horizontal_padding; -+ guint horizontal_padding, separator_height; - - gtk_widget_style_get (widget, - "horizontal_padding", &horizontal_padding, -+ "separator_height", &separator_height, - NULL); - -- gtk_paint_hline (widget->style, widget->window, GTK_STATE_NORMAL, -- area, widget, "menuitem", -- widget->allocation.x + horizontal_padding + widget->style->xthickness, -- widget->allocation.x + widget->allocation.width - horizontal_padding - widget->style->xthickness - 1, -- widget->allocation.y + (widget->allocation.height - -- widget->style->ythickness) / 2); -+ /* themable menuitem for menu separators */ -+ gtk_paint_box (widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_NONE, -+ area, widget, "separator", -+ widget->allocation.x + horizontal_padding + widget->style->xthickness, -+ widget->allocation.y + (widget->allocation.height - widget->style->ythickness) / 2, -+ widget->allocation.x + widget->allocation.width - horizontal_padding - widget->style->xthickness - 1, -+ separator_height); - } - } - } -@@ -839,6 +937,7 @@ - (!GTK_WIDGET_MAPPED (menu_item->submenu) || - GTK_MENU (menu_item->submenu)->tearoff_active)) - { -+ GdkEvent *event = gtk_get_current_event (); - gint popup_delay; - - if (menu_item->timer) -@@ -851,26 +950,40 @@ - popup_delay = get_popup_delay (menu_item); - - if (popup_delay > 0) -- { -- GdkEvent *event = gtk_get_current_event (); -- -- menu_item->timer = g_timeout_add (popup_delay, -- gtk_menu_item_select_timeout, -- menu_item); -- if (event && -- event->type != GDK_BUTTON_PRESS && -- event->type != GDK_ENTER_NOTIFY) -- menu_item->timer_from_keypress = TRUE; -- else -- menu_item->timer_from_keypress = FALSE; -- -- if (event) -- gdk_event_free (event); -- } -+ { -+ /* OK, Here comes the contender for the 2003 Ugly Award -+ * The popup delay is set small enough to be unnoticable, but high enough to not -+ * notice the flickering which occurs when we close all the deepest menu's Gtk+ helpfully -+ * expands but are not needed -+ * This does not fix the mouse navigation yet (bug 18) but should take care of 442 -+ * NOTE: test the delay factor on different CPU speeds -+ */ -+ popup_delay = 3; -+ /* Hildon: Disabling the automatic opening of submenus. */ -+ -+ if (event && -+ event->type != GDK_BUTTON_PRESS && -+ event->type != GDK_ENTER_NOTIFY && -+ event->type != GDK_MOTION_NOTIFY) /*hildon: for some reason, the event is sometimes this and not enter!*/ -+ menu_item->timer_from_keypress = TRUE; -+ else if (event) -+ { -+ /* mouse/pen events */ -+ /* here is a problem -- when a menu item with sub menus gets a mouse event, -+ another event is generated for the submenu (and further its submenu etc.) -+ This leads to a behaviour which does not comply to the hildon spec. */ -+ menu_item->timer_from_keypress = FALSE; -+ } -+ else /* does this really happen? */ -+ menu_item->timer_from_keypress = FALSE; -+ } - else -- _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item)); -+ _gtk_menu_item_popup_submenu (menu_item); -+ -+ if (event) -+ gdk_event_free (event); - } -- -+ - gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_PRELIGHT); - gtk_widget_queue_draw (GTK_WIDGET (menu_item)); - } -@@ -878,25 +991,16 @@ - static void - gtk_real_menu_item_deselect (GtkItem *item) - { -- GtkMenuItem *menu_item; -+ GtkWidget *menu_item; - - g_return_if_fail (GTK_IS_MENU_ITEM (item)); - -- menu_item = GTK_MENU_ITEM (item); -+ menu_item = GTK_WIDGET (item); - -- if (menu_item->submenu) -- { -- if (menu_item->timer) -- { -- g_source_remove (menu_item->timer); -- menu_item->timer = 0; -- } -- else -- gtk_menu_popdown (GTK_MENU (menu_item->submenu)); -- } -+ _gtk_menu_item_popdown_submenu (menu_item); - -- gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_NORMAL); -- gtk_widget_queue_draw (GTK_WIDGET (menu_item)); -+ gtk_widget_set_state (menu_item, GTK_STATE_NORMAL); -+ gtk_widget_queue_draw (menu_item); - } - - static gboolean -@@ -941,10 +1045,7 @@ - _gtk_menu_shell_activate (menu_shell); - - gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent), widget); -- _gtk_menu_item_popup_submenu (widget); -- -- gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE); -- submenu = GTK_MENU_SHELL (menu_item->submenu); -+ /* Hildon mod: automatic submenu opening has been removed */ - } - } - } -@@ -983,7 +1084,7 @@ - { - _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item)); - if (menu_item->timer_from_keypress && menu_item->submenu) -- GTK_MENU_SHELL (menu_item->submenu)->ignore_enter = TRUE; -+ GTK_MENU_SHELL (menu_item->submenu)->ignore_enter = TRUE; - } - - GDK_THREADS_LEAVE (); -@@ -1002,7 +1103,16 @@ - g_source_remove (menu_item->timer); - menu_item->timer = 0; - -+ /* HILDON MOD. This is required as changed submenu arrow isn't drawn automatically -+ * and drawing it must be requested. */ -+ gtk_widget_queue_draw (widget); -+ - if (GTK_WIDGET_IS_SENSITIVE (menu_item->submenu)) -+ { -+ gboolean take_focus; -+ take_focus = gtk_menu_shell_get_take_focus (GTK_MENU_SHELL (widget->parent)); -+ gtk_menu_shell_set_take_focus (GTK_MENU_SHELL (menu_item->submenu),take_focus); -+ - gtk_menu_popup (GTK_MENU (menu_item->submenu), - widget->parent, - widget, -@@ -1010,6 +1120,28 @@ - menu_item, - GTK_MENU_SHELL (widget->parent)->button, - 0); -+ } -+} -+ -+void -+_gtk_menu_item_popdown_submenu (GtkWidget *widget) -+{ -+ GtkMenuItem *menu_item; -+ -+ menu_item = GTK_MENU_ITEM (widget); -+ -+ if (menu_item->submenu) -+ { -+ if (menu_item->timer) -+ { -+ g_source_remove (menu_item->timer); -+ menu_item->timer = 0; -+ } -+ else -+ gtk_menu_popdown (GTK_MENU (menu_item->submenu)); -+ } -+ -+ gtk_widget_queue_draw (widget); - } - - static void -@@ -1092,14 +1224,17 @@ - tx += widget->allocation.width - twidth; - } - -+/* HILDON modifications -+ * Here we make the submenu of an menubar appear under the menubar. -+ * The only exception is when the resulting menu would be under 100 pixels -+ * high. In that case, the menu is made 100 pixels high. -+ */ - if ((ty + widget->allocation.height + theight) <= monitor.y + monitor.height) - ty += widget->allocation.height; -- else if ((ty - theight) >= monitor.y) -- ty -= theight; -- else if (monitor.y + monitor.height - (ty + widget->allocation.height) > ty) -+ else if ((ty + widget->allocation.height) < monitor.y + monitor.height - 120) - ty += widget->allocation.height; - else -- ty -= theight; -+ ty = monitor.y + monitor.height - 120; - break; - - case GTK_LEFT_RIGHT: -@@ -1404,3 +1539,30 @@ - - return TRUE; - } -+ -+/* Hildon modification : -+ * This function exists only for opening submenus on -+ * activation. */ -+static void -+_gtk_menu_item_activate_submenus (GtkMenuItem *item) -+{ -+ GdkEvent *event; -+ -+ g_return_if_fail (GTK_IS_MENU_ITEM (item)); -+ -+ if (!GTK_IS_MENU (item->submenu) || -+ GTK_WIDGET_VISIBLE (item->submenu)) -+ return; -+ -+ event = gtk_get_current_event (); -+ _gtk_menu_item_popup_submenu (item); -+ -+ /* We don't want to select first item if the submenu -+ * is opened with mouse release because the selection -+ * would move straigh back under the cursor. */ -+ if ((event == NULL) || (event->type != GDK_BUTTON_RELEASE)) -+ gtk_menu_shell_select_first (GTK_MENU_SHELL (item->submenu), TRUE); -+ -+ if (event) -+ gdk_event_free (event); -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.h.diff deleted file mode 100644 index cece91e70c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenuitem.h.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmenuitem.h 2004-12-15 18:27:30.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmenuitem.h 2005-04-06 16:19:36.983915952 +0300 -@@ -122,6 +122,7 @@ - gboolean group_changed); - gboolean _gtk_menu_item_is_selectable (GtkWidget *menu_item); - void _gtk_menu_item_popup_submenu (GtkWidget *menu_item); -+void _gtk_menu_item_popdown_submenu (GtkWidget *menu_item); - - #ifndef GTK_DISABLE_DEPRECATED - #define gtk_menu_item_right_justify(menu_item) gtk_menu_item_set_right_justified ((menu_item), TRUE) diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.c.diff deleted file mode 100644 index 3534b7716d..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.c.diff +++ /dev/null @@ -1,490 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmenushell.c 2005-02-09 18:46:54.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmenushell.c 2005-04-06 16:19:36.999913520 +0300 -@@ -39,6 +39,8 @@ - #include "gtkmnemonichash.h" - #include "gtktearoffmenuitem.h" - #include "gtkwindow.h" -+#include "gtkprivate.h" -+#include "gtkintl.h" - - #define MENU_SHELL_TIMEOUT 500 - -@@ -52,6 +54,11 @@ - LAST_SIGNAL - }; - -+enum { -+ PROP_0, -+ PROP_TAKE_FOCUS -+}; -+ - typedef void (*GtkMenuShellSignal1) (GtkObject *object, - GtkMenuDirectionType arg1, - gpointer data); -@@ -122,10 +129,20 @@ - { - GtkMnemonicHash *mnemonic_hash; - GtkKeyHash *key_hash; -+ gboolean activated_submenu; -+ gboolean take_focus; - }; - - static void gtk_menu_shell_class_init (GtkMenuShellClass *klass); - static void gtk_menu_shell_init (GtkMenuShell *menu_shell); -+static void gtk_menu_shell_set_property (GObject *object, -+ guint prop_id, -+ const GValue *value, -+ GParamSpec *pspec); -+static void gtk_menu_shell_get_property (GObject *object, -+ guint prop_id, -+ GValue *value, -+ GParamSpec *pspec); - static void gtk_menu_shell_realize (GtkWidget *widget); - static void gtk_menu_shell_finalize (GObject *object); - static gint gtk_menu_shell_button_press (GtkWidget *widget, -@@ -176,7 +193,6 @@ - static GtkContainerClass *parent_class = NULL; - static guint menu_shell_signals[LAST_SIGNAL] = { 0 }; - -- - GType - gtk_menu_shell_get_type (void) - { -@@ -220,6 +236,8 @@ - container_class = (GtkContainerClass*) klass; - - parent_class = g_type_class_peek_parent (klass); -+ object_class->set_property = gtk_menu_shell_set_property; -+ object_class->get_property = gtk_menu_shell_get_property; - - object_class->finalize = gtk_menu_shell_finalize; - -@@ -299,9 +317,15 @@ - - - binding_set = gtk_binding_set_by_class (klass); -+/* Hildon : The following binding is commented out -+ * because we want the Escape key to only exit the -+ * currently opened submenu. Therefore, the handling -+ * of esc-key will be moved to gtkmenuitem.c */ -+/* - gtk_binding_entry_add_signal (binding_set, - GDK_Escape, 0, - "cancel", 0); -+*/ - gtk_binding_entry_add_signal (binding_set, - GDK_Return, 0, - "activate_current", 1, -@@ -330,7 +354,23 @@ - GDK_F10, GDK_SHIFT_MASK, - "cycle_focus", 1, - GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_BACKWARD); -- -+ /** -+ * GtkMenuShell:take-focus: -+ * -+ * A boolean that determines whether the menu and its submenus grab the -+ * keyboard focus. See gtk_menu_shell_set_take_focus() and -+ * gtk_menu_shell_get_take_focus(). -+ * -+ * Since: 2.8 -+ **/ -+ g_object_class_install_property (object_class, -+ PROP_TAKE_FOCUS, -+ g_param_spec_boolean ("take-focus", -+ P_("Take Focus"), -+ P_("A boolean that determines whether the menu grabs the keyboard focus"), -+ TRUE, -+ G_PARAM_READWRITE)); -+ - g_type_class_add_private (object_class, sizeof (GtkMenuShellPrivate)); - } - -@@ -356,6 +396,46 @@ - - priv->mnemonic_hash = NULL; - priv->key_hash = NULL; -+ priv->take_focus = TRUE; -+ priv->activated_submenu = FALSE; -+} -+ -+static void -+gtk_menu_shell_set_property (GObject *object, -+ guint prop_id, -+ const GValue *value, -+ GParamSpec *pspec) -+{ -+ GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); -+ -+ switch (prop_id) -+ { -+ case PROP_TAKE_FOCUS: -+ gtk_menu_shell_set_take_focus (menu_shell, g_value_get_boolean (value)); -+ break; -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); -+ break; -+ } -+} -+ -+static void -+gtk_menu_shell_get_property (GObject *object, -+ guint prop_id, -+ GValue *value, -+ GParamSpec *pspec) -+{ -+ GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); -+ -+ switch (prop_id) -+ { -+ case PROP_TAKE_FOCUS: -+ g_value_set_boolean (value, gtk_menu_shell_get_take_focus (menu_shell)); -+ break; -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); -+ break; -+ } - } - - static void -@@ -470,6 +550,7 @@ - gtk_menu_shell_button_press (GtkWidget *widget, - GdkEventButton *event) - { -+ GtkMenuShellPrivate *priv; - GtkMenuShell *menu_shell; - GtkWidget *menu_item; - -@@ -479,7 +560,22 @@ - if (event->type != GDK_BUTTON_PRESS) - return FALSE; - -+ priv = GTK_MENU_SHELL_GET_PRIVATE (widget); -+ - menu_shell = GTK_MENU_SHELL (widget); -+ menu_item = gtk_menu_shell_get_item (menu_shell, (GdkEvent*) event); -+ -+ if (menu_shell->active && menu_item && -+ (menu_shell->active_menu_item == menu_item) && -+ _gtk_menu_item_is_selectable (menu_item) && -+ GTK_MENU_ITEM (menu_item)->submenu != NULL && -+ !GTK_WIDGET_VISIBLE (GTK_MENU_ITEM (menu_item)->submenu)) -+ { -+ /* Hildon : We want to be able to activate submenu items. */ -+ gtk_menu_shell_activate_item (menu_shell, menu_item, FALSE); -+ -+ priv->activated_submenu = TRUE; -+ } - - if (menu_shell->parent_menu_shell) - { -@@ -491,30 +587,29 @@ - - menu_shell->button = event->button; - -- menu_item = gtk_menu_shell_get_item (menu_shell, (GdkEvent *)event); -- - if (menu_item && _gtk_menu_item_is_selectable (menu_item)) -- { -- if ((menu_item->parent == widget) && -- (menu_item != menu_shell->active_menu_item)) -- { -- if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement == GTK_TOP_BOTTOM) -- { -- menu_shell->activate_time = event->time; -- } -+ { -+ -+ if ((menu_item->parent == widget) && -+ (menu_item != menu_shell->active_menu_item)) -+ { -+ if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement == GTK_TOP_BOTTOM) -+ { -+ menu_shell->activate_time = event->time; -+ } - -- gtk_menu_shell_select_item (menu_shell, menu_item); -- } -- } -+ gtk_menu_shell_select_item (menu_shell, menu_item); -+ } -+ } - } - else - { - widget = gtk_get_event_widget ((GdkEvent*) event); - if (widget == GTK_WIDGET (menu_shell)) -- { -- gtk_menu_shell_deactivate (menu_shell); -- g_signal_emit (menu_shell, menu_shell_signals[SELECTION_DONE], 0); -- } -+ { -+ gtk_menu_shell_deactivate (menu_shell); -+ g_signal_emit (menu_shell, menu_shell_signals[SELECTION_DONE], 0); -+ } - } - - return TRUE; -@@ -524,13 +619,20 @@ - gtk_menu_shell_button_release (GtkWidget *widget, - GdkEventButton *event) - { -+ GtkMenuShellPrivate *priv; - GtkMenuShell *menu_shell; - GtkWidget *menu_item; - gint deactivate; -+ gboolean activated_submenu; - - g_return_val_if_fail (GTK_IS_MENU_SHELL (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - -+ priv = GTK_MENU_SHELL_GET_PRIVATE (widget); -+ -+ activated_submenu = priv->activated_submenu; -+ priv->activated_submenu = FALSE; -+ - menu_shell = GTK_MENU_SHELL (widget); - if (menu_shell->active) - { -@@ -556,11 +658,11 @@ - gtk_menu_shell_activate_item (menu_shell, menu_item, TRUE); - return TRUE; - } -- else if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement != GTK_TOP_BOTTOM) -- { -- gtk_menu_item_select (GTK_MENU_ITEM (menu_item)); -- return TRUE; -- } -+ else if (!activated_submenu) -+ { -+ /* popdown the submenu if we didn't pop it up in this click */ -+ _gtk_menu_item_popdown_submenu (menu_item); -+ } - } - else if (menu_item && - !_gtk_menu_item_is_selectable (menu_item) && -@@ -630,12 +732,14 @@ - gtk_menu_shell_enter_notify (GtkWidget *widget, - GdkEventCrossing *event) - { -+ GtkMenuShellPrivate *priv; - GtkMenuShell *menu_shell; - GtkWidget *menu_item; - - g_return_val_if_fail (GTK_IS_MENU_SHELL (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - -+ priv = GTK_MENU_SHELL_GET_PRIVATE (widget); - menu_shell = GTK_MENU_SHELL (widget); - - if (menu_shell->active) -@@ -658,6 +762,17 @@ - (GTK_WIDGET_STATE (menu_item) != GTK_STATE_PRELIGHT)) - { - gtk_menu_shell_select_item (menu_shell, menu_item); -+ -+ /* If the pen is down, and there is a submenu that is not -+ * yet visible, activate it */ -+ if ((event->state & GDK_BUTTON1_MASK) && -+ GTK_MENU_ITEM (menu_item)->submenu != NULL && -+ !GTK_WIDGET_VISIBLE (GTK_MENU_ITEM (menu_item)->submenu)) -+ { -+ gtk_menu_shell_activate_item (menu_shell, menu_item, FALSE); -+ -+ priv->activated_submenu = TRUE; -+ } - } - } - else if (menu_shell->parent_menu_shell) -@@ -887,8 +1002,14 @@ - /* This allows the bizarre radio buttons-with-submenus-display-history - * behavior - */ -+ /* Hildon modification. We probably won't have those -+ * bizarre radio buttons-with-submenus so we don't -+ * need this. Also, this functionality interferes with -+ * other functionality. */ -+/* - if (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu) - gtk_widget_activate (menu_shell->active_menu_item); -+*/ - } - - void -@@ -919,7 +1040,9 @@ - - g_object_ref (menu_shell); - -- if (deactivate) -+ /* We don't want to deactivate if we're activating -+ * a submenu item. */ -+ if ((deactivate) && (GTK_MENU_ITEM (menu_item)->submenu == NULL)) - { - GtkMenuShell *parent_menu_shell = menu_shell; - -@@ -965,29 +1088,30 @@ - - if (distance > 0) - { -+ /*Hildon: selection no longer wraps around at the -+ *bottom of the menu*/ -+ - node = node->next; -- while (node != start_node && -- (!node || !_gtk_menu_item_is_selectable (node->data))) -+ while (node && node != start_node && -+ !_gtk_menu_item_is_selectable (node->data)) - { -- if (!node) -- node = menu_shell->children; -- else - node = node->next; - } - } - else - { -+ /*Hildon: selection no longer wraps around at the top -+ *of the menu*/ -+ - node = node->prev; -- while (node != start_node && -- (!node || !_gtk_menu_item_is_selectable (node->data))) -+ while (node && node != start_node && -+ !_gtk_menu_item_is_selectable (node->data)) - { -- if (!node) -- node = g_list_last (menu_shell->children); -- else - node = node->prev; - } - } - -+ /*note: gtk_menu_shell_select_item won't select non-selectable items*/ - if (node) - gtk_menu_shell_select_item (menu_shell, node->data); - } -@@ -1119,6 +1243,16 @@ - switch (direction) - { - case GTK_MENU_DIR_PARENT: -+ -+ if(!parent_menu_shell || GTK_IS_MENU_BAR(parent_menu_shell)) -+ break; -+ -+ /* hildon-modification - menu should be closed when returning from submenu. -+ * WARNING: This function is from GtkMenu, which normally -+ * shouldn't be called from GtkMenuShell, but currently -+ * there are no better alternatives. */ -+ gtk_menu_popdown (GTK_MENU (menu_shell)); -+ - if (parent_menu_shell) - { - if (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement == -@@ -1151,10 +1285,14 @@ - _gtk_menu_item_is_selectable (menu_shell->active_menu_item) && - GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu) - { -+ /* Hildon-modification -- submenu is not opened automatically but needs to be explicitly opened*/ -+ g_signal_emit (G_OBJECT (menu_shell), menu_shell_signals[ACTIVATE_CURRENT], 0, (gint) FALSE); -+ - if (gtk_menu_shell_select_submenu_first (menu_shell)) - break; - } - -+#if 0 - /* Try to find a menu running the opposite direction */ - while (parent_menu_shell && - (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement == -@@ -1173,6 +1311,7 @@ - gtk_menu_shell_move_selected (parent_menu_shell, 1); - gtk_menu_shell_select_submenu_first (parent_menu_shell); - } -+#endif - break; - - case GTK_MENU_DIR_PREV: -@@ -1197,8 +1336,8 @@ - gtk_real_menu_shell_activate_current (GtkMenuShell *menu_shell, - gboolean force_hide) - { -- if (menu_shell->active_menu_item && -- _gtk_menu_item_is_selectable (menu_shell->active_menu_item)) -+ if (menu_shell->active_menu_item)/* && -+ _gtk_menu_item_is_selectable (menu_shell->active_menu_item)) */ - { - - if (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu == NULL) -@@ -1390,4 +1529,73 @@ - keyval, target); - gtk_menu_shell_reset_key_hash (menu_shell); - } -+/** -+ * gtk_menu_shell_get_take_focus: -+ * @menu: a #GtkMenuShell -+ * -+ * @returns: %TRUE if the menu_shell will take the keyboard focus on popup. -+ * -+ * Since: 2.8 -+ **/ -+gboolean -+gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell) -+{ -+ GtkMenuShellPrivate *priv; -+ -+ g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), FALSE); -+ -+ priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); -+ -+ return priv->take_focus; -+} -+ -+/** -+ * gtk_menu_shell_set_take_focus: -+ * @menu: a #GtkMenuShell -+ * @take_focus: %TRUE if the menu_shell should take the keyboard focus on popup. -+ * -+ * If @take_focus is %TRUE (the default) the menu will take the keyboard focus -+ * so that it will receive all keyboard events which is needed to enable -+ * keyboard navigation in menus. -+ * -+ * Setting @take_focus to %FALSE is useful only for special applications -+ * like virtual keyboard implementations which should not take keyboard -+ * focus. -+ * -+ * The @take_focus state of a menu or menu bar is automatically propagated -+ * to submenus whenever a submenu is popped up, so you don't have to worry -+ * about recursively setting it for your entire menu hierarchy. Only when -+ * programmatically picking a submenu and popping it up manually, the -+ * @take_focus property of the submenu needs to be set explicitely. -+ * -+ * Note that setting it to %FALSE has side-effects: -+ * -+ * If the focus is in some other app, it keeps the focus and keynav in -+ * the menu doesn't work. Consequently, keynav on the menu will only -+ * work if the focus is on some toplevel owned by the onscreen keyboard. -+ * -+ * To avoid confusing the user, menus with @take_focus set to %FALSE -+ * should not display mnemonics or accelerators, since it cannot be -+ * guaranteed that they will work. -+ * -+ * See also gdk_keyboard_grab() -+ * -+ * Since: 2.8 -+ **/ -+void -+gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell, -+ gboolean take_focus) -+{ -+ GtkMenuShellPrivate *priv; -+ -+ g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); -+ -+ priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); -+ -+ if (priv->take_focus != take_focus) -+ { -+ priv->take_focus = take_focus; -+ g_object_notify (G_OBJECT (menu_shell), "take-focus"); -+ } -+} - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.h.diff deleted file mode 100644 index 4bd7fc547c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkmenushell.h.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkmenushell.h 2004-12-11 00:09:22.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkmenushell.h 2005-04-06 16:19:36.999913520 +0300 -@@ -124,6 +124,9 @@ - void _gtk_menu_shell_remove_mnemonic (GtkMenuShell *menu_shell, - guint keyval, - GtkWidget *target); -+gboolean gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell); -+void gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell, -+ gboolean take_focus); - - #ifdef __cplusplus - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtknotebook.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtknotebook.c.diff deleted file mode 100644 index 4f75106938..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtknotebook.c.diff +++ /dev/null @@ -1,831 +0,0 @@ ---- gtk+-2.6.4/gtk/gtknotebook.c 2004-09-27 06:43:55.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtknotebook.c 2005-04-06 16:19:37.033908352 +0300 -@@ -40,10 +40,10 @@ - - #define TAB_OVERLAP 2 - #define TAB_CURVATURE 1 --#define ARROW_SIZE 12 -+#define ARROW_WIDTH 20 -+#define ARROW_HEIGHT 27 - #define ARROW_SPACING 0 --#define NOTEBOOK_INIT_SCROLL_DELAY (200) --#define NOTEBOOK_SCROLL_DELAY (100) -+#define LABEL_PADDING 0 - - - enum { -@@ -57,7 +57,9 @@ - - enum { - STEP_PREV, -- STEP_NEXT -+ STEP_NEXT, -+ STEP_PREV_CYCLE, -+ STEP_NEXT_CYCLE - }; - - typedef enum -@@ -216,7 +218,7 @@ - GList *list, - gboolean destroying); - static void gtk_notebook_update_labels (GtkNotebook *notebook); --static gint gtk_notebook_timer (GtkNotebook *notebook); -+static gint gtk_notebook_timer (GtkNotebook *notebook ); - static gint gtk_notebook_page_compare (gconstpointer a, - gconstpointer b); - static GList* gtk_notebook_find_child (GtkNotebook *notebook, -@@ -458,7 +460,7 @@ - g_param_spec_boolean ("scrollable", - P_("Scrollable"), - P_("If TRUE, scroll arrows are added if there are too many tabs to fit"), -- FALSE, -+ TRUE, - G_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, - PROP_ENABLE_POPUP, -@@ -584,6 +586,75 @@ - - G_PARAM_READABLE)); - -+ /* Hildon: for adding paddings to the inner borders of the visible page */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("inner_left_border", -+ _("Inner left border of the visible page"), -+ _("Width of inner left border of the visible page"), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("inner_right_border", -+ _("Inner right border of the visible page"), -+ _("Width of inner right border of the visible page"), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READABLE)); -+ -+ /* Hildon: previously hardcoded constants ARROW_WIDTH, ARROW_HEIGHT, -+ ARROW_SPACING, TAB_OVERLAP and TAB_CURVATURE are now style properties */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("arrow-width", -+ _("Arrow width"), -+ _("Scroll arrow width"), -+ 0, -+ G_MAXINT, -+ ARROW_WIDTH, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("arrow-height", -+ _("Arrow height"), -+ _("Scroll arrow height"), -+ 0, -+ G_MAXINT, -+ ARROW_HEIGHT, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("arrow-spacing", -+ _("Arrow spacing"), -+ _("Scroll arrow spacing"), -+ 0, -+ G_MAXINT, -+ ARROW_SPACING, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("tab-overlap", -+ _("Tab overlap"), -+ _("Tab overlap"), -+ 0, -+ G_MAXINT, -+ TAB_OVERLAP, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("tab-curvature", -+ _("Tab curvature"), -+ _("Tab curvature"), -+ 0, -+ G_MAXINT, -+ TAB_CURVATURE, -+ G_PARAM_READABLE)); -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("label-padding", -+ _("Label padding"), -+ _("Label padding"), -+ 0, -+ G_MAXINT, -+ LABEL_PADDING, -+ G_PARAM_READABLE)); -+ - notebook_signals[SWITCH_PAGE] = - g_signal_new ("switch_page", - G_TYPE_FROM_CLASS (gobject_class), -@@ -705,11 +776,10 @@ - notebook->show_tabs = TRUE; - notebook->show_border = TRUE; - notebook->tab_pos = GTK_POS_TOP; -- notebook->scrollable = FALSE; -+ notebook->scrollable = TRUE; - notebook->in_child = 0; - notebook->click_child = 0; - notebook->button = 0; -- notebook->need_timer = 0; - notebook->child_has_focus = FALSE; - notebook->have_visible_child = FALSE; - notebook->focus_out = FALSE; -@@ -1189,9 +1259,18 @@ - GtkRequisition child_requisition; - gboolean switch_page = FALSE; - gint vis_pages; -- gint focus_width; -+ gint focus_width, label_padding; -+ gint arrow_width, arrow_height, arrow_spacing, tab_overlap, tab_curvature; - -- gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL); -+ gtk_widget_style_get (widget, -+ "focus-line-width", &focus_width, -+ "arrow-width", &arrow_width, -+ "arrow-height", &arrow_height, -+ "arrow-spacing", &arrow_spacing, -+ "tab-overlap", &tab_overlap, -+ "tab-curvature", &tab_curvature, -+ "label-padding", &label_padding, -+ NULL); - - widget->requisition.width = 0; - widget->requisition.height = 0; -@@ -1229,6 +1308,22 @@ - { - widget->requisition.width += widget->style->xthickness * 2; - widget->requisition.height += widget->style->ythickness * 2; -+ -+ /* Hildon kludge: inner border paddings */ -+ if (notebook->children && notebook->show_border) -+ { -+ gint inner_left_border, inner_right_border; -+ -+ gtk_widget_style_get (widget, -+ "inner_left_border", -+ &inner_left_border, -+ "inner_right_border", -+ &inner_right_border, -+ NULL); -+ -+ widget->requisition.width += inner_left_border + inner_right_border; -+ } -+ - - if (notebook->show_tabs) - { -@@ -1249,6 +1344,7 @@ - - gtk_widget_size_request (page->tab_label, - &child_requisition); -+ child_requisition.width += 2 * label_padding; - - page->requisition.width = - child_requisition.width + -@@ -1292,10 +1388,10 @@ - - if (notebook->scrollable && vis_pages > 1 && - widget->requisition.width < tab_width) -- tab_height = MAX (tab_height, ARROW_SIZE); -+ tab_height = MAX (tab_height, arrow_height); - -- padding = 2 * (TAB_CURVATURE + focus_width + -- notebook->tab_hborder) - TAB_OVERLAP; -+ padding = 2 * (tab_curvature + focus_width + -+ notebook->tab_hborder) - tab_overlap; - tab_max += padding; - while (children) - { -@@ -1316,15 +1412,15 @@ - - if (notebook->scrollable && vis_pages > 1 && - widget->requisition.width < tab_width) -- tab_width = tab_max + 2 * (ARROW_SIZE + ARROW_SPACING); -+ tab_width = tab_max + 2 * (arrow_width + arrow_spacing); - - if (notebook->homogeneous && !notebook->scrollable) - widget->requisition.width = MAX (widget->requisition.width, - vis_pages * tab_max + -- TAB_OVERLAP); -+ tab_overlap); - else - widget->requisition.width = MAX (widget->requisition.width, -- tab_width + TAB_OVERLAP); -+ tab_width + tab_overlap); - - widget->requisition.height += tab_height; - break; -@@ -1335,10 +1431,10 @@ - - if (notebook->scrollable && vis_pages > 1 && - widget->requisition.height < tab_height) -- tab_width = MAX (tab_width, ARROW_SPACING + 2 * ARROW_SIZE); -+ tab_width = MAX (tab_width, arrow_spacing + 2 * arrow_width); - -- padding = 2 * (TAB_CURVATURE + focus_width + -- notebook->tab_vborder) - TAB_OVERLAP; -+ padding = 2 * (tab_curvature + focus_width + -+ notebook->tab_vborder) - tab_overlap; - tab_max += padding; - - while (children) -@@ -1361,24 +1457,24 @@ - - if (notebook->scrollable && vis_pages > 1 && - widget->requisition.height < tab_height) -- tab_height = tab_max + ARROW_SIZE + ARROW_SPACING; -+ tab_height = tab_max + arrow_height + arrow_spacing; - - widget->requisition.width += tab_width; - - if (notebook->homogeneous && !notebook->scrollable) - widget->requisition.height = - MAX (widget->requisition.height, -- vis_pages * tab_max + TAB_OVERLAP); -+ vis_pages * tab_max + tab_overlap); - else - widget->requisition.height = - MAX (widget->requisition.height, -- tab_height + TAB_OVERLAP); -+ tab_height + tab_overlap); - - if (!notebook->homogeneous || notebook->scrollable) - vis_pages = 1; - widget->requisition.height = MAX (widget->requisition.height, - vis_pages * tab_max + -- TAB_OVERLAP); -+ tab_overlap); - break; - } - } -@@ -1499,7 +1595,26 @@ - } - } - -+ /* Hildon kludge: inner border paddings */ -+ if (notebook->show_border) -+ { -+ gint inner_left_border, inner_right_border; -+ -+ gtk_widget_style_get (widget, -+ "inner_left_border", -+ &inner_left_border, -+ "inner_right_border", -+ &inner_right_border, -+ NULL); -+ -+ child_allocation.x += inner_left_border; -+ child_allocation.width -= inner_left_border + inner_right_border; -+ if (child_allocation.width < 0) -+ child_allocation.width = 0; -+ } -+ - children = notebook->children; -+ - while (children) - { - page = children->data; -@@ -1580,11 +1695,18 @@ - GdkRectangle event_window_pos; - gboolean before = ARROW_IS_BEFORE (arrow); - gboolean left = ARROW_IS_LEFT (arrow); -+ gint arrow_width, arrow_height, arrow_spacing; -+ -+ gtk_widget_style_get (GTK_WIDGET(notebook), -+ "arrow-width", &arrow_width, -+ "arrow-height", &arrow_height, -+ "arrow-spacing", &arrow_spacing, -+ NULL); - - if (gtk_notebook_get_event_window_position (notebook, &event_window_pos)) - { -- rectangle->width = ARROW_SIZE; -- rectangle->height = ARROW_SIZE; -+ rectangle->width = arrow_width; -+ rectangle->height = arrow_height; - - switch (notebook->tab_pos) - { -@@ -1602,6 +1724,8 @@ - rectangle->y += event_window_pos.height - rectangle->height; - break; - case GTK_POS_TOP: -+ arrow_spacing = - arrow_spacing; -+ /* Fall through */ - case GTK_POS_BOTTOM: - if (before) - { -@@ -1617,7 +1741,11 @@ - else - rectangle->x = event_window_pos.x + event_window_pos.width - 2 * rectangle->width; - } -- rectangle->y = event_window_pos.y + (event_window_pos.height - rectangle->height) / 2; -+ rectangle->y = event_window_pos.y; -+ if (arrow_spacing > 0) -+ rectangle->y += arrow_spacing; -+ else -+ rectangle->y += (event_window_pos.height - rectangle->height) / 2; - break; - } - } -@@ -1696,6 +1824,10 @@ - gboolean is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - gboolean left = (ARROW_IS_LEFT (arrow) && !is_rtl) || - (!ARROW_IS_LEFT (arrow) && is_rtl); -+ GtkSettings *settings = gtk_settings_get_default (); -+ guint timeout; -+ -+ g_object_get (settings, "gtk-initial-timeout", &timeout, NULL); - - if (!GTK_WIDGET_HAS_FOCUS (widget)) - gtk_widget_grab_focus (widget); -@@ -1706,14 +1838,14 @@ - if (event->button == 1) - { - gtk_notebook_do_arrow (notebook, arrow); -- -+ - if (!notebook->timer) -- { -- notebook->timer = g_timeout_add (NOTEBOOK_INIT_SCROLL_DELAY, -- (GSourceFunc) gtk_notebook_timer, -- (gpointer) notebook); -- notebook->need_timer = TRUE; -- } -+ { -+ notebook->timer = g_timeout_add (timeout, -+ (GSourceFunc) gtk_notebook_timer, -+ (gpointer) notebook); -+ notebook->need_timer = TRUE; -+ } - } - else if (event->button == 2) - gtk_notebook_page_select (notebook, TRUE); -@@ -1862,7 +1994,7 @@ - static void - stop_scrolling (GtkNotebook *notebook) - { -- if (notebook->timer) -+ if (notebook->timer) - { - g_source_remove (notebook->timer); - notebook->timer = 0; -@@ -2343,9 +2475,9 @@ - */ - return focus_child_in (notebook, GTK_DIR_TAB_FORWARD); - case GTK_DIR_LEFT: -- return focus_tabs_move (notebook, direction, STEP_PREV); -+ return focus_tabs_move (notebook, direction, STEP_PREV_CYCLE); - case GTK_DIR_RIGHT: -- return focus_tabs_move (notebook, direction, STEP_NEXT); -+ return focus_tabs_move (notebook, direction, STEP_NEXT_CYCLE); - } - } - else /* Focus was not on widget */ -@@ -2481,7 +2613,6 @@ - * gtk_notebook_redraw_tabs - * gtk_notebook_real_remove - * gtk_notebook_update_labels -- * gtk_notebook_timer - * gtk_notebook_page_compare - * gtk_notebook_real_page_position - * gtk_notebook_search_page -@@ -2574,22 +2705,27 @@ - gtk_notebook_timer (GtkNotebook *notebook) - { - gboolean retval = FALSE; -+ guint timeout; -+ GtkSettings *settings; - - GDK_THREADS_ENTER (); - -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL); -+ - if (notebook->timer) - { - gtk_notebook_do_arrow (notebook, notebook->click_child); - -- if (notebook->need_timer) -- { -- notebook->need_timer = FALSE; -- notebook->timer = g_timeout_add (NOTEBOOK_SCROLL_DELAY, -- (GSourceFunc) gtk_notebook_timer, -- (gpointer) notebook); -- } -+ if (notebook->need_timer) -+ { -+ notebook->need_timer = FALSE; -+ notebook->timer = g_timeout_add (timeout, -+ (GSourceFunc) gtk_notebook_timer, -+ (gpointer) notebook); -+ } - else -- retval = TRUE; -+ retval = TRUE; - } - - GDK_THREADS_LEAVE (); -@@ -2781,10 +2917,12 @@ - switch (direction) - { - case STEP_PREV: -+ case STEP_PREV_CYCLE: - flag = GTK_PACK_END; - break; - - case STEP_NEXT: -+ case STEP_NEXT_CYCLE: - flag = GTK_PACK_START; - break; - } -@@ -2827,6 +2965,37 @@ - old_list = list; - list = list->prev; - } -+ -+ /* Hildon hack: keyboard navigation should cycle around */ -+ if (direction == STEP_PREV_CYCLE) -+ { -+ /* find and return the last (visible) page */ -+ list = g_list_last (notebook->children); -+ if (!find_visible) -+ return list; -+ while (list) -+ { -+ page = list->data; -+ if (GTK_WIDGET_VISIBLE (page->child)) -+ return list; -+ list = list->prev; -+ } -+ } -+ if (direction == STEP_NEXT_CYCLE) -+ { -+ /* find and return the first (visible) page */ -+ list = g_list_first (notebook->children); -+ if (!find_visible) -+ return list; -+ while (list) -+ { -+ page = list->data; -+ if (GTK_WIDGET_VISIBLE (page->child)) -+ return list; -+ list = list->next; -+ } -+ } -+ - return NULL; - } - -@@ -2850,6 +3019,7 @@ - gint gap_x = 0, gap_width = 0, step = STEP_PREV; - gboolean is_rtl; - gint tab_pos; -+ gboolean paint_box_gap = FALSE; - - g_return_if_fail (GTK_IS_NOTEBOOK (widget)); - g_return_if_fail (area != NULL); -@@ -2933,15 +3103,37 @@ - step = STEP_PREV; - break; - } -- gtk_paint_box_gap (widget->style, widget->window, -- GTK_STATE_NORMAL, GTK_SHADOW_OUT, -- area, widget, "notebook", -- x, y, width, height, -- tab_pos, gap_x, gap_width); -+ -+ /* hildon hack to postpone painting until it -+ is known if scroll arrows will be drawn */ -+ paint_box_gap = TRUE; - } - -+ /* first, figure out if arrows should be drawn */ - showarrow = FALSE; - children = gtk_notebook_search_page (notebook, NULL, step, TRUE); -+ while (children && !showarrow) -+ { -+ page = children->data; -+ children = gtk_notebook_search_page (notebook, children, -+ step, TRUE); -+ if (!GTK_WIDGET_MAPPED (page->tab_label)) -+ showarrow = TRUE; -+ } -+ -+ /* then draw content area frame */ -+ if (paint_box_gap) -+ gtk_paint_box_gap (widget->style, widget->window, -+ GTK_STATE_NORMAL, GTK_SHADOW_OUT, -+ area, widget, -+ (showarrow && notebook->scrollable) -+ ? "notebook_show_arrow" -+ : "notebook", -+ x, y, width, height, -+ tab_pos, gap_x, gap_width); -+ -+ /* and finally draw tabs */ -+ children = gtk_notebook_search_page (notebook, NULL, step, TRUE); - while (children) - { - page = children->data; -@@ -3069,10 +3261,15 @@ - GdkRectangle arrow_rect; - GtkArrowType arrow; - gboolean is_rtl, left; -+ gint arrow_width, arrow_height; - - gtk_notebook_get_arrow_rect (notebook, &arrow_rect, nbarrow); - - widget = GTK_WIDGET (notebook); -+ gtk_widget_style_get (widget, -+ "arrow-width", &arrow_width, -+ "arrow-height", &arrow_height, -+ NULL); - - is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - left = (ARROW_IS_LEFT (nbarrow) && !is_rtl) || -@@ -3112,7 +3309,7 @@ - gtk_paint_arrow (widget->style, widget->window, state_type, - shadow_type, NULL, widget, "notebook", - arrow, TRUE, arrow_rect.x, arrow_rect.y, -- ARROW_SIZE, ARROW_SIZE); -+ arrow_width, arrow_height); - } - } - -@@ -3143,13 +3340,25 @@ - gboolean is_rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL && - (tab_pos == GTK_POS_TOP || tab_pos == GTK_POS_BOTTOM)); - gint memo_x; -+ gboolean truncate = FALSE; -+ gint arrow_width, arrow_height, arrow_spacing, tab_overlap; -+ gint total_width, ideal_tab_width, n_expanding_tabs; - - if (!notebook->show_tabs || !notebook->children || !notebook->cur_page) - return; - -+ gtk_widget_style_get (widget, -+ "arrow-width", &arrow_width, -+ "arrow-height", &arrow_height, -+ "arrow-spacing", &arrow_spacing, -+ "tab-overlap", &tab_overlap, -+ NULL); -+ - child_allocation.x = widget->allocation.x + container->border_width; - child_allocation.y = widget->allocation.y + container->border_width; - -+ total_width = allocation->width - 2 * container->border_width - tab_overlap; -+ - switch (tab_pos) - { - case GTK_POS_BOTTOM: -@@ -3198,27 +3407,26 @@ - if (GTK_WIDGET_VISIBLE (page->child)) - tab_space += page->requisition.width; - } -- if (tab_space > -- allocation->width - 2 * container->border_width - TAB_OVERLAP) -+ if (tab_space > total_width) - { - showarrow = TRUE; - page = focus_tab->data; - -- tab_space = allocation->width - TAB_OVERLAP - -+ tab_space = allocation->width - tab_overlap - - page->requisition.width - 2 * container->border_width; - if (notebook->has_after_previous) -- tab_space -= ARROW_SPACING + ARROW_SIZE; -+ tab_space -= arrow_spacing + arrow_width; - if (notebook->has_after_next) -- tab_space -= ARROW_SPACING + ARROW_SIZE; -+ tab_space -= arrow_spacing + arrow_width; - if (notebook->has_before_previous) - { -- tab_space -= ARROW_SPACING + ARROW_SIZE; -- child_allocation.x += ARROW_SPACING + ARROW_SIZE; -+ tab_space -= arrow_spacing + arrow_width; -+ child_allocation.x += arrow_spacing + arrow_width; - } - if (notebook->has_before_next) - { -- tab_space -= ARROW_SPACING + ARROW_SIZE; -- child_allocation.x += ARROW_SPACING + ARROW_SIZE; -+ tab_space -= arrow_spacing + arrow_width; -+ child_allocation.x += arrow_spacing + arrow_width; - } - } - break; -@@ -3233,19 +3441,19 @@ - tab_space += page->requisition.height; - } - if (tab_space > -- (allocation->height - 2 * container->border_width - TAB_OVERLAP)) -+ (allocation->height - 2 * container->border_width - tab_overlap)) - { - showarrow = TRUE; - page = focus_tab->data; - tab_space = allocation->height -- - TAB_OVERLAP - 2 * container->border_width -+ - tab_overlap - 2 * container->border_width - - page->requisition.height; - if (notebook->has_after_previous || notebook->has_after_next) -- tab_space -= ARROW_SPACING + ARROW_SIZE; -+ tab_space -= arrow_spacing + arrow_height; - if (notebook->has_before_previous || notebook->has_before_next) - { -- tab_space -= ARROW_SPACING + ARROW_SIZE; -- child_allocation.y += ARROW_SPACING + ARROW_SIZE; -+ tab_space -= arrow_spacing + arrow_height; -+ child_allocation.y += arrow_spacing + arrow_height; - } - } - break; -@@ -3257,6 +3465,10 @@ - notebook->first_tab = focus_tab; - last_child = gtk_notebook_search_page (notebook, focus_tab, - STEP_NEXT, TRUE); -+ -+ /* Hildon: there is only one visible tab label -+ and it doesn't fit unless it is truncated */ -+ truncate = TRUE; - } - else - { -@@ -3413,7 +3625,7 @@ - } - tab_space -= allocation->height; - } -- tab_space += 2 * container->border_width + TAB_OVERLAP; -+ tab_space += 2 * container->border_width + tab_overlap; - tab_space *= -1; - notebook->first_tab = gtk_notebook_search_page (notebook, NULL, - STEP_NEXT, TRUE); -@@ -3432,12 +3644,29 @@ - if (showarrow) - { - if (notebook->has_after_previous) -- child_allocation.x -= ARROW_SPACING + ARROW_SIZE; -+ child_allocation.x -= arrow_spacing + arrow_width; - if (notebook->has_after_next) -- child_allocation.x -= ARROW_SPACING + ARROW_SIZE; -+ child_allocation.x -= arrow_spacing + arrow_width; - } - } - -+ ideal_tab_width = (total_width / n); -+ n_expanding_tabs = 0; -+ -+ while (children) -+ { -+ if (children == last_child) -+ break; -+ -+ page = children->data; -+ children = gtk_notebook_search_page (notebook, children, STEP_NEXT,TRUE); -+ -+ if (page->requisition.width <= ideal_tab_width) -+ n_expanding_tabs++; -+ } -+ -+ children = notebook->first_tab; -+ - while (children) - { - if (children == last_child) -@@ -3452,9 +3681,11 @@ - children = gtk_notebook_search_page (notebook, children, STEP_NEXT,TRUE); - - delta = 0; -- if (n && (showarrow || page->expand || notebook->homogeneous)) -+ -+ if (n && (showarrow || page->expand || notebook->homogeneous) && -+ (page->requisition.width <= ideal_tab_width)) - { -- new_fill = (tab_space * i++) / n; -+ new_fill = (tab_space * i++) / n_expanding_tabs; - delta = new_fill - old_fill; - old_fill = new_fill; - } -@@ -3463,15 +3694,18 @@ - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: -+ if (truncate) -+ delta *= -1; -+ - child_allocation.width = (page->requisition.width + -- TAB_OVERLAP + delta); -+ tab_overlap + delta); - if (is_rtl) - child_allocation.x -= child_allocation.width; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - child_allocation.height = (page->requisition.height + -- TAB_OVERLAP + delta); -+ tab_overlap + delta); - break; - } - -@@ -3482,13 +3716,13 @@ - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (!is_rtl) -- child_allocation.x += child_allocation.width - TAB_OVERLAP; -+ child_allocation.x += child_allocation.width - tab_overlap; - else -- child_allocation.x += TAB_OVERLAP; -+ child_allocation.x += tab_overlap; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: -- child_allocation.y += child_allocation.height - TAB_OVERLAP; -+ child_allocation.y += child_allocation.height - tab_overlap; - break; - } - -@@ -3538,14 +3772,14 @@ - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - child_allocation.width = (page->requisition.width + -- TAB_OVERLAP + delta); -+ tab_overlap + delta); - if (!is_rtl) - child_allocation.x -= child_allocation.width; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - child_allocation.height = (page->requisition.height + -- TAB_OVERLAP + delta); -+ tab_overlap + delta); - child_allocation.y -= child_allocation.height; - break; - } -@@ -3557,13 +3791,13 @@ - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (!is_rtl) -- child_allocation.x += TAB_OVERLAP; -+ child_allocation.x += tab_overlap; - else -- child_allocation.x += child_allocation.width - TAB_OVERLAP; -+ child_allocation.x += child_allocation.width - tab_overlap; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: -- child_allocation.y += TAB_OVERLAP; -+ child_allocation.y += tab_overlap; - break; - } - -@@ -3589,8 +3823,12 @@ - gint padding; - gint focus_width; - gint tab_pos = get_effective_tab_pos (notebook); -+ gint tab_curvature; - -- gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL); -+ gtk_widget_style_get (widget, -+ "focus-line-width", &focus_width, -+ "tab-curvature", &tab_curvature, -+ NULL); - - xthickness = widget->style->xthickness; - ythickness = widget->style->ythickness; -@@ -3621,7 +3859,7 @@ - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: -- padding = TAB_CURVATURE + focus_width + notebook->tab_hborder; -+ padding = tab_curvature + focus_width + notebook->tab_hborder; - if (page->fill) - { - child_allocation.x = (xthickness + focus_width + -@@ -3646,7 +3884,7 @@ - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: -- padding = TAB_CURVATURE + focus_width + notebook->tab_vborder; -+ padding = tab_curvature + focus_width + notebook->tab_vborder; - if (page->fill) - { - child_allocation.y = ythickness + padding; -@@ -4340,7 +4578,7 @@ - } - page->tab_label = tab_label; - page->menu_label = menu_label; -- page->expand = FALSE; -+ page->expand = TRUE; - page->fill = TRUE; - page->pack = GTK_PACK_START; - -@@ -5046,6 +5284,7 @@ - { - page->default_tab = FALSE; - page->tab_label = tab_label; -+ - gtk_widget_set_parent (page->tab_label, GTK_WIDGET (notebook)); - } - else diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogress.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogress.c.diff deleted file mode 100644 index 07302bbab8..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogress.c.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkprogress.c 2004-10-28 18:00:04.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkprogress.c 2005-04-06 16:19:37.066903336 +0300 -@@ -371,6 +371,17 @@ - widget->allocation.width, - widget->allocation.height, - -1); -+ -+ /* OSSO addition : clear the pixmap first or transparent images -+ * painted on top of it may look stupid when it's blended against -+ * random memory.*/ -+ gtk_paint_flat_box (widget->style, -+ progress->offscreen_pixmap, -+ GTK_STATE_NORMAL, -+ GTK_SHADOW_NONE, -+ NULL, widget, NULL, -+ 0, 0, widget->allocation.width, widget->allocation.height); -+ - GTK_PROGRESS_GET_CLASS (progress)->paint (progress); - } - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogressbar.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogressbar.c.diff deleted file mode 100644 index 097e348c41..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkprogressbar.c.diff +++ /dev/null @@ -1,141 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkprogressbar.c 2005-01-09 19:32:25.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkprogressbar.c 2005-04-06 16:19:37.112896344 +0300 -@@ -40,11 +40,18 @@ - - - #define MIN_HORIZONTAL_BAR_WIDTH 150 --#define MIN_HORIZONTAL_BAR_HEIGHT 20 -+#define MIN_HORIZONTAL_BAR_HEIGHT 30 /* OSSO mod. was 20 */ - #define MIN_VERTICAL_BAR_WIDTH 22 - #define MIN_VERTICAL_BAR_HEIGHT 80 - #define MAX_TEXT_LENGTH 80 --#define TEXT_SPACING 2 -+#define DEFAULT_TEXT_SPACING 2 /* OSSO mod. Changed from -+ * TEXT_SPACING. Now controlled -+ * by "text-spacing" style -+ * property */ -+#define DEFAULT_WIDTH_INCREMENT 3 -+#define DEFAULT_HEIGHT_INCREMENT 3 -+#define DEFAULT_TEXT_XNUDGE 1 -+#define DEFAULT_TEXT_YNUDGE 1 - - enum { - PROP_0, -@@ -245,6 +252,51 @@ - PANGO_ELLIPSIZE_NONE, - G_PARAM_READWRITE)); - -+ /* OSSO addition. */ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("text-spacing", -+ "Text Spacing", -+ "The amount of pixels between the trough and text.", -+ G_MININT, -+ G_MAXINT, -+ DEFAULT_TEXT_SPACING, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("width-increment", -+ "width Increment", -+ "The amount of pixels to add to the width size request.", -+ G_MININT, -+ G_MAXINT, -+ DEFAULT_WIDTH_INCREMENT, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("height-increment", -+ "Height Increment", -+ "The amount of pixels to add to the height size request.", -+ G_MININT, -+ G_MAXINT, -+ DEFAULT_WIDTH_INCREMENT, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("text-xnudge", -+ "Text XNudge", -+ "Amount of pixels to move the text x position.", -+ G_MININT, -+ G_MAXINT, -+ DEFAULT_TEXT_XNUDGE, -+ G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("text-ynudge", -+ "Text YNudge", -+ "Amount of pixels to move the text y position.", -+ G_MININT, -+ G_MAXINT, -+ DEFAULT_TEXT_YNUDGE, -+ G_PARAM_READWRITE)); - } - - static void -@@ -364,7 +416,9 @@ - { - GtkWidget *pbar; - -- pbar = gtk_widget_new (GTK_TYPE_PROGRESS_BAR, NULL); -+ pbar = gtk_widget_new (GTK_TYPE_PROGRESS_BAR, -+ "text-xalign", 0.0, /* OSSO addition. */ -+ NULL); - - return pbar; - } -@@ -494,15 +548,23 @@ - PangoRectangle logical_rect; - PangoLayout *layout; - gint width, height; -+ gint text_spacing; -+ gint width_increment, height_increment; - - g_return_if_fail (GTK_IS_PROGRESS_BAR (widget)); - g_return_if_fail (requisition != NULL); -+ -+ gtk_widget_style_get (widget, -+ "text-spacing", &text_spacing, -+ "width-increment", &width_increment, -+ "height-increment", &height_increment, -+ NULL); - - progress = GTK_PROGRESS (widget); - pbar = GTK_PROGRESS_BAR (widget); - -- width = 2 * widget->style->xthickness + 3 + 2 * TEXT_SPACING; -- height = 2 * widget->style->ythickness + 3 + 2 * TEXT_SPACING; -+ width = 2 * widget->style->xthickness + width_increment + 2 * text_spacing; -+ height = 2 * widget->style->ythickness + height_increment + 2 * text_spacing; - - if (progress->show_text && pbar->bar_style != GTK_PROGRESS_DISCRETE) - { -@@ -780,6 +842,13 @@ - PangoRectangle logical_rect; - GdkRectangle prelight_clip, normal_clip; - -+ gint text_xnudge, text_ynudge; -+ -+ gtk_widget_style_get (widget, -+ "text-xnudge", &text_xnudge, -+ "text-ynudge", &text_ynudge, -+ NULL); -+ - buf = gtk_progress_get_current_text (progress); - - layout = gtk_widget_create_pango_layout (widget, buf); -@@ -789,12 +858,12 @@ - - pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - -- x = widget->style->xthickness + 1 + -+ x = widget->style->xthickness + text_xnudge + - (widget->allocation.width - 2 * widget->style->xthickness - - 2 - logical_rect.width) - * progress->x_align; - -- y = widget->style->ythickness + 1 + -+ y = widget->style->ythickness + text_ynudge + - (widget->allocation.height - 2 * widget->style->ythickness - - 2 - logical_rect.height) - * progress->y_align; diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkradiobutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkradiobutton.c.diff deleted file mode 100644 index f4669c6d9f..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkradiobutton.c.diff +++ /dev/null @@ -1,244 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkradiobutton.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkradiobutton.c 2005-04-06 16:19:37.126894216 +0300 -@@ -31,6 +31,7 @@ - #include "gtkradiobutton.h" - #include "gtkintl.h" - -+#define TOGGLE_ON_CLICK "toggle-on-click" - - enum { - PROP_0, -@@ -506,6 +507,9 @@ - { - tmp_list = tmp_list->next; - -+ if( !tmp_list ) -+ return FALSE; -+ - while (tmp_list) - { - GtkWidget *child = tmp_list->data; -@@ -543,7 +547,10 @@ - if (new_focus) - { - gtk_widget_grab_focus (new_focus); -- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (new_focus), TRUE); -+ -+ /* arrow keys select the button ? CHECK THIS!! -+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (new_focus), TRUE); -+ */ - } - - return TRUE; -@@ -579,7 +586,7 @@ - GtkToggleButton *toggle_button; - GtkRadioButton *radio_button; - GtkToggleButton *tmp_button; -- GtkStateType new_state; -+ GtkStateType new_state = GTK_WIDGET_STATE( button ); - GSList *tmp_list; - gint toggled; - gboolean depressed; -@@ -591,52 +598,54 @@ - g_object_ref (GTK_WIDGET (button)); - - if (toggle_button->active) -- { -- tmp_button = NULL; -- tmp_list = radio_button->group; -- -- while (tmp_list) -- { -- tmp_button = tmp_list->data; -- tmp_list = tmp_list->next; -+ { -+ tmp_button = NULL; -+ tmp_list = radio_button->group; - -- if (tmp_button->active && tmp_button != toggle_button) -- break; -+ while (tmp_list) -+ { -+ tmp_button = tmp_list->data; -+ tmp_list = tmp_list->next; -+ -+ if (tmp_button->active && tmp_button != toggle_button) -+ break; - -- tmp_button = NULL; -- } -+ tmp_button = NULL; -+ } - -- if (!tmp_button) -- { -- new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_ACTIVE); -+ if (!tmp_button) -+ { -+ new_state = (button->in_button ? -+ GTK_STATE_PRELIGHT : GTK_STATE_ACTIVE); -+ } -+ else -+ { -+ toggled = TRUE; -+ toggle_button->active = !toggle_button->active; -+ new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL); -+ } - } - else - { - toggled = TRUE; - toggle_button->active = !toggle_button->active; -- new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL); -- } -- } -- else -- { -- toggled = TRUE; -- toggle_button->active = !toggle_button->active; - -- tmp_list = radio_button->group; -- while (tmp_list) -- { -- tmp_button = tmp_list->data; -- tmp_list = tmp_list->next; -- -- if (tmp_button->active && (tmp_button != toggle_button)) -+ tmp_list = radio_button->group; -+ while (tmp_list) - { -- gtk_button_clicked (GTK_BUTTON (tmp_button)); -- break; -+ tmp_button = tmp_list->data; -+ tmp_list = tmp_list->next; -+ -+ if (tmp_button->active && (tmp_button != toggle_button)) -+ { -+ gtk_button_clicked (GTK_BUTTON (tmp_button)); -+ break; -+ } - } -+ -+ new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_ACTIVE); - } - -- new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_ACTIVE); -- } - - if (toggle_button->inconsistent) - depressed = FALSE; -@@ -663,7 +672,6 @@ - GdkRectangle *area) - { - GtkWidget *widget; -- GtkWidget *child; - GtkButton *button; - GtkToggleButton *toggle_button; - GtkStateType state_type; -@@ -686,54 +694,80 @@ - "focus-padding", &focus_pad, - NULL); - -- _gtk_check_button_get_props (check_button, &indicator_size, &indicator_spacing); -- -- x = widget->allocation.x + indicator_spacing + GTK_CONTAINER (widget)->border_width; -- y = widget->allocation.y + (widget->allocation.height - indicator_size) / 2; -- -- child = GTK_BIN (check_button)->child; -- if (!interior_focus || !(child && GTK_WIDGET_VISIBLE (child))) -- x += focus_width + focus_pad; -+ _gtk_check_button_get_props (check_button, -+ &indicator_size, &indicator_spacing); - -+ x = widget->allocation.x + indicator_spacing + -+ GTK_CONTAINER (widget)->border_width; -+ y = widget->allocation.y + (widget->allocation.height - -+ indicator_size + focus_width + -+ focus_pad) / 2; -+ -+ /* Hildon - always add space for the padding -+ */ -+ x += focus_width + focus_pad; -+ - if (toggle_button->inconsistent) -- shadow_type = GTK_SHADOW_ETCHED_IN; -+ shadow_type = GTK_SHADOW_ETCHED_IN; -+ - else if (toggle_button->active) -- shadow_type = GTK_SHADOW_IN; -+ shadow_type = GTK_SHADOW_IN; -+ - else -- shadow_type = GTK_SHADOW_OUT; -+ shadow_type = GTK_SHADOW_OUT; -+ -+ if (button->activate_timeout || -+ (button->button_down && button->in_button) ) -+ state_type = GTK_STATE_ACTIVE; - -- if (button->activate_timeout || (button->button_down && button->in_button)) -- state_type = GTK_STATE_ACTIVE; - else if (button->in_button) -- state_type = GTK_STATE_PRELIGHT; -+ state_type = GTK_STATE_PRELIGHT; -+ - else if (!GTK_WIDGET_IS_SENSITIVE (widget)) - state_type = GTK_STATE_INSENSITIVE; -+ - else -- state_type = GTK_STATE_NORMAL; -+ state_type = GTK_STATE_NORMAL; - -+ /* Hildon change. We want to draw active image always when we have -+ * focus. */ -+ if (GTK_WIDGET_HAS_FOCUS (widget)) -+ state_type = GTK_STATE_ACTIVE; -+ - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- x = widget->allocation.x + widget->allocation.width - (indicator_size + x - widget->allocation.x); -- -+ { -+ x = widget->allocation.x + widget->allocation.width - -+ (indicator_size + x - widget->allocation.x); -+ } -+ /* Well, commenting this out fixes bug #280, -+ without apparent side effects. -+ * - if (GTK_WIDGET_STATE (toggle_button) == GTK_STATE_PRELIGHT) - { - GdkRectangle restrict_area; - GdkRectangle new_area; - -- restrict_area.x = widget->allocation.x + GTK_CONTAINER (widget)->border_width; -- restrict_area.y = widget->allocation.y + GTK_CONTAINER (widget)->border_width; -- restrict_area.width = widget->allocation.width - (2 * GTK_CONTAINER (widget)->border_width); -- restrict_area.height = widget->allocation.height - (2 * GTK_CONTAINER (widget)->border_width); -+ restrict_area.x = widget->allocation.x + -+ GTK_CONTAINER (widget)->border_width; -+ restrict_area.y = widget->allocation.y + -+ GTK_CONTAINER (widget)->border_width; -+ restrict_area.width = widget->allocation.width - -+ (2 * GTK_CONTAINER (widget)->border_width); -+ restrict_area.height = widget->allocation.height - -+ (2 * GTK_CONTAINER (widget)->border_width); - - if (gdk_rectangle_intersect (area, &restrict_area, &new_area)) - { -- gtk_paint_flat_box (widget->style, widget->window, GTK_STATE_PRELIGHT, -- GTK_SHADOW_ETCHED_OUT, -- area, widget, "checkbutton", -- new_area.x, new_area.y, -- new_area.width, new_area.height); -+ gtk_paint_flat_box (widget->style, widget->window, -+ GTK_STATE_PRELIGHT, -+ GTK_SHADOW_ETCHED_OUT, -+ area, widget, "checkbutton", -+ new_area.x, new_area.y, -+ new_area.width, new_area.height); - } - } - -+ */ - gtk_paint_option (widget->style, widget->window, - state_type, shadow_type, - area, widget, "radiobutton", diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.c.diff deleted file mode 100644 index 867d2b1d46..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.c.diff +++ /dev/null @@ -1,845 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkrange.c 2004-11-10 05:20:11.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkrange.c 2005-04-06 16:19:37.788793592 +0300 -@@ -25,6 +25,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list -+ * of changes. -+ */ -+ - #include <config.h> - #include <stdio.h> - #include <math.h> -@@ -44,7 +48,10 @@ - PROP_0, - PROP_UPDATE_POLICY, - PROP_ADJUSTMENT, -- PROP_INVERTED -+ PROP_INVERTED, -+ PROP_STREAM_INDICATOR, -+ PROP_MINIMUM_VISIBLE_BARS, -+ PROP_STREAM_POSITION - }; - - enum { -@@ -88,8 +95,20 @@ - /* "grabbed" mouse location, OUTSIDE for no grab */ - MouseLocation grab_location; - gint grab_button; /* 0 if none */ -+ -+ /* OSSO hack: stream trough split position */ -+ gint stream_pixel_position; -+ gint minimum_visible_bars; - }; - -+#define OSSO_GTK_RANGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_RANGE, OssoGtkRangePrivate)) -+typedef struct _OssoGtkRangePrivate OssoGtkRangePrivate; -+ -+struct _OssoGtkRangePrivate -+{ -+ gboolean stream_indicator; -+ gdouble stream_position; -+}; - - static void gtk_range_class_init (GtkRangeClass *klass); - static void gtk_range_init (GtkRange *range); -@@ -135,6 +154,7 @@ - gint mouse_x, - gint mouse_y); - -+static gint osso_gtk_range_focus_out (GtkWidget *widget, GdkEventFocus *event); - - /* Range methods */ - -@@ -247,6 +267,9 @@ - widget_class->state_changed = gtk_range_state_changed; - widget_class->style_set = gtk_range_style_set; - -+ /* OSSO addition (see bug #1653) */ -+ widget_class->focus_out_event = osso_gtk_range_focus_out; -+ - class->move_slider = gtk_range_move_slider; - class->change_value = gtk_range_real_change_value; - -@@ -344,6 +367,34 @@ - FALSE, - G_PARAM_READWRITE)); - -+ g_object_class_install_property (gobject_class, -+ PROP_STREAM_INDICATOR, -+ g_param_spec_boolean ("stream_indicator", -+ P_("Stream Indicator"), -+ P_("Whether to display a stream indicator graphics on trough."), -+ FALSE, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -+ -+ g_object_class_install_property (gobject_class, -+ PROP_MINIMUM_VISIBLE_BARS, -+ g_param_spec_int ("minimum_visible_bars", -+ P_("Minimum visible bars"), -+ P_("The minimum number of visible bars in a HildonControlBar"), -+ 0, -+ G_MAXINT, -+ 0, -+ G_PARAM_READWRITE)); -+ -+ g_object_class_install_property (gobject_class, -+ PROP_STREAM_POSITION, -+ g_param_spec_double ("stream_position", -+ P_("Stream Position"), -+ P_("The position of the streaming."), -+ -G_MAXDOUBLE, -+ G_MAXDOUBLE, -+ 0.0, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -+ - gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("slider_width", - P_("Slider Width"), -@@ -392,6 +443,52 @@ - G_MAXINT, - 0, - G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("hildonlike", -+ _("hildonlike"), -+ _("Change focus out behaviour, 1/0"), -+ FALSE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("two_part_trough", -+ _("Two-part trough"), -+ _("Allow different trough graphics on different sides of the slider, 1/0"), -+ FALSE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("stream_indicator_padding", -+ P_("Stream Indicator Padding"), -+ P_("How many pixels smallerthan the trough the stream indicator is drawn from both ends ."), -+ 0, -+ G_MAXINT, -+ 1, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("autodimmed_steppers", -+ _("Autodimmed steppers"), -+ _("Automatically dim steppers when maximum or minimum value has been reached"), -+ FALSE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("arrow_paint_box_layout", -+ _("Arrow paint box layout"), -+ _("Allows to use images instead of normal arrows."), -+ FALSE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("draw_trough_under_steppers", -+ _("Draw trough under steppers"), -+ _("Whether to draw trought for full length of range or exclude the steppers and spacing"), -+ TRUE, -+ G_PARAM_READABLE)); -+ -+ g_type_class_add_private (gobject_class, sizeof (OssoGtkRangePrivate)); - } - - static void -@@ -415,6 +512,15 @@ - case PROP_INVERTED: - gtk_range_set_inverted (range, g_value_get_boolean (value)); - break; -+ case PROP_STREAM_INDICATOR: -+ osso_gtk_range_set_stream_indicator (range, g_value_get_boolean (value)); -+ break; -+ case PROP_STREAM_POSITION: -+ osso_gtk_range_set_stream_position (range, g_value_get_double (value)); -+ break; -+ case PROP_MINIMUM_VISIBLE_BARS: -+ range->layout->minimum_visible_bars = g_value_get_int(value); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -442,6 +548,15 @@ - case PROP_INVERTED: - g_value_set_boolean (value, range->inverted); - break; -+ case PROP_STREAM_INDICATOR: -+ g_value_set_boolean (value, osso_gtk_range_get_stream_indicator (range)); -+ break; -+ case PROP_STREAM_POSITION: -+ g_value_set_double (value, osso_gtk_range_get_stream_indicator (range)); -+ break; -+ case PROP_MINIMUM_VISIBLE_BARS: -+ g_value_set_int (value, range->layout->minimum_visible_bars); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -451,6 +566,7 @@ - static void - gtk_range_init (GtkRange *range) - { -+ OssoGtkRangePrivate *priv = OSSO_GTK_RANGE_GET_PRIVATE (range); - GTK_WIDGET_SET_FLAGS (range, GTK_NO_WINDOW); - - range->adjustment = NULL; -@@ -471,6 +587,9 @@ - range->layout->grab_location = MOUSE_OUTSIDE; - range->layout->grab_button = 0; - range->timer = NULL; -+ -+ priv->stream_indicator = FALSE; -+ priv->stream_position = 0.0; - } - - /** -@@ -584,7 +703,10 @@ - g_signal_connect (adjustment, "changed", - G_CALLBACK (gtk_range_adjustment_changed), - range); -- g_signal_connect (adjustment, "value_changed", -+ /* OSSO modification : Changed for controlbar. -+ * There we intercept this signal and put forth -+ * our own, with modified parameters. */ -+ g_signal_connect_after (adjustment, "value_changed", - G_CALLBACK (gtk_range_adjustment_value_changed), - range); - -@@ -677,16 +799,21 @@ - gdouble max) - { - gdouble value; -+ OssoGtkRangePrivate *priv; - - g_return_if_fail (GTK_IS_RANGE (range)); - g_return_if_fail (min < max); - -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ - range->adjustment->lower = min; - range->adjustment->upper = max; - - value = CLAMP (range->adjustment->value, - range->adjustment->lower, - (range->adjustment->upper - range->adjustment->page_size)); -+ if (priv->stream_indicator && value > priv->stream_position) -+ value = (gdouble)priv->stream_position; - - gtk_adjustment_set_value (range->adjustment, value); - gtk_adjustment_changed (range->adjustment); -@@ -707,10 +834,16 @@ - gtk_range_set_value (GtkRange *range, - gdouble value) - { -+ OssoGtkRangePrivate *priv; -+ - g_return_if_fail (GTK_IS_RANGE (range)); - -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ - value = CLAMP (value, range->adjustment->lower, - (range->adjustment->upper - range->adjustment->page_size)); -+ if (priv->stream_indicator && value > priv->stream_position) -+ value = (gdouble)priv->stream_position; - - gtk_adjustment_set_value (range->adjustment, value); - } -@@ -913,6 +1046,10 @@ - gint arrow_width; - gint arrow_height; - -+ /* OSSO modification: state of our style properties */ -+ gboolean autodimmed_steppers = FALSE; -+ gboolean arrow_paint_box_layout = FALSE; -+ - /* More to get the right clip region than for efficiency */ - if (!gdk_rectangle_intersect (area, rect, &intersection)) - return; -@@ -929,6 +1066,37 @@ - else - state_type = GTK_STATE_NORMAL; - -+ /* OSSO modification : read all of our style properties needed in this func */ -+ gtk_widget_style_get (widget, -+ "autodimmed_steppers", &autodimmed_steppers, -+ "arrow_paint_box_layout", &arrow_paint_box_layout, -+ NULL); -+ -+ /* OSSO modification : dim the stepper if maximum or minimum value has been reached */ -+ if (autodimmed_steppers) -+ { -+ OssoGtkRangePrivate *priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ if (((!range->inverted && (arrow_type == GTK_ARROW_DOWN || -+ arrow_type == GTK_ARROW_RIGHT)) || -+ (range->inverted && (arrow_type == GTK_ARROW_UP || -+ arrow_type == GTK_ARROW_LEFT))) && -+ range->adjustment->value >= -+ (priv->stream_indicator -+ ? priv->stream_position -+ : range->adjustment->upper - range->adjustment->page_size)) -+ { -+ state_type = GTK_STATE_INSENSITIVE; -+ } -+ else if (((!range->inverted && (arrow_type == GTK_ARROW_UP || -+ arrow_type == GTK_ARROW_LEFT)) || -+ (range->inverted && (arrow_type == GTK_ARROW_DOWN || -+ arrow_type == GTK_ARROW_RIGHT))) && -+ range->adjustment->value <= range->adjustment->lower) -+ { -+ state_type = GTK_STATE_INSENSITIVE; -+ } -+ } -+ - if (clicked) - shadow_type = GTK_SHADOW_IN; - else -@@ -944,10 +1112,20 @@ - rect->width, - rect->height); - -- arrow_width = rect->width / 2; -- arrow_height = rect->height / 2; -- arrow_x = widget->allocation.x + rect->x + (rect->width - arrow_width) / 2; -- arrow_y = widget->allocation.y + rect->y + (rect->height - arrow_height) / 2; -+ if (arrow_paint_box_layout) -+ { -+ arrow_width = rect->width; -+ arrow_height = rect->height; -+ arrow_x = widget->allocation.x + rect->x; -+ arrow_y = widget->allocation.y + rect->y; -+ } -+ else -+ { -+ arrow_width = rect->width / 2; -+ arrow_height = rect->height / 2; -+ arrow_x = widget->allocation.x + rect->x + (rect->width - arrow_width) / 2; -+ arrow_y = widget->allocation.y + rect->y + (rect->height - arrow_height) / 2; -+ } - - if (clicked) - { -@@ -982,8 +1160,11 @@ - GdkRectangle area; - gint focus_line_width = 0; - gint focus_padding = 0; -+ OssoGtkRangePrivate *priv; - - range = GTK_RANGE (widget); -+ -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); - - if (GTK_WIDGET_CAN_FOCUS (range)) - { -@@ -1011,18 +1192,118 @@ - if (gdk_rectangle_intersect (&expose_area, &range->range_rect, - &area)) - { -+ gint x = widget->allocation.x + range->range_rect.x + focus_line_width + focus_padding; -+ gint y = widget->allocation.y + range->range_rect.y + focus_line_width + focus_padding; -+ gint width = range->range_rect.width - 2 * (focus_line_width + focus_padding); -+ gint height = range->range_rect.height - 2 * (focus_line_width + focus_padding); -+ gint *virtual_position, *virtual_size; -+ gboolean two_part_trough = 0; -+ gint stepper_size = 0; -+ gint stepper_spacing = 0; -+ gboolean draw_trough_under_steppers = TRUE; -+ - area.x += widget->allocation.x; - area.y += widget->allocation.y; -+ -+ gtk_widget_style_get (GTK_WIDGET (range), -+ "two_part_trough", &two_part_trough, -+ "stepper_size", &stepper_size, -+ "stepper_spacing", &stepper_spacing, -+ "draw_trough_under_steppers", &draw_trough_under_steppers, -+ NULL); -+ -+ if (range->orientation == GTK_ORIENTATION_HORIZONTAL) -+ { -+ virtual_position = &x; -+ virtual_size = &width; -+ } -+ else -+ { -+ virtual_position = &y; -+ virtual_size = &height; -+ } -+ -+ if (draw_trough_under_steppers == FALSE) -+ { -+ *virtual_position += stepper_size + stepper_spacing; -+ *virtual_size -= 2 * (stepper_size + stepper_spacing); -+ } - -- gtk_paint_box (widget->style, -- widget->window, -- sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, -- GTK_SHADOW_IN, -- &area, GTK_WIDGET(range), "trough", -- widget->allocation.x + range->range_rect.x + focus_line_width + focus_padding, -- widget->allocation.y + range->range_rect.y + focus_line_width + focus_padding, -- range->range_rect.width - 2 * (focus_line_width + focus_padding), -- range->range_rect.height - 2 * (focus_line_width + focus_padding)); -+ if (two_part_trough == FALSE) -+ { -+ gtk_paint_box (widget->style, -+ widget->window, -+ sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_IN, -+ &area, GTK_WIDGET(range), "trough", -+ x, y, -+ width, height); -+ } -+ else -+ { -+ gint trough_change_pos_x = width; -+ gint trough_change_pos_y = height; -+ -+ if (range->orientation == GTK_ORIENTATION_HORIZONTAL) -+ trough_change_pos_x = range->layout->slider.x + (range->layout->slider.width / 2) - stepper_size - stepper_spacing; -+ else -+ trough_change_pos_y = range->layout->slider.y + (range->layout->slider.height / 2) - stepper_size - stepper_spacing; -+ -+ gtk_paint_box (widget->style, -+ widget->window, -+ sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_IN, -+ &area, GTK_WIDGET(range), "trough_northwest", -+ x, y, -+ trough_change_pos_x, trough_change_pos_y); -+ -+ if (range->orientation == GTK_ORIENTATION_HORIZONTAL) -+ trough_change_pos_y = 0; -+ else -+ trough_change_pos_x = 0; -+ -+ gtk_paint_box (widget->style, -+ widget->window, -+ sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_IN, -+ &area, GTK_WIDGET(range), "trough_southeast", -+ x + trough_change_pos_x, y + trough_change_pos_y, -+ width - trough_change_pos_x, height - trough_change_pos_y); -+ } -+ -+ /* Stream indicator drawing does not support inverted state. */ -+ if (priv->stream_indicator) -+ { -+ gchar *used_detail; -+ gint stream_start_pos_x = 0; -+ gint stream_start_pos_y = 0; -+ gint stream_width = width; -+ gint stream_height = height; -+ -+ if (range->orientation == GTK_ORIENTATION_HORIZONTAL) -+ { -+ stream_start_pos_x = range->layout->slider.x; -+ stream_width = range->layout->stream_pixel_position - stream_start_pos_x; -+ } -+ else -+ { -+ stream_start_pos_y = range->layout->slider.y; -+ stream_height = range->layout->stream_pixel_position - stream_start_pos_y; -+ } -+ -+ if (priv->stream_position == range->adjustment->upper) -+ used_detail = "trough_stream_complete"; -+ else -+ used_detail = "trough_stream"; -+ -+ gtk_paint_box (widget->style, -+ widget->window, -+ sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, -+ GTK_SHADOW_IN, -+ &area, GTK_WIDGET(range), used_detail, -+ widget->allocation.x + stream_start_pos_x, widget->allocation.y + stream_start_pos_y, -+ stream_width, stream_height); -+ } - - - if (sensitive && -@@ -1189,19 +1470,41 @@ - { - gdouble frac; - gdouble value; -- -- if (range->orientation == GTK_ORIENTATION_VERTICAL) -+ gint stepper_spacing = 0; -+ gint minimum_visible_blocks = 0; -+ gint magic_value = 0; -+ -+ g_object_get(range, "minimum_visible_bars", &minimum_visible_blocks, NULL); -+ -+ g_print("coord = %d\n", coord); -+ gtk_widget_style_get (GTK_WIDGET (range), -+ "stepper_spacing", &stepper_spacing, -+ NULL); -+ -+ if (range->orientation == GTK_ORIENTATION_VERTICAL) { -+ if (minimum_visible_blocks > 0) -+ magic_value = ((range->layout->trough.height -(2*stepper_spacing)) / (range->adjustment->upper - range->adjustment->lower + 1)) * minimum_visible_blocks; - if (range->layout->trough.height == range->layout->slider.height) - frac = 1.0; - else -- frac = ((coord - range->layout->trough.y) / -- (gdouble) (range->layout->trough.height - range->layout->slider.height)); -- else -+ frac = ((coord - range->layout->trough.y - magic_value - stepper_spacing) / -+ (gdouble) (range->layout->trough.height - magic_value - range->layout->slider.height - (2 * stepper_spacing))); -+ } -+ else { -+ if (minimum_visible_blocks > 0) -+ magic_value = ((range->layout->trough.width -(2*stepper_spacing)) / (range->adjustment->upper - range->adjustment->lower + 1)) * minimum_visible_blocks; - if (range->layout->trough.width == range->layout->slider.width) - frac = 1.0; - else -- frac = ((coord - range->layout->trough.x) / -- (gdouble) (range->layout->trough.width - range->layout->slider.width)); -+ frac = ((coord - range->layout->trough.x - magic_value - stepper_spacing) / -+ (gdouble) (range->layout->trough.width - magic_value - range->layout->slider.width - (2 * stepper_spacing))); -+ } -+ -+ if (frac < 0.0) -+ frac = 0.0; -+ else -+ if (frac > 1.0) -+ frac = 1.0; - - if (should_invert (range)) - frac = 1.0 - frac; -@@ -1242,6 +1545,8 @@ - range->orientation == GTK_ORIENTATION_VERTICAL ? - event->y : event->x); - -+ g_print("button_press: calling coord_to_value with %d, click value = %d\n", event->x, click_value); -+ - range->trough_click_forward = click_value > range->adjustment->value; - range_grab_add (range, MOUSE_TROUGH, event->button); - -@@ -1286,7 +1591,9 @@ - * On button 2 press, we warp the slider to mouse position, - * then begin the slider drag. - */ -- if (event->button == 2) -+ /* OSSO modification : We want this to be -+ * the default behaviour. */ -+ if (range->layout->mouse_location == MOUSE_TROUGH) - { - gdouble slider_low_value, slider_high_value, new_value; - -@@ -1299,7 +1606,10 @@ - range->orientation == GTK_ORIENTATION_VERTICAL ? - event->y - range->layout->slider.height : - event->x - range->layout->slider.width); -- -+ -+ g_print("calling coord_to_value with %d\n", event->x); -+ g_print("calling coord_to_value with %d\n", range->orientation == GTK_ORIENTATION_VERTICAL? event->y-range->layout->slider.height:event->x-range->layout->slider.width); -+ - /* compute new value for warped slider */ - new_value = slider_low_value + (slider_high_value - slider_low_value) / 2; - -@@ -1353,8 +1663,10 @@ - else - delta = mouse_x - range->slide_initial_coordinate; - -+ delta += -4; - c = range->slide_initial_slider_position + delta; - -+ g_print("delta = %d, calling coord_to_value with %d + delta = %d\n", delta, range->slide_initial_slider_position, c); - new_value = coord_to_value (range, c); - - g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_JUMP, new_value, -@@ -1395,9 +1707,12 @@ - - if (range->layout->grab_button == event->button) - { -+ /* OSSO modification : Commented out. -+ * Not sure about the reason unfortunately. */ -+/* - if (range->layout->grab_location == MOUSE_SLIDER) - update_slider_position (range, range->layout->mouse_x, range->layout->mouse_y); -- -+*/ - stop_scrolling (range); - - return TRUE; -@@ -2026,6 +2341,7 @@ - GdkRectangle range_rect; - GtkRangeLayout *layout; - GtkWidget *widget; -+ gint minimum_visible_bars = 0; - - if (!range->need_recalc) - return; -@@ -2047,6 +2363,8 @@ - &slider_width, &stepper_size, &trough_border, &stepper_spacing, - NULL, NULL); - -+ g_object_get(range, "minimum_visible_bars", &minimum_visible_bars, NULL); -+ - gtk_range_calc_request (range, - slider_width, stepper_size, trough_border, stepper_spacing, - &range_rect, &border, &n_steppers, &slider_length); -@@ -2167,10 +2485,13 @@ - /* Compute slider position/length */ - { - gint y, bottom, top, height; -- -- top = layout->trough.y + stepper_spacing; -- bottom = layout->trough.y + layout->trough.height - stepper_spacing; -- -+ gint magic_value; -+ -+ magic_value = (layout->trough.height / (range->adjustment->upper - range->adjustment->lower + 1)); -+ -+ top = layout->trough.y + stepper_spacing + (minimum_visible_bars * magic_value); -+ bottom = layout->trough.y + layout->trough.height - stepper_spacing; -+ - /* slider height is the fraction (page_size / - * total_adjustment_range) times the trough height in pixels - */ -@@ -2307,8 +2628,11 @@ - /* Compute slider position/length */ - { - gint x, left, right, width; -+ gint magic_value; -+ -+ magic_value = (layout->trough.width / (range->adjustment->upper - range->adjustment->lower + 1)); - -- left = layout->trough.x + stepper_spacing; -+ left = layout->trough.x + stepper_spacing + (minimum_visible_bars * magic_value); - right = layout->trough.x + layout->trough.width - stepper_spacing; - - /* slider width is the fraction (page_size / -@@ -2340,6 +2664,32 @@ - - layout->slider.x = x; - layout->slider.width = width; -+ -+ /* Hildon modification : Calculate the x point of streaming -+ * indicator. -+ */ -+ { -+ gint stream_indicator_padding = 0; -+ OssoGtkRangePrivate *priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ gtk_widget_style_get (widget, -+ "stream_indicator_padding", &stream_indicator_padding, -+ NULL); -+ -+ if (priv->stream_indicator == TRUE) -+ { -+ if (range->adjustment->upper - range->adjustment->lower != 0) -+ layout->stream_pixel_position = -+ (right - left - (2 * stream_indicator_padding)) * -+ ((priv->stream_position - range->adjustment->lower) / -+ (range->adjustment->upper - range->adjustment->lower)) + -+ left + stream_indicator_padding; -+ else -+ layout->stream_pixel_position = left + stream_indicator_padding; -+ -+ if (layout->stream_pixel_position < left + stream_indicator_padding) -+ layout->stream_pixel_position = left + stream_indicator_padding; -+ } -+ } - - /* These are publically exported */ - range->slider_start = layout->slider.x; -@@ -2382,12 +2732,17 @@ - GtkScrollType scroll, - gdouble value) - { -+ OssoGtkRangePrivate *priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ - /* potentially adjust the bounds _before we clamp */ - g_signal_emit (range, signals[ADJUST_BOUNDS], 0, value); - - value = CLAMP (value, range->adjustment->lower, - (range->adjustment->upper - range->adjustment->page_size)); - -+ if (priv->stream_indicator && value > priv->stream_position) -+ value = (gdouble)priv->stream_position; -+ - if (range->round_digits >= 0) - { - gdouble power; -@@ -2465,11 +2820,16 @@ - initial_timeout (gpointer data) - { - GtkRange *range; -+ GtkSettings *settings; -+ guint timeout = SCROLL_LATER_DELAY; -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL); - - GDK_THREADS_ENTER (); - range = GTK_RANGE (data); - range->timer->timeout_id = -- g_timeout_add (SCROLL_LATER_DELAY, -+ g_timeout_add (/*SCROLL_LATER_DELAY*/timeout, - second_timeout, - range); - GDK_THREADS_LEAVE (); -@@ -2482,13 +2842,19 @@ - gtk_range_add_step_timer (GtkRange *range, - GtkScrollType step) - { -+ GtkSettings *settings; -+ guint timeout = SCROLL_INITIAL_DELAY; -+ - g_return_if_fail (range->timer == NULL); - g_return_if_fail (step != GTK_SCROLL_NONE); - -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-initial-timeout", &timeout, NULL); -+ - range->timer = g_new (GtkRangeStepTimer, 1); - - range->timer->timeout_id = -- g_timeout_add (SCROLL_INITIAL_DELAY, -+ g_timeout_add (/*SCROLL_INITIAL_DELAY*/timeout, - initial_timeout, - range); - range->timer->step = step; -@@ -2528,9 +2894,15 @@ - static void - gtk_range_reset_update_timer (GtkRange *range) - { -+ /*GtkSettings *settings; -+ guint timeout = UPDATE_DELAY; -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL);*/ -+ - gtk_range_remove_update_timer (range); - -- range->update_timeout_id = g_timeout_add (UPDATE_DELAY, -+ range->update_timeout_id = g_timeout_add (/*timeout*/UPDATE_DELAY, - update_timeout, - range); - } -@@ -2544,3 +2916,116 @@ - range->update_timeout_id = 0; - } - } -+ -+/** -+ * osso_gtk_range_set_stream_indicator: -+ * @range: A GtkRange -+ * @stream_indicator: Whether stream indicator graphics is shown and restricts slider. -+ * -+ * Sets whether a graphical stream indicator -+ * is show on the trough and the slider is restricted -+ * to streamed area. -+ **/ -+void -+osso_gtk_range_set_stream_indicator (GtkRange *range, gboolean stream_indicator) -+{ -+ OssoGtkRangePrivate *priv; -+ -+ g_return_if_fail (GTK_IS_RANGE (range)); -+ -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ -+ if (stream_indicator == priv->stream_indicator) -+ return; -+ -+ priv->stream_indicator = stream_indicator; -+ g_signal_emit_by_name (G_OBJECT (range), "value_changed", NULL); -+} -+ -+/** -+ * osso_gtk_range_get_stream_indicator: -+ * @range: A GtkRange -+ * -+ * Return value: Whether GtkRange displays an -+ * stream indicator graphics and slider is restricted -+ * to streamed area -+ **/ -+gboolean -+osso_gtk_range_get_stream_indicator (GtkRange *range) -+{ -+ OssoGtkRangePrivate *priv; -+ -+ g_return_val_if_fail (GTK_IS_RANGE (range), FALSE); -+ -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ -+ return priv->stream_indicator; -+} -+ -+/** -+ * osso_gtk_range_set_stream_position: -+ * @range : A GtkRange -+ * @position : The new position of the stream indicator -+ * -+ * Sets the new position of the stream indicator. -+ * It is automatically clamped between lower and upper. -+ * Note that you need to enable stream_indicator -+ * before any stream-functionality is active. -+ **/ -+void -+osso_gtk_range_set_stream_position (GtkRange *range, -+ gdouble position) -+{ -+ OssoGtkRangePrivate *priv; -+ gdouble new_pos; -+ -+ g_return_if_fail (GTK_IS_RANGE (range)); -+ -+ new_pos = CLAMP (position, -+ range->adjustment->lower, -+ range->adjustment->upper); -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ -+ priv->stream_position = new_pos; -+ /* Reset the value to clamp it with the stream_position. */ -+ if (priv->stream_indicator == TRUE) -+ gtk_range_set_value (range, gtk_range_get_value (range)); -+ -+ g_object_notify (G_OBJECT (range), "stream_position"); -+} -+/** -+ * osso_gtk_range_get_stream_position: -+ * @range : A GtkRange -+ * -+ * Return value: The current position of the stream -+ * indicator. Note that this value is undefined -+ * when stream indicator is not enabled. -+ **/ -+gdouble -+osso_gtk_range_get_stream_position (GtkRange *range) -+{ -+ OssoGtkRangePrivate *priv; -+ -+ g_return_if_fail (GTK_IS_RANGE (range)); -+ -+ priv = OSSO_GTK_RANGE_GET_PRIVATE (range); -+ -+ return priv->stream_position; -+} -+ -+/* OSSO addition : A function to ensure that -+ * scrolling stops if widget loses focus (example: -+ * dialog pops up) */ -+static gint -+osso_gtk_range_focus_out (GtkWidget *widget, GdkEventFocus *event) -+{ -+ gboolean hildonlike; -+ -+ gtk_widget_style_get (widget, "hildonlike", &hildonlike, NULL); -+ -+ if (hildonlike) -+ { -+ stop_scrolling (GTK_RANGE (widget)); -+ } -+ return GTK_WIDGET_CLASS (parent_class)->focus_out_event (widget, event); -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.h.diff deleted file mode 100644 index a48acfaad5..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrange.h.diff +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkrange.h 2004-08-27 05:54:12.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkrange.h 2005-04-06 16:19:37.798792072 +0300 -@@ -24,6 +24,10 @@ - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -+/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list -+ * of changes. -+ */ -+ - #ifndef __GTK_RANGE_H__ - #define __GTK_RANGE_H__ - -@@ -155,6 +159,15 @@ - gdouble _gtk_range_get_wheel_delta (GtkRange *range, - GdkScrollDirection direction); - -+/* OSSO additions for streaming indicator support. */ -+void osso_gtk_range_set_stream_indicator (GtkRange *range, -+ gboolean stream_indicator); -+gboolean osso_gtk_range_get_stream_indicator (GtkRange *range); -+ -+void osso_gtk_range_set_stream_position (GtkRange *range, -+ gdouble position); -+gdouble osso_gtk_range_get_stream_position (GtkRange *range); -+ - #ifdef __cplusplus - } - #endif /* __cplusplus */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrbtree.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrbtree.c.diff deleted file mode 100644 index 1e34b3f2e7..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrbtree.c.diff +++ /dev/null @@ -1,48 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkrbtree.c 2004-10-28 18:00:04.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkrbtree.c 2005-04-06 16:19:37.812789944 +0300 -@@ -1378,18 +1378,18 @@ - g_return_val_if_fail (node != NULL, NULL); - - /* Case 1: the node's below us. */ -- if (node->right != tree->nil) -+ if (node && node->right != tree->nil) - { - node = node->right; -- while (node->left != tree->nil) -+ while (node && node->left != tree->nil) - node = node->left; - return node; - } - - /* Case 2: it's an ancestor */ -- while (node->parent != tree->nil) -+ while (node && node->parent != tree->nil) - { -- if (node->parent->right == node) -+ if (node->parent && node->parent->right == node) - node = node->parent; - else - return (node->parent); -@@ -1407,18 +1407,18 @@ - g_return_val_if_fail (node != NULL, NULL); - - /* Case 1: the node's below us. */ -- if (node->left != tree->nil) -+ if (node != NULL && node->left != tree->nil) - { - node = node->left; -- while (node->right != tree->nil) -+ while (node != NULL && node->right != tree->nil) - node = node->right; - return node; - } - - /* Case 2: it's an ancestor */ -- while (node->parent != tree->nil) -+ while (node != NULL && node->parent != tree->nil) - { -- if (node->parent->left == node) -+ if (node->parent && node->parent->left == node) - node = node->parent; - else - return (node->parent); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.c.diff deleted file mode 100644 index a6b4f999ac..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.c.diff +++ /dev/null @@ -1,581 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkrc.c 2005-02-01 20:07:40.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkrc.c 2005-04-06 16:19:37.848784472 +0300 -@@ -56,6 +56,7 @@ - #include "gtkprivate.h" - #include "gtksettings.h" - #include "gtkwindow.h" -+#include "gtkhashtable.h" - - #ifdef G_OS_WIN32 - #include <io.h> -@@ -105,6 +106,14 @@ - GtkStyle *default_style; - }; - -+#define GTK_RC_STYLE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_RC_STYLE, GtkRcStylePrivate)) -+ -+typedef struct _GtkRcStylePrivate GtkRcStylePrivate; -+ -+struct _GtkRcStylePrivate { -+ GSList *logical_color_hashes; -+}; -+ - static GtkRcContext *gtk_rc_context_get (GtkSettings *settings); - - static guint gtk_rc_style_hash (const gchar *name); -@@ -179,6 +188,13 @@ - GScanner *scanner, - GtkRcStyle *rc_style, - GtkIconFactory *factory); -+static guint gtk_rc_parse_logical_color (GScanner *scanner, -+ GtkRcStyle *rc_style, -+ GtkHashTable *hash); -+static guint gtk_rc_parse_color_full (GScanner *scanner, -+ GdkColor *color, -+ GtkRcStyle *style); -+ - static void gtk_rc_clear_hash_node (gpointer key, - gpointer data, - gpointer user_data); -@@ -277,7 +293,8 @@ - { "stock", GTK_RC_TOKEN_STOCK }, - { "im_module_file", GTK_RC_TOKEN_IM_MODULE_FILE }, - { "LTR", GTK_RC_TOKEN_LTR }, -- { "RTL", GTK_RC_TOKEN_RTL } -+ { "RTL", GTK_RC_TOKEN_RTL }, -+ { "logical_color", GTK_RC_TOKEN_LOGICAL_COLOR } - }; - - static GHashTable *realized_style_ht = NULL; -@@ -954,6 +971,7 @@ - static void - gtk_rc_style_init (GtkRcStyle *style) - { -+ GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (style); - guint i; - - style->name = NULL; -@@ -976,6 +994,7 @@ - - style->rc_style_lists = NULL; - style->icon_factories = NULL; -+ priv->logical_color_hashes = NULL; - } - - static void -@@ -991,6 +1010,21 @@ - klass->create_rc_style = gtk_rc_style_real_create_rc_style; - klass->merge = gtk_rc_style_real_merge; - klass->create_style = gtk_rc_style_real_create_style; -+ -+ g_type_class_add_private (object_class, sizeof (GtkRcStylePrivate)); -+} -+ -+static void -+free_object_list (GSList *list) -+{ -+ GSList *tmp_list = list; -+ while (tmp_list) -+ { -+ g_object_unref (tmp_list->data); -+ tmp_list = tmp_list->next; -+ } -+ g_slist_free (list); -+ - } - - static void -@@ -998,9 +1032,11 @@ - { - GSList *tmp_list1, *tmp_list2; - GtkRcStyle *rc_style; -+ GtkRcStylePrivate *rc_priv; - gint i; - - rc_style = GTK_RC_STYLE (object); -+ rc_priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - - if (rc_style->name) - g_free (rc_style->name); -@@ -1059,13 +1095,8 @@ - rc_style->rc_properties = NULL; - } - -- tmp_list1 = rc_style->icon_factories; -- while (tmp_list1) -- { -- g_object_unref (tmp_list1->data); -- tmp_list1 = tmp_list1->next; -- } -- g_slist_free (rc_style->icon_factories); -+ free_object_list (rc_style->icon_factories); -+ free_object_list (rc_priv->logical_color_hashes); - - G_OBJECT_CLASS (parent_class)->finalize (object); - } -@@ -1125,6 +1156,14 @@ - return g_object_new (G_OBJECT_TYPE (style), NULL); - } - -+GSList * -+_gtk_rc_style_get_logical_color_hashes (GtkRcStyle *rc_style) -+{ -+ GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); -+ -+ return priv->logical_color_hashes; -+} -+ - static gint - gtk_rc_properties_cmp (gconstpointer bsearch_node1, - gconstpointer bsearch_node2) -@@ -1499,6 +1538,22 @@ - context->rc_files = NULL; - - gtk_rc_parse_default_files (context); -+/*Hildon- Swapped these sections of code, so the styles from the -+ XSettings theme are available when parsing with gtk_rc_context_parse_string*/ -+ g_free (context->theme_name); -+ g_free (context->key_theme_name); -+ -+ g_object_get (context->settings, -+ "gtk-theme-name", &context->theme_name, -+ "gtk-key-theme-name", &context->key_theme_name, -+ NULL); -+ -+ if (context->theme_name && context->theme_name[0]) -+ gtk_rc_parse_named (context, context->theme_name, NULL); -+ if (context->key_theme_name && context->key_theme_name[0]) -+ gtk_rc_parse_named (context, context->key_theme_name, "key"); -+ -+/*****/ - - tmp_list = global_rc_files; - while (tmp_list) -@@ -1512,19 +1567,6 @@ - - tmp_list = tmp_list->next; - } -- -- g_free (context->theme_name); -- g_free (context->key_theme_name); -- -- g_object_get (context->settings, -- "gtk-theme-name", &context->theme_name, -- "gtk-key-theme-name", &context->key_theme_name, -- NULL); -- -- if (context->theme_name && context->theme_name[0]) -- gtk_rc_parse_named (context, context->theme_name, NULL); -- if (context->key_theme_name && context->key_theme_name[0]) -- gtk_rc_parse_named (context, context->key_theme_name, "key"); - - g_object_thaw_notify (G_OBJECT (context->settings)); - -@@ -1905,10 +1947,19 @@ - { - GScanner *scanner; - guint i; -+ gchar *name_str; - gboolean done; - - scanner = gtk_rc_scanner_new (); - -+ if (input_name != NULL) -+ { -+ name_str = (gchar *) g_malloc(strlen(input_name) + 7); -+ sprintf(name_str, "%s.cache", input_name); -+ /*osso_g_scanner_cache_open (scanner, name_str);*/ -+ g_free(name_str); -+ } -+ - if (input_fd >= 0) - { - g_assert (input_string == NULL); -@@ -2062,6 +2113,29 @@ - return style; - } - -+static GSList * -+concat_object_lists (GSList *list_a, GSList *list_b) -+{ -+ GSList *copy; -+ -+ copy = g_slist_copy (list_b); -+ if (copy) -+ { -+ GSList *iter; -+ -+ iter = copy; -+ while (iter != NULL) -+ { -+ g_object_ref (iter->data); -+ iter = g_slist_next (iter); -+ } -+ -+ return g_slist_concat (list_a, copy); -+ } -+ else -+ return list_a; -+} -+ - /* Reuses or frees rc_styles */ - static GtkStyle * - gtk_rc_init_style (GtkRcContext *context, -@@ -2083,6 +2157,7 @@ - GtkRcStyle *base_style = NULL; - GtkRcStyle *proto_style; - GtkRcStyleClass *proto_style_class; -+ GtkRcStylePrivate *proto_priv; - GSList *tmp_styles; - GType rc_style_type = GTK_TYPE_RC_STYLE; - -@@ -2109,12 +2184,13 @@ - - proto_style_class = GTK_RC_STYLE_GET_CLASS (base_style); - proto_style = proto_style_class->create_rc_style (base_style); -+ proto_priv = GTK_RC_STYLE_GET_PRIVATE (proto_style); - - tmp_styles = rc_styles; - while (tmp_styles) - { - GtkRcStyle *rc_style = tmp_styles->data; -- GSList *factories; -+ GtkRcStylePrivate *rc_priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - - proto_style_class->merge (proto_style, rc_style); - -@@ -2122,22 +2198,12 @@ - if (!g_slist_find (rc_style->rc_style_lists, rc_styles)) - rc_style->rc_style_lists = g_slist_prepend (rc_style->rc_style_lists, rc_styles); - -- factories = g_slist_copy (rc_style->icon_factories); -- if (factories) -- { -- GSList *iter; -- -- iter = factories; -- while (iter != NULL) -- { -- g_object_ref (iter->data); -- iter = g_slist_next (iter); -- } -- -- proto_style->icon_factories = g_slist_concat (proto_style->icon_factories, -- factories); -- -- } -+ proto_style->icon_factories = -+ concat_object_lists (proto_style->icon_factories, -+ rc_style->icon_factories); -+ proto_priv->logical_color_hashes = -+ concat_object_lists (proto_priv->logical_color_hashes, -+ rc_priv->logical_color_hashes); - - tmp_styles = tmp_styles->next; - } -@@ -2515,9 +2581,11 @@ - GtkRcStyle *rc_style; - GtkRcStyle *orig_style; - GtkRcStyle *parent_style; -+ GtkRcStylePrivate *rc_priv = NULL; - guint token; - gint i; - GtkIconFactory *our_factory = NULL; -+ GtkHashTable *our_hash = NULL; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_STYLE) -@@ -2533,12 +2601,6 @@ - else - orig_style = NULL; - -- /* If there's a list, its first member is always the factory belonging -- * to this RcStyle -- */ -- if (rc_style && rc_style->icon_factories) -- our_factory = rc_style->icon_factories->data; -- - if (!rc_style) - { - rc_style = gtk_rc_style_new (); -@@ -2550,6 +2612,16 @@ - for (i = 0; i < 5; i++) - rc_style->color_flags[i] = 0; - } -+ -+ rc_priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); -+ -+ /* If there's a list, its first member is always the factory belonging -+ * to this RcStyle -+ */ -+ if (rc_style->icon_factories) -+ our_factory = rc_style->icon_factories->data; -+ if (rc_priv->logical_color_hashes) -+ our_hash = rc_priv->logical_color_hashes->data; - - token = g_scanner_peek_next_token (scanner); - if (token == G_TOKEN_EQUAL_SIGN) -@@ -2566,8 +2638,8 @@ - parent_style = gtk_rc_style_find (context, scanner->value.v_string); - if (parent_style) - { -- GSList *factories; -- -+ GtkRcStylePrivate *parent_priv = GTK_RC_STYLE_GET_PRIVATE (parent_style); -+ - for (i = 0; i < 5; i++) - { - rc_style->color_flags[i] = parent_style->color_flags[i]; -@@ -2621,17 +2693,24 @@ - rc_style->icon_factories = g_slist_prepend (rc_style->icon_factories, - our_factory); - } -- -- rc_style->icon_factories = g_slist_concat (rc_style->icon_factories, -- g_slist_copy (parent_style->icon_factories)); -- -- factories = parent_style->icon_factories; -- while (factories != NULL) -+ rc_style->icon_factories = concat_object_lists (rc_style->icon_factories, -+ parent_style->icon_factories); -+ } -+ -+ /* Also append parent's color hashes, adding a ref to them */ -+ if (parent_priv->logical_color_hashes != NULL) -+ { -+ /* See comment above .. */ -+ if (our_hash == NULL) - { -- g_object_ref (factories->data); -- factories = factories->next; -+ our_hash = _gtk_hash_table_new (); -+ rc_priv->logical_color_hashes = g_slist_prepend (rc_priv->logical_color_hashes, -+ our_hash); - } -- } -+ -+ rc_priv->logical_color_hashes = concat_object_lists (rc_priv->logical_color_hashes, -+ parent_priv->logical_color_hashes); -+ } - } - } - -@@ -2689,12 +2768,22 @@ - } - token = gtk_rc_parse_stock (context, scanner, rc_style, our_factory); - break; -+ case GTK_RC_TOKEN_LOGICAL_COLOR: -+ if (our_hash == NULL) -+ { -+ our_hash = _gtk_hash_table_new (); -+ rc_priv->logical_color_hashes = g_slist_prepend (rc_priv->logical_color_hashes, -+ our_hash); -+ } -+ token = gtk_rc_parse_logical_color (scanner, rc_style, our_hash); -+ break; - case G_TOKEN_IDENTIFIER: - if (is_c_identifier (scanner->next_value.v_identifier) && - scanner->next_value.v_identifier[0] >= 'A' && - scanner->next_value.v_identifier[0] <= 'Z') /* match namespaced type names */ - { - GtkRcProperty prop = { 0, 0, NULL, { 0, }, }; -+ gchar *name; - - g_scanner_get_next_token (scanner); /* eat type name */ - prop.type_name = g_quark_from_string (scanner->value.v_identifier); -@@ -2712,8 +2801,10 @@ - } - - /* it's important that we do the same canonification as GParamSpecPool here */ -- g_strcanon (scanner->value.v_identifier, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-'); -- prop.property_name = g_quark_from_string (scanner->value.v_identifier); -+ name = g_strdup (scanner->value.v_identifier); -+ g_strcanon (name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-'); -+ prop.property_name = g_quark_from_string (name); -+ g_free (name); - - token = gtk_rc_parse_assignment (scanner, &prop); - if (token == G_TOKEN_NONE) -@@ -2825,7 +2916,7 @@ - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_BG; -- return gtk_rc_parse_color (scanner, &style->bg[state]); -+ return gtk_rc_parse_color_full (scanner, &style->bg[state], style); - } - - static guint -@@ -2848,7 +2939,7 @@ - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_FG; -- return gtk_rc_parse_color (scanner, &style->fg[state]); -+ return gtk_rc_parse_color_full (scanner, &style->fg[state], style); - } - - static guint -@@ -2871,7 +2962,7 @@ - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_TEXT; -- return gtk_rc_parse_color (scanner, &style->text[state]); -+ return gtk_rc_parse_color_full (scanner, &style->text[state], style); - } - - static guint -@@ -2894,7 +2985,7 @@ - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_BASE; -- return gtk_rc_parse_color (scanner, &style->base[state]); -+ return gtk_rc_parse_color_full (scanner, &style->base[state], style); - } - - static guint -@@ -3345,11 +3436,45 @@ - - return G_TOKEN_NONE; - } -+static gboolean -+lookup_logical_color (GtkRcStyle *style, -+ const char *color_name, -+ GdkColor *color) -+{ -+ GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (style); -+ GSList *iter; -+ -+ iter = priv->logical_color_hashes; -+ while (iter != NULL) -+ { -+ GdkColor *match = g_hash_table_lookup (GTK_HASH_TABLE (iter->data)->hash, -+ color_name); -+ if (match) -+ { -+ color->red = match->red; -+ color->green = match->green; -+ color->blue = match->blue; -+ return TRUE; -+ } -+ -+ iter = g_slist_next (iter); -+ } -+ -+ return FALSE; -+} - - guint - gtk_rc_parse_color (GScanner *scanner, - GdkColor *color) - { -+ return gtk_rc_parse_color_full (scanner, color, NULL); -+} -+ -+static guint -+gtk_rc_parse_color_full (GScanner *scanner, -+ GdkColor *color, -+ GtkRcStyle *style) -+{ - guint token; - - g_return_val_if_fail (scanner != NULL, G_TOKEN_ERROR); -@@ -3407,11 +3532,14 @@ - case G_TOKEN_STRING: - if (!gdk_color_parse (scanner->value.v_string, color)) - { -- g_scanner_warn (scanner, "Invalid color constant '%s'", -- scanner->value.v_string); -- return G_TOKEN_STRING; -+ if (!(style && lookup_logical_color (style, scanner->value.v_string, color))) -+ { -+ g_scanner_warn (scanner, "Invalid color constant '%s'", -+ scanner->value.v_string); -+ return G_TOKEN_STRING; -+ } - } -- else -+ - return G_TOKEN_NONE; - - default: -@@ -3625,8 +3753,8 @@ - } - - static guint --gtk_rc_parse_stock_id (GScanner *scanner, -- gchar **stock_id) -+gtk_rc_parse_hash_key (GScanner *scanner, -+ gchar **hash_key) - { - guint token; - -@@ -3639,12 +3767,12 @@ - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - -- *stock_id = g_strdup (scanner->value.v_string); -+ *hash_key = g_strdup (scanner->value.v_string); - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_RIGHT_BRACE) - { -- g_free (*stock_id); -+ g_free (*hash_key); - return G_TOKEN_RIGHT_BRACE; - } - -@@ -3854,7 +3982,7 @@ - if (token != GTK_RC_TOKEN_STOCK) - return GTK_RC_TOKEN_STOCK; - -- token = gtk_rc_parse_stock_id (scanner, &stock_id); -+ token = gtk_rc_parse_hash_key (scanner, &stock_id); - if (token != G_TOKEN_NONE) - return token; - -@@ -3965,3 +4093,46 @@ - } - - #endif -+ -+static guint -+gtk_rc_parse_logical_color (GScanner *scanner, -+ GtkRcStyle *rc_style, -+ GtkHashTable *hash) -+{ -+ gchar *color_id = NULL; -+ guint token; -+ GdkColor *color; -+ -+ token = g_scanner_get_next_token (scanner); -+ if (token != GTK_RC_TOKEN_LOGICAL_COLOR) -+ return GTK_RC_TOKEN_LOGICAL_COLOR; -+ -+ token = gtk_rc_parse_hash_key (scanner, &color_id); -+ if (token != G_TOKEN_NONE) -+ return token; -+ -+ token = g_scanner_get_next_token (scanner); -+ if (token != G_TOKEN_EQUAL_SIGN) -+ { -+ g_free (color_id); -+ return G_TOKEN_EQUAL_SIGN; -+ } -+ -+ color = g_new (GdkColor, 1); -+ token = gtk_rc_parse_color_full (scanner, color, rc_style); -+ if (token != G_TOKEN_NONE) -+ { -+ g_free (color_id); -+ g_free (color); -+ return token; -+ } -+ -+ /* Because the hash is created with destroy functions, -+ * g_hash_table_insert will free any old values for us, -+ * if a mapping with the specified key already exists. */ -+ g_hash_table_insert (hash->hash, color_id, color); -+ -+ return G_TOKEN_NONE; -+} -+ -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.h.diff deleted file mode 100644 index 42710cd549..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkrc.h.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkrc.h 2004-12-12 23:09:13.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkrc.h 2005-04-06 16:19:37.866781736 +0300 -@@ -211,6 +211,7 @@ - GTK_RC_TOKEN_STOCK, - GTK_RC_TOKEN_LTR, - GTK_RC_TOKEN_RTL, -+ GTK_RC_TOKEN_LOGICAL_COLOR, - GTK_RC_TOKEN_LAST - } GtkRcTokenType; - -@@ -241,6 +242,8 @@ - - const gchar* _gtk_rc_context_get_default_font_name (GtkSettings *settings); - -+GSList *_gtk_rc_style_get_logical_color_hashes (GtkRcStyle *rc_style); -+ - #ifdef __cplusplus - } - #endif /* __cplusplus */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkscrolledwindow.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkscrolledwindow.c.diff deleted file mode 100644 index 3c20de8ebd..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkscrolledwindow.c.diff +++ /dev/null @@ -1,162 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkscrolledwindow.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkscrolledwindow.c 2005-04-06 16:19:37.898776872 +0300 -@@ -289,6 +289,13 @@ - DEFAULT_SCROLLBAR_SPACING, - G_PARAM_READABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("scrollbar_dislocation", -+ P_("Scrollbar dislocation"), -+ P_("Flag for having scrollbar at the outer border or container padding instead of at the inner border"), -+ FALSE, -+ G_PARAM_READABLE)); -+ - signals[SCROLL_CHILD] = - g_signal_new ("scroll_child", - G_TYPE_FROM_CLASS (object_class), -@@ -1062,6 +1069,73 @@ - } - } - -+static gdouble -+gtk_scrolled_window_get_focus_movement (GtkScrolledWindow *scrolled_window) -+{ -+ GtkWidget *focus_child; -+ GtkRange *range; -+ GtkAdjustment *adj; -+ gdouble value, new_value; -+ gint x, y; -+ -+ focus_child = GTK_CONTAINER(scrolled_window)->focus_child; -+ if (focus_child == NULL) -+ return 0; -+ -+ while (GTK_IS_CONTAINER (focus_child) && -+ GTK_CONTAINER (focus_child)->focus_child) -+ { -+ focus_child = GTK_CONTAINER (focus_child)->focus_child; -+ } -+ -+ range = GTK_RANGE (scrolled_window->vscrollbar); -+ adj = range->adjustment; -+ value = gtk_adjustment_get_value (adj); -+ -+ gtk_widget_translate_coordinates (focus_child->parent, -+ GTK_WIDGET(scrolled_window), -+ focus_child->allocation.x, -+ focus_child->allocation.y, &x, &y); -+ -+ if (y < 0) -+ { -+ /* scroll up */ -+ new_value = value + y; -+ if (new_value < adj->lower) -+ new_value = adj->lower; -+ } -+ else if (y + focus_child->allocation.height > adj->page_size) -+ { -+ /* scroll down */ -+ new_value = value + y + focus_child->allocation.height - adj->page_size; -+ if (new_value > adj->upper - adj->page_size) -+ new_value = adj->upper - adj->page_size; -+ } -+ else -+ { -+ new_value = value; -+ } -+ -+ return new_value - value; -+} -+ -+static void -+gtk_scrolled_window_scroll_to_focus (GtkScrolledWindow *scrolled_window) -+{ -+ GtkAdjustment *adj; -+ gdouble diff; -+ -+ diff = gtk_scrolled_window_get_focus_movement (scrolled_window); -+ if (diff != 0) -+ { -+ adj = GTK_RANGE (scrolled_window->vscrollbar)->adjustment; -+ -+ gtk_adjustment_set_value (adj, gtk_adjustment_get_value (adj) + diff); -+ gtk_scrolled_window_set_vadjustment (scrolled_window, -+ GTK_ADJUSTMENT (adj)); -+ } -+} -+ - static void - gtk_scrolled_window_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -@@ -1071,17 +1145,32 @@ - GtkAllocation relative_allocation; - GtkAllocation child_allocation; - gint scrollbar_spacing; -- -+ gboolean is_focus_visible, dislocate; -+ gint dislocation; -+ - g_return_if_fail (GTK_IS_SCROLLED_WINDOW (widget)); - g_return_if_fail (allocation != NULL); - - scrolled_window = GTK_SCROLLED_WINDOW (widget); - bin = GTK_BIN (scrolled_window); - -+ is_focus_visible = -+ gtk_scrolled_window_get_focus_movement (scrolled_window) == 0; -+ - scrollbar_spacing = _gtk_scrolled_window_get_scrollbar_spacing (scrolled_window); - - widget->allocation = *allocation; - -+ /* See how much scrollbar needs be "dislocated" (to get it to the other -+ * edge of the border). Does not apply to all occasions. */ -+ gtk_widget_style_get (GTK_WIDGET (scrolled_window), -+ "scrollbar_dislocation", &dislocate, -+ NULL); -+ if (dislocate) -+ dislocation = GTK_CONTAINER (scrolled_window)->border_width; -+ else -+ dislocation = 0; -+ - if (scrolled_window->hscrollbar_policy == GTK_POLICY_ALWAYS) - scrolled_window->hscrollbar_visible = TRUE; - else if (scrolled_window->hscrollbar_policy == GTK_POLICY_NEVER) -@@ -1150,10 +1239,12 @@ - child_allocation.y = (relative_allocation.y + - relative_allocation.height + - scrollbar_spacing + -+ dislocation + - (scrolled_window->shadow_type == GTK_SHADOW_NONE ? - 0 : widget->style->ythickness)); - else -- child_allocation.y = GTK_CONTAINER (scrolled_window)->border_width; -+ child_allocation.y = GTK_CONTAINER (scrolled_window)->border_width - -+ dislocation; - - child_allocation.width = relative_allocation.width; - child_allocation.height = hscrollbar_requisition.height; -@@ -1189,10 +1280,12 @@ - child_allocation.x = (relative_allocation.x + - relative_allocation.width + - scrollbar_spacing + -+ dislocation + - (scrolled_window->shadow_type == GTK_SHADOW_NONE ? - 0 : widget->style->xthickness)); - else -- child_allocation.x = GTK_CONTAINER (scrolled_window)->border_width; -+ child_allocation.x = GTK_CONTAINER (scrolled_window)->border_width - -+ dislocation; - - child_allocation.y = relative_allocation.y; - child_allocation.width = vscrollbar_requisition.width; -@@ -1207,6 +1300,9 @@ - } - - gtk_widget_size_allocate (scrolled_window->vscrollbar, &child_allocation); -+ -+ if (is_focus_visible) -+ gtk_scrolled_window_scroll_to_focus (scrolled_window); - } - else if (GTK_WIDGET_VISIBLE (scrolled_window->vscrollbar)) - gtk_widget_hide (scrolled_window->vscrollbar); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparator.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparator.c.diff deleted file mode 100644 index 63810e047b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparator.c.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkseparator.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkseparator.c 2005-04-06 16:19:37.928772312 +0300 -@@ -65,6 +65,18 @@ - static void - gtk_separator_class_init (GtkSeparatorClass *class) - { -+ GParamSpec* pspec; -+ -+ pspec = g_param_spec_boolean("hildonlike-drawing", -+ "hildonlike looks.", -+ "hildonlike looks. " -+ "Draws with paint_box " -+ "instead of paint_(vh)line, 1/0", -+ FALSE, -+ G_PARAM_READABLE); -+ -+ gtk_widget_class_install_style_property(GTK_WIDGET_CLASS(class), -+ pspec); - } - - static void diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparatortoolitem.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparatortoolitem.c.diff deleted file mode 100644 index 63203f7db6..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkseparatortoolitem.c.diff +++ /dev/null @@ -1,90 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkseparatortoolitem.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkseparatortoolitem.c 2005-04-06 16:19:37.937770944 +0300 -@@ -29,6 +29,7 @@ - #include "gtktoolbar.h" - - #define MENU_ID "gtk-separator-tool-item-menu-id" -+#define HILDON_SEPARATOR_HEIGHT 40 - - enum { - PROP_0, -@@ -137,6 +138,18 @@ - P_("Whether the separator is drawn, or just blank"), - TRUE, - G_PARAM_READWRITE)); -+ /* Hildon addition : some new style properties we need. */ -+ gtk_widget_class_install_style_property(widget_class, -+ g_param_spec_int ("separator_size", -+ P_("Separator size"), P_("The thickness of the separator. -1 for default behaviour."), -+ -1, G_MAXINT, -1, G_PARAM_READWRITE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("is_image", -+ P_("Is separator an image or a line"), -+ P_("Whether the separator is drawn as an image, or just as a line"), -+ FALSE, -+ G_PARAM_READWRITE)); - - g_type_class_add_private (object_class, sizeof (GtkSeparatorToolItemPrivate)); - } -@@ -213,14 +226,26 @@ - GtkToolItem *item = GTK_TOOL_ITEM (widget); - GtkOrientation orientation = gtk_tool_item_get_orientation (item); - -+ /* Hildon modifications from here on: -+ * if the "separator_size" style property -+ * is the default value (it has not been set -+ * in resource files), use default gtk+ behaviour. -+ */ -+ gint separator_size = -1; -+ -+ gtk_widget_style_get( widget, "separator_size", &separator_size, NULL ); -+ -+ if (separator_size == -1) -+ separator_size = get_space_size (item); -+ - if (orientation == GTK_ORIENTATION_HORIZONTAL) - { -- requisition->width = get_space_size (item); -+ requisition->width = separator_size; - requisition->height = 1; - } - else - { -- requisition->height = get_space_size (item); -+ requisition->height = separator_size; - requisition->width = 1; - } - } -@@ -235,10 +260,30 @@ - - if (priv->draw) - { -+ gboolean is_image = FALSE; - if (widget->parent && GTK_IS_TOOLBAR (widget->parent)) - toolbar = GTK_TOOLBAR (widget->parent); - -- _gtk_toolbar_paint_space_line (widget, toolbar, -+ gtk_widget_style_get( widget, "is_image", &is_image, NULL ); -+ if (is_image) -+ { -+ gint separator_size = -1; -+ GtkOrientation orientation = gtk_tool_item_get_orientation (GTK_TOOL_ITEM (widget)); -+ -+ gtk_widget_style_get( widget, "separator_size", &separator_size, NULL ); -+ -+ /* if style property not set, use gtk+ -+ * default behaviour. */ -+ if (separator_size == -1) -+ separator_size = get_space_size (GTK_TOOL_ITEM (widget)); -+ -+ gtk_paint_box( widget->style, widget->window, GTK_WIDGET_STATE(widget), -+ GTK_SHADOW_NONE, &event->area, widget, -+ orientation == GTK_ORIENTATION_HORIZONTAL ? "vertical" : "horizontal", -+ widget->allocation.x, widget->allocation.y + (widget->allocation.height - HILDON_SEPARATOR_HEIGHT) / 2, -+ separator_size, HILDON_SEPARATOR_HEIGHT ); -+ } else -+ _gtk_toolbar_paint_space_line (widget, toolbar, - &(event->area), &widget->allocation); - } - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtksettings.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtksettings.c.diff deleted file mode 100644 index fac467797d..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtksettings.c.diff +++ /dev/null @@ -1,66 +0,0 @@ ---- gtk+-2.6.4/gtk/gtksettings.c 2004-11-20 01:18:38.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtksettings.c 2005-04-06 16:19:37.941770336 +0300 -@@ -1,4 +1,4 @@ --/* GTK - The GIMP Toolkit -+/* - * Copyright (C) 2000 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or -@@ -24,6 +24,9 @@ - #include "gtkintl.h" - #include "gtkwidget.h" - -+#define DEFAULT_INITIAL_TIMEOUT 300 -+#define DEFAULT_UPDATE_TIMEOUT 125 -+ - typedef struct _GtkSettingsValuePrivate GtkSettingsValuePrivate; - - typedef enum -@@ -72,6 +75,9 @@ - PROP_XFT_RGBA, - PROP_XFT_DPI, - #endif -+ PROP_INITIAL_TIMEOUT, -+ PROP_UPDATE_TIMEOUT, -+ PROP_HILDON_KEYBOARD_NAVIGATION, - PROP_ALTERNATIVE_BUTTON_ORDER - }; - -@@ -426,6 +432,37 @@ - NULL); - - g_assert (result == PROP_XFT_DPI); -+ -+ result = settings_install_property_parser (class, -+ g_param_spec_int ("gtk-initial-timeout", -+ P_("Start timeout"), -+ P_("Starting value for timeouts, when button is pressed"), -+ 0, G_MAXINT, DEFAULT_INITIAL_TIMEOUT, -+ G_PARAM_READWRITE), -+ NULL); -+ -+ g_assert (result == PROP_INITIAL_TIMEOUT); -+ -+ result = settings_install_property_parser (class, -+ g_param_spec_int ("gtk-update-timeout", -+ P_("Repeat timeout"), -+ P_("Repeat value for timeouts, when button is pressed"), -+ 0, G_MAXINT, DEFAULT_UPDATE_TIMEOUT, -+ G_PARAM_READWRITE), -+ NULL); -+ -+ g_assert (result == PROP_UPDATE_TIMEOUT); -+ -+ result = settings_install_property_parser (class, -+ g_param_spec_boolean ("hildon-keyboard-navigation", -+ P_("Keyboard navigation"), -+ P_("This property can be used to enable keyboard navigation"), -+ FALSE, -+ G_PARAM_READWRITE), -+ NULL); -+ -+ g_assert (result == PROP_HILDON_KEYBOARD_NAVIGATION); -+ - #endif /* GDK_WINDOWING_X11 */ - result = settings_install_property_parser (class, - g_param_spec_boolean ("gtk-alternative-button-order", diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkspinbutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkspinbutton.c.diff deleted file mode 100644 index 13f8c330f5..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkspinbutton.c.diff +++ /dev/null @@ -1,50 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkspinbutton.c 2004-11-14 03:25:35.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkspinbutton.c 2005-04-06 16:19:37.945769728 +0300 -@@ -1041,15 +1041,21 @@ - GtkArrowType click_child, - gdouble step) - { -+ GtkSettings *settings; -+ guint timeout; -+ - g_return_if_fail (click_child == GTK_ARROW_UP || click_child == GTK_ARROW_DOWN); -- -+ -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-initial-timeout", &timeout, NULL); -+ - spin->click_child = click_child; - - if (!spin->timer) - { - spin->timer_step = step; - spin->need_timer = TRUE; -- spin->timer = g_timeout_add (SPIN_BUTTON_INITIAL_TIMER_DELAY, -+ spin->timer = g_timeout_add (/*SPIN_BUTTON_INITIAL_TIMER_DELAY*/timeout, - (GSourceFunc) gtk_spin_button_timer, - (gpointer) spin); - } -@@ -1188,9 +1194,14 @@ - gtk_spin_button_timer (GtkSpinButton *spin_button) - { - gboolean retval = FALSE; -+ GtkSettings *settings; -+ guint timeout; - - GDK_THREADS_ENTER (); - -+ settings = gtk_settings_get_default (); -+ g_object_get (settings, "gtk-update-timeout", &timeout, NULL); -+ - if (spin_button->timer) - { - if (spin_button->click_child == GTK_ARROW_UP) -@@ -1201,7 +1212,7 @@ - if (spin_button->need_timer) - { - spin_button->need_timer = FALSE; -- spin_button->timer = g_timeout_add (SPIN_BUTTON_TIMER_DELAY, -+ spin_button->timer = g_timeout_add (/*SPIN_BUTTON_TIMER_DELAY*/timeout, - (GSourceFunc) gtk_spin_button_timer, - (gpointer) spin_button); - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.c.diff deleted file mode 100644 index 6a94d96509..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.c.diff +++ /dev/null @@ -1,250 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkstyle.c 2005-01-18 18:43:45.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkstyle.c 2005-04-06 16:19:37.951768816 +0300 -@@ -38,6 +38,7 @@ - #include "gtkthemes.h" - #include "gtkiconfactory.h" - #include "gtksettings.h" /* _gtk_settings_parse_convert() */ -+#include "gtkhashtable.h" - - #define LIGHTNESS_MULT 1.3 - #define DARKNESS_MULT 0.7 -@@ -49,6 +50,14 @@ - GValue value; - } PropertyValue; - -+#define GTK_STYLE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_STYLE, GtkStylePrivate)) -+ -+typedef struct _GtkStylePrivate GtkStylePrivate; -+ -+struct _GtkStylePrivate { -+ GSList *logical_color_hashes; -+}; -+ - /* --- prototypes --- */ - static void gtk_style_init (GtkStyle *style); - static void gtk_style_class_init (GtkStyleClass *klass); -@@ -655,6 +664,7 @@ - klass->draw_layout = gtk_default_draw_layout; - klass->draw_resize_grip = gtk_default_draw_resize_grip; - -+ g_type_class_add_private (object_class, sizeof (GtkStylePrivate)); - - /** - * GtkStyle::realize: -@@ -714,9 +724,28 @@ - } - - static void -+free_object_list (GSList *list) -+{ -+ if (list) -+ { -+ GSList *tmp_list = list; -+ -+ while (tmp_list) -+ { -+ g_object_unref (tmp_list->data); -+ tmp_list = tmp_list->next; -+ } -+ -+ g_slist_free (list); -+ } -+ -+} -+ -+static void - gtk_style_finalize (GObject *object) - { - GtkStyle *style = GTK_STYLE (object); -+ GtkStylePrivate *priv = GTK_STYLE_GET_PRIVATE (style); - - g_return_if_fail (style->attach_count == 0); - -@@ -745,19 +774,9 @@ - g_slist_free_1 (style->styles); - } - } -- -- if (style->icon_factories) -- { -- GSList *tmp_list = style->icon_factories; -- -- while (tmp_list) -- { -- g_object_unref (tmp_list->data); -- tmp_list = tmp_list->next; -- } -- -- g_slist_free (style->icon_factories); -- } -+ -+ free_object_list (style->icon_factories); -+ free_object_list (priv->logical_color_hashes); - - pango_font_description_free (style->font_desc); - -@@ -1003,6 +1022,51 @@ - return gtk_icon_factory_lookup_default (stock_id); - } - -+ /** -+ * gtk_style_lookup_logical_color: -+ * @style: a #GtkStyle -+ * @color_name: the name of the logical color to look up -+ * @color: the #GdkColor to fill in -+ * -+ * Looks up @color_name in the style's logical color mappings, -+ * filling in @color and returning %TRUE if found, otherwise -+ * returning %FALSE. Do not cache the found mapping, because -+ * it depends on the #GtkStyle and might change when a theme -+ * switch occurs. -+ * -+ * Return value: %TRUE if the mapping was found. -+ */ -+gboolean -+gtk_style_lookup_logical_color (GtkStyle *style, -+ const char *color_name, -+ GdkColor *color) -+{ -+ GtkStylePrivate *priv = GTK_STYLE_GET_PRIVATE (style); -+ GSList *iter; -+ -+ g_return_val_if_fail (GTK_IS_STYLE (style), FALSE); -+ g_return_val_if_fail (color_name != NULL, FALSE); -+ g_return_val_if_fail (color != NULL, FALSE); -+ -+ iter = priv->logical_color_hashes; -+ while (iter != NULL) -+ { -+ GdkColor *mapping = g_hash_table_lookup (GTK_HASH_TABLE (iter->data)->hash, -+ color_name); -+ if (mapping) -+ { -+ color->red = mapping->red; -+ color->green = mapping->green; -+ color->blue = mapping->blue; -+ return TRUE; -+ } -+ -+ iter = g_slist_next (iter); -+ } -+ -+ return FALSE; -+} -+ - /** - * gtk_draw_hline: - * @style: a #GtkStyle -@@ -1717,10 +1781,32 @@ - clear_property_cache (style); - } - -+static GSList * -+copy_object_list (GSList *list) -+{ -+ if (list) -+ { -+ GSList *iter; -+ -+ iter = list; -+ while (iter != NULL) -+ { -+ g_object_ref (iter->data); -+ iter = g_slist_next (iter); -+ } -+ -+ return g_slist_copy (list); -+ } -+ else -+ return NULL; -+} -+ - static void - gtk_style_real_init_from_rc (GtkStyle *style, - GtkRcStyle *rc_style) - { -+ GtkStylePrivate *priv = GTK_STYLE_GET_PRIVATE (style); -+ GSList *logical_color_hashes; - gint i; - - /* cache _should_ be still empty */ -@@ -1746,19 +1832,10 @@ - if (rc_style->ythickness >= 0) - style->ythickness = rc_style->ythickness; - -- if (rc_style->icon_factories) -- { -- GSList *iter; -+ style->icon_factories = copy_object_list (rc_style->icon_factories); - -- style->icon_factories = g_slist_copy (rc_style->icon_factories); -- -- iter = style->icon_factories; -- while (iter != NULL) -- { -- g_object_ref (iter->data); -- iter = g_slist_next (iter); -- } -- } -+ logical_color_hashes = _gtk_rc_style_get_logical_color_hashes (rc_style); -+ priv->logical_color_hashes = copy_object_list (logical_color_hashes); - } - - static gint -@@ -2065,7 +2142,7 @@ - const gchar *detail) - { - GdkPixbuf *pixbuf; -- -+ - g_return_val_if_fail (GTK_IS_STYLE (style), NULL); - g_return_val_if_fail (GTK_STYLE_GET_CLASS (style)->render_icon != NULL, NULL); - -@@ -2156,7 +2233,7 @@ - { - return gdk_pixbuf_scale_simple (src, - width, height, -- GDK_INTERP_BILINEAR); -+ GDK_INTERP_NEAREST); - } - } - -@@ -2183,7 +2260,6 @@ - */ - - base_pixbuf = gtk_icon_source_get_pixbuf (source); -- - g_return_val_if_fail (base_pixbuf != NULL, NULL); - - if (widget && gtk_widget_has_screen (widget)) -@@ -2213,7 +2289,9 @@ - /* If the size was wildcarded, and we're allowed to scale, then scale; otherwise, - * leave it alone. - */ -- if (size != (GtkIconSize)-1 && gtk_icon_source_get_size_wildcarded (source)) -+ /* Hildon addition: Device icons are never scaled */ -+ if (size != (GtkIconSize)-1 && gtk_icon_source_get_size_wildcarded (source) -+ && size < HILDON_ICON_SIZE_26) - scaled = scale_or_ref (base_pixbuf, width, height); - else - scaled = g_object_ref (base_pixbuf); -@@ -2224,7 +2302,7 @@ - if (state == GTK_STATE_INSENSITIVE) - { - stated = gdk_pixbuf_copy (scaled); -- -+ - gdk_pixbuf_saturate_and_pixelate (scaled, stated, - 0.8, TRUE); - -@@ -2232,8 +2310,8 @@ - } - else if (state == GTK_STATE_PRELIGHT) - { -- stated = gdk_pixbuf_copy (scaled); -- -+ stated = gdk_pixbuf_copy (scaled); -+ - gdk_pixbuf_saturate_and_pixelate (scaled, stated, - 1.2, FALSE); - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.h.diff deleted file mode 100644 index 79c36bb47f..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkstyle.h.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkstyle.h 2004-11-28 09:02:27.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkstyle.h 2005-04-06 16:19:37.952768664 +0300 -@@ -454,6 +454,10 @@ - gint width, - gint height); - -+gboolean gtk_style_lookup_logical_color (GtkStyle *style, -+ const gchar *color_name, -+ GdkColor *color); -+ - GtkIconSet* gtk_style_lookup_icon_set (GtkStyle *style, - const gchar *stock_id); - GdkPixbuf* gtk_style_render_icon (GtkStyle *style, diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktable.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktable.c.diff deleted file mode 100644 index 5f485da09b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktable.c.diff +++ /dev/null @@ -1,95 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktable.c 2004-08-09 19:59:52.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtktable.c 2005-04-06 16:19:37.974765320 +0300 -@@ -28,6 +28,7 @@ - #include "gtkalias.h" - #include "gtktable.h" - #include "gtkintl.h" -+#include "gtkbutton.h" - - enum - { -@@ -507,6 +508,33 @@ - return GTK_WIDGET (table); - } - -+void osso_gtk_table_find_button_detail (GtkTable *table, -+ GtkTableChild *table_child) -+{ -+ OssoGtkButtonAttachFlags attachflags = 0; -+ gboolean automatic_detail; -+ -+ g_return_if_fail (GTK_IS_TABLE (table)); -+ g_return_if_fail (table_child != NULL); -+ g_return_if_fail (GTK_IS_BUTTON (table_child->widget)); -+ -+ if (table_child->top_attach == 0) -+ attachflags |= OSSO_GTK_BUTTON_ATTACH_NORTH; -+ -+ if (table_child->bottom_attach == table->nrows) -+ attachflags |= OSSO_GTK_BUTTON_ATTACH_SOUTH; -+ -+ if (table_child->left_attach == 0) -+ attachflags |= OSSO_GTK_BUTTON_ATTACH_WEST; -+ -+ if (table_child->right_attach == table->ncols) -+ attachflags |= OSSO_GTK_BUTTON_ATTACH_EAST; -+ -+ g_object_get (G_OBJECT (table_child->widget), "automatic_detail", &automatic_detail, NULL); -+ if (automatic_detail == TRUE) -+ g_object_set (G_OBJECT (table_child->widget), "detail", osso_gtk_button_attach_details[attachflags], NULL); -+} -+ - void - gtk_table_resize (GtkTable *table, - guint n_rows, -@@ -523,6 +551,18 @@ - n_cols != table->ncols) - { - GList *list; -+ guint recalc_column = -1; -+ guint recalc_row = -1; -+ -+ if (n_rows > table->nrows) -+ recalc_row = table->nrows; -+ else -+ recalc_row = n_rows; -+ -+ if (n_cols > table->ncols) -+ recalc_column = table->ncols; -+ else -+ recalc_column = n_cols; - - for (list = table->children; list; list = list->next) - { -@@ -577,6 +617,20 @@ - - g_object_notify (G_OBJECT (table), "n_columns"); - } -+ -+ if ((recalc_column != -1) || (recalc_row != -1)) -+ for (list = table->children; list; list = list->next) -+ { -+ GtkTableChild *child; -+ -+ child = list->data; -+ -+ if (GTK_IS_BUTTON (child->widget) && -+ ((child->bottom_attach == recalc_row) || -+ (child->right_attach == recalc_column))) -+ -+ osso_gtk_table_find_button_detail (table, child); -+ } - } - } - -@@ -623,6 +677,10 @@ - table_child->yshrink = (yoptions & GTK_SHRINK) != 0; - table_child->yfill = (yoptions & GTK_FILL) != 0; - table_child->ypadding = ypadding; -+ -+ -+ if (GTK_IS_BUTTON (table_child->widget)) -+ osso_gtk_table_find_button_detail (table, table_child); - - table->children = g_list_prepend (table->children, table_child); - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.c.diff deleted file mode 100644 index 7a984dfb8c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.c.diff +++ /dev/null @@ -1,443 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktextbuffer.c 2004-11-01 21:57:13.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktextbuffer.c 2005-04-06 16:19:38.023757872 +0300 -@@ -1,5 +1,6 @@ - /* GTK - The GIMP Toolkit - * gtktextbuffer.c Copyright (C) 2000 Red Hat, Inc. -+ * Copyright (C) 2004 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -39,6 +40,17 @@ - #include "gtktextbtree.h" - #include "gtktextiterprivate.h" - #include "gtkintl.h" -+#include "gtktextbufferserialize.h" -+ -+#define GTK_TEXT_BUFFER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBufferPrivate)) -+ -+typedef struct _GtkTextBufferPrivate GtkTextBufferPrivate; -+ -+struct _GtkTextBufferPrivate -+{ -+ gboolean can_paste_rich_text; -+ gchar *rich_text_format; -+}; - - typedef struct _ClipboardRequest ClipboardRequest; - -@@ -71,7 +83,10 @@ - PROP_0, - - /* Construct */ -- PROP_TAG_TABLE -+ PROP_TAG_TABLE, -+ -+ PROP_CAN_PASTE_RICH_TEXT, -+ PROP_RICH_TEXT_FORMAT - }; - - enum { -@@ -79,6 +94,8 @@ - TARGET_TEXT, - TARGET_COMPOUND_TEXT, - TARGET_UTF8_STRING, -+ TARGET_TEXT_VIEW_MARKUP, -+ TARGET_TEXT_VIEW_RICH_TEXT_FORMAT, - TARGET_TEXT_BUFFER_CONTENTS - }; - -@@ -185,7 +202,20 @@ - P_("Text Tag Table"), - GTK_TYPE_TEXT_TAG_TABLE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); -+ g_object_class_install_property (object_class, -+ PROP_CAN_PASTE_RICH_TEXT, -+ g_param_spec_boolean ("can_paste_rich_text", -+ P_("Can paste rich text"), -+ P_("Whether it should be possible to paste rich text to the buffer"), -+ FALSE, G_PARAM_READWRITE)); -+ g_object_class_install_property (object_class, -+ PROP_RICH_TEXT_FORMAT, -+ g_param_spec_string ("rich_text_format", -+ P_("Rich Text Format"), -+ P_("Name of a collection of tags that the text view supports"), -+ NULL, G_PARAM_READWRITE)); - -+ - signals[INSERT_TEXT] = - g_signal_new ("insert_text", - G_OBJECT_CLASS_TYPE (object_class), -@@ -335,7 +365,9 @@ - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, -- 0); -+ 0); -+ -+ g_type_class_add_private (object_class, sizeof (GtkTextBufferPrivate)); - } - - static void -@@ -385,7 +417,12 @@ - case PROP_TAG_TABLE: - set_table (text_buffer, g_value_get_object (value)); - break; -- -+ case PROP_CAN_PASTE_RICH_TEXT: -+ gtk_text_buffer_set_can_paste_rich_text (text_buffer, g_value_get_boolean (value)); -+ break; -+ case PROP_RICH_TEXT_FORMAT: -+ gtk_text_buffer_set_rich_text_format (text_buffer, g_value_get_string (value)); -+ break; - default: - break; - } -@@ -406,7 +443,14 @@ - case PROP_TAG_TABLE: - g_value_set_object (value, get_table (text_buffer)); - break; -- -+ case PROP_CAN_PASTE_RICH_TEXT: -+ g_value_set_boolean (value, -+ gtk_text_buffer_get_can_paste_rich_text (text_buffer)); -+ break; -+ case PROP_RICH_TEXT_FORMAT: -+ g_value_set_string (value, -+ gtk_text_buffer_get_rich_text_format (text_buffer)); -+ break; - default: - break; - } -@@ -434,11 +478,14 @@ - gtk_text_buffer_finalize (GObject *object) - { - GtkTextBuffer *buffer; -+ GtkTextBufferPrivate *priv; - - buffer = GTK_TEXT_BUFFER (object); - - remove_all_selection_clipboards (buffer); - -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer); -+ - if (buffer->tag_table) - { - _gtk_text_tag_table_remove_buffer (buffer->tag_table, buffer); -@@ -456,7 +503,9 @@ - free_log_attr_cache (buffer->log_attr_cache); - - buffer->log_attr_cache = NULL; -- -+ -+ g_free (priv->rich_text_format); -+ - G_OBJECT_CLASS (parent_class)->finalize (object); - } - -@@ -2738,8 +2787,7 @@ - - if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end)) - { -- if (selection_data->target == -- gdk_atom_intern ("GTK_TEXT_BUFFER_CONTENTS", FALSE)) -+ if (info == TARGET_TEXT_BUFFER_CONTENTS) - { - /* Provide the address of the buffer; this will only be - * used within-process -@@ -2750,6 +2798,32 @@ - (void*)&buffer, - sizeof (buffer)); - } -+ else if (info == TARGET_TEXT_VIEW_MARKUP) -+ { -+ gchar *str; -+ gint len; -+ -+ str = gtk_text_buffer_serialize_rich_text (buffer, &start, &end, &len); -+ -+ gtk_selection_data_set (selection_data, -+ gdk_atom_intern ("application/x-gtk-text-view-markup", FALSE), -+ 8, /* bytes */ -+ str, len); -+ g_free (str); -+ } -+ else if (info == TARGET_TEXT_VIEW_RICH_TEXT_FORMAT) -+ { -+ gint len; -+ gchar *format; -+ -+ format = g_object_get_data (G_OBJECT (buffer), "gtk-text-buffer-clipboard-format"); -+ len = format ? strlen (format) : -1; -+ -+ gtk_selection_data_set (selection_data, -+ gdk_atom_intern ("application/x-gtk-text-view-rich-text-format", FALSE), -+ 8, /* bytes */ -+ format, len); -+ } - else - { - gchar *str; -@@ -2765,10 +2839,16 @@ - create_clipboard_contents_buffer (GtkTextBuffer *buffer) - { - GtkTextBuffer *contents; -+ gchar *format; - - contents = gtk_text_buffer_new (gtk_text_buffer_get_tag_table (buffer)); - -+ format = GTK_TEXT_BUFFER_GET_PRIVATE (buffer)->rich_text_format; -+ - g_object_set_data (G_OBJECT (contents), "gtk-text-buffer-clipboard", GINT_TO_POINTER (1)); -+ -+ g_object_set_data_full (G_OBJECT (contents), "gtk-text-buffer-clipboard-format", -+ format ? g_strdup (format) : NULL, g_free); - - return contents; - } -@@ -2786,8 +2866,7 @@ - - g_assert (contents); /* This should never be called unless we own the clipboard */ - -- if (selection_data->target == -- gdk_atom_intern ("GTK_TEXT_BUFFER_CONTENTS", FALSE)) -+ if (info == TARGET_TEXT_BUFFER_CONTENTS) - { - /* Provide the address of the clipboard buffer; this will only - * be used within-process. OK to supply a NULL value for contents. -@@ -2798,6 +2877,35 @@ - (void*)&contents, - sizeof (contents)); - } -+ else if (info == TARGET_TEXT_VIEW_MARKUP) -+ { -+ gchar *str; -+ gint *len; -+ GtkTextIter start, end; -+ -+ gtk_text_buffer_get_bounds (contents, &start, &end); -+ -+ str = gtk_text_buffer_serialize_rich_text (contents, &start, &end, &len); -+ -+ gtk_selection_data_set (selection_data, -+ gdk_atom_intern ("application/x-gtk-text-view-markup", FALSE), -+ 8, /* bytes */ -+ str, len); -+ g_free (str); -+ } -+ else if (info == TARGET_TEXT_VIEW_RICH_TEXT_FORMAT) -+ { -+ gint len; -+ gchar *format; -+ -+ format = g_object_get_data (G_OBJECT (contents), "gtk-text-buffer-clipboard-format"); -+ len = format ? strlen (format) : -1; -+ -+ gtk_selection_data_set (selection_data, -+ gdk_atom_intern ("application/x-gtk-text-view-rich-text-format", FALSE), -+ 8, /* bytes */ -+ format, len); -+ } - else - { - gchar *str; -@@ -2992,6 +3100,54 @@ - #endif - - static void -+clipboard_text_view_markup_received (GtkClipboard *clipboard, -+ GtkSelectionData *selection_data, -+ gpointer data) -+{ -+ ClipboardRequest *request_data = data; -+ GtkTextIter insert_point; -+ gboolean retval = TRUE; -+ GError *error = NULL; -+ GtkTextBufferPrivate *priv; -+ -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (request_data->buffer); -+ -+ if (selection_data->target == -+ gdk_atom_intern ("application/x-gtk-text-view-markup", FALSE)) -+ { -+ pre_paste_prep (request_data, &insert_point); -+ -+ if (request_data->interactive) -+ gtk_text_buffer_begin_user_action (request_data->buffer); -+ -+ if (!request_data->interactive || -+ gtk_text_iter_can_insert (&insert_point, request_data->default_editable)) -+ retval = gtk_text_buffer_deserialize_rich_text (request_data->buffer, -+ &insert_point, -+ selection_data->data, selection_data->length, -+ priv->rich_text_format == NULL, &error); -+ -+ if (!retval) -+ { -+ g_warning ("error pasting: %s\n", error->message); -+ } -+ -+ if (request_data->interactive) -+ gtk_text_buffer_end_user_action (request_data->buffer); -+ -+ if (retval) { -+ post_paste_cleanup (request_data); -+ return; -+ } -+ } -+ -+ /* Request the text selection instead */ -+ gtk_clipboard_request_text (clipboard, -+ clipboard_text_received, -+ data); -+} -+ -+static void - paste_from_buffer (ClipboardRequest *request_data, - GtkTextBuffer *src_buffer, - const GtkTextIter *start, -@@ -3029,6 +3185,35 @@ - g_free (request_data); - } - -+static gboolean -+formats_match (GtkClipboard *clipboard, const gchar *format) -+{ -+ GtkSelectionData *data; -+ gchar *tmp; -+ gboolean retval; -+ -+ if (!format) -+ return TRUE; -+ -+ data = gtk_clipboard_wait_for_contents (clipboard, -+ gdk_atom_intern ("application/x-gtk-text-view-rich-text-format", FALSE)); -+ -+ if (data->length <= 0) -+ retval = FALSE; -+ else -+ { -+ tmp = g_strndup (data->data, data->length); -+ -+ retval = (strcmp (tmp, format) == 0); -+ -+ g_free (tmp); -+ } -+ -+ gtk_selection_data_free (data); -+ -+ return retval; -+} -+ - static void - clipboard_clipboard_buffer_received (GtkClipboard *clipboard, - GtkSelectionData *selection_data, -@@ -3036,6 +3221,7 @@ - { - ClipboardRequest *request_data = data; - GtkTextBuffer *src_buffer; -+ GtkTextBufferPrivate *priv; - - src_buffer = selection_data_get_buffer (selection_data, request_data); - -@@ -3059,10 +3245,19 @@ - } - else - { -- /* Request the text selection instead */ -- gtk_clipboard_request_text (clipboard, -- clipboard_text_received, -- data); -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (request_data->buffer); -+ -+ if (priv->can_paste_rich_text && -+ formats_match (clipboard, priv->rich_text_format)) -+ /* Request markup */ -+ gtk_clipboard_request_contents (clipboard, -+ gdk_atom_intern ("application/x-gtk-text-view-markup", FALSE), -+ clipboard_text_view_markup_received, data); -+ else -+ /* Request the text selection instead */ -+ gtk_clipboard_request_text (clipboard, -+ clipboard_text_received, -+ data); - } - } - -@@ -3071,6 +3266,8 @@ - { "TEXT", 0, TARGET_TEXT }, - { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }, - { "UTF8_STRING", 0, TARGET_UTF8_STRING }, -+ { "application/x-gtk-text-view-markup", 0, TARGET_TEXT_VIEW_MARKUP }, -+ { "application/x-gtk-text-view-rich-text-format", 0, TARGET_TEXT_VIEW_RICH_TEXT_FORMAT }, - { "GTK_TEXT_BUFFER_CONTENTS", 0, TARGET_TEXT_BUFFER_CONTENTS } - }; - -@@ -3591,6 +3788,68 @@ - } - } - -+void -+gtk_text_buffer_set_can_paste_rich_text (GtkTextBuffer *buffer, -+ gboolean can_paste_rich_text) -+{ -+ GtkTextBufferPrivate *priv; -+ -+ g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer)); -+ -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer); -+ -+ can_paste_rich_text = (can_paste_rich_text != FALSE); -+ -+ if (priv->can_paste_rich_text != can_paste_rich_text) -+ { -+ priv->can_paste_rich_text = can_paste_rich_text; -+ -+ g_object_notify (G_OBJECT (buffer), "can_paste_rich_text"); -+ } -+} -+ -+gboolean -+gtk_text_buffer_get_can_paste_rich_text (GtkTextBuffer *buffer) -+{ -+ GtkTextBufferPrivate *priv; -+ -+ g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), FALSE); -+ -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer); -+ -+ return priv->can_paste_rich_text; -+} -+ -+void -+gtk_text_buffer_set_rich_text_format (GtkTextBuffer *buffer, -+ const gchar *format) -+{ -+ gchar *new_format; -+ GtkTextBufferPrivate *priv; -+ -+ g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer)); -+ -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer); -+ -+ new_format = g_strdup (format); -+ g_free (priv->rich_text_format); -+ -+ priv->rich_text_format = new_format; -+ g_object_notify (G_OBJECT (buffer), "rich_text_format"); -+} -+ -+G_CONST_RETURN gchar * -+gtk_text_buffer_get_rich_text_format (GtkTextBuffer *buffer) -+{ -+ GtkTextBufferPrivate *priv; -+ -+ g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), NULL); -+ -+ priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer); -+ -+ return priv->rich_text_format; -+} -+ - /* - * Logical attribute cache - */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.h.diff deleted file mode 100644 index 61555eac8b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbuffer.h.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktextbuffer.h 2004-10-21 22:13:17.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtktextbuffer.h 2005-04-06 16:19:38.024757720 +0300 -@@ -365,6 +365,14 @@ - void gtk_text_buffer_begin_user_action (GtkTextBuffer *buffer); - void gtk_text_buffer_end_user_action (GtkTextBuffer *buffer); - -+void gtk_text_buffer_set_can_paste_rich_text (GtkTextBuffer *buffer, -+ gboolean can_paste_rich_text); -+gboolean gtk_text_buffer_get_can_paste_rich_text (GtkTextBuffer *buffer); -+ -+void gtk_text_buffer_set_rich_text_format (GtkTextBuffer *buffer, -+ const gchar *format); -+G_CONST_RETURN gchar *gtk_text_buffer_get_rich_text_format (GtkTextBuffer *buffer); -+ - /* INTERNAL private stuff */ - void _gtk_text_buffer_spew (GtkTextBuffer *buffer); - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.c.diff deleted file mode 100644 index 39c8f748de..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.c.diff +++ /dev/null @@ -1,1688 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktextbufferserialize.c 1970-01-01 02:00:00.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktextbufferserialize.c 2005-04-06 16:19:38.024757720 +0300 -@@ -0,0 +1,1685 @@ -+/* gtktextbufferserialize.c -+ * -+ * Copyright (C) 2001 Havoc Pennington -+ * Copyright (C) 2004 Nokia -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Library General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Library General Public License for more details. -+ * -+ * You should have received a copy of the GNU Library General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+ -+/* FIXME: We should use other error codes for the -+ * parts that deal with the format errors -+ */ -+ -+#include <config.h> -+ -+#include <stdio.h> -+#include "gdk-pixbuf/gdk-pixdata.h" -+#include "gtktextbufferserialize.h" -+#include "gtkintl.h" -+ -+#include <string.h> -+#include <stdlib.h> -+ -+typedef struct -+{ -+ GString *tag_table_str; -+ GString *text_str; -+ GHashTable *tags; -+ GtkTextIter start, end; -+ -+ gint n_pixbufs; -+ GList *pixbufs; -+} SerializationContext; -+ -+static gchar * -+serialize_value (GValue *value) -+{ -+ if (g_value_type_transformable (value->g_type, G_TYPE_STRING)) -+ { -+ GValue text_value = { 0 }; -+ gchar *tmp; -+ -+ g_value_init (&text_value, G_TYPE_STRING); -+ g_value_transform (value, &text_value); -+ -+ tmp = g_markup_escape_text (g_value_get_string (&text_value), -1); -+ g_value_unset (&text_value); -+ -+ return tmp; -+ } -+ else if (value->g_type == GDK_TYPE_COLOR) -+ { -+ GdkColor *color = g_value_get_boxed (value); -+ -+ return g_strdup_printf ("%x:%x:%x", color->red, color->green, color->blue); -+ } -+ else -+ { -+ g_warning ("Type %s is not serializable\n", g_type_name (value->g_type)); -+ } -+ -+ return NULL; -+} -+ -+static gboolean -+deserialize_value (const gchar *str, GValue *value) -+{ -+ if (g_value_type_transformable (G_TYPE_STRING, value->g_type)) -+ { -+ GValue text_value = { 0 }; -+ gboolean retval; -+ -+ g_value_init (&text_value, G_TYPE_STRING); -+ g_value_set_static_string (&text_value, str); -+ -+ retval = g_value_transform (&text_value, value); -+ g_value_unset (&text_value); -+ -+ return retval; -+ } -+ else if (value->g_type == G_TYPE_BOOLEAN) -+ { -+ gboolean v; -+ -+ v = strcmp (str, "TRUE") == 0; -+ -+ g_value_set_boolean (value, v); -+ -+ return TRUE; -+ } -+ else if (value->g_type == G_TYPE_INT) -+ { -+ gchar *tmp; -+ int v; -+ -+ v = strtol (str, &tmp, 10); -+ -+ if (tmp == NULL || tmp == str) -+ return FALSE; -+ -+ g_value_set_int (value, v); -+ -+ return TRUE; -+ } -+ else if (value->g_type == G_TYPE_DOUBLE) -+ { -+ gchar *tmp; -+ gdouble v; -+ -+ v = g_ascii_strtod (str, &tmp); -+ -+ if (tmp == NULL || tmp == str) -+ return FALSE; -+ -+ g_value_set_double (value, v); -+ -+ return TRUE; -+ } -+ else if (value->g_type == GDK_TYPE_COLOR) -+ { -+ GdkColor color; -+ const gchar *old; -+ gchar *tmp; -+ -+ old = str; -+ color.red = strtol (old, &tmp, 16); -+ -+ if (tmp == NULL || tmp == old) -+ return FALSE; -+ -+ old = tmp; -+ if (*old++ != ':') -+ return FALSE; -+ -+ color.green = strtol (old, &tmp, 16); -+ if (tmp == NULL || tmp == old) -+ return FALSE; -+ -+ old = tmp; -+ if (*old++ != ':') -+ return FALSE; -+ -+ color.blue = strtol (old, &tmp, 16); -+ -+ if (tmp == NULL || tmp == old || *tmp != '\0') -+ return FALSE; -+ -+ g_value_set_boxed (value, &color); -+ -+ return TRUE; -+ } -+ else if (G_VALUE_HOLDS_ENUM (value)) -+ { -+ GEnumClass *class = G_ENUM_CLASS (g_type_class_peek (value->g_type)); -+ GEnumValue *enum_value; -+ -+ enum_value = g_enum_get_value_by_name (class, str); -+ -+ if (enum_value) -+ { -+ g_value_set_enum (value, enum_value->value); -+ return TRUE; -+ } -+ -+ return FALSE; -+ } -+ else -+ { -+ g_warning ("Type %s can not be deserialized\n", g_type_name (value->g_type)); -+ } -+ -+ return FALSE; -+} -+ -+/* Checks if a param is set, or if it's the default value */ -+static gboolean -+is_param_set (GObject *object, GParamSpec *pspec, GValue *value) -+{ -+ /* We need to special case some attributes here */ -+ if (strcmp (pspec->name, "background-gdk") == 0) -+ { -+ gboolean is_set; -+ -+ g_object_get (object, "background-set", &is_set, NULL); -+ -+ if (is_set) -+ { -+ g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec)); -+ -+ g_object_get_property (object, pspec->name, value); -+ -+ return TRUE; -+ } -+ -+ return FALSE; -+ } -+ else if (strcmp (pspec->name, "foreground-gdk") == 0) -+ { -+ gboolean is_set; -+ -+ g_object_get (object, "foreground-set", &is_set, NULL); -+ -+ if (is_set) -+ { -+ g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec)); -+ -+ g_object_get_property (object, pspec->name, value); -+ -+ return TRUE; -+ } -+ -+ return FALSE; -+ } -+ else -+ { -+ gboolean is_set; -+ gchar *is_set_name; -+ -+ is_set_name = g_strdup_printf ("%s-set", pspec->name); -+ -+ if (g_object_class_find_property (G_OBJECT_GET_CLASS (object), is_set_name) == NULL) -+ { -+ g_free (is_set_name); -+ return FALSE; -+ } -+ else -+ { -+ g_object_get (object, is_set_name, &is_set, NULL); -+ -+ if (!is_set) -+ { -+ g_free (is_set_name); -+ return FALSE; -+ } -+ -+ g_free (is_set_name); -+ -+ g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec)); -+ -+ g_object_get_property (object, pspec->name, value); -+ -+ if (g_param_value_defaults (pspec, value)) -+ { -+ g_value_unset (value); -+ -+ return FALSE; -+ } -+ } -+ return TRUE; -+ } -+} -+ -+static void -+serialize_tag (gpointer key, gpointer data, gpointer user_data) -+{ -+ SerializationContext *context = user_data; -+ GtkTextTag *tag = data; -+ gchar *tag_name; -+ GParamSpec **pspecs; -+ guint n_pspecs; -+ int i; -+ -+ tag_name = g_markup_escape_text (tag->name, -1); -+ g_string_append_printf (context->tag_table_str, " <tag name=\"%s\" priority=\"%d\">\n", tag_name, tag->priority); -+ -+ /* Serialize properties */ -+ pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (tag), &n_pspecs); -+ -+ for (i = 0; i < n_pspecs; i++) -+ { -+ GValue value = { 0 }; -+ gchar *tmp, *tmp2; -+ -+ if (!(pspecs[i]->flags & G_PARAM_READABLE) || -+ !(pspecs[i]->flags & G_PARAM_WRITABLE)) -+ continue; -+ -+ if (!is_param_set (G_OBJECT (tag), pspecs[i], &value)) -+ continue; -+ -+ /* Now serialize the attr */ -+ tmp = g_markup_escape_text (pspecs[i]->name, -1); -+ g_string_append_printf (context->tag_table_str, " <attr name=\"%s\" ", tmp); -+ g_free (tmp); -+ -+ tmp = g_markup_escape_text (g_type_name (pspecs[i]->value_type), -1); -+ tmp2 = serialize_value (&value); -+ g_string_append_printf (context->tag_table_str, "type=\"%s\" value=\"%s\" />\n", tmp, tmp2); -+ -+ g_free (tmp); -+ g_free (tmp2); -+ -+ g_value_unset (&value); -+ } -+ -+ g_free (pspecs); -+ -+ g_string_append (context->tag_table_str, " </tag>\n"); -+ g_free (tag_name); -+} -+ -+static void -+serialize_tags (SerializationContext *context) -+{ -+ g_string_append (context->tag_table_str, " <text_view_markup>\n"); -+ g_string_append (context->tag_table_str, " <tags>\n"); -+ g_hash_table_foreach (context->tags, serialize_tag, context); -+ g_string_append (context->tag_table_str, " </tags>\n"); -+} -+ -+#if 0 -+static void -+dump_tag_list (const gchar *str, GList *list) -+{ -+ g_print ("%s: ", str); -+ -+ if (!list) -+ g_print ("(empty)"); -+ else -+ { -+ while (list) -+ { -+ g_print ("%s ", ((GtkTextTag *)list->data)->name); -+ list = list->next; -+ } -+ } -+ -+ g_print ("\n"); -+} -+#endif -+ -+static void -+find_list_delta (GSList *old_list, GSList *new_list, -+ GList **added, GList **removed) -+{ -+ GSList *tmp; -+ GList *tmp_added, *tmp_removed; -+ -+ tmp_added = NULL; -+ tmp_removed = NULL; -+ -+ /* Find added tags */ -+ tmp = new_list; -+ while (tmp) -+ { -+ if (!g_slist_find (old_list, tmp->data)) -+ tmp_added = g_list_prepend (tmp_added, tmp->data); -+ -+ tmp = tmp->next; -+ } -+ -+ *added = tmp_added; -+ -+ /* Find removed tags */ -+ tmp = old_list; -+ while (tmp) -+ { -+ if (!g_slist_find (new_list, tmp->data)) -+ tmp_removed = g_list_prepend (tmp_removed, tmp->data); -+ -+ tmp = tmp->next; -+ } -+ -+ /* We reverse the list here to match the xml semantics */ -+ *removed = g_list_reverse (tmp_removed); -+} -+ -+static void -+serialize_section_header (GString *str, -+ const gchar *name, -+ gint length) -+{ -+ g_return_if_fail (strlen (name) == 8); -+ -+ g_string_append (str, name); -+ -+ g_string_append_c (str, length >> 24); -+ -+ g_string_append_c (str, (length >> 16) & 0xff); -+ g_string_append_c (str, (length >> 8) & 0xff); -+ g_string_append_c (str, length & 0xff); -+} -+ -+static void -+serialize_text (GtkTextBuffer *buffer, SerializationContext *context) -+{ -+ GtkTextIter iter, old_iter; -+ GSList *tag_list, *new_tag_list; -+ GQueue *active_tags; -+ int i; -+ -+ g_string_append (context->text_str, "<text>"); -+ -+ iter = context->start; -+ tag_list = NULL; -+ active_tags = g_queue_new (); -+ -+ do -+ { -+ GList *added, *removed; -+ GList *tmp; -+ gchar *tmp_text, *escaped_text; -+ -+ new_tag_list = gtk_text_iter_get_tags (&iter); -+ find_list_delta (tag_list, new_tag_list, &added, &removed); -+ -+ /* Handle removed tags */ -+ tmp = removed; -+ while (tmp) -+ { -+ GtkTextTag *tag = tmp->data; -+ -+ g_string_append (context->text_str, "</apply_tag>"); -+ -+ /* We might need to drop some of the tags and re-add them afterwards */ -+ while (g_queue_peek_head (active_tags) != tag && -+ !g_queue_is_empty (active_tags)) -+ { -+ added = g_list_prepend (added, g_queue_pop_head (active_tags)); -+ g_string_append_printf (context->text_str, "</apply_tag>"); -+ } -+ -+ g_queue_pop_head (active_tags); -+ -+ tmp = tmp->next; -+ } -+ -+ /* Handle added tags */ -+ tmp = added; -+ while (tmp) -+ { -+ GtkTextTag *tag = tmp->data; -+ gchar *tag_name; -+ -+ /* Add it to the tag hash table */ -+ g_hash_table_insert (context->tags, tag, tag); -+ -+ tag_name = g_markup_escape_text (tag->name, -1); -+ -+ g_string_append_printf (context->text_str, "<apply_tag name=\"%s\">", tag_name); -+ g_free (tag_name); -+ -+ g_queue_push_head (active_tags, tag); -+ -+ tmp = tmp->next; -+ } -+ -+ g_slist_free (tag_list); -+ tag_list = new_tag_list; -+ -+ old_iter = iter; -+ -+ /* Now try to go to either the next tag toggle, or if a pixbuf appears */ -+ while (TRUE) -+ { -+ gunichar ch = gtk_text_iter_get_char (&iter); -+ -+ if (ch == 0xFFFC) -+ { -+ GdkPixbuf *pixbuf = gtk_text_iter_get_pixbuf (&iter); -+ -+ if (pixbuf) { -+ g_string_append_printf (context->text_str, "<pixbuf index=\"%d\" />", context->n_pixbufs); -+ -+ context->n_pixbufs++; -+ context->pixbufs = g_list_prepend (context->pixbufs, pixbuf); -+ } -+ } -+ -+ gtk_text_iter_forward_char (&iter); -+ -+ if (gtk_text_iter_toggles_tag (&iter, NULL)) -+ break; -+ } -+ -+ /* We might have moved too far */ -+ if (gtk_text_iter_compare (&iter, &context->end) > 0) -+ iter = context->end; -+ -+ /* Append the text */ -+ tmp_text = gtk_text_iter_get_slice (&old_iter, &iter); -+ escaped_text = g_markup_escape_text (tmp_text, -1); -+ g_free (tmp_text); -+ -+ g_string_append (context->text_str, escaped_text); -+ g_free (escaped_text); -+ } -+ while (!gtk_text_iter_equal (&iter, &context->end)); -+ -+ /* Close any open tags */ -+ for (i = 0; i < g_queue_get_length (active_tags); i++) { -+ g_string_append (context->text_str, "</apply_tag>"); -+ } -+ g_queue_free (active_tags); -+ g_string_append (context->text_str, "</text>\n</text_view_markup>\n"); -+} -+ -+static void -+serialize_pixbufs (SerializationContext *context, -+ GString *text) -+{ -+ GList *list; -+ -+ for (list = context->pixbufs; list != NULL; list = list->next) -+ { -+ GdkPixbuf *pixbuf = list->data; -+ GdkPixdata pixdata; -+ guint8 *tmp; -+ guint len; -+ -+ gdk_pixdata_from_pixbuf (&pixdata, pixbuf, FALSE); -+ tmp = gdk_pixdata_serialize (&pixdata, &len); -+ -+ serialize_section_header (text, "PDPIXBUF", len); -+ g_string_append_len (text, tmp, len); -+ g_free (tmp); -+ } -+} -+ -+gchar * -+gtk_text_buffer_serialize_rich_text (GtkTextBuffer *buffer, -+ const GtkTextIter *start, -+ const GtkTextIter *end, -+ gint *len) -+{ -+ SerializationContext context; -+ GString *text; -+ -+ context.tags = g_hash_table_new (NULL, NULL); -+ context.text_str = g_string_new (NULL); -+ context.tag_table_str = g_string_new (NULL); -+ context.start = *start; -+ context.end = *end; -+ context.n_pixbufs = 0; -+ context.pixbufs = NULL; -+ -+ /* We need to serialize the text before the tag table so we know -+ what tags are used */ -+ serialize_text (buffer, &context); -+ serialize_tags (&context); -+ -+ text = g_string_new (NULL); -+ serialize_section_header (text, "RICHTEXT", context.tag_table_str->len + context.text_str->len); -+ -+ g_print ("when serializing length is: %d\n", context.tag_table_str->len + context.text_str->len); -+ -+ g_string_append_len (text, context.tag_table_str->str, context.tag_table_str->len); -+ g_string_append_len (text, context.text_str->str, context.text_str->len); -+ -+ context.pixbufs = g_list_reverse (context.pixbufs); -+ serialize_pixbufs (&context, text); -+ -+ g_hash_table_destroy (context.tags); -+ g_list_free (context.pixbufs); -+ g_string_free (context.text_str, TRUE); -+ g_string_free (context.tag_table_str, TRUE); -+ -+ *len = text->len; -+ -+ return g_string_free (text, FALSE); -+} -+ -+typedef enum -+{ -+ STATE_START, -+ STATE_TEXT_VIEW_MARKUP, -+ STATE_TAGS, -+ STATE_TAG, -+ STATE_ATTR, -+ STATE_TEXT, -+ STATE_APPLY_TAG, -+ STATE_PIXBUF -+} ParseState; -+ -+typedef struct -+{ -+ gchar *text; -+ GdkPixbuf *pixbuf; -+ GSList *tags; -+} TextSpan; -+ -+typedef struct -+{ -+ GtkTextTag *tag; -+ gint prio; -+} TextTagPrio; -+ -+typedef struct -+{ -+ GSList *states; -+ -+ GList *headers; -+ -+ GtkTextBuffer *buffer; -+ -+ /* Tags that are defined in <tag> elements */ -+ GHashTable *defined_tags; -+ -+ /* Tag name substitutions */ -+ GHashTable *substitutions; -+ -+ /* Current tag */ -+ GtkTextTag *current_tag; -+ -+ /* Priority of current tag */ -+ gint current_tag_prio; -+ -+ /* Tags and their priorities */ -+ GList *tag_priorities; -+ -+ GSList *tag_stack; -+ -+ GList *spans; -+ -+ gboolean create_tags; -+ -+ gboolean parsed_text; -+ gboolean parsed_tags; -+} ParseInfo; -+ -+static void -+set_error (GError **err, -+ GMarkupParseContext *context, -+ int error_domain, -+ int error_code, -+ const char *format, -+ ...) -+{ -+ int line, ch; -+ va_list args; -+ char *str; -+ -+ g_markup_parse_context_get_position (context, &line, &ch); -+ -+ va_start (args, format); -+ str = g_strdup_vprintf (format, args); -+ va_end (args); -+ -+ g_set_error (err, error_domain, error_code, -+ ("Line %d character %d: %s"), -+ line, ch, str); -+ -+ g_free (str); -+} -+ -+static void -+push_state (ParseInfo *info, -+ ParseState state) -+{ -+ info->states = g_slist_prepend (info->states, GINT_TO_POINTER (state)); -+} -+ -+static void -+pop_state (ParseInfo *info) -+{ -+ g_return_if_fail (info->states != NULL); -+ -+ info->states = g_slist_remove (info->states, info->states->data); -+} -+ -+static ParseState -+peek_state (ParseInfo *info) -+{ -+ g_return_val_if_fail (info->states != NULL, STATE_START); -+ -+ return GPOINTER_TO_INT (info->states->data); -+} -+ -+#define ELEMENT_IS(name) (strcmp (element_name, (name)) == 0) -+ -+typedef struct -+{ -+ const char *name; -+ const char **retloc; -+} LocateAttr; -+ -+static gboolean -+locate_attributes (GMarkupParseContext *context, -+ const char *element_name, -+ const char **attribute_names, -+ const char **attribute_values, -+ GError **error, -+ const char *first_attribute_name, -+ const char **first_attribute_retloc, -+ ...) -+{ -+ va_list args; -+ const char *name; -+ const char **retloc; -+ int n_attrs; -+#define MAX_ATTRS 24 -+ LocateAttr attrs[MAX_ATTRS]; -+ gboolean retval; -+ int i; -+ -+ g_return_val_if_fail (first_attribute_name != NULL, FALSE); -+ g_return_val_if_fail (first_attribute_retloc != NULL, FALSE); -+ -+ retval = TRUE; -+ -+ n_attrs = 1; -+ attrs[0].name = first_attribute_name; -+ attrs[0].retloc = first_attribute_retloc; -+ *first_attribute_retloc = NULL; -+ -+ va_start (args, first_attribute_retloc); -+ -+ name = va_arg (args, const char*); -+ retloc = va_arg (args, const char**); -+ -+ while (name != NULL) -+ { -+ g_return_val_if_fail (retloc != NULL, FALSE); -+ -+ g_assert (n_attrs < MAX_ATTRS); -+ -+ attrs[n_attrs].name = name; -+ attrs[n_attrs].retloc = retloc; -+ n_attrs += 1; -+ *retloc = NULL; -+ -+ name = va_arg (args, const char*); -+ retloc = va_arg (args, const char**); -+ } -+ -+ va_end (args); -+ -+ if (!retval) -+ return retval; -+ -+ i = 0; -+ while (attribute_names[i]) -+ { -+ int j; -+ gboolean found; -+ -+ found = FALSE; -+ j = 0; -+ while (j < n_attrs) -+ { -+ if (strcmp (attrs[j].name, attribute_names[i]) == 0) -+ { -+ retloc = attrs[j].retloc; -+ -+ if (*retloc != NULL) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, -+ G_MARKUP_ERROR_PARSE, -+ _("Attribute \"%s\" repeated twice on the same <%s> element"), -+ attrs[j].name, element_name); -+ retval = FALSE; -+ goto out; -+ } -+ -+ *retloc = attribute_values[i]; -+ found = TRUE; -+ } -+ -+ ++j; -+ } -+ -+ if (!found) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, -+ G_MARKUP_ERROR_PARSE, -+ _("Attribute \"%s\" is invalid on <%s> element in this context"), -+ attribute_names[i], element_name); -+ retval = FALSE; -+ goto out; -+ } -+ -+ ++i; -+ } -+ -+ out: -+ return retval; -+} -+ -+static gboolean -+check_no_attributes (GMarkupParseContext *context, -+ const char *element_name, -+ const char **attribute_names, -+ const char **attribute_values, -+ GError **error) -+{ -+ if (attribute_names[0] != NULL) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, -+ G_MARKUP_ERROR_PARSE, -+ _("Attribute \"%s\" is invalid on <%s> element in this context"), -+ attribute_names[0], element_name); -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ -+static const gchar * -+tag_exists (GMarkupParseContext *context, -+ const gchar *name, -+ ParseInfo *info, -+ GError **error) -+{ -+ const gchar *real_name; -+ -+ if (info->create_tags) -+ { -+ /* First, try the substitutions */ -+ real_name = g_hash_table_lookup (info->substitutions, name); -+ -+ if (real_name) -+ return real_name; -+ -+ /* Next, try the list of defined tags */ -+ if (g_hash_table_lookup (info->defined_tags, name) != NULL) -+ return name; -+ -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Tag \"%s\" has not been defined."), name); -+ -+ return NULL; -+ } -+ else -+ { -+ if (gtk_text_tag_table_lookup (info->buffer->tag_table, name) != NULL) -+ return name; -+ -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Tag \"%s\" does not exist in buffer and tags can not be created."), name); -+ -+ return NULL; -+ } -+} -+ -+typedef struct -+{ -+ const gchar *id; -+ gint length; -+ const gchar *start; -+} Header; -+ -+static GdkPixbuf * -+get_pixbuf_from_headers (GList *headers, int id, GError **error) -+{ -+ Header *header; -+ GdkPixdata pixdata; -+ GdkPixbuf *pixbuf; -+ -+ header = g_list_nth_data (headers, id); -+ -+ if (!header) -+ return NULL; -+ -+ if (!gdk_pixdata_deserialize (&pixdata, header->length, header->start, error)) -+ return NULL; -+ -+ pixbuf = gdk_pixbuf_from_pixdata (&pixdata, TRUE, error); -+ -+ g_print ("pixbuf is: %p\n", pixbuf); -+ -+ return pixbuf; -+} -+ -+static void -+parse_apply_tag_element (GMarkupParseContext *context, -+ const gchar *element_name, -+ const gchar **attribute_names, -+ const gchar **attribute_values, -+ ParseInfo *info, -+ GError **error) -+{ -+ const gchar *name, *tag_name, *id; -+ -+ g_assert (peek_state (info) == STATE_TEXT || -+ peek_state (info) == STATE_APPLY_TAG); -+ -+ if (ELEMENT_IS ("apply_tag")) -+ { -+ if (!locate_attributes (context, element_name, attribute_names, attribute_values, error, -+ "name", &name, NULL)) -+ return; -+ -+ tag_name = tag_exists (context, name, info, error); -+ -+ if (!tag_name) -+ return; -+ -+ info->tag_stack = g_slist_prepend (info->tag_stack, g_strdup (tag_name)); -+ -+ push_state (info, STATE_APPLY_TAG); -+ } -+ else if (ELEMENT_IS ("pixbuf")) -+ { -+ int int_id; -+ GdkPixbuf *pixbuf; -+ TextSpan *span; -+ -+ if (!locate_attributes (context, element_name, attribute_names, attribute_values, error, -+ "index", &id, NULL)) -+ return; -+ -+ int_id = atoi (id); -+ pixbuf = get_pixbuf_from_headers (info->headers, int_id, error); -+ -+ span = g_new0 (TextSpan, 1); -+ span->pixbuf = pixbuf; -+ span->tags = NULL; -+ -+ info->spans = g_list_prepend (info->spans, span); -+ -+ if (!pixbuf) -+ return; -+ -+ push_state (info, STATE_PIXBUF); -+ } -+ else -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Element <%s> is not allowed below <%s>"), -+ element_name, peek_state(info) == STATE_TEXT ? "text" : "apply_tag"); -+} -+ -+static void -+parse_attr_element (GMarkupParseContext *context, -+ const gchar *element_name, -+ const gchar **attribute_names, -+ const gchar **attribute_values, -+ ParseInfo *info, -+ GError **error) -+{ -+ const gchar *name, *type, *value; -+ GType gtype; -+ GValue gvalue = { 0 }; -+ GParamSpec *pspec; -+ -+ g_assert (peek_state (info) == STATE_TAG); -+ -+ if (ELEMENT_IS ("attr")) -+ { -+ if (!locate_attributes (context, element_name, attribute_names, attribute_values, error, -+ "name", &name, "type", &type, "value", &value, NULL)) -+ return; -+ -+ gtype = g_type_from_name (type); -+ -+ if (gtype == G_TYPE_INVALID) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("\"%s\" is not a valid attribute type"), type); -+ return; -+ } -+ -+ if (!(pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (info->current_tag), name))) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("\"%s\" is not a valid attribute name"), name); -+ return; -+ } -+ -+ g_value_init (&gvalue, gtype); -+ -+ if (!deserialize_value (value, &gvalue)) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\""), -+ value, type, name); -+ return; -+ } -+ -+ if (g_param_value_validate (pspec, &gvalue)) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("\"%s\" is not a valid value of for attribute \"%s\""), -+ value, name); -+ g_value_unset (&gvalue); -+ return; -+ } -+ -+ g_object_set_property (G_OBJECT (info->current_tag), -+ name, &gvalue); -+ -+ g_value_unset (&gvalue); -+ -+ push_state (info, STATE_ATTR); -+ } -+ else -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Element <%s> is not allowed below <%s>"), -+ element_name, "tag"); -+ } -+} -+ -+ -+static gchar * -+get_tag_name (ParseInfo *info, -+ const gchar *tag_name) -+{ -+ gchar *name; -+ gint i; -+ -+ name = g_strdup (tag_name); -+ -+ if (!info->create_tags) -+ return name; -+ -+ i = 0; -+ -+ while (gtk_text_tag_table_lookup (info->buffer->tag_table, name) != NULL) -+ { -+ g_free (name); -+ name = g_strdup_printf ("%s-%d", tag_name, ++i); -+ } -+ -+ if (i != 0) -+ { -+ g_hash_table_insert (info->substitutions, g_strdup (tag_name), g_strdup (name)); -+ } -+ -+ return name; -+} -+ -+static void -+parse_tag_element (GMarkupParseContext *context, -+ const gchar *element_name, -+ const gchar **attribute_names, -+ const gchar **attribute_values, -+ ParseInfo *info, -+ GError **error) -+{ -+ const gchar *name, *priority; -+ gchar *tag_name; -+ gint prio; -+ gchar *tmp; -+ -+ g_assert (peek_state (info) == STATE_TAGS); -+ -+ if (ELEMENT_IS ("tag")) -+ { -+ if (!locate_attributes (context, element_name, attribute_names, attribute_values, error, -+ "name", &name, "priority", &priority, NULL)) -+ return; -+ -+ if (g_hash_table_lookup (info->defined_tags, name) != NULL) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Tag \"%s\" already defined"), name); -+ return; -+ } -+ -+ prio = strtol (priority, &tmp, 10); -+ -+ if (tmp == NULL || tmp == priority) -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Tag \"%s\" has invalid priority \"%s\""), name, priority); -+ return; -+ } -+ -+ tag_name = get_tag_name (info, name); -+ info->current_tag = gtk_text_tag_new (tag_name); -+ info->current_tag_prio = prio; -+ -+ g_free (tag_name); -+ -+ push_state (info, STATE_TAG); -+ } -+ else -+ { -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Element <%s> is not allowed below <%s>"), -+ element_name, "tags"); -+ } -+} -+ -+static void -+start_element_handler (GMarkupParseContext *context, -+ const gchar *element_name, -+ const gchar **attribute_names, -+ const gchar **attribute_values, -+ gpointer user_data, -+ GError **error) -+{ -+ ParseInfo *info = user_data; -+ -+ switch (peek_state (info)) -+ { -+ case STATE_START: -+ if (ELEMENT_IS ("text_view_markup")) -+ { -+ if (!check_no_attributes (context, element_name, -+ attribute_names, attribute_values, error)) -+ return; -+ -+ push_state (info, STATE_TEXT_VIEW_MARKUP); -+ break; -+ } -+ else -+ set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Outermost element in text must be <text_view_markup> not <%s>"), -+ element_name); -+ break; -+ case STATE_TEXT_VIEW_MARKUP: -+ if (ELEMENT_IS ("tags")) -+ { -+ if (info->parsed_tags) -+ { -+ set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("A <tags> element has already been specified")); -+ return; -+ } -+ -+ if (!check_no_attributes (context, element_name, -+ attribute_names, attribute_values, error)) -+ return; -+ -+ push_state (info, STATE_TAGS); -+ break; -+ } -+ else if (ELEMENT_IS ("text")) -+ { -+ if (info->parsed_text) -+ { -+ set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("A <text> element has already been specified")); -+ return; -+ } -+ else if (!info->parsed_tags) -+ { -+ set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("A <text> element can't occur before a <tags> element")); -+ return; -+ } -+ -+ if (!check_no_attributes (context, element_name, -+ attribute_names, attribute_values, error)) -+ return; -+ -+ push_state (info, STATE_TEXT); -+ break; -+ } -+ else -+ set_error (error, context, -+ G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, -+ _("Element <%s> is not allowed below <%s>"), -+ element_name, "text_view_markup"); -+ break; -+ case STATE_TAGS: -+ parse_tag_element (context, element_name, -+ attribute_names, attribute_values, -+ info, error); -+ break; -+ case STATE_TAG: -+ parse_attr_element (context, element_name, -+ attribute_names, attribute_values, -+ info, error); -+ break; -+ case STATE_TEXT: -+ case STATE_APPLY_TAG: -+ parse_apply_tag_element (context, element_name, -+ attribute_names, attribute_values, -+ info, error); -+ break; -+ default: -+ g_assert_not_reached (); -+ break; -+ } -+} -+ -+static gint -+sort_tag_prio (TextTagPrio *a, -+ TextTagPrio *b) -+{ -+ if (a->prio < b->prio) -+ return -1; -+ else if (a->prio > b->prio) -+ return 1; -+ else -+ return 0; -+} -+ -+static void -+end_element_handler (GMarkupParseContext *context, -+ const gchar *element_name, -+ gpointer user_data, -+ GError **error) -+{ -+ ParseInfo *info = user_data; -+ gchar *tmp; -+ GList *list; -+ -+ switch (peek_state (info)) -+ { -+ case STATE_TAGS: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_TEXT_VIEW_MARKUP); -+ -+ info->parsed_tags = TRUE; -+ -+ /* Sort list and add the tags */ -+ info->tag_priorities = g_list_sort (info->tag_priorities, -+ (GCompareFunc)sort_tag_prio); -+ list = info->tag_priorities; -+ while (list) -+ { -+ TextTagPrio *prio = list->data; -+ -+ if (info->create_tags) -+ gtk_text_tag_table_add (info->buffer->tag_table, prio->tag); -+ -+ g_object_unref (prio->tag); -+ prio->tag = NULL; -+ -+ list = list->next; -+ } -+ -+ break; -+ case STATE_TAG: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_TAGS); -+ -+ /* Add tag to defined tags hash */ -+ tmp = g_strdup (info->current_tag->name); -+ g_hash_table_insert (info->defined_tags, -+ tmp, tmp); -+ -+ if (info->create_tags) -+ { -+ TextTagPrio *prio; -+ -+ /* add the tag to the list */ -+ prio = g_new0 (TextTagPrio, 1); -+ prio->prio = info->current_tag_prio; -+ prio->tag = info->current_tag; -+ -+ info->tag_priorities = g_list_prepend (info->tag_priorities, prio); -+ } -+ -+ info->current_tag = NULL; -+ break; -+ case STATE_ATTR: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_TAG); -+ break; -+ case STATE_APPLY_TAG: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_APPLY_TAG || -+ peek_state (info) == STATE_TEXT); -+ -+ /* Pop tag */ -+ g_free (info->tag_stack->data); -+ info->tag_stack = g_slist_delete_link (info->tag_stack, -+ info->tag_stack); -+ -+ break; -+ case STATE_TEXT: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_TEXT_VIEW_MARKUP); -+ -+ info->spans = g_list_reverse (info->spans); -+ info->parsed_text = TRUE; -+ break; -+ case STATE_TEXT_VIEW_MARKUP: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_START); -+ break; -+ case STATE_PIXBUF: -+ pop_state (info); -+ g_assert (peek_state (info) == STATE_APPLY_TAG || -+ peek_state (info) == STATE_TEXT); -+ break; -+ default: -+ g_assert_not_reached (); -+ break; -+ } -+} -+ -+static gboolean -+all_whitespace (const char *text, -+ int text_len) -+{ -+ const char *p; -+ const char *end; -+ -+ p = text; -+ end = text + text_len; -+ -+ while (p != end) -+ { -+ if (!g_ascii_isspace (*p)) -+ return FALSE; -+ -+ p = g_utf8_next_char (p); -+ } -+ -+ return TRUE; -+} -+ -+static GSList * -+copy_tag_list (GSList *tag_list) -+{ -+ GSList *tmp = NULL; -+ -+ while (tag_list) -+ { -+ tmp = g_slist_prepend (tmp, g_strdup (tag_list->data)); -+ -+ tag_list = tag_list->next; -+ } -+ -+ return tmp; -+} -+ -+static void -+text_handler (GMarkupParseContext *context, -+ const gchar *text, -+ gsize text_len, -+ gpointer user_data, -+ GError **error) -+{ -+ ParseInfo *info = user_data; -+ TextSpan *span; -+ -+ if (all_whitespace (text, text_len) && -+ peek_state (info) != STATE_TEXT && -+ peek_state (info) != STATE_APPLY_TAG) -+ return; -+ -+ switch (peek_state (info)) -+ { -+ case STATE_START: -+ g_assert_not_reached (); /* gmarkup shouldn't do this */ -+ break; -+ case STATE_TEXT: -+ case STATE_APPLY_TAG: -+ if (text_len == 0) -+ return; -+ -+ span = g_new0 (TextSpan, 1); -+ span->text = g_strndup (text, text_len); -+ span->tags = copy_tag_list (info->tag_stack); -+ -+ info->spans = g_list_prepend (info->spans, span); -+ break; -+ default: -+ g_assert_not_reached (); -+ break; -+ } -+} -+ -+static void -+parse_info_init (ParseInfo *info, -+ GtkTextBuffer *buffer, -+ gboolean create_tags, -+ GList *headers) -+{ -+ info->states = g_slist_prepend (NULL, GINT_TO_POINTER (STATE_START)); -+ -+ info->create_tags = create_tags; -+ info->headers = headers; -+ info->defined_tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); -+ info->substitutions = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); -+ info->tag_stack = NULL; -+ info->spans = NULL; -+ info->parsed_text = FALSE; -+ info->parsed_tags = FALSE; -+ info->current_tag = NULL; -+ info->current_tag_prio = -1; -+ info->tag_priorities = NULL; -+ -+ info->buffer = buffer; -+} -+ -+static void -+text_span_free (TextSpan *span) -+{ -+ GSList *tmp; -+ -+ g_free (span->text); -+ -+ tmp = span->tags; -+ while (tmp) -+ { -+ g_free (tmp->data); -+ -+ tmp = tmp->next; -+ } -+ g_slist_free (span->tags); -+ g_free (span); -+} -+ -+static void -+parse_info_free (ParseInfo *info) -+{ -+ GSList *slist; -+ GList *list; -+ -+ slist = info->tag_stack; -+ while (slist) -+ { -+ g_free (slist->data); -+ -+ slist = slist->next; -+ } -+ -+ g_slist_free (info->tag_stack); -+ g_slist_free (info->states); -+ -+ g_hash_table_destroy (info->substitutions); -+ g_hash_table_destroy (info->defined_tags); -+ -+ if (info->current_tag) -+ g_object_unref (info->current_tag); -+ -+ list = info->spans; -+ while (list) -+ { -+ text_span_free (list->data); -+ -+ list = list->next; -+ } -+ g_list_free (info->spans); -+ -+ list = info->tag_priorities; -+ while (list) -+ { -+ TextTagPrio *prio = list->data; -+ -+ if (prio->tag) -+ g_object_unref (prio->tag); -+ g_free (prio); -+ -+ list = list->next; -+ } -+ g_list_free (info->tag_priorities); -+ -+} -+ -+static const gchar * -+get_tag_substitution (ParseInfo *info, -+ const gchar *name) -+{ -+ gchar *subst; -+ -+ if ((subst = g_hash_table_lookup (info->substitutions, name))) -+ return subst; -+ else -+ return name; -+} -+ -+static void -+insert_text (ParseInfo *info, -+ GtkTextIter *iter) -+{ -+ GtkTextIter start_iter; -+ GtkTextMark *mark; -+ GList *tmp; -+ GSList *tags; -+ -+ start_iter = *iter; -+ -+ mark = gtk_text_buffer_create_mark (info->buffer, "deserialize_insert_point", -+ &start_iter, TRUE); -+ -+ tmp = info->spans; -+ while (tmp) -+ { -+ TextSpan *span = tmp->data; -+ -+ if (span->text) -+ gtk_text_buffer_insert (info->buffer, iter, span->text, -1); -+ else -+ { -+ gtk_text_buffer_insert_pixbuf (info->buffer, iter, span->pixbuf); -+ g_object_unref (span->pixbuf); -+ } -+ gtk_text_buffer_get_iter_at_mark (info->buffer, &start_iter, mark); -+ -+ /* Apply tags */ -+ tags = span->tags; -+ while (tags) -+ { -+ const gchar *tag_name = get_tag_substitution (info, tags->data); -+ -+ gtk_text_buffer_apply_tag_by_name (info->buffer, tag_name, -+ &start_iter, iter); -+ -+ tags = tags->next; -+ } -+ -+ gtk_text_buffer_move_mark (info->buffer, mark, iter); -+ -+ tmp = tmp->next; -+ } -+ -+ gtk_text_buffer_delete_mark (info->buffer, mark); -+} -+ -+ -+ -+static int -+read_int (const guchar *start) -+{ -+ int result; -+ -+ result = -+ start[0] << 24 | -+ start[1] << 16 | -+ start[2] << 8 | -+ start[3]; -+ -+ return result; -+} -+ -+static gboolean -+header_is (Header *header, const gchar *id) -+{ -+ return (strncmp (header->id, id, 8) == 0); -+} -+ -+static GList * -+read_headers (const gchar *start, -+ gint len, -+ GError **error) -+{ -+ int i = 0; -+ int section_len; -+ Header *header; -+ GList *headers = NULL; -+ -+ while (i < len) -+ { -+ if (i + 12 >= len) -+ goto error; -+ -+ if (strncmp (start + i, "RICHTEXT", 8) == 0 || -+ strncmp (start + i, "PIXBDATA", 8) == 0) -+ { -+ -+ section_len = read_int (start + i + 8); -+ -+ if (i + 12 + section_len > len) -+ goto error; -+ -+ header = g_new0 (Header, 1); -+ header->id = start + i; -+ header->length = section_len; -+ header->start = start + i + 12; -+ -+ i += 12 + section_len; -+ -+ headers = g_list_prepend (headers, header); -+ } -+ else -+ break; -+ -+ } -+ -+ return g_list_reverse (headers); -+ -+ error: -+ g_list_foreach (headers, (GFunc) g_free, NULL); -+ g_list_free (headers); -+ -+ g_set_error (error, -+ G_MARKUP_ERROR, -+ G_MARKUP_ERROR_PARSE, -+ _("Serialized data is malformed")); -+ -+ return NULL; -+} -+ -+static gboolean -+deserialize_text (GtkTextBuffer *buffer, -+ GtkTextIter *iter, -+ const gchar *text, -+ gint len, -+ gboolean create_tags, -+ GError **error, -+ GList *headers) -+{ -+ GMarkupParseContext *context; -+ ParseInfo info; -+ gboolean retval = FALSE; -+ -+ -+ static GMarkupParser rich_text_parser = { -+ start_element_handler, -+ end_element_handler, -+ text_handler, -+ NULL, -+ NULL -+ }; -+ -+ parse_info_init (&info, buffer, create_tags, headers); -+ -+ context = g_markup_parse_context_new (&rich_text_parser, -+ 0, &info, NULL); -+ -+ if (!g_markup_parse_context_parse (context, -+ text, -+ len, -+ error)) -+ goto out; -+ -+ if (!g_markup_parse_context_end_parse (context, error)) -+ goto out; -+ -+ retval = TRUE; -+ -+ /* Now insert the text */ -+ insert_text (&info, iter); -+ -+ out: -+ parse_info_free (&info); -+ -+ g_markup_parse_context_free (context); -+ -+ return retval; -+} -+ -+gboolean -+gtk_text_buffer_deserialize_rich_text (GtkTextBuffer *buffer, -+ GtkTextIter *iter, -+ const gchar *text, -+ gint len, -+ gboolean create_tags, -+ GError **error) -+{ -+ GList *headers; -+ Header *header; -+ gboolean retval; -+ -+ headers = read_headers (text, len, error); -+ -+ if (!headers) -+ return FALSE; -+ -+ header = headers->data; -+ if (!header_is (header, "RICHTEXT")) -+ { -+ g_set_error (error, -+ G_MARKUP_ERROR, -+ G_MARKUP_ERROR_PARSE, -+ _("Serialized data is malformed. First section isn't RICHTEXT")); -+ -+ retval = FALSE; -+ goto out; -+ } -+ -+ retval = deserialize_text (buffer, iter, -+ header->start, header->length, -+ create_tags, error, headers->next); -+ -+ out: -+ g_list_foreach (headers, (GFunc)g_free, NULL); -+ g_list_free (headers); -+ -+ return retval; -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.h.diff deleted file mode 100644 index 653c227cbe..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextbufferserialize.h.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktextbufferserialize.h 1970-01-01 02:00:00.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktextbufferserialize.h 2005-04-06 16:19:38.025757568 +0300 -@@ -0,0 +1,37 @@ -+/* gtktextbufferserialize.h -+ * -+ * Copyright (C) 2004 Nokia -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Library General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Library General Public License for more details. -+ * -+ * You should have received a copy of the GNU Library General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+#ifndef GTK_TEXT_BUFFER_SERIALIZE_H -+ -+#include <gtk/gtktextbuffer.h> -+ -+gchar *gtk_text_buffer_serialize_rich_text (GtkTextBuffer *buffer, -+ const GtkTextIter *start, -+ const GtkTextIter *end, -+ gint *len); -+ -+gboolean gtk_text_buffer_deserialize_rich_text (GtkTextBuffer *buffer, -+ GtkTextIter *iter, -+ const gchar *text, -+ gint len, -+ gboolean create_tags, -+ GError **error); -+ -+ -+#endif /* GTK_TEXT_BUFFER_SERIALIZE_H */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextview.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextview.c.diff deleted file mode 100644 index 7323574a64..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktextview.c.diff +++ /dev/null @@ -1,417 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktextview.c 2005-03-01 08:28:56.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktextview.c 2005-04-06 16:19:38.152738264 +0300 -@@ -99,6 +99,11 @@ - - #define SPACE_FOR_CURSOR 1 - -+typedef struct _GtkTextViewPrivate GtkTextViewPrivate; -+ -+#define GTK_TEXT_VIEW_GET_PRIVATE(obj) ( G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ -+ GTK_TYPE_TEXT_VIEW, GtkTextViewPrivate) ) -+ - struct _GtkTextPendingScroll - { - GtkTextMark *mark; -@@ -145,6 +150,8 @@ - PROP_BUFFER, - PROP_OVERWRITE, - PROP_ACCEPTS_TAB, -+ PROP_AUTOCAP, -+ PROP_INPUT_MODE, - LAST_PROP - }; - -@@ -343,6 +350,13 @@ - - static void gtk_text_view_update_im_spot_location (GtkTextView *text_view); - -+static void gtk_text_view_set_autocap (GtkTextView *text_view, -+ gboolean autocap); -+static gboolean gtk_text_view_get_autocap (GtkTextView *text_view); -+static void gtk_text_view_set_input_mode (GtkTextView *text_view, -+ gint mode); -+static gint gtk_text_view_get_input_mode (GtkTextView *text_view); -+ - /* Container methods */ - static void gtk_text_view_add (GtkContainer *container, - GtkWidget *child); -@@ -412,6 +426,10 @@ - static gint text_window_get_width (GtkTextWindow *win); - static gint text_window_get_height (GtkTextWindow *win); - -+struct _GtkTextViewPrivate -+{ -+ guint release_selection : 1; -+}; - - static const GtkTargetEntry target_table[] = { - { "GTK_TEXT_BUFFER_CONTENTS", GTK_TARGET_SAME_APP, 0 }, -@@ -481,6 +499,7 @@ - - parent_class = g_type_class_peek_parent (klass); - -+ g_type_class_add_private( klass, sizeof(GtkTextViewPrivate) ); - /* Default handlers and virtual methods - */ - gobject_class->set_property = gtk_text_view_set_property; -@@ -667,6 +686,24 @@ - TRUE, - G_PARAM_READWRITE)); - -+ g_object_class_install_property (gobject_class, -+ PROP_AUTOCAP, -+ g_param_spec_boolean ("autocap", -+ P_("auto capitalization"), -+ P_("Enable autocap support"), -+ TRUE, -+ G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ -+ g_object_class_install_property (gobject_class, -+ PROP_INPUT_MODE, -+ g_param_spec_int ("input_mode", -+ P_("input mode"), -+ P_("Define widget's input mode"), -+ 0, -+ 9, /* keep me updated */ -+ 0, -+ G_PARAM_READABLE | G_PARAM_WRITABLE)); -+ - /* - * Style properties - */ -@@ -676,6 +713,14 @@ - P_("Color with which to draw error-indication underlines"), - GDK_TYPE_COLOR, - G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("autocap", -+ _("auto capitalization"), -+ _("Enable autocap support"), -+ TRUE, -+ G_PARAM_READABLE)); -+ - - /* - * Signals -@@ -1040,8 +1085,9 @@ - gtk_text_view_init (GtkTextView *text_view) - { - GtkWidget *widget; -- -+ GtkTextViewPrivate *priv = NULL; - widget = GTK_WIDGET (text_view); -+ priv = GTK_TEXT_VIEW_GET_PRIVATE(text_view); - - GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS); - -@@ -1057,6 +1103,8 @@ - text_view->tabs = NULL; - text_view->editable = TRUE; - -+ priv->release_selection = TRUE; -+ - gtk_drag_dest_set (widget, - 0, - target_table, G_N_ELEMENTS (target_table), -@@ -1070,6 +1118,10 @@ - * to it; so we create it here and destroy it in finalize (). - */ - text_view->im_context = gtk_im_multicontext_new (); -+ /* Set default stuff. */ -+ gtk_text_view_set_autocap (text_view, TRUE); -+ gtk_text_view_set_input_mode (text_view, 0); /* alpha-numeric-special */ -+ g_object_set (G_OBJECT (text_view->im_context), "use-show-hide", TRUE, NULL); - - g_signal_connect (text_view->im_context, "commit", - G_CALLBACK (gtk_text_view_commit_handler), text_view); -@@ -2664,6 +2716,14 @@ - gtk_text_view_set_accepts_tab (text_view, g_value_get_boolean (value)); - break; - -+ case PROP_AUTOCAP: -+ gtk_text_view_set_autocap (text_view, g_value_get_boolean (value)); -+ break; -+ -+ case PROP_INPUT_MODE: -+ gtk_text_view_set_input_mode (text_view, g_value_get_int (value)); -+ break; -+ - default: - g_assert_not_reached (); - break; -@@ -2738,6 +2798,14 @@ - g_value_set_boolean (value, text_view->accepts_tab); - break; - -+ case PROP_AUTOCAP: -+ g_value_set_boolean (value, gtk_text_view_get_autocap (text_view)); -+ break; -+ -+ case PROP_INPUT_MODE: -+ g_value_set_int (value, gtk_text_view_get_input_mode (text_view)); -+ break; -+ - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -3916,7 +3984,7 @@ - GtkTextView *text_view = GTK_TEXT_VIEW (widget); - GtkTextMark *insert; - GtkTextIter iter; -- -+ - if (text_view->layout == NULL || get_buffer (text_view) == NULL) - return FALSE; - -@@ -4039,6 +4107,9 @@ - if (event->window != text_view->text_window->bin_window) - return FALSE; - -+ if (text_view->editable) -+ gtk_im_context_show (text_view->im_context); -+ - if (event->button == 1) - { - if (text_view->drag_start_x >= 0) -@@ -4083,7 +4154,15 @@ - static gint - gtk_text_view_focus_in_event (GtkWidget *widget, GdkEventFocus *event) - { -+ /*gboolean have_selection; -+ GtkTextIter sel_start, sel_end;*/ -+ - GtkTextView *text_view = GTK_TEXT_VIEW (widget); -+ -+ /*have_selection = gtk_text_buffer_get_selection_bounds(text_view->buffer, &sel_start, &sel_end); -+ -+ if(!have_selection) -+ gtk_text_view_move_cursor(text_view, GTK_MOVEMENT_BUFFER_ENDS, 1, FALSE);*//*FIXME some other way to place the cursor in the end*/ - - gtk_widget_queue_draw (widget); - -@@ -4100,8 +4179,10 @@ - G_CALLBACK (keymap_direction_changed), text_view); - gtk_text_view_check_keymap_direction (text_view); - -+ /* Keyboard hack */ - text_view->need_im_reset = TRUE; - gtk_im_context_focus_in (GTK_TEXT_VIEW (widget)->im_context); -+ gtk_text_view_reset_im_context (text_view); - - return FALSE; - } -@@ -4110,6 +4191,14 @@ - gtk_text_view_focus_out_event (GtkWidget *widget, GdkEventFocus *event) - { - GtkTextView *text_view = GTK_TEXT_VIEW (widget); -+ GtkTextViewPrivate *priv = GTK_TEXT_VIEW_GET_PRIVATE(text_view); -+ /*{ -+ GtkTextIter start; -+ GtkTextIter end; -+ -+ gtk_text_buffer_get_bounds(text_view->buffer, &start, &end); -+ gtk_text_buffer_select_range(text_view->buffer, &start, &start); -+ }*//*FIXME need a hack here to take away the focus*/ - - gtk_widget_queue_draw (widget); - -@@ -4125,8 +4214,11 @@ - keymap_direction_changed, - text_view); - -- text_view->need_im_reset = TRUE; -- gtk_im_context_focus_out (GTK_TEXT_VIEW (widget)->im_context); -+ /* This is commented out to disable unselect feature. -+ When the decition of this has been made, we can either remove this patch -+ or to leave it. -+ if( priv->release_selection ) -+ gtk_text_view_unselect( text_view );*/ - - return FALSE; - } -@@ -5082,7 +5174,8 @@ - GtkTextIter end; - gboolean leave_one = FALSE; - -- gtk_text_view_reset_im_context (text_view); -+ /*gtk_text_view_reset_im_context (text_view);*/ /*backspace should not clear -+ the word completion*/ - - if (type == GTK_DELETE_CHARS) - { -@@ -5200,7 +5293,8 @@ - { - GtkTextIter insert; - -- gtk_text_view_reset_im_context (text_view); -+ /*gtk_text_view_reset_im_context (text_view);*/ /*backspace should not clear -+ the word completion*/ - - /* Backspace deletes the selection, if one exists */ - if (gtk_text_buffer_delete_selection (get_buffer (text_view), TRUE, -@@ -5928,11 +6022,11 @@ - static void - gtk_text_view_reset_im_context (GtkTextView *text_view) - { -- if (text_view->need_im_reset) -+/* if (text_view->need_im_reset) - { -- text_view->need_im_reset = FALSE; -+ text_view->need_im_reset = FALSE;*/ - gtk_im_context_reset (text_view->im_context); -- } -+/* }*/ - } - - /* -@@ -6665,18 +6759,23 @@ - { - GtkTextIter start; - GtkTextIter end; -- gint pos; -+ gint pos, endpos; - gchar *text; - -- gtk_text_buffer_get_iter_at_mark (text_view->buffer, &start, -+ gtk_text_buffer_get_iter_at_line (text_view->buffer, &start, 0); -+ gtk_text_buffer_get_iter_at_mark (text_view->buffer, &end, - gtk_text_buffer_get_insert (text_view->buffer)); -- end = start; - -- pos = gtk_text_iter_get_line_index (&start); -- gtk_text_iter_set_line_offset (&start, 0); -+ pos = gtk_text_iter_get_line_index (&end); -+ - gtk_text_iter_forward_to_line_end (&end); -+ endpos = gtk_text_iter_get_line_index (&end); - - text = gtk_text_iter_get_slice (&start, &end); -+ if (text) -+ pos = strlen (text) - (endpos - pos); /* want bytes, not characters */ -+ else -+ pos = 0; - gtk_im_context_set_surrounding (context, text, -1, pos); - g_free (text); - -@@ -6726,8 +6825,8 @@ - need_reset = TRUE; - } - -- if (need_reset) -- gtk_text_view_reset_im_context (text_view); -+ /*if (need_reset) -+ gtk_text_view_reset_im_context (text_view);*//*FIXME need a hack here*/ - } - - static void -@@ -6957,6 +7056,13 @@ - } - - static void -+block_selection_change( GtkMenuShell *menushell, gpointer user_data ) -+{ -+ GtkTextViewPrivate *priv = GTK_TEXT_VIEW_GET_PRIVATE(user_data); -+ priv->release_selection = TRUE; -+} -+ -+static void - unichar_chosen_func (const char *text, - gpointer data) - { -@@ -7064,7 +7170,12 @@ - signals[POPULATE_POPUP], - 0, - text_view->popup_menu); -- -+ { -+ GtkTextViewPrivate *priv = GTK_TEXT_VIEW_GET_PRIVATE(text_view); -+ g_signal_connect( GTK_WIDGET(text_view->popup_menu), "selection-done", -+ G_CALLBACK(block_selection_change), text_view ); -+ priv->release_selection = FALSE; -+ } - if (info->button) - gtk_menu_popup (GTK_MENU (text_view->popup_menu), NULL, NULL, - NULL, NULL, -@@ -8301,3 +8412,81 @@ - - return gtk_text_layout_move_iter_visually (text_view->layout, iter, count); - } -+ -+/* -+ * gtk_text_view_set_autocap: -+ * @entry: a #GtkTextView -+ * @autocap: autocap -+ * -+ * Sets autocapitalization of the widget. -+ */ -+static void -+gtk_text_view_set_autocap (GtkTextView *text_view, -+ gboolean autocap) -+{ -+ g_return_if_fail (GTK_IS_TEXT_VIEW (text_view)); -+ -+ if (gtk_text_view_get_autocap (text_view) != autocap) -+ { -+ g_object_set (G_OBJECT (text_view->im_context), "autocap", autocap, NULL); -+ g_object_notify (G_OBJECT (text_view), "autocap"); -+ } -+} -+ -+/* -+ * gtk_text_view_get_autocap: -+ * @entry: a #GtkTextView -+ * -+ * Gets autocapitalization state of the widget. -+ * -+ * Return value: a state -+ */ -+static gboolean -+gtk_text_view_get_autocap (GtkTextView *text_view) -+{ -+ gboolean autocap; -+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), FALSE); -+ -+ g_object_get (G_OBJECT (text_view->im_context), "autocap", &autocap, NULL); -+ -+ return autocap; -+} -+ -+/* -+ * gtk_text_view_set_input_mode: -+ * @text_view: a #GtkTextView -+ * @mode: input mode -+ * -+ * Sets autocapitalization of the widget. -+ */ -+static void -+gtk_text_view_set_input_mode (GtkTextView *text_view, -+ gint mode) -+{ -+ g_return_if_fail (GTK_IS_TEXT_VIEW (text_view)); -+ -+ if (gtk_text_view_get_input_mode (text_view) != mode) -+ { -+ g_object_set (G_OBJECT (text_view->im_context), "input_mode", mode, NULL); -+ g_object_notify (G_OBJECT (text_view), "input_mode"); -+ } -+} -+ -+/* -+ * gtk_text_view_get_input_mode: -+ * @text_view: a #GtkTextView -+ * -+ * Gets input mode of the widget. -+ * -+ * Return value: input mode -+ */ -+static gint -+gtk_text_view_get_input_mode (GtkTextView *text_view) -+{ -+ gint mode; -+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), FALSE); -+ -+ g_object_get (G_OBJECT (text_view->im_context), "input_mode", &mode, NULL); -+ -+ return mode; -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff deleted file mode 100644 index b99d346f4b..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff +++ /dev/null @@ -1,252 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktoolbar.c 2004-11-23 06:11:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktoolbar.c 2005-04-06 16:19:38.166736136 +0300 -@@ -67,7 +67,9 @@ - - #define DEFAULT_ICON_SIZE GTK_ICON_SIZE_LARGE_TOOLBAR - #define DEFAULT_TOOLBAR_STYLE GTK_TOOLBAR_BOTH -+#define DEFAULT_ANIMATION_STATE FALSE - -+#define DEFAULT_MAX_CHILD_SPACING G_MAXINT - #define MAX_HOMOGENEOUS_N_CHARS 13 /* Items that are wider than this do not participate - * in the homogeneous game. In units of - * pango_font_get_estimated_char_width(). -@@ -140,10 +142,14 @@ - - GTimer * timer; - -+ guint animation_connection; -+ - guint show_arrow : 1; - guint need_sync : 1; - guint is_sliding : 1; - guint need_rebuild : 1; /* whether the overflow menu should be regenerated */ -+ guint animation_set : 1; -+ guint animation : 1; - }; - - static void gtk_toolbar_init (GtkToolbar *toolbar); -@@ -225,9 +231,11 @@ - static void gtk_toolbar_reconfigured (GtkToolbar *toolbar); - static gboolean gtk_toolbar_check_new_api (GtkToolbar *toolbar); - static gboolean gtk_toolbar_check_old_api (GtkToolbar *toolbar); -+static void gtk_toolbar_update_animation_state (GtkToolbar *toolbar); - - static GtkReliefStyle get_button_relief (GtkToolbar *toolbar); - static gint get_internal_padding (GtkToolbar *toolbar); -+static gint get_max_child_expand (GtkToolbar *toolbar); - static GtkShadowType get_shadow_type (GtkToolbar *toolbar); - static gint get_space_size (GtkToolbar *toolbar); - static GtkToolbarSpaceStyle get_space_style (GtkToolbar *toolbar); -@@ -563,6 +571,15 @@ - G_PARAM_READABLE)); - - gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("max_child_expand", -+ P_("Maximum toolbar item spacing"), -+ P_("Maximum space between the toolbar items."), -+ 0, -+ G_MAXINT, -+ DEFAULT_MAX_CHILD_SPACING, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, - g_param_spec_enum ("space_style", - P_("Space style"), - P_("Whether spacers are vertical lines or just blank"), -@@ -598,6 +615,12 @@ - GTK_TYPE_ICON_SIZE, - DEFAULT_ICON_SIZE, - G_PARAM_READWRITE)); -+ -+ gtk_settings_install_property (g_param_spec_boolean ("gtk-toolbar-animation", -+ P_("Toolbar animation"), -+ P_("Are we using toolbar animation"), -+ DEFAULT_ANIMATION_STATE, -+ G_PARAM_READWRITE)); - - binding_set = gtk_binding_set_by_class (klass); - -@@ -638,6 +661,7 @@ - toolbar->orientation = GTK_ORIENTATION_HORIZONTAL; - toolbar->style = DEFAULT_TOOLBAR_STYLE; - toolbar->icon_size = DEFAULT_ICON_SIZE; -+ priv->animation = DEFAULT_ANIMATION_STATE; - toolbar->tooltips = gtk_tooltips_new (); - g_object_ref (toolbar->tooltips); - gtk_object_sink (GTK_OBJECT (toolbar->tooltips)); -@@ -960,7 +984,7 @@ - } - - static gint --position (gint from, gint to, gdouble elapsed) -+position (GtkToolbar *toolbar, gint from, gint to, gdouble elapsed) - { - gint n_pixels; - -@@ -978,11 +1002,20 @@ - n_pixels = (SLIDE_SPEED / ACCEL_THRESHOLD) * elapsed * elapsed - - SLIDE_SPEED * elapsed + SLIDE_SPEED * ACCEL_THRESHOLD; - } -- -- if (to > from) -- return MIN (from + n_pixels, to); -- else -- return MAX (from - n_pixels, to); -+ if (GTK_TOOLBAR_GET_PRIVATE (toolbar)->animation) { -+ if (to > from) -+ return MIN (from + n_pixels, to); -+ else -+ return MAX (from - n_pixels, to); -+ } -+ return to; -+} -+ -+static GtkSettings * -+toolbar_get_settings (GtkToolbar *toolbar) -+{ -+ GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); -+ return priv->settings; - } - - static void -@@ -994,12 +1027,12 @@ - GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); - gdouble elapsed = g_timer_elapsed (priv->timer, NULL); - -- intermediate->x = position (start->x, goal->x, elapsed); -- intermediate->y = position (start->y, goal->y, elapsed); -+ intermediate->x = position (toolbar, start->x, goal->x, elapsed); -+ intermediate->y = position (toolbar, start->y, goal->y, elapsed); - intermediate->width = -- position (start->x + start->width, goal->x + goal->width, elapsed) - intermediate->x; -+ position (toolbar, start->x + start->width, goal->x + goal->width, elapsed) - intermediate->x; - intermediate->height = -- position (start->y + start->height, goal->y + goal->height, elapsed) - intermediate->y; -+ position (toolbar, start->y + start->height, goal->y + goal->height, elapsed) - intermediate->y; - } - - static void -@@ -1047,6 +1080,32 @@ - } - } - -+static void -+gtk_toolbar_update_animation_state (GtkToolbar *toolbar) -+{ -+ gboolean animation_state; -+ GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); -+ -+ g_return_if_fail (GTK_IS_TOOLBAR (toolbar)); -+ -+ if (priv->animation_set) -+ { -+ GtkSettings *settings = toolbar_get_settings (toolbar); -+ -+ if (settings) -+ { -+ g_object_get (settings, -+ "gtk-toolbar-animation", &animation_state, -+ NULL); -+ } -+ else -+ animation_state = DEFAULT_ANIMATION_STATE; -+ -+ priv->animation = animation_state; -+ priv->animation_set = FALSE; -+ } -+} -+ - static gboolean - slide_idle_handler (gpointer data) - { -@@ -1537,10 +1596,14 @@ - - if (toolbar_content_get_expand (content) && new_states[i] == NORMAL) - { -+ gint mexpand = get_max_child_expand(toolbar); - gint extra = size / n_expand_items; - if (size % n_expand_items != 0) - extra++; -- -+ if (extra > mexpand) { -+ extra = mexpand; -+ } -+ - allocations[i].width += extra; - size -= extra; - n_expand_items--; -@@ -1932,11 +1995,16 @@ - } - } - --static GtkSettings * --toolbar_get_settings (GtkToolbar *toolbar) -+static void -+animation_change_notify (GtkToolbar *toolbar) - { - GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); -- return priv->settings; -+ if (!priv->animation_set) -+ { -+ /* pretend it was set, then unset, thus reverting to new default */ -+ priv->animation_set = TRUE; -+ gtk_toolbar_update_animation_state (toolbar); -+ } - } - - static void -@@ -1960,6 +2028,7 @@ - { - g_signal_handler_disconnect (old_settings, toolbar->style_set_connection); - g_signal_handler_disconnect (old_settings, toolbar->icon_size_connection); -+ g_signal_handler_disconnect (old_settings, priv->animation_connection); - - g_object_unref (old_settings); - } -@@ -1976,6 +2045,11 @@ - "notify::gtk-toolbar-icon-size", - G_CALLBACK (icon_size_change_notify), - toolbar); -+ priv->animation_connection = -+ g_signal_connect_swapped (settings, -+ "notify::gtk-toolbar-animation", -+ G_CALLBACK (animation_change_notify), -+ toolbar); - - g_object_ref (settings); - priv->settings = settings; -@@ -1985,6 +2059,7 @@ - - style_change_notify (toolbar); - icon_size_change_notify (toolbar); -+ animation_change_notify (toolbar); - } - - static int -@@ -2913,7 +2988,7 @@ - * gtk_toolbar_get_icon_size: - * @toolbar: a #GtkToolbar - * -- * Retrieves the icon size fo the toolbar. See gtk_toolbar_set_icon_size(). -+ * Retrieves the icon size for the toolbar. See gtk_toolbar_set_icon_size(). - * - * Return value: the current icon size for the icons on the toolbar. - **/ -@@ -4642,6 +4717,17 @@ - return ipadding; - } - -+static gint -+get_max_child_expand (GtkToolbar *toolbar) -+{ -+ gint mexpand = DEFAULT_MAX_CHILD_SPACING; -+ -+ gtk_widget_style_get (GTK_WIDGET (toolbar), -+ "max_child_expand", &mexpand, -+ NULL); -+ return mexpand; -+} -+ - static GtkShadowType - get_shadow_type (GtkToolbar *toolbar) - { diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.c.diff deleted file mode 100644 index 15e15fe796..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.c.diff +++ /dev/null @@ -1,65 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktoolbutton.c 2004-11-20 01:18:38.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktoolbutton.c 2005-04-06 16:19:38.167735984 +0300 -@@ -41,6 +41,7 @@ - - enum { - CLICKED, -+ INSENSITIVE_PRESS, - LAST_SIGNAL - }; - -@@ -74,7 +75,10 @@ - GtkToolButton *button); - - static void gtk_tool_button_construct_contents (GtkToolItem *tool_item); -- -+ -+ static void insensitive_press (GtkWidget *widget, -+ GtkToolButton *button); -+ - static GObjectClass *parent_class = NULL; - static guint toolbutton_signals[LAST_SIGNAL] = { 0 }; - -@@ -226,7 +230,7 @@ - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -- -+ - g_type_class_add_private (object_class, sizeof (GtkToolButtonPrivate)); - } - -@@ -246,6 +250,10 @@ - g_signal_connect_object (button->priv->button, "clicked", - G_CALLBACK (button_clicked), button, 0); - -+ /* Hildon: connect "insensitive_press" signal for private button */ -+ g_signal_connect_object (button->priv->button, "insensitive_press", -+ G_CALLBACK (insensitive_press), button, 0); -+ - gtk_container_add (GTK_CONTAINER (button), button->priv->button); - gtk_widget_show (button->priv->button); - } -@@ -519,7 +527,7 @@ - - src_pixbuf = gtk_image_get_pixbuf (image); - dest_pixbuf = gdk_pixbuf_scale_simple (src_pixbuf, width, height, -- GDK_INTERP_BILINEAR); -+ GDK_INTERP_NEAREST); - - return gtk_image_new_from_pixbuf (dest_pixbuf); - } -@@ -594,6 +602,13 @@ - } - - static void -+insensitive_press (GtkWidget *widget, -+ GtkToolButton *button) -+{ -+ g_signal_emit_by_name (button, "insensitive_press"); -+} -+ -+static void - gtk_tool_button_toolbar_reconfigured (GtkToolItem *tool_item) - { - gtk_tool_button_construct_contents (tool_item); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.h.diff deleted file mode 100644 index f11a73b63d..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbutton.h.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktoolbutton.h 2004-11-23 22:02:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktoolbutton.h 2005-04-06 16:19:38.168735832 +0300 -@@ -54,6 +54,7 @@ - - /* signal */ - void (* clicked) (GtkToolButton *tool_item); -+ void (* insensitive_press) (GtkToolButton *tool_item); - - /* Padding for future expansion */ - void (* _gtk_reserved1) (void); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelfilter.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelfilter.c.diff deleted file mode 100644 index af2d495a86..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelfilter.c.diff +++ /dev/null @@ -1,52 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreemodelfilter.c 2005-02-24 16:43:53.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktreemodelfilter.c 2005-04-06 16:19:38.177734464 +0300 -@@ -1210,14 +1210,22 @@ - if (gtk_tree_path_get_depth (filter->priv->virtual_root) >= - gtk_tree_path_get_depth (c_path)) - { -- gint level; -+ gint level, i; - gint *v_indices, *c_indices; -+ gboolean common_prefix = TRUE; - - level = gtk_tree_path_get_depth (c_path) - 1; - v_indices = gtk_tree_path_get_indices (filter->priv->virtual_root); - c_indices = gtk_tree_path_get_indices (c_path); - -- if (v_indices[level] >= c_indices[level]) -+ for (i = 0; i < level; i++) -+ if (v_indices[i] != c_indices[i]) -+ { -+ common_prefix = FALSE; -+ break; -+ } -+ -+ if (common_prefix && v_indices[level] >= c_indices[level]) - (v_indices[level])++; - } - } -@@ -1455,14 +1463,22 @@ - if (gtk_tree_path_get_depth (filter->priv->virtual_root) >= - gtk_tree_path_get_depth (c_path)) - { -- gint level; -+ gint level, i; - gint *v_indices, *c_indices; -+ gboolean common_prefix = TRUE; - - level = gtk_tree_path_get_depth (c_path) - 1; - v_indices = gtk_tree_path_get_indices (filter->priv->virtual_root); - c_indices = gtk_tree_path_get_indices (c_path); - -- if (v_indices[level] > c_indices[level]) -+ for (i = 0; i < level; i++) -+ if (v_indices[i] != c_indices[i]) -+ { -+ common_prefix = FALSE; -+ break; -+ } -+ -+ if (common_prefix && v_indices[level] > c_indices[level]) - (v_indices[level])--; - } - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelsort.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelsort.c.diff deleted file mode 100644 index 94139d162a..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreemodelsort.c.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreemodelsort.c 2004-11-30 23:45:26.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktreemodelsort.c 2005-04-06 16:19:38.178734312 +0300 -@@ -703,6 +703,18 @@ - tmppath = gtk_tree_model_get_path (GTK_TREE_MODEL (data), &tmpiter); - if (tmppath) - { -+ GtkTreePath *path; -+ GtkTreeIter iter; -+ gboolean result; -+ -+ path = gtk_tree_path_copy (tmppath); -+ gtk_tree_path_down (path); -+ -+ result = gtk_tree_model_get_iter (GTK_TREE_MODEL (data), &iter, path); -+ g_assert (result); -+ gtk_tree_model_row_inserted (GTK_TREE_MODEL (data), path, &iter); -+ gtk_tree_path_free (path); -+ - gtk_tree_model_row_has_child_toggled (GTK_TREE_MODEL (data), - tmppath, - &tmpiter); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeprivate.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeprivate.h.diff deleted file mode 100644 index 384c63bc7d..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeprivate.h.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreeprivate.h 2004-08-02 22:11:32.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtktreeprivate.h 2005-04-06 16:19:38.185733248 +0300 -@@ -232,6 +232,37 @@ - GtkTreeViewRowSeparatorFunc row_separator_func; - gpointer row_separator_data; - GtkDestroyNotify row_separator_destroy; -+ -+ /* Hildon additions */ -+ guint new_state : 1; /* helper flag for pen drag in checkbox mode */ -+ guint checkbox_mode : 1; /* is checkbox mode on right now? */ -+ guint allow_checkbox_mode : 1; /* is checkbox mode ever allowed to be on? */ -+ guint pen_down : 1; -+ guint pen_drag_active : 1; -+ guint pen_drag_motion_counter; -+ guint pen_drag_reverse : 1; -+ gboolean pen_scroll_timer; -+ gdouble old_y; -+ gboolean pen_focus; -+ gboolean dotted_lines; -+ gboolean force_list_kludge; -+ -+ /* the "pen down" row of the current pen drag */ -+ GtkTreeRowReference *first_drag_row; -+ -+ /* most recently toggled row during pen drag */ -+ GtkTreeRowReference *last_drag_row; -+ -+ /* for postponing tree node expand/collapse at -+ button_press event until button_release event */ -+ GtkTreeRowReference *queued_expand_row; -+ -+ /* for postponing selection clearing at button_press event -+ until button_release event in painted multiple selection mode */ -+ GtkTreeRowReference *queued_select_row; -+ -+ /* Hildon treeview can_focus hack */ -+ guint check_if_can_focus_idle_id; - }; - - #ifdef __GNUC__ -@@ -357,6 +388,7 @@ - GtkTreeViewColumn *column); - - gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column); -+gboolean _gtk_tree_view_column_has_activatable_cell (GtkTreeViewColumn *column); - GtkCellRenderer *_gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column); - gint _gtk_tree_view_column_count_special_cells (GtkTreeViewColumn *column); - GtkCellRenderer *_gtk_tree_view_column_get_cell_at_pos (GtkTreeViewColumn *column, -@@ -366,6 +398,9 @@ - GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view); - void _gtk_tree_selection_set_tree_view (GtkTreeSelection *selection, - GtkTreeView *tree_view); -+gboolean _gtk_tree_selection_is_row_selectable (GtkTreeSelection *selection, -+ GtkRBNode *node, -+ GtkTreePath *path); - - void _gtk_tree_view_column_cell_render (GtkTreeViewColumn *tree_column, - GdkWindow *window, diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeselection.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeselection.c.diff deleted file mode 100644 index 5361f9b5d1..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeselection.c.diff +++ /dev/null @@ -1,91 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreeselection.c 2004-11-20 01:18:38.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktreeselection.c 2005-04-06 16:19:38.186733096 +0300 -@@ -190,11 +190,28 @@ - GtkSelectionMode type) - { - GtkTreeSelectionFunc tmp_func; -+ - g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - - if (selection->type == type) - return; - -+ /* Hildon addition */ -+ if ((type == GTK_SELECTION_SINGLE) && -+ (selection->type == GTK_SELECTION_MULTIPLE || -+ selection->type == GTK_SELECTION_BROWSE)) -+ { -+ GtkTreePath *cursor_path; -+ -+ /* to successfully switch from multiple selection mode to single -+ selection, we must ensure that anchor exists and is selected -+ since otherwise gtk_tree_selection_select_path won't work anymore */ -+ if (gtk_tree_row_reference_valid (selection->tree_view->priv->cursor)) -+ { -+ cursor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->cursor); gtk_tree_selection_select_path (selection, cursor_path); -+ gtk_tree_path_free (cursor_path); -+ } -+ } - - if (type == GTK_SELECTION_NONE) - { -@@ -251,6 +268,20 @@ - } - - selection->type = type; -+ -+ /* Hildon addition */ -+ if (type == GTK_SELECTION_SINGLE) -+ { -+ GtkTreePath *path; -+ GtkTreeIter iter; -+ -+ /* reset cursor to the selected row */ -+ gtk_tree_selection_get_selected (selection, NULL, &iter); -+ path = gtk_tree_model_get_path (selection->tree_view->priv->model, -+ &iter); -+ gtk_tree_view_set_cursor (selection->tree_view, path, NULL, FALSE); -+ gtk_tree_path_free (path); -+ } - } - - /** -@@ -1319,10 +1350,10 @@ - return sensitive; - } - --static gboolean --row_is_selectable (GtkTreeSelection *selection, -- GtkRBNode *node, -- GtkTreePath *path) -+gboolean -+_gtk_tree_selection_is_row_selectable (GtkTreeSelection *selection, -+ GtkRBNode *node, -+ GtkTreePath *path) - { - GList *list; - GtkTreeIter iter; -@@ -1411,7 +1442,7 @@ - { - /* We only want to select the new node if we can unselect the old one, - * and we can select the new one. */ -- dirty = row_is_selectable (selection, node, path); -+ dirty = _gtk_tree_selection_is_row_selectable (selection, node, path); - - /* if dirty is FALSE, we weren't able to select the new one, otherwise, we try to - * unselect the new one -@@ -1528,8 +1559,13 @@ - if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) != select) - { - path = _gtk_tree_view_find_path (selection->tree_view, tree, node); -- selected = row_is_selectable (selection, node, path); -+ selected = _gtk_tree_selection_is_row_selectable (selection, node, path); - gtk_tree_path_free (path); -+ -+ /* if row is unselectable, allow unselection only */ -+ if (!selected && !select && -+ GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) -+ selected = TRUE; - } - - if (selected == TRUE) diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.c.diff deleted file mode 100644 index 87ccffa868..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.c.diff +++ /dev/null @@ -1,2253 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreeview.c 2005-02-24 00:38:20.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktreeview.c 2005-04-06 16:19:38.274719720 +0300 -@@ -42,6 +42,7 @@ - #include "gtkentry.h" - #include "gtkframe.h" - #include "gtktreemodelsort.h" -+#include "gtkscrolledwindow.h" - - #define GTK_TREE_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5) - #define GTK_TREE_VIEW_PRIORITY_SCROLL_SYNC (GTK_TREE_VIEW_PRIORITY_VALIDATE + 2) -@@ -114,6 +115,7 @@ - EXPAND_COLLAPSE_CURSOR_ROW, - SELECT_CURSOR_PARENT, - START_INTERACTIVE_SEARCH, -+ ROW_INSENSITIVE, - LAST_SIGNAL - }; - -@@ -132,7 +134,10 @@ - PROP_SEARCH_COLUMN, - PROP_FIXED_HEIGHT_MODE, - PROP_HOVER_SELECTION, -- PROP_HOVER_EXPAND -+ PROP_HOVER_EXPAND, -+ PROP_DOTTED_LINES, -+ PROP_FORCE_LIST_KLUDGE, -+ PROP_ALLOW_CHECKBOX_MODE - }; - - static void gtk_tree_view_class_init (GtkTreeViewClass *klass); -@@ -338,8 +343,6 @@ - static void gtk_tree_view_clamp_node_visible (GtkTreeView *tree_view, - GtkRBTree *tree, - GtkRBNode *node); --static void gtk_tree_view_clamp_column_visible (GtkTreeView *tree_view, -- GtkTreeViewColumn *column); - static gboolean gtk_tree_view_maybe_begin_dragging_row (GtkTreeView *tree_view, - GdkEventMotion *event); - static void gtk_tree_view_focus_to_cursor (GtkTreeView *tree_view); -@@ -372,6 +375,18 @@ - gpointer data); - static gboolean expand_collapse_timeout (gpointer data); - static gboolean do_expand_collapse (GtkTreeView *tree_view); -+static void update_checkbox_mode (GObject *object, -+ GParamSpec *pspec, -+ gpointer data); -+static void set_dotted_lines (GtkTreeView *tree_view, -+ gboolean enable); -+static void selection_changed (GtkTreeSelection *selection, -+ gpointer data); -+static void check_if_can_focus (GtkTreeView *tree_view); -+static gint scroll_row_timeout (gpointer data); -+ -+static void add_scroll_timeout (GtkTreeView *tree_view); -+static void remove_scroll_timeout (GtkTreeView *tree_view); - - /* interactive search */ - static void gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view); -@@ -694,8 +709,54 @@ - FALSE, - G_PARAM_READWRITE)); - -+ /** -+ * GtkTreeView:dotted-lines: -+ * -+ * Enables or disables the dotted lines for hierarchical trees. -+ * Hildon patch. -+ */ -+ g_object_class_install_property (o_class, -+ PROP_DOTTED_LINES, -+ g_param_spec_boolean ("dotted_lines", -+ P_("Dotted Lines"), -+ P_("Whether to show or hide dotted lines for hierarchical trees"), -+ FALSE, -+ G_PARAM_READWRITE)); -+ -+ /** -+ * GtkTreeView:force-list-kludge: -+ * -+ * Hildon kludge for fixing file tree behaviour until a cleaner -+ * implementation is scheduled: if this property is set, then rows -+ * can be activated by tapping even if the underlying tree model is -+ * not technically a list. -+ */ -+ g_object_class_install_property (o_class, -+ PROP_FORCE_LIST_KLUDGE, -+ g_param_spec_boolean ("force_list_kludge", -+ P_("Force List Behaviour"), -+ P_("Whether to activate tapped focused items even if model was not a list"), -+ FALSE, -+ G_PARAM_READWRITE)); -+ -+ /** -+ * GtkTreeView:enable-checkbox-mode: -+ * -+ * Another Hildon kludge for allowing the existence of GtkTreeViews -+ * that have activatable columns but that still is not a Text Listbox -+ * in multiple selection with checkboxes mode. -+ */ -+ g_object_class_install_property (o_class, -+ PROP_ALLOW_CHECKBOX_MODE, -+ g_param_spec_boolean ("allow_checkbox_mode", -+ P_("Enable Checkbox Mode"), -+ P_("Whether to behave like a Listbox in a multiple selection with checkboxes mode, if checkboxes exist"), -+ TRUE, -+ G_PARAM_READWRITE)); -+ - /* Style properties */ - #define _TREE_VIEW_EXPANDER_SIZE 12 -+#define _TREE_VIEW_EXPANDER_INDENT 10 - #define _TREE_VIEW_VERTICAL_SEPARATOR 2 - #define _TREE_VIEW_HORIZONTAL_SEPARATOR 2 - -@@ -709,6 +770,15 @@ - G_PARAM_READABLE)); - - gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("expander_indent", -+ P_("Expander intent"), -+ P_("Defines the expanders indent"), -+ 0, -+ G_MAXINT, -+ _TREE_VIEW_EXPANDER_INDENT, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("vertical_separator", - P_("Vertical Separator Width"), - P_("Vertical space between cells. Must be an even number"), -@@ -754,6 +824,13 @@ - GDK_TYPE_COLOR, - G_PARAM_READABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("passive_focus", -+ P_("Enables passive focus"), -+ P_("Used for tree view passive focus"), -+ TRUE, -+ G_PARAM_READABLE)); -+ - /* Signals */ - widget_class->set_scroll_adjustments_signal = - g_signal_new ("set_scroll_adjustments", -@@ -917,6 +994,16 @@ - _gtk_marshal_BOOLEAN__NONE, - G_TYPE_BOOLEAN, 0); - -+ tree_view_signals[ROW_INSENSITIVE] = -+ g_signal_new ("row_insensitive", -+ G_TYPE_FROM_CLASS (o_class), -+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, -+ G_STRUCT_OFFSET (GtkTreeViewClass, row_insensitive), -+ NULL, NULL, -+ _gtk_marshal_VOID__OBJECT, -+ G_TYPE_NONE, 1, -+ GTK_TYPE_TREE_PATH); -+ - /* Key bindings */ - gtk_tree_view_add_move_binding (binding_set, GDK_Up, 0, - GTK_MOVEMENT_DISPLAY_LINES, -1); -@@ -1004,12 +1091,13 @@ - - gtk_binding_entry_add_signal (binding_set, GDK_space, 0, "select_cursor_row", 1, - G_TYPE_BOOLEAN, TRUE); -+ /* Hildon change: Enter shouldn't select - gtk_binding_entry_add_signal (binding_set, GDK_Return, 0, "select_cursor_row", 1, - G_TYPE_BOOLEAN, TRUE); - gtk_binding_entry_add_signal (binding_set, GDK_ISO_Enter, 0, "select_cursor_row", 1, - G_TYPE_BOOLEAN, TRUE); - gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0, "select_cursor_row", 1, -- G_TYPE_BOOLEAN, TRUE); -+ G_TYPE_BOOLEAN, TRUE);*/ - - /* expand and collapse rows */ - gtk_binding_entry_add_signal (binding_set, GDK_plus, 0, "expand_collapse_cursor_row", 3, -@@ -1123,19 +1211,31 @@ - gtk_binding_entry_add_signal (binding_set, GDK_f, GDK_CONTROL_MASK, "start_interactive_search", 0); - - gtk_binding_entry_add_signal (binding_set, GDK_F, GDK_CONTROL_MASK, "start_interactive_search", 0); -+ -+ /* Hildon addition: Add key bindings to Right and Left arrows */ -+ gtk_binding_entry_add_signal (binding_set, GDK_Right, 0, "expand_collapse_cursor_row", 3, -+ G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, TRUE, G_TYPE_BOOLEAN, FALSE); -+ gtk_binding_entry_add_signal (binding_set, GDK_plus, GDK_SHIFT_MASK, "expand_collapse_cursor_row", 3, -+ G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, TRUE, G_TYPE_BOOLEAN, TRUE); -+ gtk_binding_entry_add_signal (binding_set, GDK_Left, 0, "expand_collapse_cursor_row", 3, -+ G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, FALSE); -+ gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_SHIFT_MASK, "expand_collapse_cursor_row", 3, -+ G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, TRUE); - } - - static void - gtk_tree_view_init (GtkTreeView *tree_view) - { - tree_view->priv = g_new0 (GtkTreeViewPrivate, 1); -- GTK_WIDGET_SET_FLAGS (tree_view, GTK_CAN_FOCUS); -+ -+ /* Hildon: focus cannot be gained until at least one row is added */ -+ GTK_WIDGET_UNSET_FLAGS (tree_view, GTK_CAN_FOCUS); - - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (tree_view), FALSE); - -+ /* Hildon: Headers invisible by default */ - tree_view->priv->flags = GTK_TREE_VIEW_SHOW_EXPANDERS -- | GTK_TREE_VIEW_DRAW_KEYFOCUS -- | GTK_TREE_VIEW_HEADERS_VISIBLE; -+ | GTK_TREE_VIEW_DRAW_KEYFOCUS; - - /* We need some padding */ - tree_view->priv->dy = 0; -@@ -1165,6 +1265,26 @@ - - tree_view->priv->hover_selection = FALSE; - tree_view->priv->hover_expand = FALSE; -+ -+ tree_view->priv->ctrl_pressed = FALSE; -+ tree_view->priv->shift_pressed = FALSE; -+ -+ tree_view->priv->checkbox_mode = FALSE; -+ tree_view->priv->allow_checkbox_mode = TRUE; -+ tree_view->priv->pen_down = FALSE; -+ tree_view->priv->pen_drag_active = FALSE; -+ tree_view->priv->pen_drag_reverse = FALSE; -+ tree_view->priv->first_drag_row = NULL; -+ tree_view->priv->last_drag_row = NULL; -+ tree_view->priv->queued_expand_row = NULL; -+ tree_view->priv->queued_select_row = NULL; -+ tree_view->priv->pen_focus = TRUE; -+ -+ /* Hildon: cursor should follow when selection changes */ -+ g_signal_connect (tree_view->priv->selection, "changed", -+ G_CALLBACK (selection_changed), tree_view); -+ -+ gtk_widget_set_name (GTK_WIDGET (tree_view), "treeview"); - } - - -@@ -1223,6 +1343,27 @@ - case PROP_HOVER_EXPAND: - tree_view->priv->hover_expand = g_value_get_boolean (value); - break; -+ case PROP_DOTTED_LINES: -+ set_dotted_lines (tree_view, g_value_get_boolean (value)); -+ break; -+ case PROP_FORCE_LIST_KLUDGE: -+ tree_view->priv->force_list_kludge = g_value_get_boolean (value); -+ break; -+ case PROP_ALLOW_CHECKBOX_MODE: -+ if ((tree_view->priv->allow_checkbox_mode = g_value_get_boolean (value))) -+ { -+ gtk_widget_set_name (GTK_WIDGET(tree_view), "treeview"); -+ update_checkbox_mode (NULL, NULL, tree_view); -+ } -+ else -+ { -+ /* ugly hack - to ensure that checkboxes are independent of the -+ selection if !allow_checkbox_mode, we must be able to use -+ different theming in that case */ -+ gtk_widget_set_name (GTK_WIDGET(tree_view), "no_checkbox_mode"); -+ tree_view->priv->checkbox_mode = FALSE; -+ } -+ break; - default: - break; - } -@@ -1276,6 +1417,15 @@ - case PROP_HOVER_EXPAND: - g_value_set_boolean (value, tree_view->priv->hover_expand); - break; -+ case PROP_DOTTED_LINES: -+ g_value_set_boolean (value, tree_view->priv->dotted_lines); -+ break; -+ case PROP_FORCE_LIST_KLUDGE: -+ g_value_set_boolean (value, tree_view->priv->force_list_kludge); -+ break; -+ case PROP_ALLOW_CHECKBOX_MODE: -+ g_value_set_boolean (value, tree_view->priv->allow_checkbox_mode); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -1376,6 +1526,27 @@ - tree_view->priv->destroy_count_data = NULL; - } - -+ if (tree_view->priv->first_drag_row) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->first_drag_row); -+ tree_view->priv->first_drag_row = NULL; -+ } -+ if (tree_view->priv->last_drag_row) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->last_drag_row); -+ tree_view->priv->last_drag_row = NULL; -+ } -+ if (tree_view->priv->queued_expand_row) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->queued_expand_row); -+ tree_view->priv->queued_expand_row = NULL; -+ } -+ if (tree_view->priv->queued_select_row) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->queued_select_row); -+ tree_view->priv->queued_select_row = NULL; -+ } -+ - gtk_tree_row_reference_free (tree_view->priv->cursor); - tree_view->priv->cursor = NULL; - -@@ -1494,6 +1665,8 @@ - gtk_tree_view_map_buttons (tree_view); - - gdk_window_show (widget->window); -+ -+ check_if_can_focus (tree_view); - } - - static void -@@ -1895,6 +2068,8 @@ - gint full_requested_width = 0; - gint number_of_expand_columns = 0; - gboolean rtl; -+ GtkWidget *scroll; -+ GtkPolicyType ptype; - - tree_view = GTK_TREE_VIEW (widget); - -@@ -1969,6 +2144,19 @@ - allocation.x = width; - column->width = real_requested_width; - -+ /* a dirty Hildon hack to force truncation if not enough space. This hack is applied -+ * only if we are NOT in a scrolled window with hscroll*/ -+ scroll = gtk_widget_get_ancestor(widget, GTK_TYPE_SCROLLED_WINDOW); -+ if ((!scroll || -+ (gtk_scrolled_window_get_policy (GTK_SCROLLED_WINDOW (scroll), &ptype, NULL), ptype == GTK_POLICY_NEVER)) -+ && (width + real_requested_width > widget->allocation.width)) -+ { -+ column->width = widget->allocation.width - width; -+ if (column->width < 1) -+ column->width = 1; -+ gtk_widget_queue_draw (widget); -+ } -+ - if (column->expand) - { - if (number_of_expand_columns == 1) -@@ -2153,6 +2341,23 @@ - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); - } - -+/* helper function for gtk_tree_view_button_press */ -+static void -+activate_callback (GtkTreeModel *model, -+ GtkTreePath *path, -+ GtkTreeIter *iter, -+ gpointer data) -+{ -+ GtkTreeView *tree_view = GTK_TREE_VIEW (data); -+ -+ /* Hildon: if the tree view has no active focus we don't activate -+ * the selected row */ -+ if ( !GTK_WIDGET_HAS_FOCUS (GTK_WIDGET(data)) ) -+ return; -+ -+ gtk_tree_view_row_activated (tree_view, path, tree_view->priv->focus_column); -+} -+ - static gboolean - gtk_tree_view_button_press (GtkWidget *widget, - GdkEventButton *event) -@@ -2166,6 +2371,7 @@ - gint vertical_separator; - gint horizontal_separator; - gboolean rtl; -+ gint expander_indent; - - g_return_val_if_fail (GTK_IS_TREE_VIEW (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); -@@ -2176,6 +2382,7 @@ - gtk_widget_style_get (widget, - "vertical_separator", &vertical_separator, - "horizontal_separator", &horizontal_separator, -+ "expander_indent", &expander_indent, - NULL); - - -@@ -2199,6 +2406,14 @@ - gint column_handled_click = FALSE; - gboolean row_double_click = FALSE; - gboolean rtl; -+ gboolean force_list_kludge; -+ GtkRBNode *cursor = NULL; -+ gboolean focus_grab = FALSE; -+ -+ if (!GTK_WIDGET_HAS_FOCUS (widget)) -+ focus_grab = TRUE; -+ -+ GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); - - /* Empty tree? */ - if (tree_view->priv->tree == NULL) -@@ -2207,7 +2422,9 @@ - return TRUE; - } - -- /* are we in an arrow? */ -+ /* In Hildon we don't want to use the arrows */ -+#if 0 -+ /* are we in an arrow? */ - if (tree_view->priv->prelight_node && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_ARROW_PRELIT)) - { -@@ -2226,6 +2443,7 @@ - grab_focus_and_unset_draw_keyfocus (tree_view); - return TRUE; - } -+#endif - - /* find the node that was clicked */ - new_y = TREE_WINDOW_Y_TO_RBTREE_Y(tree_view, event->y); -@@ -2247,6 +2465,65 @@ - background_area.height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); - background_area.x = 0; - -+ if (tree_view->priv->first_drag_row) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->first_drag_row); -+ tree_view->priv->first_drag_row = NULL; -+ } -+ if (tree_view->priv->last_drag_row) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->last_drag_row); -+ tree_view->priv->last_drag_row = NULL; -+ } -+ tree_view->priv->first_drag_row = -+ gtk_tree_row_reference_new (tree_view->priv->model, path); -+ tree_view->priv->last_drag_row = gtk_tree_row_reference_copy (tree_view->priv->first_drag_row); -+ -+ /* force_list_kludge allows pen dragging even if -+ GTK_TREE_MODEL_LIST_ONLY is not set (to fix file tree) */ -+ g_object_get (widget, "force_list_kludge", &force_list_kludge, NULL); -+ -+ /* Hildon: activate pen dragging, if listbox is not hierarchical and -+ the pen was not put down in a position that initiates drag'n'drop */ -+ if (!tree_view->priv->pen_down && -+ (force_list_kludge || -+ (gtk_tree_model_get_flags(tree_view->priv->model) -+ & GTK_TREE_MODEL_LIST_ONLY)) && -+ (tree_view->priv->checkbox_mode || -+ !gtk_tree_selection_path_is_selected(tree_view->priv->selection, path))) -+ { -+ gpointer drag_data; -+ -+ tree_view->priv->pen_down = TRUE; -+ tree_view->priv->pen_focus = TRUE; -+ -+ /* also block attached dnd signal handler */ -+ drag_data = g_object_get_data (G_OBJECT (widget), "gtk-site-data"); -+ if (drag_data) -+ g_signal_handlers_block_matched (widget, -+ G_SIGNAL_MATCH_DATA, -+ 0, 0, NULL, NULL, -+ drag_data); -+ } -+ -+ /* For the Hildon buttonpress find out the previously selected row */ -+ GtkRBTree *cursor_tree = NULL; -+ GtkTreePath *cursor_path = NULL; -+ -+ if (tree_view->priv->cursor) -+ { -+ cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); -+ if (cursor_path) -+ { -+ _gtk_tree_view_find_node (tree_view, cursor_path, -+ &cursor_tree, &cursor); -+ gtk_tree_path_free (cursor_path); -+ } -+ } -+ -+ /* Hildon: in checkbox mode, dragging sets all checkboxes -+ to the same state as the first toggled checkbox */ -+ tree_view->priv->new_state = !gtk_tree_selection_path_is_selected(tree_view->priv->selection, path); - - /* Let the column have a chance at selecting it. */ - rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL); -@@ -2275,8 +2552,11 @@ - if (gtk_tree_view_is_expander_column (tree_view, column) && - TREE_VIEW_DRAW_EXPANDERS(tree_view)) - { -- cell_area.x += depth * tree_view->priv->expander_size; -- cell_area.width -= depth * tree_view->priv->expander_size; -+ gint adjust; -+ -+ adjust = depth * tree_view->priv->expander_size + (depth - 1) * expander_indent; -+ cell_area.x += adjust; -+ cell_area.width -= adjust; - } - break; - } -@@ -2364,15 +2644,19 @@ - */ - if (event->type == GDK_BUTTON_PRESS) - { -+ /* Hildon: ignore Ctrl and Shift */ -+#if 0 - if ((event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK) - tree_view->priv->ctrl_pressed = TRUE; - if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) - tree_view->priv->shift_pressed = TRUE; -+#endif - - focus_cell = _gtk_tree_view_column_get_cell_at_pos (column, event->x - background_area.x); - if (focus_cell) - gtk_tree_view_column_focus_cell (column, focus_cell); - -+#if 0 - if (event->state & GDK_CONTROL_MASK) - { - gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE); -@@ -2387,6 +2671,86 @@ - { - gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE); - } -+#endif -+ if (tree_view->priv->checkbox_mode) -+ { -+ GtkRBTree *tree = NULL; -+ GtkRBNode *node = NULL; -+ -+ _gtk_tree_view_find_node (tree_view, path, &tree, &node); -+ -+ /* cursor cannot move to an insensitive row, so we -+ need to check here to avoid toggling the current -+ row by clicking on an insensitive row */ -+ if (_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ node, path)) -+ { -+ gtk_tree_view_real_set_cursor (tree_view, path, -+ FALSE, TRUE); -+ gtk_tree_view_real_toggle_cursor_row (tree_view); -+ } -+ else -+ /* Usually this would be emitted by real_set_cursor. -+ However in this case we never call it. */ -+ g_signal_emit (tree_view, tree_view_signals[ROW_INSENSITIVE], 0, path); -+ } -+ else -+ { -+ gboolean queue_row = TRUE; -+ gboolean force_list_kludge; -+ -+ /* force_list_kludge allows rows to be activated even if -+ GTK_TREE_MODEL_LIST_ONLY is not set (to fix file tree) */ -+ g_object_get (widget, "force_list_kludge", -+ &force_list_kludge, NULL); -+ if ((force_list_kludge || -+ (gtk_tree_model_get_flags (tree_view->priv->model) & -+ GTK_TREE_MODEL_LIST_ONLY)) && -+ gtk_tree_row_reference_valid (tree_view->priv->cursor)) -+ { -+ /* special case: text listbox without checkboxes -+ should activate selected rows when user taps -+ on cursor row, but not affect selection*/ -+ GtkTreePath *cursor_path = -+ gtk_tree_row_reference_get_path (tree_view->priv->cursor); -+ if (gtk_tree_path_compare (cursor_path, path) == 0) -+ { -+ gtk_tree_selection_selected_foreach (tree_view->priv->selection, -+ activate_callback, -+ tree_view); -+ queue_row = FALSE; -+ } -+ } -+ -+ if (queue_row && -+ (gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE) && -+ gtk_tree_selection_path_is_selected (tree_view->priv->selection, path)) -+ { -+ GtkTreePath *old_cursor_path = NULL; -+ -+ /* we don't know if the user is selecting an item or performing -+ multiple item drag and drop until we know where button is released */ -+ if (tree_view->priv->queued_select_row) -+ gtk_tree_row_reference_free (tree_view->priv->queued_select_row); -+ tree_view->priv->queued_select_row = -+ gtk_tree_row_reference_new (tree_view->priv->model, path); -+ -+ /* however, move focus */ -+ if (tree_view->priv->cursor) -+ { -+ old_cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); -+ gtk_tree_row_reference_free (tree_view->priv->cursor); -+ } -+ tree_view->priv->cursor = gtk_tree_row_reference_new (tree_view->priv->model, -+ path); -+ gtk_tree_view_queue_draw_path (tree_view, path, NULL); -+ if (old_cursor_path) -+ gtk_tree_view_queue_draw_path (tree_view, old_cursor_path, NULL); -+ } -+ else -+ gtk_tree_view_real_set_cursor (tree_view, path, -+ queue_row, TRUE); -+ } - - tree_view->priv->ctrl_pressed = FALSE; - tree_view->priv->shift_pressed = FALSE; -@@ -2412,6 +2776,15 @@ - tree_view->priv->press_start_y = event->y; - } - -+ /* Hildon: if selected row is tapped -> the row gets activated and expands */ -+ if (!focus_grab) -+ { -+ /* ...although not until button is released */ -+ gtk_tree_row_reference_free (tree_view->priv->queued_expand_row); -+ tree_view->priv->queued_expand_row = -+ gtk_tree_row_reference_new (tree_view->priv->model, path); -+ } -+ - /* Test if a double click happened on the same row. */ - if (event->button == 1) - { -@@ -2433,6 +2806,8 @@ - } - } - -+ /* Hildon doesn't support double clicks */ -+#if 0 - if (row_double_click) - { - if (tree_view->priv->last_button_press) -@@ -2443,6 +2818,7 @@ - tree_view->priv->last_button_press_2 = NULL; - } - else -+#endif - { - if (tree_view->priv->last_button_press) - gtk_tree_row_reference_free (tree_view->priv->last_button_press); -@@ -2626,6 +3002,28 @@ - - tree_view = GTK_TREE_VIEW (widget); - -+ /* unblock attached dnd signal handler */ -+ if (tree_view->priv->pen_down) -+ { -+ gpointer drag_data = g_object_get_data (G_OBJECT (widget), "gtk-site-data"); -+ if (drag_data) -+ g_signal_handlers_unblock_matched (widget, -+ G_SIGNAL_MATCH_DATA, -+ 0, 0, NULL, NULL, -+ drag_data); -+ } -+ -+ /* stop pen dragging */ -+ if (tree_view->priv->first_drag_row) -+ gtk_tree_row_reference_free (tree_view->priv->first_drag_row); -+ if (tree_view->priv->last_drag_row) -+ gtk_tree_row_reference_free (tree_view->priv->last_drag_row); -+ tree_view->priv->first_drag_row = NULL; -+ tree_view->priv->last_drag_row = NULL; -+ tree_view->priv->pen_down = FALSE; -+ tree_view->priv->pen_drag_active = FALSE; -+ remove_scroll_timeout (tree_view); -+ - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG)) - return gtk_tree_view_button_release_drag_column (widget, event); - -@@ -2635,6 +3033,65 @@ - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE)) - return gtk_tree_view_button_release_column_resize (widget, event); - -+ if (gtk_tree_row_reference_valid (tree_view->priv->queued_select_row)) -+ { -+ /* unselect other nodes - but only if not drag'n'dropping */ -+ if (event->window == tree_view->priv->bin_window) -+ gtk_tree_selection_unselect_all (tree_view->priv->selection); -+ -+ gtk_tree_view_real_set_cursor (tree_view, -+ gtk_tree_row_reference_get_path (tree_view->priv->queued_select_row), -+ FALSE, TRUE); -+ gtk_tree_row_reference_free (tree_view->priv->queued_select_row); -+ tree_view->priv->queued_select_row = NULL; -+ } -+ -+ /* for handling expand/collapse postponed from button_press (since we -+ don't want expand/collapse before tap on node has been completed) */ -+ if (gtk_tree_row_reference_valid (tree_view->priv->queued_expand_row) && -+ tree_view->priv->tree != NULL) -+ { -+ GtkTreePath *queued_expand_path; -+ GtkRBTree *tree; -+ GtkRBNode *node; -+ GtkRBNode *old_node; -+ gint y; -+ -+ queued_expand_path = -+ gtk_tree_row_reference_get_path (tree_view->priv->queued_expand_row); -+ -+ if (queued_expand_path) -+ { -+ /* must check that cursor hasn't moved elsewhere since button_press */ -+ y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, event->y); -+ _gtk_rbtree_find_offset (tree_view->priv->tree, y, &tree, &node); -+ -+ _gtk_tree_view_find_node (tree_view, queued_expand_path, -+ &tree, &old_node); -+ -+ if (node && old_node == node) -+ { -+ if (node->children == NULL) -+ gtk_tree_view_real_expand_row (tree_view, -+ queued_expand_path, -+ tree, -+ node, -+ FALSE, TRUE); -+ else -+ gtk_tree_view_real_collapse_row (tree_view, -+ queued_expand_path, -+ tree, -+ node, -+ TRUE); -+ } -+ -+ gtk_tree_path_free (queued_expand_path); -+ } -+ -+ gtk_tree_row_reference_free( tree_view->priv->queued_expand_row); -+ tree_view->priv->queued_expand_row = NULL; -+ } -+ - if (tree_view->priv->button_pressed_node == NULL) - return FALSE; - -@@ -3311,6 +3768,7 @@ - GtkTreeView *tree_view; - GtkRBTree *tree; - GtkRBNode *node; -+ GtkTreePath *path, *last_drag_path, *current_path; - gint new_y; - - tree_view = (GtkTreeView *) widget; -@@ -3319,7 +3777,8 @@ - return FALSE; - - /* only check for an initiated drag when a button is pressed */ -- if (tree_view->priv->pressed_button >= 0) -+ /* Hildon: active pen drag overrides drag and drop */ -+ if (tree_view->priv->pressed_button >= 0 && !tree_view->priv->pen_down) - gtk_tree_view_maybe_begin_dragging_row (tree_view, event); - - new_y = TREE_WINDOW_Y_TO_RBTREE_Y(tree_view, event->y); -@@ -3328,6 +3787,99 @@ - - _gtk_rbtree_find_offset (tree_view->priv->tree, new_y, &tree, &node); - -+ /* Hildon: pen dragging */ -+ if (tree_view->priv->pen_down && node != NULL && -+ tree_view->priv->queued_select_row == NULL && -+ gtk_tree_row_reference_valid (tree_view->priv->last_drag_row)) -+ { -+ gint direction; -+ -+ last_drag_path = gtk_tree_row_reference_get_path (tree_view->priv->last_drag_row); -+ path = _gtk_tree_view_find_path (tree_view, tree, node); -+ direction = gtk_tree_path_compare (path, last_drag_path); -+ -+ if (direction != 0) -+ { -+ current_path = gtk_tree_path_copy (last_drag_path); -+ -+ /* we must ensure that no row is skipped because stylus -+ is moving faster than motion events are generated */ -+ do { -+ if (direction > 0) -+ { -+ /* gtk_tree_path_next does not let us know when it failed */ -+ GtkTreeIter iter; -+ gtk_tree_model_get_iter (tree_view->priv->model, &iter, current_path); -+ if (!gtk_tree_model_iter_next (tree_view->priv->model, &iter)) -+ break; -+ -+ gtk_tree_path_next (current_path); -+ } -+ else if (!gtk_tree_path_prev (current_path)) -+ break; -+ -+ /* set cursor, and start scrolling */ -+ gtk_tree_view_real_set_cursor (tree_view, current_path, FALSE, FALSE); -+ add_scroll_timeout (tree_view); -+ -+ if (tree_view->priv->checkbox_mode) -+ { -+ /* always set to same state as the first tapped node */ -+ if (tree_view->priv->new_state) -+ gtk_tree_selection_select_path (tree_view->priv->selection, -+ current_path); -+ else -+ gtk_tree_selection_unselect_path (tree_view->priv->selection, -+ current_path); -+ } -+ else -+ { -+ if (gtk_tree_selection_path_is_selected (tree_view->priv->selection, -+ current_path)) -+ { -+ /* apparently we have reversed the pen drag direction */ -+ GtkTreePath *reverse_path; -+ gint reverse_direction; -+ -+ reverse_direction = gtk_tree_path_compare (current_path, -+ last_drag_path); -+ reverse_path = gtk_tree_path_copy (last_drag_path); -+ do { -+ gtk_tree_selection_unselect_path (tree_view->priv->selection, -+ reverse_path); -+ tree_view->priv->pen_drag_reverse = TRUE; -+ if (reverse_direction > 0) -+ { -+ GtkTreeIter iter; -+ gtk_tree_model_get_iter (tree_view->priv->model, &iter, reverse_path); -+ if (!gtk_tree_model_iter_next (tree_view->priv->model, &iter)) -+ break; -+ -+ gtk_tree_path_next (reverse_path); -+ } -+ else if (!gtk_tree_path_prev (reverse_path)) -+ break; -+ } while (gtk_tree_path_compare (reverse_path, current_path) != 0); -+ gtk_tree_path_free (reverse_path); -+ } -+ else -+ { -+ gtk_tree_selection_select_path (tree_view->priv->selection, -+ current_path); -+ tree_view->priv->pen_drag_reverse = FALSE; -+ } -+ } -+ } while (gtk_tree_path_compare(current_path, path) != 0); -+ gtk_tree_path_free (current_path); -+ -+ /* update last_drag_row */ -+ gtk_tree_row_reference_free (tree_view->priv->last_drag_row); -+ tree_view->priv->last_drag_row = -+ gtk_tree_row_reference_new (tree_view->priv->model, path); -+ gtk_tree_path_free (path); -+ } -+ } -+ - /* If we are currently pressing down a button, we don't want to prelight anything else. */ - if ((tree_view->priv->button_pressed_node != NULL) && - (tree_view->priv->button_pressed_node != node)) -@@ -3404,6 +3956,22 @@ - 1, 1, w, h); - } - -+/* Hildon: helper function for dotted slash drawing; -+ returns TRUE or FALSE, depending it there are -+ more nodes at current level */ -+static gboolean -+iter_has_next (GtkTreeModel *model, GtkTreeIter *iter) -+{ -+ GtkTreeIter *check_iter; -+ gboolean result; -+ -+ check_iter = gtk_tree_iter_copy(iter); -+ result = gtk_tree_model_iter_next (model, check_iter); -+ -+ gtk_tree_iter_free (check_iter); -+ return result; -+} -+ - /* Warning: Very scary function. - * Modify at your own risk - * -@@ -3433,16 +4001,25 @@ - guint flags; - gint highlight_x; - gint bin_window_width; -- GtkTreePath *cursor_path; -- GtkTreePath *drag_dest_path; -+ GtkTreePath *cursor_path = NULL; -+ GtkTreePath *drag_dest_path = NULL; - GList *last_column; - gint vertical_separator; - gint horizontal_separator; -+ gint expander_indent; - gint focus_line_width; - gboolean allow_rules; - gboolean has_special_cell; - gboolean rtl; - gint n_visible_columns; -+ gboolean dottedlines, passivefocus, res; -+ -+ /* Hildon: these variables are added for dotted slash drawing -+ (Hierarchical listbox) */ -+ gint i; -+ gint node_elements = 64; -+ gboolean *iter_value = NULL; -+ GtkTreeIter node_iter, parent_iter; - - g_return_val_if_fail (GTK_IS_TREE_VIEW (widget), FALSE); - -@@ -3455,8 +4032,12 @@ - "vertical_separator", &vertical_separator, - "allow_rules", &allow_rules, - "focus-line-width", &focus_line_width, -+ "expander_indent", &expander_indent, -+ "passive_focus", &passivefocus, - NULL); - -+ g_object_get (widget, "dotted_lines", &dottedlines, NULL); -+ - if (tree_view->priv->tree == NULL) - { - draw_empty_focus (tree_view, &event->area); -@@ -3478,6 +4059,8 @@ - if (node == NULL) - return TRUE; - -+ iter_value = g_new (gboolean, node_elements); -+ - /* find the path for the node */ - path = _gtk_tree_view_find_path ((GtkTreeView *)widget, - tree, -@@ -3486,11 +4069,25 @@ - &iter, - path); - depth = gtk_tree_path_get_depth (path); -+ -+ node_iter = iter; -+ for (i = depth - 1; i >= 1; i--) -+ { -+ res = gtk_tree_model_iter_parent (tree_view->priv->model, &parent_iter, &node_iter); -+ /* Check, if we should grow array */ -+ if (i >= node_elements - 1) -+ { -+ node_elements *= 2; -+ iter_value = g_renew (gboolean, iter_value, node_elements); -+ if (!iter_value) -+ goto done; -+ } -+ iter_value[i] = iter_has_next (tree_view->priv->model, &parent_iter); -+ node_iter = parent_iter; -+ } -+ gtk_tree_model_get_iter (tree_view->priv->model, &iter, path); - gtk_tree_path_free (path); - -- cursor_path = NULL; -- drag_dest_path = NULL; -- - if (tree_view->priv->cursor) - cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); - -@@ -3533,6 +4130,7 @@ - do - { - gboolean parity; -+ gboolean is_first = TRUE; - gboolean is_separator = FALSE; - - if (tree_view->priv->row_separator_func) -@@ -3570,6 +4168,7 @@ - GtkTreeViewColumn *column = list->data; - const gchar *detail = NULL; - GtkStateType state; -+ gboolean is_last = (rtl ? !list->prev : !list->next); - - if (!column->visible) - continue; -@@ -3660,31 +4259,152 @@ - else - state = GTK_STATE_NORMAL; - -- /* Draw background */ -- gtk_paint_flat_box (widget->style, -- event->window, -- state, -- GTK_SHADOW_NONE, -- &event->area, -- widget, -- detail, -- background_area.x, -- background_area.y, -- background_area.width, -- background_area.height); -+ if (tree_view->priv->pen_focus) -+ { -+ if (node != cursor || -+ (!GTK_WIDGET_HAS_FOCUS (widget) && !passivefocus)) -+ { -+ if ((flags & GTK_CELL_RENDERER_SELECTED) -+ && !tree_view->priv->checkbox_mode) -+ state = GTK_STATE_SELECTED; -+ else -+ state = GTK_STATE_NORMAL; -+ -+ /* Draw background */ -+ gtk_paint_flat_box (widget->style, -+ event->window, -+ state, -+ GTK_SHADOW_NONE, -+ &event->area, -+ widget, -+ detail, -+ background_area.x, -+ background_area.y, -+ background_area.width, -+ background_area.height); -+ } -+ else if ((flags & GTK_CELL_RENDERER_SELECTED) && -+ !tree_view->priv->checkbox_mode && -+ node != cursor) -+ { -+ gtk_paint_flat_box (widget->style, -+ event->window, -+ GTK_STATE_SELECTED, -+ GTK_SHADOW_NONE, -+ &event->area, -+ widget, -+ detail, -+ background_area.x, -+ background_area.y, -+ background_area.width, -+ background_area.height); -+ } -+ } -+ else -+ { -+ /* Draw background */ -+ gtk_paint_flat_box (widget->style, -+ event->window, -+ state, -+ GTK_SHADOW_NONE, -+ &event->area, -+ widget, -+ detail, -+ background_area.x, -+ background_area.y, -+ background_area.width, -+ background_area.height); -+ } -+ -+ /* Hildon change: drawing focus is moved here because it didn't work -+ properly before. Some changes where also made.*/ -+ /* draw the big row-spanning focus rectangle, if needed */ -+ if (node == cursor && -+ (!passivefocus || GTK_WIDGET_HAS_FOCUS (widget))) -+ { -+ gtk_paint_focus (widget->style, -+ event->window, -+ GTK_STATE_ACTIVE, -+ &event->area, -+ widget, -+ (is_first -+ ? (is_last ? "full" : "left") -+ : (is_last ? "right" : "middle")), -+ background_area.x - (is_first ? 0 : horizontal_separator / 2), -+ background_area.y - vertical_separator / 2, -+ background_area.width + (is_first ? 0 : (is_last ? horizontal_separator / 2 : horizontal_separator)), -+ background_area.height + vertical_separator); -+ -+ is_first = FALSE; -+ } -+ else if (node == cursor && passivefocus && -+ !GTK_WIDGET_HAS_FOCUS (widget)) -+ { -+ GtkStyle *style = gtk_rc_get_style_by_paths (gtk_widget_get_settings (widget), -+ "hildon-focus", -+ NULL, -+ G_TYPE_NONE); -+ gtk_style_attach (style, event->window); -+ -+ gtk_paint_focus (style, event->window, GTK_STATE_SELECTED, -+ &event->area, widget, -+ (is_first -+ ? (is_last ? "full" : "left") -+ : (is_last ? "right" : "middle")), -+ background_area.x - (is_first ? 0 : horizontal_separator / 2), -+ background_area.y - vertical_separator / 2, -+ background_area.width + (is_first ? 0 : (is_last ? horizontal_separator / 2 : horizontal_separator)), -+ background_area.height + vertical_separator); -+ -+ is_first = FALSE; -+ } -+ -+ if (node == cursor) -+ { -+ gint width, x_offset; -+ GtkStateType focus_rect_state; -+ focus_rect_state = -+ flags & GTK_CELL_RENDERER_FOCUSED ? GTK_STATE_ACTIVE : -+ (flags & GTK_CELL_RENDERER_PRELIT ? GTK_STATE_PRELIGHT : -+ (flags & GTK_CELL_RENDERER_INSENSITIVE ? GTK_STATE_INSENSITIVE : -+ (flags & GTK_CELL_RENDERER_SELECTED ? GTK_STATE_SELECTED : -+ GTK_STATE_NORMAL))); -+ -+ gtk_tree_view_get_arrow_xrange (tree_view, tree, &x_offset, NULL); -+ gdk_drawable_get_size (tree_view->priv->bin_window, &width, NULL); -+ } - - if (gtk_tree_view_is_expander_column (tree_view, column) && - TREE_VIEW_DRAW_EXPANDERS(tree_view)) - { -+ gint px, px2, py, i; -+ -+ if (depth <= 1) -+ px = 0; -+ else -+ px = (depth - 1) * tree_view->priv->expander_size + -+ (depth - 2) * expander_indent; -+ -+ /* Hildonlike hack for making the indent look better. -+ * indent is added to all rows except the first one */ -+ - if (!rtl) -- cell_area.x += depth * tree_view->priv->expander_size; -- cell_area.width -= depth * tree_view->priv->expander_size; -+ cell_area.x += depth * tree_view->priv->expander_size + (depth-1) * expander_indent; -+ cell_area.width -= depth * tree_view->priv->expander_size + (depth-1) * expander_indent; - - /* If we have an expander column, the highlight underline - * starts with that column, so that it indicates which - * level of the tree we're dropping at. - */ - highlight_x = cell_area.x; -+ -+ if (!GTK_WIDGET_IS_SENSITIVE (widget)) -+ { -+ flags &= ~ (GTK_CELL_RENDERER_PRELIT + GTK_CELL_RENDERER_INSENSITIVE + -+ GTK_CELL_RENDERER_FOCUSED); -+ flags &= GTK_CELL_RENDERER_INSENSITIVE; -+ } -+ - if (is_separator) - gtk_paint_hline (widget->style, - event->window, -@@ -3702,6 +4422,48 @@ - &cell_area, - &event->area, - flags); -+ -+ /* Hildon dotted slash line drawing for Hierarchical Listbox -+ widget */ -+ if (dottedlines) -+ { -+ py = cell_area.y + cell_area.height / 2; -+ px2 = depth * tree_view->priv->expander_size + -+ (depth - 1) * expander_indent; -+ -+ gdk_gc_set_line_attributes (widget->style->fg_gc[GTK_WIDGET_STATE (widget)], -+ 1, GDK_LINE_ON_OFF_DASH, GDK_CAP_BUTT, GDK_JOIN_BEVEL); -+ -+ gdk_draw_line (tree_view->priv->bin_window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], -+ px, py, px2, py); -+ -+ if (depth > 1) -+ { -+ gdk_draw_line (tree_view->priv->bin_window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], -+ px, cell_area.y, px, py); -+ if (iter_has_next (tree_view->priv->model, &iter)) -+ { -+ gdk_draw_line (tree_view->priv->bin_window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], -+ px, py, px, cell_area.y + cell_area.height); -+ } -+ } -+ -+ if (node->children) -+ { -+ gdk_draw_line (tree_view->priv->bin_window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], -+ px2, py, px2, cell_area.y + cell_area.height); -+ } -+ for (i = depth - 1; i >= 2; i--) -+ { -+ if (iter_value[i]) -+ { -+ px = (i - 1)* tree_view->priv->expander_size + (i - 2) * expander_indent; -+ gdk_draw_line (tree_view->priv->bin_window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], -+ px, cell_area.y, px, cell_area.y + cell_area.height); -+ } -+ } -+ } -+ - if ((node->flags & GTK_RBNODE_IS_PARENT) == GTK_RBNODE_IS_PARENT) - { - gint x, y; -@@ -3803,6 +4565,8 @@ - } - } - -+ /* Hildon: disabled this */ -+#if 0 - /* draw the big row-spanning focus rectangle, if needed */ - if (!has_special_cell && node == cursor && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS) && -@@ -3830,6 +4594,7 @@ - width, - ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node))); - } -+#endif - - y_offset += max_height; - if (node->children) -@@ -3847,6 +4612,17 @@ - has_child = gtk_tree_model_iter_children (tree_view->priv->model, - &iter, - &parent); -+ -+ /* Check if we need to grow array */ -+ if (depth >= node_elements - 1) -+ { -+ node_elements *= 2; -+ iter_value = g_renew (gboolean, iter_value, node_elements); -+ if (!iter_value) -+ goto done; -+ } -+ iter_value[depth] = iter_has_next (tree_view->priv->model, &parent); -+ - depth++; - - /* Sanity Check! */ -@@ -3897,6 +4673,9 @@ - if (drag_dest_path) - gtk_tree_path_free (drag_dest_path); - -+ if (iter_value) -+ g_free (iter_value); -+ - return FALSE; - } - -@@ -4179,6 +4958,63 @@ - - rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL); - -+ /* Special Hildon keyboard interactions */ -+ if (event->keyval == GDK_Escape) -+ gtk_tree_selection_unselect_all (tree_view->priv->selection); -+ -+ if (event->keyval == GDK_Return && -+ gtk_tree_row_reference_valid (tree_view->priv->cursor)) -+ { -+ gboolean force_list_kludge; -+ -+ g_object_get (widget, "force_list_kludge", &force_list_kludge, NULL); -+ if (force_list_kludge || -+ (gtk_tree_model_get_flags (tree_view->priv->model) & -+ GTK_TREE_MODEL_LIST_ONLY)) -+ { -+ /* text listbox */ -+ if (tree_view->priv->checkbox_mode) -+ { -+ /* multisel with checkboxes: select key toggles focused */ -+ gtk_tree_view_real_toggle_cursor_row (tree_view); -+ } -+ else -+ { -+ /* no checkboxes: select key activates focused */ -+ GtkTreePath *cursor_path = -+ gtk_tree_row_reference_get_path (tree_view->priv->cursor); -+ -+ gtk_tree_view_row_activated (tree_view, cursor_path, -+ tree_view->priv->focus_column); -+ -+ gtk_tree_path_free (cursor_path); -+ } -+ } -+ else -+ { -+ /* hierarchical listbox */ -+ GtkTreePath *cursor_path; -+ GtkRBTree *tree; -+ GtkRBNode *node; -+ -+ cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); -+ _gtk_tree_view_find_node (tree_view, cursor_path, &tree, &node); -+ -+ if (node->children == NULL) -+ gtk_tree_view_real_expand_row (tree_view, -+ cursor_path, -+ tree, -+ node, -+ FALSE, TRUE); -+ else -+ gtk_tree_view_real_collapse_row (tree_view, -+ cursor_path, -+ tree, -+ node, -+ TRUE); -+ } -+ } -+ - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG)) - { - if (event->keyval == GDK_Escape) -@@ -4420,6 +5256,7 @@ - - /* FIXME Is this function necessary? Can I get an enter_notify event - * w/o either an expose event or a mouse motion event? -+ * Hildon => it is necessary to make pen dragging work correctly - */ - static gboolean - gtk_tree_view_enter_notify (GtkWidget *widget, -@@ -4434,6 +5271,10 @@ - - tree_view = GTK_TREE_VIEW (widget); - -+ /* stop "automatic" pen dragging */ -+ tree_view->priv->pen_drag_active = FALSE; -+ remove_scroll_timeout (tree_view); -+ - /* Sanity check it */ - if (event->window != tree_view->priv->bin_window) - return FALSE; -@@ -4463,6 +5304,9 @@ - tree_view = GTK_TREE_VIEW (widget); - tree_view->priv->pressed_button = -1; - -+ if (tree_view->priv->pen_down && tree_view->priv->queued_select_row == NULL) -+ tree_view->priv->pen_drag_active = TRUE; -+ - if (event->mode == GDK_CROSSING_GRAB) - return TRUE; - -@@ -4535,6 +5379,7 @@ - gboolean retval = FALSE; - gboolean is_separator = FALSE; - gint focus_pad; -+ gint expander_indent; - - /* double check the row needs validating */ - if (! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID) && -@@ -4551,6 +5396,7 @@ - gtk_widget_style_get (GTK_WIDGET (tree_view), - "focus-padding", &focus_pad, - "horizontal_separator", &horizontal_separator, -+ "expander_indent", &expander_indent, - NULL); - - for (list = tree_view->priv->columns; list; list = list->next) -@@ -4577,13 +5423,16 @@ - { - height = MAX (height, tmp_height); - height = MAX (height, tree_view->priv->expander_size); -+ -+ /* Hildon addition */ -+ height -= 1; - } - else - height = 2 + 2 * focus_pad; - - if (gtk_tree_view_is_expander_column (tree_view, column) && TREE_VIEW_DRAW_EXPANDERS (tree_view)) - { -- tmp_width = tmp_width + horizontal_separator + depth * (tree_view->priv->expander_size); -+ tmp_width = tmp_width + horizontal_separator + depth * (tree_view->priv->expander_size) + (depth - 1) * expander_indent; - } - else - tmp_width = tmp_width + horizontal_separator; -@@ -5585,6 +6434,16 @@ - #endif /* 0 */ - - static void -+add_scroll_timeout (GtkTreeView *tree_view) -+{ -+ if (tree_view->priv->scroll_timeout == 0) -+ { -+ tree_view->priv->scroll_timeout = -+ g_timeout_add (150, scroll_row_timeout, tree_view); -+ } -+} -+ -+static void - remove_scroll_timeout (GtkTreeView *tree_view) - { - if (tree_view->priv->scroll_timeout != 0) -@@ -6130,10 +6989,9 @@ - tree_view->priv->open_dest_timeout = - g_timeout_add (AUTO_EXPAND_TIMEOUT, open_row_timeout, tree_view); - } -- else if (tree_view->priv->scroll_timeout == 0) -+ else - { -- tree_view->priv->scroll_timeout = -- g_timeout_add (150, scroll_row_timeout, tree_view); -+ add_scroll_timeout (tree_view); - } - - if (target == gdk_atom_intern ("GTK_TREE_MODEL_ROW", FALSE)) -@@ -6901,8 +7759,6 @@ - GtkMovementStep step, - gint count) - { -- GdkModifierType state; -- - g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); - g_return_val_if_fail (step == GTK_MOVEMENT_LOGICAL_POSITIONS || - step == GTK_MOVEMENT_VISUAL_POSITIONS || -@@ -6919,6 +7775,8 @@ - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); - gtk_widget_grab_focus (GTK_WIDGET (tree_view)); - -+ /* Hildon: Ignore ctrl and shift */ -+#if 0 - if (gtk_get_current_event_state (&state)) - { - if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK) -@@ -6926,6 +7784,7 @@ - if ((state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) - tree_view->priv->shift_pressed = TRUE; - } -+#endif - /* else we assume not pressed */ - - switch (step) -@@ -7092,6 +7951,27 @@ - done: - if (!tree_view->priv->fixed_height_mode) - install_presize_handler (tree_view); -+ -+ /* Hildon: has row now been dimmed? If so, unselect it */ -+ _gtk_tree_view_find_node (tree_view, path, &tree, &node); -+ if (!_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ node, -+ path)) -+ { -+ if (gtk_tree_path_compare (path, -+ gtk_tree_row_reference_get_path(tree_view->priv->cursor)) -+ == 0) -+ { -+ gtk_tree_row_reference_free (tree_view->priv->cursor); -+ tree_view->priv->cursor = NULL; -+ } -+ -+ gtk_tree_selection_unselect_path (tree_view->priv->selection, path); -+ gtk_tree_view_collapse_row (tree_view, path); -+ } -+ -+ check_if_can_focus (tree_view); -+ - if (free_path) - gtk_tree_path_free (path); - } -@@ -7196,6 +8076,11 @@ - install_presize_handler (tree_view); - if (free_path) - gtk_tree_path_free (path); -+ -+ /* Hildon: after a focusable row has been added, the -+ entire widget becomes focusable if it wasn't before */ -+ if ((GTK_WIDGET_FLAGS (tree_view) & GTK_CAN_FOCUS) == 0) -+ check_if_can_focus (tree_view); - } - - static void -@@ -7295,6 +8180,16 @@ - _gtk_rbtree_traverse (node->children, node->children->root, G_POST_ORDER, check_selection_helper, data); - } - -+static gboolean -+check_if_can_focus_idle (GtkTreeView *tree_view) -+{ -+ check_if_can_focus (tree_view); -+ -+ tree_view->priv->check_if_can_focus_idle_id = 0; -+ -+ return FALSE; -+} -+ - static void - gtk_tree_view_row_deleted (GtkTreeModel *model, - GtkTreePath *path, -@@ -7357,6 +8252,11 @@ - tree_view->priv->tree = NULL; - - _gtk_rbtree_remove (tree); -+ -+ /* Hildon: no nodes -> not focusable */ -+ /* FIXME this looks superfluos to me. check_if_can_focus is called -+ * at the end of this function .. -- Jorn */ -+ GTK_WIDGET_UNSET_FLAGS (tree_view, GTK_CAN_FOCUS); - } - else - { -@@ -7375,6 +8275,13 @@ - - if (selection_changed) - g_signal_emit_by_name (tree_view->priv->selection, "changed"); -+ -+ /* FIXME whacky hack to work around the treeview not being in a clean state -+ * when in a tree a row has been removed, but has_child_toggled not been -+ * called yet */ -+ if (tree_view->priv->check_if_can_focus_idle_id == 0) -+ tree_view->priv->check_if_can_focus_idle_id = -+ g_idle_add ((GSourceFunc) check_if_can_focus_idle, tree_view); - } - - static void -@@ -7508,6 +8415,7 @@ - GList *list; - GtkTreeViewColumn *tmp_column = NULL; - gint total_width; -+ gint expander_indent, depth; - gboolean indent_expanders; - gboolean rtl; - -@@ -7535,14 +8443,19 @@ - - gtk_widget_style_get (GTK_WIDGET (tree_view), - "indent_expanders", &indent_expanders, -+ "expander_indent", &expander_indent, - NULL); - -+ /* Hildonlike hack for making the indent look better. -+ * indent is added to all rows except the first one */ -+ depth = _gtk_rbtree_get_depth (tree); -+ - if (indent_expanders) - { - if (rtl) -- x_offset -= tree_view->priv->expander_size * _gtk_rbtree_get_depth (tree); -+ x_offset -= tree_view->priv->expander_size * depth + (depth) * expander_indent; - else -- x_offset += tree_view->priv->expander_size * _gtk_rbtree_get_depth (tree); -+ x_offset += tree_view->priv->expander_size * depth + (depth) * expander_indent; - } - if (x1) - { -@@ -7617,9 +8530,11 @@ - gboolean retval = FALSE; - gint tmpheight; - gint horizontal_separator; -+ gint expander_indent; - - gtk_widget_style_get (GTK_WIDGET (tree_view), - "horizontal_separator", &horizontal_separator, -+ "expander_indent", &expander_indent, - NULL); - - if (height) -@@ -7657,7 +8572,7 @@ - if (gtk_tree_view_is_expander_column (tree_view, column) && - TREE_VIEW_DRAW_EXPANDERS (tree_view)) - { -- if (depth * tree_view->priv->expander_size + horizontal_separator + width > column->requested_width) -+ if ((depth - 1) *expander_indent + depth * tree_view->priv->expander_size + horizontal_separator + width > column->requested_width) - { - _gtk_tree_view_column_cell_set_dirty (column, TRUE); - retval = TRUE; -@@ -7747,6 +8662,7 @@ - } - } - -+#if 0 - static void - gtk_tree_view_clamp_column_visible (GtkTreeView *tree_view, - GtkTreeViewColumn *column) -@@ -7762,6 +8678,7 @@ - gtk_adjustment_set_value (tree_view->priv->hadjustment, - column->button->allocation.x); - } -+#endif - - /* This function could be more efficient. I'll optimize it if profiling seems - * to imply that it is important */ -@@ -8290,7 +9207,7 @@ - - area.x = x_offset; - area.y = CELL_FIRST_PIXEL (tree_view, tree, node, vertical_separator); -- area.width = expander_size + 2; -+ area.width = expander_size; - area.height = MAX (CELL_HEIGHT (node, vertical_separator), (expander_size - vertical_separator)); - - if (node == tree_view->priv->button_pressed_node) -@@ -8397,7 +9314,10 @@ - GtkRBNode *cursor_node = NULL; - GtkRBTree *new_cursor_tree = NULL; - GtkRBNode *new_cursor_node = NULL; -+ GtkRBTree *old_cursor_tree; -+ GtkRBNode *old_cursor_node; - GtkTreePath *cursor_path = NULL; -+ GtkTreePath *new_cursor_path = NULL; - - if (! GTK_WIDGET_HAS_FOCUS (tree_view)) - return; -@@ -8415,12 +9335,30 @@ - if (cursor_tree == NULL) - /* FIXME: we lost the cursor; should we get the first? */ - return; -- if (count == -1) -- _gtk_rbtree_prev_full (cursor_tree, cursor_node, -- &new_cursor_tree, &new_cursor_node); -- else -- _gtk_rbtree_next_full (cursor_tree, cursor_node, -- &new_cursor_tree, &new_cursor_node); -+ -+ old_cursor_tree = cursor_tree; -+ old_cursor_node = cursor_node; -+ do { -+ if (count == -1) -+ _gtk_rbtree_prev_full (old_cursor_tree, old_cursor_node, -+ &new_cursor_tree, &new_cursor_node); -+ else -+ _gtk_rbtree_next_full (old_cursor_tree, old_cursor_node, -+ &new_cursor_tree, &new_cursor_node); -+ -+ if (new_cursor_node) -+ { -+ if (new_cursor_path) -+ gtk_tree_path_free (new_cursor_path); -+ -+ new_cursor_path = _gtk_tree_view_find_path (tree_view, new_cursor_tree, new_cursor_node); -+ old_cursor_tree = new_cursor_tree; -+ old_cursor_node = new_cursor_node; -+ } -+ } while (new_cursor_node && -+ !_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ new_cursor_node, -+ new_cursor_path)); - - /* - * If the list has only one item and multi-selection is set then select -@@ -8450,7 +9388,33 @@ - if (new_cursor_node) - { - cursor_path = _gtk_tree_view_find_path (tree_view, new_cursor_tree, new_cursor_node); -- gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, TRUE); -+ -+ if (tree_view->priv->checkbox_mode) -+ gtk_tree_view_real_set_cursor (tree_view, cursor_path, FALSE, TRUE); -+ else -+ gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, TRUE); -+ -+ if (tree_view->priv->pen_drag_active) -+ { -+ if (gtk_tree_path_compare (gtk_tree_row_reference_get_path (tree_view->priv->last_drag_row), -+ gtk_tree_row_reference_get_path (tree_view->priv->first_drag_row)) == 0) -+ tree_view->priv->pen_drag_reverse = FALSE; -+ -+ if (tree_view->priv->pen_drag_reverse) -+ { -+ gtk_tree_selection_select_path (tree_view->priv->selection, -+ cursor_path); -+ gtk_tree_selection_unselect_path (tree_view->priv->selection, -+ gtk_tree_row_reference_get_path (tree_view->priv->last_drag_row)); -+ } -+ -+ gtk_tree_row_reference_free (tree_view->priv->last_drag_row); -+ -+ tree_view->priv->last_drag_row = -+ gtk_tree_row_reference_new (tree_view->priv->model, -+ cursor_path); -+ } -+ - gtk_tree_path_free (cursor_path); - } - else -@@ -8467,6 +9431,8 @@ - { - GtkRBTree *cursor_tree = NULL; - GtkRBNode *cursor_node = NULL; -+ GtkRBTree *old_cursor_tree = NULL; -+ GtkRBNode *old_cursor_node = NULL; - GtkTreePath *cursor_path = NULL; - gint y; - gint vertical_separator; -@@ -8474,6 +9440,9 @@ - if (! GTK_WIDGET_HAS_FOCUS (tree_view)) - return; - -+ if (tree_view->priv->tree == NULL) -+ return; -+ - if (gtk_tree_row_reference_valid (tree_view->priv->cursor)) - cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); - else -@@ -8504,7 +9473,65 @@ - - _gtk_rbtree_find_offset (tree_view->priv->tree, y, &cursor_tree, &cursor_node); - cursor_path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node); -- g_return_if_fail (cursor_path != NULL); -+ -+ while (cursor_node && -+ !_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ cursor_node, -+ cursor_path)) -+ { -+ old_cursor_tree = cursor_tree; -+ old_cursor_node = cursor_node; -+ -+ if (count < 0) -+ _gtk_rbtree_prev_full (old_cursor_tree, old_cursor_node, -+ &cursor_tree, &cursor_node); -+ else -+ _gtk_rbtree_next_full (old_cursor_tree, old_cursor_node, -+ &cursor_tree, &cursor_node); -+ -+ if (cursor_path) -+ { -+ gtk_tree_path_free(cursor_path); -+ cursor_path = NULL; -+ } -+ -+ if (cursor_node) -+ cursor_path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node); -+ } -+ -+ if (cursor_path == NULL) -+ { -+ /* looks like we reached the end without finding a sensitive row, -+ so search backwards and try to find the last sensitive row as -+ the next best thing */ -+ _gtk_rbtree_find_offset (tree_view->priv->tree, y, &cursor_tree, &cursor_node); -+ cursor_path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node); -+ while (cursor_node && -+ !_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ cursor_node, -+ cursor_path)) -+ { -+ old_cursor_tree = cursor_tree; -+ old_cursor_node = cursor_node; -+ -+ if (count < 0) -+ _gtk_rbtree_next_full (old_cursor_tree, old_cursor_node, -+ &cursor_tree, &cursor_node); -+ else -+ _gtk_rbtree_prev_full (old_cursor_tree, old_cursor_node, -+ &cursor_tree, &cursor_node); -+ -+ if (cursor_path) -+ { -+ gtk_tree_path_free(cursor_path); -+ cursor_path = NULL; -+ } -+ -+ if (cursor_node) -+ cursor_path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node); -+ } -+ } -+ - gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, TRUE); - gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node); - gtk_tree_path_free (cursor_path); -@@ -8514,6 +9541,8 @@ - gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, - gint count) - { -+ /* Hildon: cursor is always displayed on an entire row anyway */ -+#if 0 - GtkRBTree *cursor_tree = NULL; - GtkRBNode *cursor_node = NULL; - GtkTreePath *cursor_path = NULL; -@@ -8589,12 +9618,15 @@ - g_signal_emit (tree_view, tree_view_signals[CURSOR_CHANGED], 0); - } - gtk_tree_view_clamp_column_visible (tree_view, tree_view->priv->focus_column); -+#endif - } - - static void - gtk_tree_view_move_cursor_start_end (GtkTreeView *tree_view, - gint count) - { -+ /* Hildon: cursor is always displayed on an entire row anyway */ -+#if 0 - GtkRBTree *cursor_tree; - GtkRBNode *cursor_node; - GtkTreePath *path; -@@ -8631,6 +9663,7 @@ - path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node); - gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE); - gtk_tree_path_free (path); -+#endif - } - - static gboolean -@@ -8670,7 +9703,7 @@ - GtkTreePath *cursor_path = NULL; - GtkTreeSelectMode mode = 0; - -- if (! GTK_WIDGET_HAS_FOCUS (tree_view)) -+ if (! GTK_WIDGET_HAS_FOCUS (tree_view) && !tree_view->priv->checkbox_mode) - return FALSE; - - if (tree_view->priv->cursor) -@@ -8731,7 +9764,7 @@ - GtkRBNode *cursor_node = NULL; - GtkTreePath *cursor_path = NULL; - -- if (! GTK_WIDGET_HAS_FOCUS (tree_view)) -+ if (! GTK_WIDGET_HAS_FOCUS (tree_view) && !tree_view->priv->checkbox_mode) - return FALSE; - - cursor_path = NULL; -@@ -8774,6 +9807,7 @@ - GtkTreePath *cursor_path = NULL; - GtkRBTree *tree; - GtkRBNode *node; -+ gboolean hildon_row; - - if (! GTK_WIDGET_HAS_FOCUS (tree_view)) - return FALSE; -@@ -8796,10 +9830,32 @@ - && gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL) - expand = !expand; - -- if (expand) -- gtk_tree_view_real_expand_row (tree_view, cursor_path, tree, node, open_all, TRUE); -+ /* Keyboard Navigation: if we can't expand/collapse row, we should either move active focus -+ to child item (right arrow) or move active focus to the parent item (left arrow) */ -+ if (expand) -+ { -+ hildon_row = gtk_tree_view_real_expand_row (tree_view, cursor_path, tree, -+ node, open_all, TRUE); -+ -+ if (!hildon_row || !node->children) -+ g_signal_emit_by_name (gtk_widget_get_ancestor (GTK_WIDGET (tree_view), -+ GTK_TYPE_WINDOW), -+ "move_focus", -+ GTK_DIR_TAB_FORWARD); -+ } - else -- gtk_tree_view_real_collapse_row (tree_view, cursor_path, tree, node, TRUE); -+ { -+ hildon_row = gtk_tree_view_real_collapse_row (tree_view, cursor_path, tree, node, TRUE); -+ -+ if (hildon_row == FALSE) -+ { -+ g_signal_emit_by_name (gtk_widget_get_ancestor (GTK_WIDGET(tree_view), -+ GTK_TYPE_WINDOW), -+ "move_focus", -+ GTK_DIR_TAB_BACKWARD); -+ gtk_tree_view_real_select_cursor_parent (tree_view); -+ } -+ } - - gtk_tree_path_free (cursor_path); - -@@ -9327,6 +10383,14 @@ - tree_view->priv->last_button_press_2 = NULL; - gtk_tree_row_reference_free (tree_view->priv->scroll_to_path); - tree_view->priv->scroll_to_path = NULL; -+ gtk_tree_row_reference_free (tree_view->priv->first_drag_row); -+ tree_view->priv->first_drag_row = NULL; -+ gtk_tree_row_reference_free (tree_view->priv->last_drag_row); -+ tree_view->priv->last_drag_row = NULL; -+ gtk_tree_row_reference_free (tree_view->priv->queued_expand_row); -+ tree_view->priv->queued_expand_row = NULL; -+ gtk_tree_row_reference_free (tree_view->priv->queued_select_row); -+ tree_view->priv->queued_select_row = NULL; - - tree_view->priv->scroll_to_column = NULL; - -@@ -9402,6 +10466,8 @@ - install_presize_handler (tree_view); - } - -+ check_if_can_focus (tree_view); -+ - g_object_notify (G_OBJECT (tree_view), "model"); - - if (GTK_WIDGET_REALIZED (tree_view)) -@@ -9744,6 +10810,10 @@ - G_CALLBACK (column_sizing_notify), - tree_view); - -+ g_signal_handlers_disconnect_by_func (column, -+ G_CALLBACK (update_checkbox_mode), -+ tree_view); -+ - _gtk_tree_view_column_unset_tree_view (column); - - tree_view->priv->columns = g_list_remove (tree_view->priv->columns, column); -@@ -9773,6 +10843,8 @@ - g_object_unref (column); - g_signal_emit (tree_view, tree_view_signals[COLUMNS_CHANGED], 0); - -+ update_checkbox_mode (NULL, NULL, tree_view); -+ - return tree_view->priv->n_columns; - } - -@@ -9815,6 +10887,9 @@ - g_signal_connect (column, "notify::sizing", - G_CALLBACK (column_sizing_notify), tree_view); - -+ g_signal_connect (column, "notify::visible", -+ G_CALLBACK (update_checkbox_mode), tree_view); -+ - tree_view->priv->columns = g_list_insert (tree_view->priv->columns, - column, position); - tree_view->priv->n_columns++; -@@ -9838,6 +10913,9 @@ - - g_signal_emit (tree_view, tree_view_signals[COLUMNS_CHANGED], 0); - -+ update_checkbox_mode (NULL, NULL, tree_view); -+ check_if_can_focus (tree_view); -+ - return tree_view->priv->n_columns; - } - -@@ -10295,7 +11373,6 @@ - GtkTreeViewColumn *column) - { - g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); -- - g_signal_emit (tree_view, tree_view_signals[ROW_ACTIVATED], 0, path, column); - } - -@@ -10560,6 +11637,16 @@ - GtkTreeIter iter; - GtkTreeIter temp; - gboolean expand; -+ gint vertical_separator; -+ GtkTreePath *collapse_path; -+ GtkRBTree *tree2; -+ GtkRBNode *node2; -+ GtkTreePath *child_path = NULL; -+ GtkTreeIter parent_iter; -+ GtkTreeIter child_iter; -+ GdkRectangle visible_rect; -+ gint children, n; -+ guint total_height; - - remove_auto_expand_timeout (tree_view); - -@@ -10573,8 +11660,12 @@ - if (! gtk_tree_model_iter_has_child (tree_view->priv->model, &iter)) - return FALSE; - -+ /* Hildon: insensitive rows cannot be expanded */ -+ if (!_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ node, path)) -+ return FALSE; - -- if (node->children && open_all) -+ if (node->children && open_all) - { - gboolean retval = FALSE; - GtkTreePath *tmp_path = gtk_tree_path_copy (path); -@@ -10603,6 +11694,37 @@ - return retval; - } - -+ /* Hildon: collapse other items in the same level */ -+ gtk_widget_style_get (GTK_WIDGET (tree_view), -+ "vertical_separator", &vertical_separator, NULL); -+ -+ /* find the first child */ -+ collapse_path = gtk_tree_path_copy (path); -+ while (gtk_tree_path_prev (collapse_path)) -+ ; -+ -+ do { -+ if (gtk_tree_path_compare (collapse_path, path) != 0) -+ { -+ _gtk_tree_view_find_node (tree_view, collapse_path, &tree2, &node2); -+ -+ if (tree2 == NULL) -+ /* end reached already */ -+ break; -+ -+ if (node2->children != NULL && -+ gtk_tree_view_real_collapse_row (tree_view, collapse_path, -+ tree2, node2, FALSE)) -+ /* no need to do anything else since only one row may -+ be expanded on any particular level at any time */ -+ break; -+ } -+ -+ gtk_tree_path_next (collapse_path); -+ } while (1); -+ -+ gtk_tree_path_free (collapse_path); -+ - g_signal_emit (tree_view, tree_view_signals[TEST_EXPAND_ROW], 0, &iter, path, &expand); - - if (expand) -@@ -10643,6 +11765,42 @@ - GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_SEMI_COLLAPSED); - } - -+ /* autoscroll if necessary */ -+ validate_visible_area (tree_view); -+ gtk_tree_model_get_iter (tree_view->priv->model, &parent_iter, path); -+ _gtk_tree_view_find_node (tree_view, path, &tree2, &node2); -+ validate_row (tree_view, tree2, node2, &parent_iter, path); -+ total_height = CELL_HEIGHT (node2, vertical_separator); -+ children = gtk_tree_model_iter_n_children (tree_view->priv->model, &parent_iter); -+ for (n = 0; n < children; n++) -+ { -+ gtk_tree_model_iter_nth_child (tree_view->priv->model, -+ &child_iter, &parent_iter, n); -+ -+ /* must free here so the path of last child is kept for later */ -+ if (child_path != NULL) -+ gtk_tree_path_free (child_path); -+ -+ child_path = gtk_tree_model_get_path (tree_view->priv->model, &child_iter); -+ _gtk_tree_view_find_node (tree_view, child_path, &tree2, &node2); -+ -+ if (CELL_HEIGHT (node2, 0) == 0) -+ validate_row (tree_view, tree2, node2, &child_iter, child_path); -+ -+ total_height += CELL_HEIGHT (node2, vertical_separator); -+ } -+ -+ gtk_tree_view_get_visible_rect (tree_view, &visible_rect); -+ -+ /* KNOWN BUG: If no autocollapse was performed earlier above, these calls -+ to gtk_tree_view_scroll_to_cell do nothing although they should. */ -+ if (total_height > visible_rect.height) -+ gtk_tree_view_scroll_to_cell (tree_view, path, NULL, TRUE, 0.0, 0.0); -+ else -+ gtk_tree_view_scroll_to_cell (tree_view, child_path, NULL, FALSE, 0.0, 0.0); -+ -+ gtk_tree_path_free (child_path); -+ - install_presize_handler (tree_view); - - g_signal_emit (tree_view, tree_view_signals[ROW_EXPANDED], 0, &iter, path); -@@ -11070,6 +12228,16 @@ - GtkRBTree *tree = NULL; - GtkRBNode *node = NULL; - -+ _gtk_tree_view_find_node (tree_view, path, &tree, &node); -+ -+ /* Hildon: cursor cannot move to an insensitive row */ -+ if (!_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ node, path)) -+ { -+ g_signal_emit (tree_view, tree_view_signals[ROW_INSENSITIVE], 0, path); -+ return; -+ } -+ - if (gtk_tree_row_reference_valid (tree_view->priv->cursor)) - { - GtkTreePath *cursor_path; -@@ -11083,7 +12251,6 @@ - tree_view->priv->cursor = gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view), - tree_view->priv->model, - path); -- _gtk_tree_view_find_node (tree_view, path, &tree, &node); - if (tree != NULL) - { - GtkRBTree *new_tree = NULL; -@@ -11093,7 +12260,8 @@ - { - GtkTreeSelectMode mode = 0; - -- if (tree_view->priv->ctrl_pressed) -+ if (tree_view->priv->ctrl_pressed || -+ tree_view->priv->pen_drag_active) - mode |= GTK_TREE_SELECT_MODE_TOGGLE; - if (tree_view->priv->shift_pressed) - mode |= GTK_TREE_SELECT_MODE_EXTEND; -@@ -11213,6 +12381,9 @@ - { - g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); - g_return_if_fail (path != NULL); -+ -+ tree_view->priv->pen_focus = FALSE; -+ - if (focus_column) - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (focus_column)); - if (focus_cell) -@@ -11414,6 +12585,7 @@ - GtkRBNode *node = NULL; - gint vertical_separator; - gint horizontal_separator; -+ gint expander_indent; - - g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); - g_return_if_fail (column == NULL || GTK_IS_TREE_VIEW_COLUMN (column)); -@@ -11424,6 +12596,7 @@ - gtk_widget_style_get (GTK_WIDGET (tree_view), - "vertical_separator", &vertical_separator, - "horizontal_separator", &horizontal_separator, -+ "expander_indent", &expander_indent, - NULL); - - rect->x = 0; -@@ -11453,9 +12626,11 @@ - TREE_VIEW_DRAW_EXPANDERS (tree_view)) - { - gint depth = gtk_tree_path_get_depth (path) - 1; -+ gint adjust; - -- rect->x += depth * tree_view->priv->expander_size; -- rect->width -= depth * tree_view->priv->expander_size; -+ adjust = depth * tree_view->priv->expander_size + (depth - 1) * expander_indent; -+ rect->x += adjust; -+ rect->width -= adjust; - rect->width = MAX (rect->width, 0); - } - } -@@ -12077,8 +13252,13 @@ - if (gtk_tree_view_is_expander_column (tree_view, column) && - TREE_VIEW_DRAW_EXPANDERS(tree_view)) - { -- cell_area.x += depth * tree_view->priv->expander_size; -- cell_area.width -= depth * tree_view->priv->expander_size; -+ gint adjust, expander_indent; -+ -+ gtk_widget_style_get (widget, "expander_indent", &expander_indent, NULL); -+ -+ adjust = depth * tree_view->priv->expander_size + (depth - 1) * expander_indent; -+ cell_area.x += adjust; -+ cell_area.width -= adjust; - } - - if (gtk_tree_view_column_cell_is_visible (column)) -@@ -13062,3 +14242,138 @@ - tree_view->priv->pressed_button = -1; - } - -+/* Hildon addition: iterates through columns and cells, looks for -+ a cell with "activatable" attribute and sets or unsets -+ priv->checkbox_mode accordingly (except when checkbox mode -+ is disabled by unsetting allow_checkbox_mode). -+ */ -+static void -+update_checkbox_mode (GObject *object, GParamSpec *pspec, gpointer data) -+{ -+ GtkTreeView *tree_view = GTK_TREE_VIEW (data); -+ GList *columns = gtk_tree_view_get_columns (tree_view); -+ GList *list; -+ gboolean allow_checkbox_mode; -+ -+ g_object_get (GTK_WIDGET (data), -+ "allow_checkbox_mode", &allow_checkbox_mode, NULL); -+ g_return_if_fail (allow_checkbox_mode); -+ -+ for (list = columns; list; list = list->next) -+ { -+ GtkTreeViewColumn *col = GTK_TREE_VIEW_COLUMN (list->data); -+ if (gtk_tree_view_column_get_visible (col) && -+ _gtk_tree_view_column_has_activatable_cell (col)) -+ { -+ /* checkbox column found */ -+ tree_view->priv->checkbox_mode = TRUE; -+ g_list_free (columns); -+ return; -+ } -+ } -+ -+ /* no checkbox column was found */ -+ tree_view->priv->checkbox_mode = FALSE; -+ g_list_free (columns); -+} -+ -+static void -+set_dotted_lines (GtkTreeView *tree_view, gboolean enable) -+{ -+ if (enable != tree_view->priv->dotted_lines) -+ { -+ tree_view->priv->dotted_lines = enable; -+ gtk_widget_queue_draw (GTK_WIDGET (tree_view)); -+ } -+} -+ -+/* This function is used to ensure two things: -+ * - in single selection mode, focus will always equal selection -+ * - in multiple selection mode, focus is removed if cursor row is -+ * explicitly unselected -+ */ -+static void -+selection_changed (GtkTreeSelection *selection, gpointer data) -+{ -+ GtkTreeView *tree_view = GTK_TREE_VIEW(data); -+ GtkTreePath *cursor_path = NULL; -+ GtkTreeIter iter; -+ -+ /* if there are checkboxes, cursor row doesn't have to be selected */ -+ if (tree_view->priv->checkbox_mode) -+ return; -+ -+ if (gtk_tree_row_reference_valid (tree_view->priv->cursor)) -+ cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); -+ -+ if (cursor_path == NULL || -+ !gtk_tree_selection_path_is_selected (selection, cursor_path)) -+ { -+ GtkTreePath *selected_path; -+ GtkRBTree *tree = NULL; -+ GtkRBNode *node = NULL; -+ -+ if (gtk_tree_selection_get_mode (selection) != GTK_SELECTION_MULTIPLE && -+ gtk_tree_selection_get_selected (selection, NULL, &iter)) -+ { -+ selected_path = gtk_tree_model_get_path (tree_view->priv->model, -+ &iter); -+ gtk_tree_view_real_set_cursor (tree_view, selected_path, TRUE, TRUE); -+ _gtk_tree_view_find_node (tree_view, selected_path, &tree, &node); -+ gtk_tree_view_clamp_node_visible (tree_view, tree, node); -+ gtk_tree_path_free (selected_path); -+ gtk_widget_grab_focus (GTK_WIDGET (tree_view)); -+ } -+ else -+ { -+ gtk_tree_row_reference_free (tree_view->priv->cursor); -+ tree_view->priv->cursor = NULL; -+ } -+ } -+ -+ if (cursor_path) -+ gtk_tree_path_free (cursor_path); -+} -+ -+/* Helper function for ensuring that GtkTreeView is focusable -+ * if and only if it contains at least one sensitive top-level row. -+ * Should be called whenever the existence of a sensitive top-level row -+ * might have changed. -+ */ -+static void -+check_if_can_focus (GtkTreeView *tree_view) -+{ -+ GtkTreeModel *model = gtk_tree_view_get_model (tree_view); -+ GtkTreeIter iter; -+ -+ if (model == NULL || !GTK_WIDGET_MAPPED (tree_view)) -+ return; -+ -+ if (gtk_tree_model_get_iter_first (model, &iter) == FALSE) -+ { -+ GTK_WIDGET_UNSET_FLAGS (tree_view, GTK_CAN_FOCUS); -+ return; -+ } -+ -+ do { -+ GtkTreePath *path = gtk_tree_model_get_path (model, &iter); -+ GtkRBTree *tree; -+ GtkRBNode *node; -+ -+ _gtk_tree_view_find_node (tree_view, path, &tree, &node); -+ -+ if (_gtk_tree_selection_is_row_selectable (tree_view->priv->selection, -+ node, path)) -+ { -+ GTK_WIDGET_SET_FLAGS (tree_view, GTK_CAN_FOCUS); -+ if (!gtk_tree_row_reference_valid (tree_view->priv->cursor)) -+ gtk_tree_view_real_set_cursor (tree_view, path, -+ !tree_view->priv->checkbox_mode, -+ TRUE); -+ -+ return; -+ } -+ } while (gtk_tree_model_iter_next (model, &iter)); -+ -+ GTK_WIDGET_UNSET_FLAGS (tree_view, GTK_CAN_FOCUS); -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.h.diff deleted file mode 100644 index 13f5c75600..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeview.h.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreeview.h 2004-11-23 22:02:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktreeview.h 2005-04-06 16:19:38.342709384 +0300 -@@ -102,12 +102,14 @@ - gboolean (* select_cursor_parent) (GtkTreeView *tree_view); - gboolean (* start_interactive_search) (GtkTreeView *tree_view); - -+ void (* row_insensitive) (GtkTreeView *tree_view, -+ GtkTreePath *path); -+ - /* Padding for future expansion */ - void (*_gtk_reserved0) (void); - void (*_gtk_reserved1) (void); - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); -- void (*_gtk_reserved4) (void); - }; - - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeviewcolumn.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeviewcolumn.c.diff deleted file mode 100644 index aab0f0ed1f..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktreeviewcolumn.c.diff +++ /dev/null @@ -1,51 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktreeviewcolumn.c 2005-01-05 00:10:56.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktreeviewcolumn.c 2005-04-06 16:19:38.346708776 +0300 -@@ -1367,6 +1367,19 @@ - return FALSE; - } - -+gboolean -+_gtk_tree_view_column_has_activatable_cell (GtkTreeViewColumn *column) -+{ -+ GList *list; -+ -+ for (list = column->cell_list; list; list = list->next) -+ if (((GtkTreeViewColumnCellInfo *)list->data)->cell->mode == -+ GTK_CELL_RENDERER_MODE_ACTIVATABLE) -+ return TRUE; -+ -+ return FALSE; -+} -+ - /* gets cell being edited */ - GtkCellRenderer * - _gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column) -@@ -2582,6 +2595,7 @@ - GList *list; - gboolean first_cell = TRUE; - gint focus_line_width; -+ gint horizontal_separator; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - -@@ -2590,7 +2604,10 @@ - if (width) - * width = 0; - -- gtk_widget_style_get (tree_column->tree_view, "focus-line-width", &focus_line_width, NULL); -+ gtk_widget_style_get (tree_column->tree_view, -+ "focus-line-width", &focus_line_width, -+ "horizontal-separator", &horizontal_separator, -+ NULL); - - for (list = tree_column->cell_list; list; list = list->next) - { -@@ -2618,7 +2635,7 @@ - * height = MAX (*height, new_height + focus_line_width * 2); - info->requested_width = MAX (info->requested_width, new_width + focus_line_width * 2); - if (width) -- * width += info->requested_width; -+ * width += info->requested_width + horizontal_separator; - first_cell = FALSE; - } - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.c.diff deleted file mode 100644 index 31b52e68a3..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.c.diff +++ /dev/null @@ -1,86 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktypebuiltins.c 2005-03-01 17:58:15.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktypebuiltins.c 2005-04-06 16:19:38.348708472 +0300 -@@ -25,6 +25,26 @@ - } - - -+/* enumerations from "gtkbutton.h" */ -+GType -+osso_gtk_button_attach_flags_get_type (void) -+{ -+ static GType etype = 0; -+ if (etype == 0) { -+ static const GFlagsValue values[] = { -+ { OSSO_GTK_BUTTON_ATTACH_NORTH, "OSSO_GTK_BUTTON_ATTACH_NORTH", "north" }, -+ { OSSO_GTK_BUTTON_ATTACH_EAST, "OSSO_GTK_BUTTON_ATTACH_EAST", "east" }, -+ { OSSO_GTK_BUTTON_ATTACH_SOUTH, "OSSO_GTK_BUTTON_ATTACH_SOUTH", "south" }, -+ { OSSO_GTK_BUTTON_ATTACH_WEST, "OSSO_GTK_BUTTON_ATTACH_WEST", "west" }, -+ { OSSO_GTK_BUTTON_ATTACH_ENUM_END, "OSSO_GTK_BUTTON_ATTACH_ENUM_END", "enum-end" }, -+ { 0, NULL, NULL } -+ }; -+ etype = g_flags_register_static ("OssoGtkButtonAttachFlags", values); -+ } -+ return etype; -+} -+ -+ - /* enumerations from "gtkcalendar.h" */ - GType - gtk_calendar_display_options_get_type (void) -@@ -468,13 +488,17 @@ - static GType etype = 0; - if (etype == 0) { - static const GEnumValue values[] = { -- { GTK_ICON_SIZE_INVALID, "GTK_ICON_SIZE_INVALID", "invalid" }, -- { GTK_ICON_SIZE_MENU, "GTK_ICON_SIZE_MENU", "menu" }, -- { GTK_ICON_SIZE_SMALL_TOOLBAR, "GTK_ICON_SIZE_SMALL_TOOLBAR", "small-toolbar" }, -- { GTK_ICON_SIZE_LARGE_TOOLBAR, "GTK_ICON_SIZE_LARGE_TOOLBAR", "large-toolbar" }, -- { GTK_ICON_SIZE_BUTTON, "GTK_ICON_SIZE_BUTTON", "button" }, -- { GTK_ICON_SIZE_DND, "GTK_ICON_SIZE_DND", "dnd" }, -- { GTK_ICON_SIZE_DIALOG, "GTK_ICON_SIZE_DIALOG", "dialog" }, -+ { GTK_ICON_SIZE_INVALID, "GTK_ICON_SIZE_INVALID", "gtk-icon-size-invalid" }, -+ { GTK_ICON_SIZE_MENU, "GTK_ICON_SIZE_MENU", "gtk-icon-size-menu" }, -+ { GTK_ICON_SIZE_SMALL_TOOLBAR, "GTK_ICON_SIZE_SMALL_TOOLBAR", "gtk-icon-size-small-toolbar" }, -+ { GTK_ICON_SIZE_LARGE_TOOLBAR, "GTK_ICON_SIZE_LARGE_TOOLBAR", "gtk-icon-size-large-toolbar" }, -+ { GTK_ICON_SIZE_BUTTON, "GTK_ICON_SIZE_BUTTON", "gtk-icon-size-button" }, -+ { GTK_ICON_SIZE_DND, "GTK_ICON_SIZE_DND", "gtk-icon-size-dnd" }, -+ { GTK_ICON_SIZE_DIALOG, "GTK_ICON_SIZE_DIALOG", "gtk-icon-size-dialog" }, -+ { HILDON_ICON_SIZE_26, "HILDON_ICON_SIZE_26", "hildon-icon-size-26" }, -+ { HILDON_ICON_SIZE_40, "HILDON_ICON_SIZE_40", "hildon-icon-size-40" }, -+ { HILDON_ICON_SIZE_50, "HILDON_ICON_SIZE_50", "hildon-icon-size-50" }, -+ { HILDON_ICON_SIZE_64, "HILDON_ICON_SIZE_64", "hildon-icon-size-64" }, - { 0, NULL, NULL } - }; - etype = g_enum_register_static ("GtkIconSize", values); -@@ -1390,6 +1414,7 @@ - { GTK_RC_TOKEN_STOCK, "GTK_RC_TOKEN_STOCK", "stock" }, - { GTK_RC_TOKEN_LTR, "GTK_RC_TOKEN_LTR", "ltr" }, - { GTK_RC_TOKEN_RTL, "GTK_RC_TOKEN_RTL", "rtl" }, -+ { GTK_RC_TOKEN_LOGICAL_COLOR, "GTK_RC_TOKEN_LOGICAL_COLOR", "logical-color" }, - { GTK_RC_TOKEN_LAST, "GTK_RC_TOKEN_LAST", "last" }, - { 0, NULL, NULL } - }; -@@ -1673,6 +1698,23 @@ - return etype; - } - -+GType -+gtk_widget_tap_and_hold_flags_get_type (void) -+{ -+ static GType etype = 0; -+ if (etype == 0) { -+ static const GFlagsValue values[] = { -+ { GTK_TAP_AND_HOLD_NONE, "GTK_TAP_AND_HOLD_NONE", "none" }, -+ { GTK_TAP_AND_HOLD_PASS_PRESS, "GTK_TAP_AND_HOLD_PASS_PRESS", "pass-press" }, -+ { GTK_TAP_AND_HOLD_NO_SIGNALS, "GTK_TAP_AND_HOLD_NO_SIGNALS", "no-signals" }, -+ { GTK_TAP_AND_HOLD_NO_INTERNALS, "GTK_TAP_AND_HOLD_NO_INTERNALS", "no-internals" }, -+ { 0, NULL, NULL } -+ }; -+ etype = g_flags_register_static ("GtkWidgetTapAndHoldFlags", values); -+ } -+ return etype; -+} -+ - - /* Generated data ends here */ - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.h.diff deleted file mode 100644 index ac266dbaf6..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtktypebuiltins.h.diff +++ /dev/null @@ -1,24 +0,0 @@ ---- gtk+-2.6.4/gtk/gtktypebuiltins.h 2005-03-01 17:58:16.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtktypebuiltins.h 2005-04-06 16:19:38.348708472 +0300 -@@ -13,6 +13,11 @@ - GType gtk_accel_flags_get_type (void) G_GNUC_CONST; - #define GTK_TYPE_ACCEL_FLAGS (gtk_accel_flags_get_type()) - -+/* enumerations from "gtkbutton.h" */ -+ -+GType osso_gtk_button_attach_flags_get_type (void) G_GNUC_CONST; -+#define GTK_TYPE_GTK_BUTTON_ATTACH_FLAGS (osso_gtk_button_attach_flags_get_type()) -+ - /* enumerations from "gtkcalendar.h" */ - - GType gtk_calendar_display_options_get_type (void) G_GNUC_CONST; -@@ -335,6 +340,9 @@ - GType gtk_widget_help_type_get_type (void) G_GNUC_CONST; - #define GTK_TYPE_WIDGET_HELP_TYPE (gtk_widget_help_type_get_type()) - -+GType gtk_widget_tap_and_hold_flags_get_type (void) G_GNUC_CONST; -+#define GTK_TYPE_WIDGET_TAP_AND_HOLD_FLAGS (gtk_widget_tap_and_hold_flags_get_type()) -+ - G_END_DECLS - - #endif /* __GTK_TYPE_BUILTINS_H__ */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkvseparator.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkvseparator.c.diff deleted file mode 100644 index f4b1c00900..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkvseparator.c.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkvseparator.c 2004-08-09 19:59:53.000000000 +0300 -+++ gtk+-2.6.4/gtk/gtkvseparator.c 2005-04-06 16:19:38.356707256 +0300 -@@ -91,13 +91,34 @@ - gtk_vseparator_expose (GtkWidget *widget, - GdkEventExpose *event) - { -- if (GTK_WIDGET_DRAWABLE (widget)) -- gtk_paint_vline (widget->style, widget->window, GTK_WIDGET_STATE (widget), -- &event->area, widget, "vseparator", -- widget->allocation.y, -- widget->allocation.y + widget->allocation.height - 1, -- widget->allocation.x + (widget->allocation.width - -- widget->style->xthickness) / 2); -+ gboolean hildonlike_drawing = FALSE; - -- return FALSE; -+ -+ gtk_widget_style_get ( widget, "hildonlike-drawing", &hildonlike_drawing, NULL ); -+ -+ if (GTK_WIDGET_DRAWABLE (widget)) -+ { -+ if(hildonlike_drawing) -+ gtk_paint_box (widget->style, widget->window, GTK_STATE_NORMAL, -+ GTK_SHADOW_NONE, &event->area, widget, "vseparator", -+ widget->allocation.x + (widget->allocation.width - -+ widget->style->xthickness) / 2, -+ widget->allocation.y, -+ -+ widget->style->xthickness, -+ widget->allocation.height - 1); -+ else -+ gtk_paint_vline (widget->style, widget->window, GTK_STATE_NORMAL, -+ &event->area, widget, "vseparator", -+ widget->allocation.y, -+ widget->allocation.y + widget->allocation.height - 1, -+ widget->allocation.x + (widget->allocation.width - -+ widget->style->xthickness) / 2); -+ } -+ -+ -+ -+ -+ -+ return FALSE; - } diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.c.diff deleted file mode 100644 index ecef0041eb..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.c.diff +++ /dev/null @@ -1,1046 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkwidget.c 2005-02-24 18:44:02.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkwidget.c 2005-04-06 16:19:38.386702696 +0300 -@@ -28,6 +28,8 @@ - #include <stdarg.h> - #include <string.h> - #include <locale.h> -+#include <stdlib.h> -+#include <x11/gdkx.h> - #include "gtkalias.h" - #include "gtkcontainer.h" - #include "gtkaccelmap.h" -@@ -44,6 +46,11 @@ - #include "gtkwindow.h" - #include "gtkbindings.h" - #include "gtkprivate.h" -+#include "gtktreeview.h" -+#include "gtkentry.h" -+#include "gtktextview.h" -+#include "gtkimcontext.h" -+#include "gtkmenu.h" - #include "gdk/gdk.h" - #include "gdk/gdkprivate.h" /* Used in gtk_reset_shapes_recurse to avoid copy */ - #include <gobject/gvaluecollector.h> -@@ -53,11 +60,30 @@ - #include "gtkaccessible.h" - #include "gtktooltips.h" - #include "gtkinvisible.h" -+#include "gtkscrollbar.h" /* Following are needed for special focus changes */ -+#include "gtktoolbar.h" -+#include "gtkmenu.h" -+#include "gtkmenuitem.h" -+#include "gtktogglebutton.h" -+#include "gtkcomboboxentry.h" -+#include "gtktogglebutton.h" -+#include "gtkcomboboxentry.h" - - #define WIDGET_CLASS(w) GTK_WIDGET_GET_CLASS (w) - #define INIT_PATH_SIZE (512) - -+#define GTK_TAP_THRESHOLD 30 -+#define GTK_TAP_MENU_THRESHOLD 20 -+#define GTK_TAP_AND_HOLD_TIMER_COUNTER 11 -+#define GTK_TAP_AND_HOLD_TIMER_INTERVAL 100 - -+typedef struct _GtkWidgetPrivate GtkWidgetPrivate; -+ -+#define GTK_WIDGET_GET_PRIVATE(obj) ( G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ -+ GTK_TYPE_WIDGET, GtkWidgetPrivate) ) -+ -+#define TAP_AND_HOLD_ANIMATION 1 -+ - enum { - SHOW, - HIDE, -@@ -120,6 +146,9 @@ - ACCEL_CLOSURES_CHANGED, - SCREEN_CHANGED, - CAN_ACTIVATE_ACCEL, -+ INSENSITIVE_PRESS, -+ TAP_AND_HOLD, -+ TAP_AND_HOLD_SETUP, - LAST_SIGNAL - }; - -@@ -142,7 +171,8 @@ - PROP_STYLE, - PROP_EVENTS, - PROP_EXTENSION_EVENTS, -- PROP_NO_SHOW_ALL -+ PROP_NO_SHOW_ALL, -+ PROP_TAP_AND_HOLD - }; - - typedef struct _GtkStateData GtkStateData; -@@ -155,7 +185,50 @@ - guint use_forall : 1; - }; - -+struct _GtkWidgetPrivate -+{ -+ GtkWidget *menu; -+ guint timer_id; -+ -+ GtkStateType stype; -+ GtkStateType type_on_press; -+ GdkEvent *fake_event; -+ GtkMenuPositionFunc func; -+ gint x, y; -+ gint timer_counter; -+ gint run_press : 1; -+ gint button_pressed : 1; -+ gint signals_connected : 1; -+ GtkWidgetTapAndHoldFlags flags; -+ gboolean state_set; -+ guint interval; -+ -+#ifdef TAP_AND_HOLD_ANIMATION -+ GdkPixbufAnimation *anim; -+ GdkPixbufAnimationIter *iter; -+ guint width, height; -+#endif -+}; -+ - -+/* --- Tap And Hold --- */ -+static gboolean gtk_widget_tap_and_hold_button_press_with_events( GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv ); -+static gboolean gtk_widget_tap_and_hold_button_release_with_events( GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv ); -+static gboolean gtk_widget_tap_and_hold_leave_notify_with_events( GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv ); -+static gboolean gtk_widget_tap_and_hold_timeout_with_events( GtkWidget *widget ); -+static gboolean gtk_widget_tap_and_hold_timeout( GtkWidget *widget ); -+static gboolean gtk_widget_tap_and_hold_button_press( GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv ); -+static gboolean gtk_widget_tap_and_hold_button_release( GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv ); -+static gboolean gtk_widget_tap_and_hold_leave_notify( GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv ); -+static void gtk_widget_tap_and_hold_setup_real( GtkWidget *widget, -+ GtkWidget *menu, GtkCallback func, GtkWidgetTapAndHoldFlags flags ); -+static void gtk_widget_real_tap_and_hold(GtkWidget *widget); - /* --- prototypes --- */ - static void gtk_widget_class_init (GtkWidgetClass *klass); - static void gtk_widget_init (GtkWidget *widget); -@@ -228,6 +301,13 @@ - gint width, - gint height); - -+/*Hildon focus handling*/ -+static void gtk_widget_set_focus_handling( GtkWidget *widget, gboolean state ); -+ -+static gboolean gtk_widget_enter_notify_event( GtkWidget *widget, GdkEventCrossing *event ); -+static gboolean gtk_widget_leave_notify_event( GtkWidget *widget, GdkEventCrossing *event ); -+static gint gtk_widget_button_release_event( GtkWidget *widget, GdkEventButton *event ); -+static gint gtk_widget_button_press_event( GtkWidget *widget, GdkEventButton *event ); - - /* --- variables --- */ - static gpointer parent_class = NULL; -@@ -239,6 +319,9 @@ - static GtkTextDirection gtk_default_direction = GTK_TEXT_DIR_LTR; - static GParamSpecPool *style_property_spec_pool = NULL; - -+static gboolean on_same_widget = FALSE; /*Hildon focus handling*/ -+static gboolean mouse_pressed = FALSE; /*Hildon focus handling*/ -+ - static GQuark quark_property_parser = 0; - static GQuark quark_aux_info = 0; - static GQuark quark_accel_path = 0; -@@ -396,6 +479,9 @@ - klass->drag_data_received = NULL; - klass->screen_changed = NULL; - klass->can_activate_accel = gtk_widget_real_can_activate_accel; -+ klass->tap_and_hold_setup = gtk_widget_tap_and_hold_setup_real; -+ klass->insensitive_press = NULL; -+ klass->tap_and_hold = gtk_widget_real_tap_and_hold; - - klass->show_help = gtk_widget_real_show_help; - -@@ -404,6 +490,18 @@ - - klass->no_expose_event = NULL; - -+ g_type_class_add_private( klass, sizeof(GtkWidgetPrivate) ); -+ -+ g_object_class_install_property (gobject_class, -+ PROP_TAP_AND_HOLD, -+ g_param_spec_int ("tap_and_hold_state", -+ P_("Tap and hold State type"), -+ P_("Sets the state to be used to the tap and hold functionality. The default is GTK_STATE_NORMAL"), -+ 0, -+ 4, /*4 == Last state in GTK+-2.0*/ -+ GTK_STATE_NORMAL, -+ G_PARAM_READWRITE)); -+ - g_object_class_install_property (gobject_class, - PROP_NAME, - g_param_spec_string ("name", -@@ -1389,6 +1487,31 @@ - _gtk_marshal_BOOLEAN__UINT, - G_TYPE_BOOLEAN, 1, G_TYPE_UINT); - -+ widget_signals[INSENSITIVE_PRESS] = -+ g_signal_new ("insensitive_press", -+ G_TYPE_FROM_CLASS (gobject_class), -+ G_SIGNAL_RUN_FIRST, -+ G_STRUCT_OFFSET (GtkWidgetClass, insensitive_press), -+ NULL, NULL, -+ _gtk_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ widget_signals[TAP_AND_HOLD] = -+ g_signal_new("tap-and-hold", G_TYPE_FROM_CLASS(gobject_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET(GtkWidgetClass, tap_and_hold), -+ NULL, NULL, -+ _gtk_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ widget_signals[TAP_AND_HOLD_SETUP] = -+ g_signal_new("tap-and-hold-setup", G_TYPE_FROM_CLASS(gobject_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET(GtkWidgetClass, tap_and_hold_setup), -+ NULL, NULL, /*FIXME -- OBJECT_POINTER_FLAGS*/ -+ _gtk_marshal_VOID__OBJECT_UINT_FLAGS, -+ G_TYPE_NONE, 3, G_TYPE_OBJECT, G_TYPE_POINTER, G_TYPE_UINT); -+ - binding_set = gtk_binding_set_by_class (klass); - gtk_binding_entry_add_signal (binding_set, GDK_F10, GDK_SHIFT_MASK, - "popup_menu", 0); -@@ -1418,7 +1541,12 @@ - P_("Whether to draw the focus indicator inside widgets"), - TRUE, - G_PARAM_READABLE)); -- -+ gtk_widget_class_install_style_property (klass, -+ g_param_spec_boolean ("hildon-focus-handling", -+ P_("Hildon focus handling"), -+ P_("Whether the widget is using the hildon like focus handling or not"), -+ FALSE, -+ G_PARAM_READABLE)); - gtk_widget_class_install_style_property (klass, - g_param_spec_int ("focus-line-width", - P_("Focus linewidth"), -@@ -1543,6 +1671,8 @@ - case PROP_NO_SHOW_ALL: - gtk_widget_set_no_show_all (widget, g_value_get_boolean (value)); - break; -+ case PROP_TAP_AND_HOLD: -+ GTK_WIDGET_GET_PRIVATE(widget)->type_on_press = g_value_get_int(value); - default: - break; - } -@@ -1637,16 +1767,45 @@ - case PROP_NO_SHOW_ALL: - g_value_set_boolean (value, gtk_widget_get_no_show_all (widget)); - break; -+ case PROP_TAP_AND_HOLD: -+ g_value_set_int (value, -+ (int)GTK_WIDGET_GET_PRIVATE(widget)->type_on_press); - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - -+static void gtk_widget_set_focus_handling( GtkWidget *widget, gboolean state ) -+{ -+ GtkWidgetPrivate *priv; -+ priv = GTK_WIDGET_GET_PRIVATE (widget); -+ -+ if( state && GTK_WIDGET_CAN_FOCUS(widget) ) -+ { -+ if (!priv->state_set) -+ { -+ g_signal_connect( G_OBJECT(widget), "button-press-event", -+ G_CALLBACK(gtk_widget_button_press_event), NULL ); -+ g_signal_connect( G_OBJECT(widget), "button-release-event", -+ G_CALLBACK(gtk_widget_button_release_event), NULL ); -+ g_signal_connect( G_OBJECT(widget), "enter-notify-event", -+ G_CALLBACK(gtk_widget_enter_notify_event), NULL ); -+ g_signal_connect( G_OBJECT(widget), "leave-notify-event", -+ G_CALLBACK(gtk_widget_leave_notify_event), NULL ); -+ priv->state_set = TRUE; -+ } -+ } -+} -+ - static void - gtk_widget_init (GtkWidget *widget) - { -+ GtkWidgetPrivate *priv; - GTK_PRIVATE_FLAGS (widget) = PRIVATE_GTK_CHILD_VISIBLE; -+ -+ priv = GTK_WIDGET_GET_PRIVATE(widget); -+ - widget->state = GTK_STATE_NORMAL; - widget->saved_state = GTK_STATE_NORMAL; - widget->name = NULL; -@@ -1659,6 +1818,18 @@ - widget->window = NULL; - widget->parent = NULL; - -+ priv->fake_event = NULL; -+ priv->timer_id = 0; -+ priv->menu = NULL; -+ priv->run_press = TRUE; -+ priv->signals_connected = FALSE; -+ priv->x = priv->y = 0; -+ priv->func = NULL; -+ priv->timer_counter = 0; -+ priv->flags = 0x0; -+ priv->state_set = FALSE; -+ priv->interval = GTK_TAP_AND_HOLD_TIMER_INTERVAL; -+ - GTK_WIDGET_SET_FLAGS (widget, - GTK_SENSITIVE | - GTK_PARENT_SENSITIVE | -@@ -1670,6 +1841,7 @@ - GTK_PRIVATE_SET_FLAG (widget, GTK_ALLOC_NEEDED); - - widget->style = gtk_widget_get_default_style (); -+ - g_object_ref (widget->style); - } - -@@ -2153,6 +2325,7 @@ - - if ((GTK_WIDGET_FLAGS (widget) & GTK_NO_SHOW_ALL) != 0) - return; -+ - - class = GTK_WIDGET_GET_CLASS (widget); - -@@ -3400,6 +3573,127 @@ - return FALSE; - } - -+/** -+ * gtk_widget_button_press_event -+ * @widget: a #GtkWidget -+ * @event: a #GtkEventKey -+ * -+**/ -+static gboolean gtk_widget_button_press_event(GtkWidget *widget, GdkEventButton *event ) -+{ -+ if( !mouse_pressed /*&& !GTK_IS_TREE_VIEW(widget) && !GTK_IS_ENTRY(widget)*/ ) -+ { -+ GtkWidget *toplevel; -+ toplevel = gtk_widget_get_toplevel (widget); -+ if (GTK_IS_WINDOW (toplevel)) -+ { -+ mouse_pressed = TRUE; -+ -+ if( /*!gtk_window_get_prev_focus_widget(GTK_WINDOW(toplevel)) &&*/ -+ GTK_IS_WIDGET(GTK_WINDOW(toplevel)->focus_widget) ) -+ gtk_window_set_prev_focus_widget( GTK_WINDOW(toplevel), -+ GTK_WINDOW(toplevel)->focus_widget ); -+ } -+ } -+ return FALSE; -+} -+ -+/** -+ * gtk_widget_button_release_event -+ * @widget: a #GtkWidget -+ * @event: a #GtkEventKey -+ * -+**/ -+static gboolean gtk_widget_button_release_event(GtkWidget *widget, GdkEventButton *event ) -+{ -+ if( mouse_pressed /*&& !GTK_IS_ENTRY(widget)*/ ) -+ { -+ GtkWidget *toplevel; -+ GtkWidget *event_widget; -+ event_widget = gtk_get_event_widget( (GdkEvent*) event ); -+ toplevel = gtk_widget_get_toplevel (widget); -+ -+ mouse_pressed = FALSE; -+ on_same_widget = TRUE; -+ -+ if (GTK_IS_WINDOW (toplevel)) -+ { -+ if( !on_same_widget && GTK_IS_WIDGET(GTK_WINDOW(toplevel)->focus_widget) ) -+ gtk_window_set_prev_focus_widget( GTK_WINDOW(toplevel), GTK_WINDOW(toplevel)->focus_widget ); -+ else -+ gtk_window_set_prev_focus_widget( GTK_WINDOW(toplevel), event_widget ); -+ } -+ } -+ return FALSE; -+} -+ -+/** -+ * gtk_widget_enter_notify_event -+ * @widget: a #GtkWidget -+ * @event: a #GtkEventCrossing -+ * -+**/ -+static gboolean gtk_widget_enter_notify_event( GtkWidget *widget, GdkEventCrossing *event ) -+{ -+ GtkWidget *toplevel; -+ GtkWidget *event_widget; -+ /*if( GTK_IS_ENTRY(widget) ) -+ return FALSE;*/ -+ -+ toplevel = gtk_widget_get_toplevel (widget); -+ event_widget = gtk_get_event_widget ( (GdkEvent*) event ); -+ -+ if(mouse_pressed && !on_same_widget && gtk_window_get_prev_focus_widget( GTK_WINDOW(toplevel) ) == event_widget) -+ { -+/* GtkWidget *temp;*/ -+ on_same_widget = TRUE; -+ -+/* temp = gtk_window_get_prev_focus_widget( GTK_WINDOW(toplevel) );*/ -+ if( GTK_IS_WIDGET(GTK_WINDOW(toplevel)->focus_widget) ) -+ { -+ gtk_window_set_prev_focus_widget( GTK_WINDOW(toplevel), GTK_WINDOW(toplevel)->focus_widget ); -+ if( GTK_WIDGET_CAN_FOCUS(event_widget) ) -+ gtk_widget_grab_focus( event_widget ); -+ else -+ gtk_widget_activate( event_widget ); -+ } -+ } -+ return FALSE; -+} -+ -+ -+/** -+ * gtk_widget_leave_notify_event -+ * @widget: a #GtkWidget -+ * @event: a #GtkEventCrossing -+ * -+**/ -+static gboolean gtk_widget_leave_notify_event( GtkWidget *widget, GdkEventCrossing *event ) -+{ -+ if( mouse_pressed && on_same_widget /*&& !GTK_IS_ENTRY(widget)*/ ) -+ { -+ GtkWidget *event_widget; -+ GtkWidget *toplevel; -+ GtkWidget *temp; -+ toplevel = gtk_widget_get_toplevel( widget ); -+ event_widget = gtk_get_event_widget( (GdkEvent*) event ); -+ on_same_widget = FALSE; -+ -+ temp = gtk_window_get_prev_focus_widget( GTK_WINDOW(toplevel) ); -+ if( GTK_IS_WIDGET(temp) && -+ gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel)) ) -+ { -+ gtk_window_set_prev_focus_widget( GTK_WINDOW(toplevel), event_widget ); -+ if( GTK_WIDGET_CAN_FOCUS(temp) ) -+ gtk_widget_grab_focus( temp ); -+ else -+ gtk_widget_activate( temp ); -+ } -+ } -+ return FALSE; -+} -+ -+ - #define WIDGET_REALIZED_FOR_EVENT(widget, event) \ - (event->type == GDK_FOCUS_CHANGE || GTK_WIDGET_REALIZED(widget)) - -@@ -3947,11 +4241,14 @@ - static void - gtk_widget_real_grab_focus (GtkWidget *focus_widget) - { -- if (GTK_WIDGET_CAN_FOCUS (focus_widget)) -+ if (GTK_WIDGET_CAN_FOCUS (focus_widget) && -+ GTK_WIDGET_VISIBLE (focus_widget)) - { -+ static GtkIMContext *last_context = NULL; - GtkWidget *toplevel; - GtkWidget *widget; -- -+ GtkIMContext *context; -+ - /* clear the current focus setting, break if the current widget - * is the focus widget's parent, since containers above that will - * be set by the next loop. -@@ -3972,6 +4269,53 @@ - - return; - } -+ -+ /* Focus change stuff (previously in modified im context) */ -+ if (GTK_IS_ENTRY (widget)) -+ context = GTK_ENTRY (widget)->im_context; -+ else if (GTK_IS_TEXT_VIEW (widget)) -+ context = GTK_TEXT_VIEW (widget)->im_context; -+ else -+ context = NULL; -+ -+ if (context || last_context) -+ { -+ gboolean is_combo, is_inside_toolbar; -+ GtkWidget *parent; -+ -+ parent = gtk_widget_get_parent (focus_widget); -+ is_combo = GTK_IS_TOGGLE_BUTTON (focus_widget) && -+ (GTK_IS_COMBO_BOX_ENTRY (parent) || -+ GTK_IS_COMBO_BOX (parent)); -+ is_inside_toolbar = -+ gtk_widget_get_ancestor (focus_widget, -+ GTK_TYPE_TOOLBAR) != NULL; -+ -+ if (focus_widget == NULL || -+ !GTK_IS_ENTRY (focus_widget) && -+ !GTK_IS_TEXT_VIEW (focus_widget) && -+ !GTK_IS_SCROLLBAR (focus_widget) && -+ !GTK_IS_MENU_ITEM (focus_widget) && -+ !GTK_IS_MENU (focus_widget) && -+ !is_inside_toolbar && -+ !is_combo) -+ { -+ /* we can't hide IM without IM context. it's possible to move -+ * focus to widget which doesn't have IM context, but which -+ * doesn't want IM to be hidden either. So, we have this -+ * static last_context variable which is used... */ -+ gtk_im_context_hide (context != NULL -+ ? context : last_context); -+ } -+ -+ if (context) -+ { -+ if (last_context != NULL) -+ g_object_unref (last_context); -+ last_context = context; -+ g_object_ref (last_context); -+ } -+ } - - if (widget) - { -@@ -4462,9 +4806,13 @@ - { - g_return_if_fail (GTK_IS_WIDGET (widget)); - -- if (!GTK_WIDGET_USER_STYLE (widget) && -- !GTK_WIDGET_RC_STYLE (widget)) -+ if (!GTK_WIDGET_USER_STYLE (widget) && !GTK_WIDGET_RC_STYLE (widget)) -+ { -+ gboolean hfh = FALSE; - gtk_widget_reset_rc_style (widget); -+ gtk_widget_style_get( widget, "hildon-focus-handling", &hfh, NULL ); -+ gtk_widget_set_focus_handling( widget, hfh ); -+ } - } - - /* Look up the RC style for this widget, unsetting any user style that -@@ -6396,7 +6744,7 @@ - - if (!GTK_WIDGET_DIRECTION_SET (widget)) - gtk_widget_emit_direction_changed (widget, old_dir); -- -+ - if (GTK_IS_CONTAINER (widget)) - gtk_container_forall (GTK_CONTAINER (widget), - gtk_widget_set_default_direction_recurse, -@@ -6405,6 +6753,13 @@ - g_object_unref (widget); - } - -+/* Non static */ -+void gtk_widget_set_direction_recursive(GtkWidget * widget, GtkTextDirection dir ) -+{ -+ gtk_widget_set_default_direction_recurse( widget, GUINT_TO_POINTER(dir) ); -+} -+ -+ - /** - * gtk_widget_set_default_direction: - * @dir: the new default direction. This cannot be -@@ -6422,7 +6777,7 @@ - { - GList *toplevels, *tmp_list; - GtkTextDirection old_dir = gtk_default_direction; -- -+ - gtk_default_direction = dir; - - tmp_list = toplevels = gtk_window_list_toplevels (); -@@ -6497,6 +6852,7 @@ - gtk_widget_finalize (GObject *object) - { - GtkWidget *widget = GTK_WIDGET (object); -+ GtkWidgetPrivate *priv = GTK_WIDGET_GET_PRIVATE(object); - GtkWidgetAuxInfo *aux_info; - gint *events; - GdkExtensionMode *mode; -@@ -6507,6 +6863,12 @@ - g_object_unref (widget->style); - widget->style = NULL; - -+ if (priv->timer_id) -+ { -+ g_source_remove (priv->timer_id); -+ priv->timer_id = 0; -+ } -+ - if (widget->name) - g_free (widget->name); - -@@ -6526,6 +6888,12 @@ - if (accessible) - g_object_unref (accessible); - -+ if (GTK_IS_MENU(priv->menu)) -+ gtk_widget_destroy (priv->menu); -+ -+ if (priv->fake_event) -+ gdk_event_free (priv->fake_event); -+ - G_OBJECT_CLASS (parent_class)->finalize (object); - } - -@@ -7577,3 +7945,450 @@ - - g_object_notify (G_OBJECT (widget), "no_show_all"); - } -+ -+void gtk_widget_insensitive_press ( GtkWidget *widget ) -+{ -+ g_return_if_fail (GTK_IS_WIDGET (widget)); -+ -+ g_signal_emit(widget, widget_signals[INSENSITIVE_PRESS], 0); -+} -+ -+/*Tap And Hold*/ -+ -+#ifdef TAP_AND_HOLD_ANIMATION -+static void -+init_tap_and_hold_animation( GtkWidgetPrivate *priv ) -+{ -+ GTimeVal time; -+ if( priv->anim ) -+ { -+ g_get_current_time( &time ); -+ priv->iter = gdk_pixbuf_animation_get_iter( priv->anim, &time ); -+ priv->interval = gdk_pixbuf_animation_iter_get_delay_time( priv->iter ); -+ } -+} -+ -+static void -+timeout_tap_and_hold_animation( GtkWidgetPrivate *priv ) -+{ -+ GdkScreen *screen; -+ GdkPixbuf *pic; -+ GdkCursor *cursor; -+ GTimeVal time; -+ -+ if( priv->anim ) -+ { -+ screen = gdk_screen_get_default(); -+ g_get_current_time( &time ); -+ -+ pic = gdk_pixbuf_animation_iter_get_pixbuf( priv->iter ); -+ cursor = gdk_cursor_new_from_pixbuf( gdk_display_get_default(), pic, -+ priv->width, priv->height ); -+ -+ gdk_window_set_cursor( priv->fake_event->button.window, cursor ); -+ -+ gdk_pixbuf_animation_iter_advance( priv->iter, &time ); -+ } -+} -+ -+static void -+stop_tap_and_hold_animation( GtkWidgetPrivate *priv ) -+{ -+ if( priv->anim ) -+ { -+ gdk_window_set_cursor( priv->fake_event->button.window, NULL ); -+ } -+} -+ -+ -+#endif -+ -+void tap_and_hold_remove_timer( GtkWidgetPrivate *priv ) -+{ -+ if (priv->timer_id) -+ { -+ g_source_remove (priv->timer_id); -+ priv->timer_id = 0; -+ #ifdef TAP_AND_HOLD_ANIMATION -+ stop_tap_and_hold_animation( priv ); -+ #endif -+ } -+} -+ -+/** -+ * gtk_widget_tap_and_hold_setup: -+ * -+ * @widget : A @GtkWidget -+ * @menu : A @GtkWidget -+ * @func : A @GtkCallback -+ * @flags : A @GtkWidgetTapAndHoldFlags -+ * -+ * Setups the tap and hold functionality to the @widget. -+ * The @menu is shown when the functionality is activated. -+ * If the @menu is wanted to be positioned in a different way than the -+ * gtk+ default, the menuposition @func can be passed as a third parameter. -+ * Fourth parameter, @flags are explaned with detail in the documentation. -+ */ -+void gtk_widget_tap_and_hold_setup (GtkWidget *widget, GtkWidget *menu, -+ GtkCallback func, GtkWidgetTapAndHoldFlags flags) -+{ -+ /*GtkWidgetClass *klass = GTK_WIDGET_GET_CLASS(widget);*/ -+ g_return_if_fail( GTK_IS_WIDGET(widget)); -+ g_return_if_fail(menu == NULL || GTK_IS_MENU(menu)); -+ g_signal_emit( widget, widget_signals[TAP_AND_HOLD_SETUP], 0, menu, func, -+ flags ); -+} -+ -+static void gtk_widget_tap_and_hold_setup_real (GtkWidget *widget, -+ GtkWidget *menu, GtkCallback func, GtkWidgetTapAndHoldFlags flags) -+{ -+ #ifdef TAP_AND_HOLD_ANIMATION -+ GtkStyle *style = NULL; -+ GError *error = NULL; -+ #endif -+ GtkWidgetPrivate *priv; -+ g_return_if_fail (GTK_IS_WIDGET(widget)); -+ g_return_if_fail (menu == NULL || GTK_IS_MENU(menu)); -+ priv = GTK_WIDGET_GET_PRIVATE (widget); -+ -+ if (priv->signals_connected) -+ return; -+ -+ _gtk_menu_enable_context_menu_behavior (menu); -+ -+ priv->menu = menu; -+ priv->func = (GtkMenuPositionFunc)func; -+ priv->signals_connected = TRUE; -+ priv->timer_counter = 0; -+ priv->flags = flags; -+ -+ if (flags & GTK_TAP_AND_HOLD_PASS_PRESS) -+ { -+ g_signal_connect( widget, "button-press-event", -+ G_CALLBACK(gtk_widget_tap_and_hold_button_press_with_events), priv ); -+ g_signal_connect( widget, "button-release-event", -+ G_CALLBACK(gtk_widget_tap_and_hold_button_release_with_events), priv ); -+ g_signal_connect( widget, "leave-notify-event", -+ G_CALLBACK(gtk_widget_tap_and_hold_leave_notify_with_events), priv ); -+ } -+ else -+ { -+ g_signal_connect( widget, "button-press-event", -+ G_CALLBACK(gtk_widget_tap_and_hold_button_press), priv ); -+ g_signal_connect( widget, "button-release-event", -+ G_CALLBACK(gtk_widget_tap_and_hold_button_release), priv ); -+ g_signal_connect( widget, "leave-notify-event", -+ G_CALLBACK(gtk_widget_tap_and_hold_leave_notify), priv ); -+ } -+ -+#ifdef TAP_AND_HOLD_ANIMATION -+ priv->anim = NULL; -+ style = gtk_rc_get_style_by_paths(gtk_settings_get_default(), -+ "gtk-tap-and-hold-animation", -+ NULL, G_TYPE_NONE); -+ -+ if( style ) -+ { -+ -+ priv->anim = gdk_pixbuf_animation_new_from_file( -+ (gchar*)style->rc_style->bg_pixmap_name[0], &error ); -+ -+ priv->width = gdk_pixbuf_animation_get_width( priv->anim )/2; -+ priv->height = gdk_pixbuf_animation_get_height( priv->anim )/2; -+ } -+#endif -+} -+ -+static void gtk_widget_real_tap_and_hold(GtkWidget *widget) -+{ -+ GtkWidgetPrivate *priv = GTK_WIDGET_GET_PRIVATE (widget); -+ -+ if (GTK_IS_MENU(priv->menu)) -+ gtk_menu_popup( GTK_MENU(priv->menu), NULL, NULL, -+ (GtkMenuPositionFunc)priv->func, -+ widget, 1, gdk_x11_get_server_time(widget->window) ); -+} -+ -+static gboolean gtk_widget_tap_and_hold_timeout (GtkWidget *widget) -+{ -+ GtkWidgetPrivate *priv= GTK_WIDGET_GET_PRIVATE(widget); -+ gboolean return_value; -+ gint x = 0, y = 0; -+ -+ #ifdef TAP_AND_HOLD_ANIMATION -+ timeout_tap_and_hold_animation( priv ); -+ #endif -+ -+ if( priv->timer_counter ) -+ priv->timer_counter--; -+ else -+ priv->timer_id = 0; -+ -+ gdk_display_get_pointer( gdk_x11_lookup_xdisplay( -+ GDK_WINDOW_XDISPLAY(priv->fake_event->button.window) ), -+ NULL, &x, &y, NULL ); -+ -+ if ((abs(x - priv->x) > GTK_TAP_THRESHOLD) || -+ (abs(y - priv->y) > GTK_TAP_THRESHOLD)) -+ { -+ if (priv->stype != priv->type_on_press) -+ gtk_widget_set_state( widget, priv->stype ); -+ priv->timer_counter = 0; -+ priv->timer_id = 0; -+ priv->x = priv->y = 0; -+ priv->run_press = FALSE; -+ g_signal_emit_by_name (G_OBJECT(widget), "button-press-event", -+ priv->fake_event, &return_value); -+ return FALSE; -+ } -+ if (!priv->timer_id) -+ { -+ if (priv->stype != priv->type_on_press) -+ gtk_widget_set_state( widget, priv->stype ); -+ #ifdef TAP_AND_HOLD_ANIMATION -+ stop_tap_and_hold_animation( priv ); -+ #endif -+ g_signal_emit(widget, widget_signals[TAP_AND_HOLD], 0); -+ priv->x = x; -+ priv->y = y; -+ return FALSE; -+ } -+ return TRUE; -+} -+ -+static gboolean gtk_widget_tap_and_hold_button_press (GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv) -+{ -+ if (!priv->run_press || event->button.button != 1) -+ { -+ priv->run_press = TRUE; -+ return FALSE; -+ } -+ -+ if (event->button.type == GDK_2BUTTON_PRESS) -+ return FALSE; -+ -+ if (priv->fake_event) -+ gdk_event_free (priv->fake_event); -+ priv->fake_event = gdk_event_copy(event); -+ -+ if (!priv->timer_id) -+ { -+ priv->stype = GTK_WIDGET_STATE(widget); -+ if (priv->stype != priv->type_on_press) -+ gtk_widget_set_state( widget, priv->type_on_press ); -+ gdk_display_get_pointer( -+ gdk_x11_lookup_xdisplay( GDK_WINDOW_XDISPLAY(event->button.window) ), -+ NULL, &priv->x, &priv->y, NULL ); -+ priv->timer_counter = GTK_TAP_AND_HOLD_TIMER_COUNTER; -+ -+ #ifdef TAP_AND_HOLD_ANIMATION -+ init_tap_and_hold_animation( priv ); -+ #endif -+ priv->timer_id = g_timeout_add( priv->interval, -+ (GSourceFunc)gtk_widget_tap_and_hold_timeout, widget ); -+ } -+return TRUE; -+} -+ -+static gboolean gtk_widget_tap_and_hold_button_release (GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv) -+{ -+ gboolean return_value; -+ -+ if (!priv->run_press || event->button.button != 1 || !priv->timer_id || -+ event->button.type == GDK_2BUTTON_PRESS) -+ return FALSE; -+ -+ g_source_remove (priv->timer_id); -+ priv->timer_id = 0; -+ priv->x = priv->y = priv->timer_counter = 0; -+ if (priv->stype != priv->type_on_press) -+ gtk_widget_set_state (widget, priv->stype); -+ -+ #ifdef TAP_AND_HOLD_ANIMATION -+ stop_tap_and_hold_animation( priv ); -+ #endif -+ -+ if (priv->flags & GTK_TAP_AND_HOLD_NO_SIGNALS) -+ return FALSE; -+ -+ priv->run_press = FALSE; -+ -+ g_signal_emit_by_name (G_OBJECT(widget), "button-press-event", -+ priv->fake_event, &return_value); -+ -+return FALSE; -+} -+ -+static gboolean gtk_widget_tap_and_hold_leave_notify (GtkWidget *widget, -+ GdkEvent *event, GtkWidgetPrivate *priv) -+{ -+ gboolean return_value; -+ if (!priv->timer_id) -+ return FALSE; -+ -+ g_source_remove (priv->timer_id); -+ priv->timer_id = 0; -+ priv->x = priv->y = priv->timer_counter = 0; -+ if (priv->stype != priv->type_on_press) -+ gtk_widget_set_state (widget, priv->stype); -+ -+ #ifdef TAP_AND_HOLD_ANIMATION -+ stop_tap_and_hold_animation( priv ); -+ #endif -+ priv->run_press = FALSE; -+ g_signal_emit_by_name (G_OBJECT(widget), "button-press-event", -+ priv->fake_event, &return_value); -+ -+return FALSE; -+} -+ -+static gboolean -+gtk_widget_tap_and_hold_timeout_with_events (GtkWidget *widget) -+{ -+ gint x, y; -+ GtkWidgetPrivate *priv= GTK_WIDGET_GET_PRIVATE(widget); -+ -+ g_return_val_if_fail (priv->fake_event, FALSE); -+ -+ #ifdef TAP_AND_HOLD_ANIMATION -+ timeout_tap_and_hold_animation( priv ); -+ #endif -+ -+ gdk_display_get_pointer( gdk_x11_lookup_xdisplay( -+ GDK_WINDOW_XDISPLAY(priv->fake_event->button.window) ), -+ NULL, &x, &y, NULL ); -+ -+ if( priv->timer_counter ) -+ { -+ priv->timer_counter--; -+ if ((abs(x - priv->x) > GTK_TAP_THRESHOLD) || -+ (abs(y - priv->y) > GTK_TAP_THRESHOLD)) -+ { -+ #ifdef TAP_AND_HOLD_ANIMATION -+ stop_tap_and_hold_animation( priv ); -+ #endif -+ tap_and_hold_remove_timer( priv ); -+ } -+ return TRUE; -+ } -+ -+ if (!((abs(x - priv->x) > GTK_TAP_THRESHOLD) || -+ (abs(y - priv->y) > GTK_TAP_THRESHOLD))) -+ { -+ gboolean return_value; -+ priv->fake_event->button.type = GDK_BUTTON_RELEASE; -+ priv->fake_event->button.x = x; -+ priv->fake_event->button.y = y; -+ g_signal_emit_by_name (G_OBJECT(widget), "button-release-event", -+ priv->fake_event, &return_value); -+ #ifdef TAP_AND_HOLD_ANIMATION -+ stop_tap_and_hold_animation( priv ); -+ #endif -+ g_signal_emit(widget, widget_signals[TAP_AND_HOLD], 0); -+ priv->timer_id = 0; -+ priv->x = x; -+ priv->y = y; -+ gdk_event_free(priv->fake_event); -+ priv->fake_event = NULL; -+ } -+ -+ -+ if (priv->timer_id) -+ { -+ g_source_remove (priv->timer_id); -+ priv->timer_id = 0; -+ } -+ -+ return FALSE; -+} -+ -+static gboolean gtk_widget_tap_and_hold_button_press_with_events( -+ GtkWidget *widget, GdkEvent *event, GtkWidgetPrivate *priv) -+{ -+ if( priv->timer_id || event->button.type == GDK_2BUTTON_PRESS) -+ return FALSE; -+ -+ if (priv->fake_event) -+ gdk_event_free (priv->fake_event); -+ priv->fake_event = gdk_event_copy (event); -+ -+ gdk_display_get_pointer( -+ gdk_x11_lookup_xdisplay(GDK_WINDOW_XDISPLAY(event->button.window)), -+ NULL, &priv->x, &priv->y, NULL); -+ #ifdef TAP_AND_HOLD_ANIMATION -+ init_tap_and_hold_animation( priv ); -+ #endif -+ priv->timer_counter = GTK_TAP_AND_HOLD_TIMER_COUNTER; -+ priv->timer_id = g_timeout_add(priv->interval, -+ (GSourceFunc)gtk_widget_tap_and_hold_timeout_with_events, -+ widget); -+ return FALSE; -+} -+ -+static gboolean gtk_widget_tap_and_hold_button_release_with_events( -+ GtkWidget *widget, GdkEvent *event, GtkWidgetPrivate *priv) -+{ -+ tap_and_hold_remove_timer( priv ); -+ return FALSE; -+} -+ -+static gboolean gtk_widget_tap_and_hold_leave_notify_with_events( -+ GtkWidget *widget, GdkEvent *event, GtkWidgetPrivate *priv) -+{ -+ tap_and_hold_remove_timer( priv ); -+ return FALSE; -+} -+ -+/** -+ * gtk_widget_tap_and_hold_menu_position_top: -+ * @menu: a #GtkMenu -+ * @x: x cordinate to be returned -+ * @y: y cordinate to be returned -+ * @push_in: If going off screen, push it pack on the screen -+ * @widget: a #GtkWidget -+ * -+ * Pre-made menu positioning function. -+ * It positiones the @menu over the @widget. -+ * -+ **/ -+void gtk_widget_tap_and_hold_menu_position_top( GtkWidget *menu, -+ gint *x, gint *y, gboolean *push_in, GtkWidget *widget ) -+{ -+ /* -+ * This function positiones the menu above widgets. -+ * This is a modified version of the position function -+ * gtk_combo_box_position_over. -+ */ -+ GtkWidget *topw; -+ GtkRequisition requisition; -+ gint screen_width = 0; -+ gint menu_xpos = 0; -+ gint menu_ypos = 0; -+ gint w_xpos = 0, w_ypos = 0; -+ -+ gtk_widget_size_request( menu, &requisition ); -+ -+ topw = gtk_widget_get_toplevel(widget); -+ gdk_window_get_origin( topw->window, &w_xpos, &w_ypos ); -+ -+ menu_xpos += widget->allocation.x + w_xpos; -+ menu_ypos += widget->allocation.y + w_ypos - requisition.height; -+ -+ if( gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL ) -+ menu_xpos = menu_xpos + widget->allocation.width - requisition.width; -+ -+ screen_width = gdk_screen_get_width( gtk_widget_get_screen(widget) ); -+ -+ if( menu_xpos < w_xpos ) -+ menu_xpos = w_xpos; -+ else if( (menu_xpos + requisition.width) > screen_width ) -+ menu_xpos -= ( (menu_xpos + requisition.width) - screen_width ); -+ if( menu_ypos < w_ypos ) -+ menu_ypos = w_ypos; -+ -+ *x = menu_xpos; -+ *y = menu_ypos; -+ *push_in = TRUE; -+} diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.h.diff deleted file mode 100644 index 7350082d3c..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwidget.h.diff +++ /dev/null @@ -1,59 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkwidget.h 2004-11-28 09:02:27.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkwidget.h 2005-04-06 16:19:38.400700568 +0300 -@@ -22,6 +22,9 @@ - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. -+ -+ * Changes made to create Hildon focus handling and the tap and hold functionality -+ * - */ - - #ifndef __GTK_WIDGET_H__ -@@ -87,6 +90,15 @@ - GTK_WIDGET_HELP_WHATS_THIS - } GtkWidgetHelpType; - -+/*Tap And Hold type flags*/ -+typedef enum -+{ -+ GTK_TAP_AND_HOLD_NONE = 0, -+ GTK_TAP_AND_HOLD_PASS_PRESS = 1 << 0, -+ GTK_TAP_AND_HOLD_NO_SIGNALS = 1 << 1, -+ GTK_TAP_AND_HOLD_NO_INTERNALS = 1 << 2 -+} GtkWidgetTapAndHoldFlags; -+ - /* Macro for casting a pointer to a GtkWidget or GtkWidgetClass pointer. - * Macros for testing whether `widget' or `klass' are of type GTK_TYPE_WIDGET. - */ -@@ -410,9 +422,10 @@ - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); - void (*_gtk_reserved4) (void); -- void (*_gtk_reserved5) (void); -- void (*_gtk_reserved6) (void); -- void (*_gtk_reserved7) (void); -+ void (*tap_and_hold) (GtkWidget *widget); /* Tap and hold action */ -+ void (*tap_and_hold_setup) (GtkWidget *widget, GtkWidget *menu, -+ GtkCallback func, GtkWidgetTapAndHoldFlags flags); -+ void (*insensitive_press) (GtkWidget *widget); - }; - - struct _GtkWidgetAuxInfo -@@ -787,6 +800,16 @@ - - GdkColormap* _gtk_widget_peek_colormap (void); - -+/*Hildon functions for focus handling*/ -+void gtk_widget_set_hildon_focus_handling( GtkWidget *widget, gboolean hildon_like ); -+gboolean gtk_widget_get_hildon_focus_handling( GtkWidget *widget ); -+ -+/*Tap And Hold functions*/ -+void gtk_widget_tap_and_hold_menu_position_top (GtkWidget *menu, -+ gint *x, gint *y, gboolean *push_in, GtkWidget *widget); -+void gtk_widget_tap_and_hold_setup (GtkWidget *widget, GtkWidget *menu, -+ GtkCallback func, GtkWidgetTapAndHoldFlags flags); -+ - #ifdef __cplusplus - } - #endif /* __cplusplus */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff deleted file mode 100644 index a67feac810..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff +++ /dev/null @@ -1,78 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkwindow.c 2005-02-21 06:21:49.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkwindow.c 2005-04-06 16:19:38.407699504 +0300 -@@ -166,6 +166,7 @@ - guint skips_taskbar : 1; - guint skips_pager : 1; - guint accept_focus : 1; -+ GtkWidget *prev_focus_widget; - guint focus_on_map : 1; - }; - -@@ -293,6 +294,9 @@ - GValue *value, - GParamSpec *pspec); - -+static void gtk_window_focus_weak_notify (GtkWindow *window, -+ GtkWidget *widget); -+static void gtk_window_weak_notify(GtkWidget *widget, GtkWindow *window); - - GType - gtk_window_get_type (void) -@@ -771,6 +775,7 @@ - window->decorated = TRUE; - window->mnemonic_modifier = GDK_MOD1_MASK; - window->screen = gdk_screen_get_default (); -+ priv->prev_focus_widget = NULL; - - priv->accept_focus = TRUE; - priv->focus_on_map = TRUE; -@@ -7505,3 +7510,49 @@ - } - - #endif -+ -+/*Hildon focus handling*/ -+GtkWidget *gtk_window_get_prev_focus_widget( GtkWindow *window ) -+{ -+ g_return_val_if_fail( GTK_IS_WINDOW(window), NULL ); -+ return GTK_WINDOW_GET_PRIVATE(window)->prev_focus_widget; -+} -+ -+static void gtk_window_weak_notify(GtkWidget *widget, GtkWindow *window) -+{ -+ GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window); -+ if (priv->prev_focus_widget == widget) -+ g_object_weak_unref(G_OBJECT(widget), -+ (GWeakNotify)gtk_window_focus_weak_notify, -+ (gpointer)window); -+} -+ -+void gtk_window_set_prev_focus_widget( GtkWindow *window, GtkWidget *widget ) -+{ -+ GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window); -+ g_return_if_fail(GTK_IS_WINDOW(window)); -+ g_return_if_fail(GTK_IS_WIDGET(widget)); -+ -+ if (priv->prev_focus_widget) -+ { -+ g_object_weak_unref(G_OBJECT(window), (GWeakNotify)gtk_window_weak_notify, -+ (gpointer)priv->prev_focus_widget); -+ g_object_weak_unref(G_OBJECT(priv->prev_focus_widget), -+ (GWeakNotify)gtk_window_focus_weak_notify, -+ (gpointer)window); -+ } -+ -+ priv->prev_focus_widget = widget; -+ -+ g_object_weak_ref(G_OBJECT(window), (GWeakNotify)gtk_window_weak_notify, -+ (gpointer)widget); -+ g_object_weak_ref(G_OBJECT(widget), (GWeakNotify)gtk_window_focus_weak_notify, -+ (gpointer)window); -+} -+ -+static void gtk_window_focus_weak_notify(GtkWindow *window, GtkWidget *widget) -+{ -+ GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window); -+ priv->prev_focus_widget = window->focus_widget; -+} -+ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.h.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.h.diff deleted file mode 100644 index 99fb70b1e7..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.h.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- gtk+-2.6.4/gtk/gtkwindow.h 2004-12-12 23:09:13.000000000 +0200 -+++ gtk+-2.6.4/gtk/gtkwindow.h 2005-04-06 16:19:38.408699352 +0300 -@@ -413,6 +413,10 @@ - guint accel_key, - GdkModifierType accel_mods); - -+GtkWidget *gtk_window_get_prev_focus_widget( GtkWindow *window ); -+void gtk_window_set_prev_focus_widget( GtkWindow *window, GtkWidget *widget ); -+ -+ - #ifdef __cplusplus - } - #endif /* __cplusplus */ diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/hardcoded_libtool.patch deleted file mode 100644 index b2afddcc61..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/hardcoded_libtool.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000 -+++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000 -@@ -360,7 +360,7 @@ - AC_MSG_CHECKING([Whether to write dependencies into .pc files]) - case $enable_explicit_deps in - auto) -- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh` -+ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh` - if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then - enable_explicit_deps=yes - else -@@ -688,7 +688,7 @@ - dnl Now we check to see if our libtool supports shared lib deps - dnl (in a rather ugly way even) - if $dynworks; then -- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" -+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config" - pixbuf_deplibs_check=`$pixbuf_libtool_config | \ - grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ - sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` -@@ -1512,7 +1512,7 @@ - # - # We are using gmodule-no-export now, but I'm leaving the stripping - # code in place for now, since pango and atk still require gmodule. --export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` -+export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` - if test -n "$export_dynamic"; then - GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"` - GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"` diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/io-gif-animation.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/io-gif-animation.c.diff deleted file mode 100644 index d030ae30b8..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/io-gif-animation.c.diff +++ /dev/null @@ -1,108 +0,0 @@ ---- gtk+-2.6.4/gdk-pixbuf/io-gif-animation.c 2003-06-27 05:38:43.000000000 +0300 -+++ gtk+-2.6.4/gdk-pixbuf/io-gif-animation.c 2005-04-06 16:19:35.595127080 +0300 -@@ -391,6 +391,11 @@ - - while (tmp != NULL) { - GdkPixbufFrame *f = tmp->data; -+ -+ if (f->pixbuf == NULL) { -+ return; -+ } -+ - gint clipped_width = MIN (gif_anim->width - f->x_offset, gdk_pixbuf_get_width (f->pixbuf)); - gint clipped_height = MIN (gif_anim->height - f->y_offset, gdk_pixbuf_get_height (f->pixbuf)); - -@@ -414,6 +419,10 @@ - TRUE, - 8, gif_anim->width, gif_anim->height); - -+ if (f->composited == NULL) { -+ return; -+ } -+ - /* alpha gets dumped if f->composited has no alpha */ - - gdk_pixbuf_fill (f->composited, -@@ -453,9 +462,18 @@ - - if (prev_frame->action == GDK_PIXBUF_FRAME_RETAIN) { - f->composited = gdk_pixbuf_copy (prev_frame->composited); -+ -+ if (f->composited == NULL) { -+ return; -+ } - - } else if (prev_frame->action == GDK_PIXBUF_FRAME_DISPOSE) { - f->composited = gdk_pixbuf_copy (prev_frame->composited); -+ -+ if (f->composited == NULL) { -+ return; -+ } -+ - if (prev_clipped_width > 0 && prev_clipped_height > 0) { - /* Clear area of previous frame to background */ - GdkPixbuf *area; -@@ -465,6 +483,10 @@ - prev_frame->y_offset, - prev_clipped_width, - prev_clipped_height); -+ -+ if (area == NULL) { -+ return; -+ } - - gdk_pixbuf_fill (area, - (gif_anim->bg_red << 24) | -@@ -475,7 +497,13 @@ - } - } else if (prev_frame->action == GDK_PIXBUF_FRAME_REVERT) { - f->composited = gdk_pixbuf_copy (prev_frame->composited); -- if (prev_clipped_width > 0 && prev_clipped_height > 0) { -+ -+ if (f->composited == NULL) { -+ return; -+ } -+ -+ if (prev_frame->revert != NULL && -+ prev_clipped_width > 0 && prev_clipped_height > 0) { - /* Copy in the revert frame */ - gdk_pixbuf_copy_area (prev_frame->revert, - 0, 0, -@@ -500,14 +528,23 @@ - f->y_offset, - clipped_width, - clipped_height); -- -+ -+ if (area == NULL) { -+ return; -+ } -+ - f->revert = gdk_pixbuf_copy (area); -- -+ - g_object_unref (area); -+ -+ if (f->revert == NULL) { -+ return; -+ } - } - } - -- if (clipped_width > 0 && clipped_height > 0) { -+ if (clipped_width > 0 && clipped_height > 0 && -+ f->pixbuf != NULL && f->composited != NULL) { - /* Put current frame onto f->composited */ - gdk_pixbuf_composite (f->pixbuf, - f->composited, -@@ -531,10 +568,6 @@ - tmp = tmp->next; - } - } -- -- g_assert (frame->composited != NULL); -- g_assert (gdk_pixbuf_get_width (frame->composited) == gif_anim->width); -- g_assert (gdk_pixbuf_get_height (frame->composited) == gif_anim->height); - } - - GdkPixbuf* diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/io-gif.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/io-gif.c.diff deleted file mode 100644 index a42d0e4ac2..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/io-gif.c.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- gtk+-2.6.4/gdk-pixbuf/io-gif.c 2004-11-12 07:34:31.000000000 +0200 -+++ gtk+-2.6.4/gdk-pixbuf/io-gif.c 2005-04-06 16:19:35.597126776 +0300 -@@ -920,6 +920,34 @@ - - gdk_pixbuf_gif_anim_frame_composite (context->animation, prev_frame); - -+ /* Composite failed */ -+ if (prev_frame->composited == NULL) { -+ GdkPixbufFrame *frame = NULL; -+ link = g_list_first (context->animation->frames); -+ while (link != NULL) { -+ frame = (GdkPixbufFrame *)link->data; -+ if (frame != NULL) { -+ if (frame->pixbuf != NULL) -+ g_object_unref (frame->pixbuf); -+ if (frame->composited != NULL) -+ g_object_unref (frame->composited); -+ if (frame->revert != NULL) -+ g_object_unref (frame->revert); -+ g_free (frame); -+ } -+ link = link->next; -+ } -+ -+ g_list_free (context->animation->frames); -+ context->animation->frames = NULL; -+ -+ g_set_error (context->error, -+ GDK_PIXBUF_ERROR, -+ GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, -+ _("Not enough memory to composite a frame in GIF file")); -+ return -2; -+ } -+ - x = context->frame->x_offset; - y = context->frame->y_offset; - w = gdk_pixbuf_get_width (context->frame->pixbuf); diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/menu-deactivate.patch deleted file mode 100644 index 29e665fbf3..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/menu-deactivate.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004 -+++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004 -@@ -37,7 +37,7 @@ - #include "gtktearoffmenuitem.h" - #include "gtkwindow.h" - --#define MENU_SHELL_TIMEOUT 500 -+#define MENU_SHELL_TIMEOUT 2000 - - enum { - DEACTIVATE, -@@ -156,6 +156,7 @@ - static GtkContainerClass *parent_class = NULL; - static guint menu_shell_signals[LAST_SIGNAL] = { 0 }; - -+static int last_crossing_time; - - GType - gtk_menu_shell_get_type (void) -@@ -418,6 +419,7 @@ - gtk_grab_add (GTK_WIDGET (menu_shell)); - menu_shell->have_grab = TRUE; - menu_shell->active = TRUE; -+ last_crossing_time = 0; - } - } - -@@ -545,6 +547,13 @@ - menu_shell->activate_time = 0; - deactivate = FALSE; - } -+ -+ if (last_crossing_time != 0 -+ && ((event->time - last_crossing_time) < 500)) -+ { -+ last_crossing_time = 0; -+ deactivate = FALSE; -+ } - - if (deactivate) - { -@@ -597,6 +606,8 @@ - if (menu_shell->active) - { - menu_item = gtk_get_event_widget ((GdkEvent*) event); -+ -+ last_crossing_time = event->time; - - if (!menu_item || - (GTK_IS_MENU_ITEM (menu_item) && diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/no-demos.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/no-demos.patch deleted file mode 100644 index 2f10a30dda..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/no-demos.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000 -+++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100 -@@ -1,6 +1,6 @@ - ## Makefile.am for GTK+ - --SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib -+SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib - SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros - - # require automake 1.4 diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/no-xwc.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/no-xwc.patch deleted file mode 100644 index affb4a303e..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/no-xwc.patch +++ /dev/null @@ -1,151 +0,0 @@ -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00 -+++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00 -@@ -576,12 +576,14 @@ - GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2); - } - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font); - XmbDrawString (xdisplay, impl->xid, - fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length); - } -+#endif - else - g_error("undefined font type\n"); - } -@@ -613,6 +615,7 @@ - GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length); - g_free (text_8bit); - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - if (sizeof(GdkWChar) == sizeof(wchar_t)) -@@ -633,6 +636,7 @@ - g_free (text_wchar); - } - } -+#endif - else - g_error("undefined font type\n"); - } -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00 -+++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00 -@@ -525,10 +525,12 @@ - width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2); - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - width = XmbTextEscapement (fontset, text, text_length); - break; -+#endif - default: - width = 0; - } -@@ -578,6 +580,7 @@ - width = 0; - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - if (sizeof(GdkWChar) == sizeof(wchar_t)) - { -@@ -595,6 +598,7 @@ - g_free (text_wchar); - } - break; -+#endif - default: - width = 0; - } -@@ -667,6 +671,7 @@ - if (descent) - *descent = overall.descent; - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - XmbTextExtents (fontset, text, text_length, &ink, &logical); -@@ -681,6 +686,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -@@ -753,6 +759,7 @@ - *descent = overall.descent; - break; - } -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - -@@ -780,6 +787,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00 -+++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00 -@@ -48,6 +48,7 @@ - void - _gdk_x11_initialize_locale (void) - { -+#ifdef HAVE_XWC - wchar_t result; - gchar *current_locale; - static char *last_locale = NULL; -@@ -93,7 +94,8 @@ - GDK_NOTE (XIM, - g_message ("%s multi-byte string functions.", - gdk_use_mb ? "Using" : "Not using")); -- -+#endif -+ - return; - } - -@@ -136,6 +138,7 @@ - { - gchar *mbstr; - -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -178,6 +181,7 @@ - XFree (tpr.value); - } - else -+#endif - { - gint length = 0; - gint i; -@@ -210,6 +214,7 @@ - gint - gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max) - { -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -242,6 +247,7 @@ - return len_cpy; - } - else -+#endif - { - gint i; - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/scroll-timings.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/scroll-timings.patch deleted file mode 100644 index a38b21dcc2..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/scroll-timings.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100 -@@ -35,9 +35,9 @@ - #include "gtkintl.h" - #include "gtkscrollbar.h" - --#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */ --#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */ --#define UPDATE_DELAY 300 /* Delay for queued update */ -+#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */ -+#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */ -+#define UPDATE_DELAY 1000 /* Delay for queued update */ - - enum { - PROP_0, diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/single-click.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/single-click.patch deleted file mode 100644 index 3bb208d4d6..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/single-click.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c gtk+-2.6.3/gtk/gtkcalendar.c ---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 16:57:04 +01:00 -+++ gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 20:05:18 +01:00 -@@ -1023,9 +1023,11 @@ - } - - gtk_calendar_select_and_focus_day (calendar, day); -- } -+ -+ // This change causes the calendar to disappear after choosing a day -+/* } - else if (event->type == GDK_2BUTTON_PRESS) -- { -+ {*/ - private_data->in_drag = 0; - if (day_month == MONTH_CURRENT) - g_signal_emit (calendar, -diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c gtk+-2.6.3/gtk/gtkfilesel.c ---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-06 16:57:07 +01:00 -+++ gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-07 13:40:32 +01:00 -@@ -2468,6 +2468,33 @@ - if (fs->last_selected != NULL) - g_free (fs->last_selected); - -+ // Single-click directory entry -+ if (new_names->len == 1) -+ { -+ GtkTreeView *tree_view; -+ GtkTreeModel *model; -+ GtkTreePath *path; -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ tree_view = gtk_tree_selection_get_tree_view (selection); -+ -+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) -+ { -+ path = gtk_tree_model_get_path (model, &iter); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (!is_file) -+ { -+ gtk_file_selection_dir_activate (tree_view, path, -+ gtk_tree_view_get_column (tree_view, DIR_COLUMN), -+ user_data); -+ } -+ -+ gtk_tree_path_free (path); -+ } -+ } -+ - fs->last_selected = g_strdup (g_ptr_array_index (new_names, index)); - filename = get_real_filename (fs->last_selected, FALSE); - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/small-gtkfilesel.patch deleted file mode 100644 index 20bf4cf366..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/small-gtkfilesel.patch +++ /dev/null @@ -1,267 +0,0 @@ -diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c ---- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100 -@@ -68,6 +68,7 @@ - #include "gtkprivate.h" - #include "gtkscrolledwindow.h" - #include "gtkstock.h" -+#include "gtksignal.h" - #include "gtktreeselection.h" - #include "gtktreeview.h" - #include "gtkvbox.h" -@@ -77,6 +78,7 @@ - #include "gtkmessagedialog.h" - #include "gtkdnd.h" - #include "gtkeventbox.h" -+#include "gtkimage.h" - - #undef GTK_DISABLE_DEPRECATED - #include "gtkoptionmenu.h" -@@ -245,7 +247,8 @@ - }; - - enum { -- DIR_COLUMN -+ DIR_COLUMN, -+ ISFILE_COLUMN - }; - - enum { -@@ -400,6 +403,12 @@ - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); -+ -+static void gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data); -+ - static void gtk_file_selection_file_changed (GtkTreeSelection *selection, - gpointer user_data); - static void gtk_file_selection_dir_activate (GtkTreeView *tree_view, -@@ -419,6 +428,7 @@ - static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data); - static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data); - static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data); -+static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style); - - static void free_selected_names (GPtrArray *names); - -@@ -578,6 +588,23 @@ - G_PARAM_WRITABLE)); - object_class->destroy = gtk_file_selection_destroy; - widget_class->map = gtk_file_selection_map; -+ widget_class->style_set = gtk_file_selection_style_set; -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("show_fileops_default", -+ _("Show fileop buttons by default"), -+ _("Whether file operation buttons are shown by default"), -+ TRUE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("border_width", -+ _("Border width"), -+ _("Width of border around the main dialog area"), -+ 0, -+ G_MAXINT, -+ 10, -+ G_PARAM_READABLE)); - } - - static void gtk_file_selection_set_property (GObject *object, -@@ -649,7 +676,29 @@ - gtk_widget_grab_default (widget); - return FALSE; - } -- -+ -+static void -+gtk_file_selection_style_set (GtkWidget *filesel, -+ GtkStyle *prev_style) -+{ -+ gboolean show_fileops; -+ gint border_width; -+ -+ gtk_widget_style_get (filesel, -+ "show_fileops_default", -+ &show_fileops, -+ "border_width", -+ &border_width, -+ NULL); -+ -+ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width); -+ -+ if (show_fileops) -+ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+ else -+ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+} -+ - static void - gtk_file_selection_init (GtkFileSelection *filesel) - { -@@ -674,17 +723,15 @@ - - /* The dialog-sized vertical box */ - filesel->main_vbox = dialog->vbox; -- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10); - - /* The horizontal box containing create, rename etc. buttons */ - filesel->button_area = gtk_hbutton_box_new (); - gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START); -- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area, - FALSE, FALSE, 0); - gtk_widget_show (filesel->button_area); - -- gtk_file_selection_show_fileop_buttons (filesel); -+ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL); - - /* hbox for pulldown menu */ - pulldown_hbox = gtk_hbox_new (TRUE, 5); -@@ -723,25 +770,32 @@ - - /* The directories list */ - -- model = gtk_list_store_new (1, G_TYPE_STRING); -+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */ - filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); - g_object_unref (model); - -- column = gtk_tree_view_column_new_with_attributes (_("Folders"), -+ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL, - gtk_cell_renderer_text_new (), - "text", DIR_COLUMN, - NULL); - label = gtk_label_new_with_mnemonic (_("Fol_ders")); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list); - gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -+ -+ /* gtk_tree_view_column_set_widget (column, label); */ -+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE); -+ - gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); - gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column); - - gtk_widget_set_size_request (filesel->dir_list, - DIR_LIST_WIDTH, DIR_LIST_HEIGHT); - g_signal_connect (filesel->dir_list, "row_activated", -- G_CALLBACK (gtk_file_selection_dir_activate), filesel); -+ G_CALLBACK (gtk_file_selection_activate), filesel); -+ -+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed", -+ G_CALLBACK (gtk_file_selection_file_changed), filesel); -+ - - /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */ - -@@ -758,41 +812,6 @@ - gtk_widget_show (filesel->dir_list); - gtk_widget_show (scrolled_win); - -- /* The files list */ -- model = gtk_list_store_new (1, G_TYPE_STRING); -- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); -- g_object_unref (model); -- -- column = gtk_tree_view_column_new_with_attributes (_("Files"), -- gtk_cell_renderer_text_new (), -- "text", FILE_COLUMN, -- NULL); -- label = gtk_label_new_with_mnemonic (_("_Files")); -- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list); -- gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); -- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column); -- -- gtk_widget_set_size_request (filesel->file_list, -- FILE_LIST_WIDTH, FILE_LIST_HEIGHT); -- g_signal_connect (filesel->file_list, "row_activated", -- G_CALLBACK (gtk_file_selection_file_activate), filesel); -- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed", -- G_CALLBACK (gtk_file_selection_file_changed), filesel); -- -- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */ -- -- scrolled_win = gtk_scrolled_window_new (NULL, NULL); -- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN); -- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list); -- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), -- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); -- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0); -- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win); -- gtk_widget_show (filesel->file_list); -- gtk_widget_show (scrolled_win); -- - /* action area for packing buttons into. */ - filesel->action_area = gtk_hbox_new (TRUE, 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area, -@@ -2008,6 +2027,23 @@ - } - - static void -+gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data) -+{ -+ GtkTreeModel *model = gtk_tree_view_get_model (tree_view); -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ gtk_tree_model_get_iter (model, &iter, path); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (! is_file) -+ gtk_file_selection_dir_activate (tree_view, path, column, user_data); -+} -+ -+static void - gtk_file_selection_file_activate (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, -@@ -2103,7 +2139,6 @@ - PossibleCompletion* poss; - GtkTreeIter iter; - GtkListStore *dir_model; -- GtkListStore *file_model; - gchar* filename; - gchar* rem_path = rel_path; - gchar* sel_text; -@@ -2125,10 +2160,8 @@ - g_assert (cmpl_state->reference_dir); - - dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list))); -- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list))); - - gtk_list_store_clear (dir_model); -- gtk_list_store_clear (file_model); - - /* Set the dir list to include ./ and ../ */ - gtk_list_store_append (dir_model, &iter); -@@ -2150,13 +2183,17 @@ - strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0) - { - gtk_list_store_append (dir_model, &iter); -- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, FALSE, -1); - } - } - else - { -- gtk_list_store_append (file_model, &iter); -- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_append (dir_model, &iter); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, TRUE, -1); - } - } - diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/spinbutton.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/spinbutton.patch deleted file mode 100644 index 8ad7507af0..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/spinbutton.patch +++ /dev/null @@ -1,128 +0,0 @@ ---- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100 -@@ -733,7 +733,7 @@ - - spin = GTK_SPIN_BUTTON (widget); - arrow_size = spin_button_get_arrow_size (spin); -- panel_width = arrow_size + 2 * widget->style->xthickness; -+ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness; - - widget->allocation = *allocation; - -@@ -866,19 +866,16 @@ - { - width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness; - -+ y = widget->style->ythickness; -+ height = widget->requisition.height - (2 * y); -+ - if (arrow_type == GTK_ARROW_UP) - { - x = 0; -- y = 0; -- -- height = widget->requisition.height / 2; - } - else - { -- x = 0; -- y = widget->requisition.height / 2; -- -- height = (widget->requisition.height + 1) / 2; -+ x = width; - } - - if (spin_button_at_limit (spin_button, arrow_type)) -@@ -908,32 +905,17 @@ - shadow_type = GTK_SHADOW_OUT; - } - } -- -+ - gtk_paint_box (widget->style, spin_button->panel, - state_type, shadow_type, - NULL, widget, -- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down", -+ NULL, - x, y, width, height); - - height = widget->requisition.height; - -- if (arrow_type == GTK_ARROW_DOWN) -- { -- y = height / 2; -- height = height - y - 2; -- } -- else -- { -- y = 2; -- height = height / 2 - 2; -- } -- - width -= 3; -- -- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- x = 2; -- else -- x = 1; -+ height -= 3; - - w = width / 2; - w -= w % 2 - 1; /* force odd */ -@@ -1108,7 +1090,7 @@ - if (GTK_ENTRY (widget)->editable) - gtk_spin_button_update (spin); - -- if (event->y <= widget->requisition.height / 2) -+ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness)) - { - if (event->button == 1) - start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment); -@@ -1143,44 +1125,11 @@ - - arrow_size = spin_button_get_arrow_size (spin); - -- if (event->button == spin->button) -- { -- int click_child = spin->click_child; -+ gtk_spin_button_stop_spinning (spin); - -- gtk_spin_button_stop_spinning (spin); -- -- if (event->button == 3) -- { -- if (event->y >= 0 && event->x >= 0 && -- event->y <= widget->requisition.height && -- event->x <= arrow_size + 2 * widget->style->xthickness) -- { -- if (click_child == GTK_ARROW_UP && -- event->y <= widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->upper - spin->adjustment->value; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, diff); -- } -- else if (click_child == GTK_ARROW_DOWN && -- event->y > widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->value - spin->adjustment->lower; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, -diff); -- } -- } -- } -- spin_button_redraw (spin); -+ spin_button_redraw (spin); - -- return TRUE; -- } -- else -- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event); -+ return TRUE; - } - - static gint diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/xsettings.patch b/packages/gtk+/gtk+-2.6.4-1.osso7/xsettings.patch deleted file mode 100644 index b63e262d34..0000000000 --- a/packages/gtk+/gtk+-2.6.4-1.osso7/xsettings.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004 -+++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004 -@@ -2827,10 +2827,9 @@ - { - GdkScreenX11 *screen = data; - -- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent)) -- return GDK_FILTER_REMOVE; -- else -- return GDK_FILTER_CONTINUE; -+ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent); -+ -+ return GDK_FILTER_CONTINUE; - } - - static void diff --git a/packages/gtk+/gtk+-2.6.7/automake-lossage.patch b/packages/gtk+/gtk+-2.6.7/automake-lossage.patch deleted file mode 100644 index 0d423ddbb9..0000000000 --- a/packages/gtk+/gtk+-2.6.7/automake-lossage.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100 -+++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100 -@@ -52,21 +52,5 @@ - - dist-hook: html - cp -Rp $(srcdir)/html $(distdir) --else --html: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --pdf: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "***" -- --dist-hook: -- echo "***" -- echo "*** Warning: Tutorial not built" -- echo "*** DISTRIBUTION IS INCOMPLETE" -- echo "***" - endif - diff --git a/packages/gtk+/gtk+-2.6.7/disable-tooltips.patch b/packages/gtk+/gtk+-2.6.7/disable-tooltips.patch deleted file mode 100644 index d71d839c3c..0000000000 --- a/packages/gtk+/gtk+-2.6.7/disable-tooltips.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100 -@@ -118,7 +118,7 @@ - tooltips->tips_data_list = NULL; - - tooltips->delay = DEFAULT_DELAY; -- tooltips->enabled = TRUE; -+ tooltips->enabled = FALSE; - tooltips->timer_tag = 0; - tooltips->use_sticky_delay = FALSE; - tooltips->last_popdown.tv_sec = -1; diff --git a/packages/gtk+/gtk+-2.6.7/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.6.7/gtk+-handhelds.patch deleted file mode 100644 index 20481f059b..0000000000 --- a/packages/gtk+/gtk+-2.6.7/gtk+-handhelds.patch +++ /dev/null @@ -1,236 +0,0 @@ ---- gtk+-2.4.1/gtk/gtkarrow.c 2004-03-13 09:51:13.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkarrow.c 2004-05-26 14:52:17.000000000 +1000 -@@ -29,7 +29,7 @@ - #include "gtkarrow.h" - #include "gtkintl.h" - --#define MIN_ARROW_SIZE 15 -+#define MIN_ARROW_SIZE 7 - - enum { - PROP_0, -@@ -53,6 +53,8 @@ - guint prop_id, - GValue *value, - GParamSpec *pspec); -+static void gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition); - - GType - gtk_arrow_get_type (void) -@@ -111,6 +113,7 @@ - G_PARAM_READABLE | G_PARAM_WRITABLE)); - - widget_class->expose_event = gtk_arrow_expose; -+ widget_class->size_request = gtk_arrow_size_request; - } - - static void -@@ -166,13 +169,18 @@ - } - - static void -+gtk_arrow_size_request (GtkWidget *arrow, -+ GtkRequisition *requisition) -+{ -+ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -+ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -+} -+ -+static void - gtk_arrow_init (GtkArrow *arrow) - { - GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW); - -- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2; -- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2; -- - arrow->arrow_type = GTK_ARROW_RIGHT; - arrow->shadow_type = GTK_SHADOW_OUT; - } ---- gtk+-2.4.1/gtk/gtkcalendar.c 2004-03-06 14:37:26.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkcalendar.c 2004-05-26 14:58:57.000000000 +1000 -@@ -340,6 +340,9 @@ - static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar, - guint day); - -+static void gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day); -+ - static void gtk_calendar_paint_arrow (GtkWidget *widget, - guint arrow); - static void gtk_calendar_paint_day_num (GtkWidget *widget, -@@ -861,13 +864,13 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else - { - if (calendar->selected_day < 0) - calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1]; -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - } - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); -@@ -908,10 +911,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -939,10 +942,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -974,10 +977,10 @@ - if (month_len < calendar->selected_day) - { - calendar->selected_day = 0; -- gtk_calendar_select_day (calendar, month_len); -+ gtk_calendar_do_select_day (calendar, month_len); - } - else -- gtk_calendar_select_day (calendar, calendar->selected_day); -+ gtk_calendar_do_select_day (calendar, calendar->selected_day); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - gtk_calendar_thaw (calendar); -@@ -2480,9 +2483,9 @@ - return TRUE; - } - --void --gtk_calendar_select_day (GtkCalendar *calendar, -- guint day) -+static void -+gtk_calendar_do_select_day (GtkCalendar *calendar, -+ guint day) - { - g_return_if_fail (GTK_IS_CALENDAR (calendar)); - g_return_if_fail (day <= 31); -@@ -2499,6 +2502,13 @@ - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) - gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); - } -+} -+ -+void -+gtk_calendar_select_day (GtkCalendar *calendar, -+ guint day) -+{ -+ gtk_calendar_do_select_day (calendar, day); - - calendar->selected_day = day; - ---- gtk+-2.4.1/gtk/gtkentry.c 2004-04-22 08:08:08.000000000 +1000 -+++ gtk+-2.4.1/gtk/gtkentry.c 2004-05-26 14:52:17.000000000 +1000 -@@ -557,6 +557,15 @@ - 0.0, - G_PARAM_READABLE | G_PARAM_WRITABLE)); - -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("min_width", -+ _("Minimum width"), -+ _("Minimum width of the entry field"), -+ 0, -+ G_MAXINT, -+ MIN_ENTRY_WIDTH, -+ G_PARAM_READABLE)); -+ - signals[POPULATE_POPUP] = - g_signal_new ("populate_popup", - G_OBJECT_CLASS_TYPE (gobject_class), -@@ -1124,7 +1133,7 @@ - { - GtkEntry *entry = GTK_ENTRY (widget); - PangoFontMetrics *metrics; -- gint xborder, yborder; -+ gint xborder, yborder, min_width; - PangoContext *context; - - gtk_widget_ensure_style (widget); -@@ -1140,9 +1149,11 @@ - - xborder += INNER_BORDER; - yborder += INNER_BORDER; -- -+ -+ gtk_widget_style_get (widget, "min_width", &min_width, NULL); -+ - if (entry->width_chars < 0) -- requisition->width = MIN_ENTRY_WIDTH + xborder * 2; -+ requisition->width = min_width + xborder * 2; - else - { - gint char_width = pango_font_metrics_get_approximate_char_width (metrics); ---- gtk+-2.4.1/gtk/gtkrange.c 2004-03-06 14:38:08.000000000 +1100 -+++ gtk+-2.4.1/gtk/gtkrange.c 2004-05-26 14:52:17.000000000 +1000 -@@ -180,6 +180,7 @@ - static GtkWidgetClass *parent_class = NULL; - static guint signals[LAST_SIGNAL]; - -+static GdkAtom recognize_protocols_atom, atom_atom; - - GType - gtk_range_get_type (void) -@@ -220,6 +221,9 @@ - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - -+ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE); -+ atom_atom = gdk_atom_intern ("ATOM", FALSE); -+ - parent_class = g_type_class_peek_parent (class); - - gobject_class->set_property = gtk_range_set_property; -@@ -815,6 +819,12 @@ - &attributes, attributes_mask); - gdk_window_set_user_data (range->event_window, range); - -+ gdk_property_change (range->event_window, -+ recognize_protocols_atom, -+ atom_atom, -+ 32, GDK_PROP_MODE_REPLACE, -+ NULL, 0); -+ - widget->style = gtk_style_attach (widget->style, widget->window); - } - -@@ -1186,7 +1196,7 @@ - - /* ignore presses when we're already doing something else. */ - if (range->layout->grab_location != MOUSE_OUTSIDE) -- return FALSE; -+ return TRUE; - - range->layout->mouse_x = event->x; - range->layout->mouse_y = event->y; -@@ -1364,7 +1374,7 @@ - return TRUE; - } - -- return FALSE; -+ return TRUE; - } - - /** diff --git a/packages/gtk+/gtk+-2.6.7/gtklabel-resize-patch b/packages/gtk+/gtk+-2.6.7/gtklabel-resize-patch deleted file mode 100644 index df29656343..0000000000 --- a/packages/gtk+/gtk+-2.6.7/gtklabel-resize-patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100 -@@ -1623,6 +1623,7 @@ - - /* We have to clear the layout, fonts etc. may have changed */ - gtk_label_clear_layout (label); -+ gtk_widget_queue_resize (GTK_WIDGET (label)); - } - - static void diff --git a/packages/gtk+/gtk+-2.6.7/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.6.7/hardcoded_libtool.patch deleted file mode 100644 index b2afddcc61..0000000000 --- a/packages/gtk+/gtk+-2.6.7/hardcoded_libtool.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000 -+++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000 -@@ -360,7 +360,7 @@ - AC_MSG_CHECKING([Whether to write dependencies into .pc files]) - case $enable_explicit_deps in - auto) -- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh` -+ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh` - if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then - enable_explicit_deps=yes - else -@@ -688,7 +688,7 @@ - dnl Now we check to see if our libtool supports shared lib deps - dnl (in a rather ugly way even) - if $dynworks; then -- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" -+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config" - pixbuf_deplibs_check=`$pixbuf_libtool_config | \ - grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ - sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` -@@ -1512,7 +1512,7 @@ - # - # We are using gmodule-no-export now, but I'm leaving the stripping - # code in place for now, since pango and atk still require gmodule. --export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` -+export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` - if test -n "$export_dynamic"; then - GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"` - GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"` diff --git a/packages/gtk+/gtk+-2.6.7/menu-deactivate.patch b/packages/gtk+/gtk+-2.6.7/menu-deactivate.patch deleted file mode 100644 index 29e665fbf3..0000000000 --- a/packages/gtk+/gtk+-2.6.7/menu-deactivate.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004 -+++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004 -@@ -37,7 +37,7 @@ - #include "gtktearoffmenuitem.h" - #include "gtkwindow.h" - --#define MENU_SHELL_TIMEOUT 500 -+#define MENU_SHELL_TIMEOUT 2000 - - enum { - DEACTIVATE, -@@ -156,6 +156,7 @@ - static GtkContainerClass *parent_class = NULL; - static guint menu_shell_signals[LAST_SIGNAL] = { 0 }; - -+static int last_crossing_time; - - GType - gtk_menu_shell_get_type (void) -@@ -418,6 +419,7 @@ - gtk_grab_add (GTK_WIDGET (menu_shell)); - menu_shell->have_grab = TRUE; - menu_shell->active = TRUE; -+ last_crossing_time = 0; - } - } - -@@ -545,6 +547,13 @@ - menu_shell->activate_time = 0; - deactivate = FALSE; - } -+ -+ if (last_crossing_time != 0 -+ && ((event->time - last_crossing_time) < 500)) -+ { -+ last_crossing_time = 0; -+ deactivate = FALSE; -+ } - - if (deactivate) - { -@@ -597,6 +606,8 @@ - if (menu_shell->active) - { - menu_item = gtk_get_event_widget ((GdkEvent*) event); -+ -+ last_crossing_time = event->time; - - if (!menu_item || - (GTK_IS_MENU_ITEM (menu_item) && diff --git a/packages/gtk+/gtk+-2.6.7/no-demos.patch b/packages/gtk+/gtk+-2.6.7/no-demos.patch deleted file mode 100644 index 2f10a30dda..0000000000 --- a/packages/gtk+/gtk+-2.6.7/no-demos.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gtk+-2.4.1/Makefile.am~ 2004-01-17 22:15:56.000000000 +0000 -+++ gtk+-2.4.1/Makefile.am 2004-05-08 12:25:32.000000000 +0100 -@@ -1,6 +1,6 @@ - ## Makefile.am for GTK+ - --SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests contrib -+SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests contrib - SUBDIRS = po po-properties $(SRC_SUBDIRS) docs build m4macros - - # require automake 1.4 diff --git a/packages/gtk+/gtk+-2.6.7/no-xwc.patch b/packages/gtk+/gtk+-2.6.7/no-xwc.patch deleted file mode 100644 index affb4a303e..0000000000 --- a/packages/gtk+/gtk+-2.6.7/no-xwc.patch +++ /dev/null @@ -1,151 +0,0 @@ -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2004-11-30 14:57:14 +00:00 -+++ gtk+-2.6.0/gdk/x11/gdkdrawable-x11.c 2005-01-02 15:38:06 +00:00 -@@ -576,12 +576,14 @@ - GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2); - } - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font); - XmbDrawString (xdisplay, impl->xid, - fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length); - } -+#endif - else - g_error("undefined font type\n"); - } -@@ -613,6 +615,7 @@ - GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length); - g_free (text_8bit); - } -+#ifdef HAVE_XWC - else if (font->type == GDK_FONT_FONTSET) - { - if (sizeof(GdkWChar) == sizeof(wchar_t)) -@@ -633,6 +636,7 @@ - g_free (text_wchar); - } - } -+#endif - else - g_error("undefined font type\n"); - } -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c gtk+-2.6.0/gdk/x11/gdkfont-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2004-08-26 01:23:46 +01:00 -+++ gtk+-2.6.0/gdk/x11/gdkfont-x11.c 2005-01-02 15:45:39 +00:00 -@@ -525,10 +525,12 @@ - width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2); - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - width = XmbTextEscapement (fontset, text, text_length); - break; -+#endif - default: - width = 0; - } -@@ -578,6 +580,7 @@ - width = 0; - } - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - if (sizeof(GdkWChar) == sizeof(wchar_t)) - { -@@ -595,6 +598,7 @@ - g_free (text_wchar); - } - break; -+#endif - default: - width = 0; - } -@@ -667,6 +671,7 @@ - if (descent) - *descent = overall.descent; - break; -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - XmbTextExtents (fontset, text, text_length, &ink, &logical); -@@ -681,6 +686,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -@@ -753,6 +759,7 @@ - *descent = overall.descent; - break; - } -+#ifdef HAVE_XWC - case GDK_FONT_FONTSET: - fontset = (XFontSet) private->xfont; - -@@ -780,6 +787,7 @@ - if (descent) - *descent = ink.y + ink.height; - break; -+#endif - } - - } -diff -urNd ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c gtk+-2.6.0/gdk/x11/gdkim-x11.c ---- ../gtk+-2.6.0-r2/gtk+-2.6.0/gdk/x11/gdkim-x11.c 2004-11-17 00:55:10 +00:00 -+++ gtk+-2.6.0/gdk/x11/gdkim-x11.c 2005-01-02 15:42:04 +00:00 -@@ -48,6 +48,7 @@ - void - _gdk_x11_initialize_locale (void) - { -+#ifdef HAVE_XWC - wchar_t result; - gchar *current_locale; - static char *last_locale = NULL; -@@ -93,7 +94,8 @@ - GDK_NOTE (XIM, - g_message ("%s multi-byte string functions.", - gdk_use_mb ? "Using" : "Not using")); -- -+#endif -+ - return; - } - -@@ -136,6 +138,7 @@ - { - gchar *mbstr; - -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -178,6 +181,7 @@ - XFree (tpr.value); - } - else -+#endif - { - gint length = 0; - gint i; -@@ -210,6 +214,7 @@ - gint - gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max) - { -+#ifdef HAVE_XWC - if (gdk_use_mb) - { - GdkDisplay *display = find_a_display (); -@@ -242,6 +247,7 @@ - return len_cpy; - } - else -+#endif - { - gint i; - diff --git a/packages/gtk+/gtk+-2.6.7/scroll-timings.patch b/packages/gtk+/gtk+-2.6.7/scroll-timings.patch deleted file mode 100644 index a38b21dcc2..0000000000 --- a/packages/gtk+/gtk+-2.6.7/scroll-timings.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100 -@@ -35,9 +35,9 @@ - #include "gtkintl.h" - #include "gtkscrollbar.h" - --#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */ --#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */ --#define UPDATE_DELAY 300 /* Delay for queued update */ -+#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */ -+#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */ -+#define UPDATE_DELAY 1000 /* Delay for queued update */ - - enum { - PROP_0, diff --git a/packages/gtk+/gtk+-2.6.7/single-click.patch b/packages/gtk+/gtk+-2.6.7/single-click.patch deleted file mode 100644 index 3bb208d4d6..0000000000 --- a/packages/gtk+/gtk+-2.6.7/single-click.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c gtk+-2.6.3/gtk/gtkcalendar.c ---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 16:57:04 +01:00 -+++ gtk+-2.6.3/gtk/gtkcalendar.c 2005-04-06 20:05:18 +01:00 -@@ -1023,9 +1023,11 @@ - } - - gtk_calendar_select_and_focus_day (calendar, day); -- } -+ -+ // This change causes the calendar to disappear after choosing a day -+/* } - else if (event->type == GDK_2BUTTON_PRESS) -- { -+ {*/ - private_data->in_drag = 0; - if (day_month == MONTH_CURRENT) - g_signal_emit (calendar, -diff -urNd ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c gtk+-2.6.3/gtk/gtkfilesel.c ---- ../gtk+-2.6.3-r0.old/gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-06 16:57:07 +01:00 -+++ gtk+-2.6.3/gtk/gtkfilesel.c 2005-04-07 13:40:32 +01:00 -@@ -2468,6 +2468,33 @@ - if (fs->last_selected != NULL) - g_free (fs->last_selected); - -+ // Single-click directory entry -+ if (new_names->len == 1) -+ { -+ GtkTreeView *tree_view; -+ GtkTreeModel *model; -+ GtkTreePath *path; -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ tree_view = gtk_tree_selection_get_tree_view (selection); -+ -+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) -+ { -+ path = gtk_tree_model_get_path (model, &iter); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (!is_file) -+ { -+ gtk_file_selection_dir_activate (tree_view, path, -+ gtk_tree_view_get_column (tree_view, DIR_COLUMN), -+ user_data); -+ } -+ -+ gtk_tree_path_free (path); -+ } -+ } -+ - fs->last_selected = g_strdup (g_ptr_array_index (new_names, index)); - filename = get_real_filename (fs->last_selected, FALSE); - diff --git a/packages/gtk+/gtk+-2.6.7/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.6.7/small-gtkfilesel.patch deleted file mode 100644 index 20bf4cf366..0000000000 --- a/packages/gtk+/gtk+-2.6.7/small-gtkfilesel.patch +++ /dev/null @@ -1,267 +0,0 @@ -diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c ---- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100 -+++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100 -@@ -68,6 +68,7 @@ - #include "gtkprivate.h" - #include "gtkscrolledwindow.h" - #include "gtkstock.h" -+#include "gtksignal.h" - #include "gtktreeselection.h" - #include "gtktreeview.h" - #include "gtkvbox.h" -@@ -77,6 +78,7 @@ - #include "gtkmessagedialog.h" - #include "gtkdnd.h" - #include "gtkeventbox.h" -+#include "gtkimage.h" - - #undef GTK_DISABLE_DEPRECATED - #include "gtkoptionmenu.h" -@@ -245,7 +247,8 @@ - }; - - enum { -- DIR_COLUMN -+ DIR_COLUMN, -+ ISFILE_COLUMN - }; - - enum { -@@ -400,6 +403,12 @@ - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); -+ -+static void gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data); -+ - static void gtk_file_selection_file_changed (GtkTreeSelection *selection, - gpointer user_data); - static void gtk_file_selection_dir_activate (GtkTreeView *tree_view, -@@ -419,6 +428,7 @@ - static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data); - static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data); - static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data); -+static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style); - - static void free_selected_names (GPtrArray *names); - -@@ -578,6 +588,23 @@ - G_PARAM_WRITABLE)); - object_class->destroy = gtk_file_selection_destroy; - widget_class->map = gtk_file_selection_map; -+ widget_class->style_set = gtk_file_selection_style_set; -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_boolean ("show_fileops_default", -+ _("Show fileop buttons by default"), -+ _("Whether file operation buttons are shown by default"), -+ TRUE, -+ G_PARAM_READABLE)); -+ -+ gtk_widget_class_install_style_property (widget_class, -+ g_param_spec_int ("border_width", -+ _("Border width"), -+ _("Width of border around the main dialog area"), -+ 0, -+ G_MAXINT, -+ 10, -+ G_PARAM_READABLE)); - } - - static void gtk_file_selection_set_property (GObject *object, -@@ -649,7 +676,29 @@ - gtk_widget_grab_default (widget); - return FALSE; - } -- -+ -+static void -+gtk_file_selection_style_set (GtkWidget *filesel, -+ GtkStyle *prev_style) -+{ -+ gboolean show_fileops; -+ gint border_width; -+ -+ gtk_widget_style_get (filesel, -+ "show_fileops_default", -+ &show_fileops, -+ "border_width", -+ &border_width, -+ NULL); -+ -+ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width); -+ -+ if (show_fileops) -+ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+ else -+ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel)); -+} -+ - static void - gtk_file_selection_init (GtkFileSelection *filesel) - { -@@ -674,17 +723,15 @@ - - /* The dialog-sized vertical box */ - filesel->main_vbox = dialog->vbox; -- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10); - - /* The horizontal box containing create, rename etc. buttons */ - filesel->button_area = gtk_hbutton_box_new (); - gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START); -- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area, - FALSE, FALSE, 0); - gtk_widget_show (filesel->button_area); - -- gtk_file_selection_show_fileop_buttons (filesel); -+ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL); - - /* hbox for pulldown menu */ - pulldown_hbox = gtk_hbox_new (TRUE, 5); -@@ -723,25 +770,32 @@ - - /* The directories list */ - -- model = gtk_list_store_new (1, G_TYPE_STRING); -+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */ - filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); - g_object_unref (model); - -- column = gtk_tree_view_column_new_with_attributes (_("Folders"), -+ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL, - gtk_cell_renderer_text_new (), - "text", DIR_COLUMN, - NULL); - label = gtk_label_new_with_mnemonic (_("Fol_ders")); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list); - gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -+ -+ /* gtk_tree_view_column_set_widget (column, label); */ -+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE); -+ - gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); - gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column); - - gtk_widget_set_size_request (filesel->dir_list, - DIR_LIST_WIDTH, DIR_LIST_HEIGHT); - g_signal_connect (filesel->dir_list, "row_activated", -- G_CALLBACK (gtk_file_selection_dir_activate), filesel); -+ G_CALLBACK (gtk_file_selection_activate), filesel); -+ -+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed", -+ G_CALLBACK (gtk_file_selection_file_changed), filesel); -+ - - /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */ - -@@ -758,41 +812,6 @@ - gtk_widget_show (filesel->dir_list); - gtk_widget_show (scrolled_win); - -- /* The files list */ -- model = gtk_list_store_new (1, G_TYPE_STRING); -- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); -- g_object_unref (model); -- -- column = gtk_tree_view_column_new_with_attributes (_("Files"), -- gtk_cell_renderer_text_new (), -- "text", FILE_COLUMN, -- NULL); -- label = gtk_label_new_with_mnemonic (_("_Files")); -- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list); -- gtk_widget_show (label); -- gtk_tree_view_column_set_widget (column, label); -- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); -- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column); -- -- gtk_widget_set_size_request (filesel->file_list, -- FILE_LIST_WIDTH, FILE_LIST_HEIGHT); -- g_signal_connect (filesel->file_list, "row_activated", -- G_CALLBACK (gtk_file_selection_file_activate), filesel); -- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed", -- G_CALLBACK (gtk_file_selection_file_changed), filesel); -- -- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */ -- -- scrolled_win = gtk_scrolled_window_new (NULL, NULL); -- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN); -- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list); -- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), -- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); -- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0); -- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win); -- gtk_widget_show (filesel->file_list); -- gtk_widget_show (scrolled_win); -- - /* action area for packing buttons into. */ - filesel->action_area = gtk_hbox_new (TRUE, 0); - gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area, -@@ -2008,6 +2027,23 @@ - } - - static void -+gtk_file_selection_activate (GtkTreeView *tree_view, -+ GtkTreePath *path, -+ GtkTreeViewColumn *column, -+ gpointer user_data) -+{ -+ GtkTreeModel *model = gtk_tree_view_get_model (tree_view); -+ GtkTreeIter iter; -+ gboolean is_file; -+ -+ gtk_tree_model_get_iter (model, &iter, path); -+ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1); -+ -+ if (! is_file) -+ gtk_file_selection_dir_activate (tree_view, path, column, user_data); -+} -+ -+static void - gtk_file_selection_file_activate (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, -@@ -2103,7 +2139,6 @@ - PossibleCompletion* poss; - GtkTreeIter iter; - GtkListStore *dir_model; -- GtkListStore *file_model; - gchar* filename; - gchar* rem_path = rel_path; - gchar* sel_text; -@@ -2125,10 +2160,8 @@ - g_assert (cmpl_state->reference_dir); - - dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list))); -- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list))); - - gtk_list_store_clear (dir_model); -- gtk_list_store_clear (file_model); - - /* Set the dir list to include ./ and ../ */ - gtk_list_store_append (dir_model, &iter); -@@ -2150,13 +2183,17 @@ - strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0) - { - gtk_list_store_append (dir_model, &iter); -- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, FALSE, -1); - } - } - else - { -- gtk_list_store_append (file_model, &iter); -- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1); -+ gtk_list_store_append (dir_model, &iter); -+ gtk_list_store_set (dir_model, &iter, -+ DIR_COLUMN, filename, -+ ISFILE_COLUMN, TRUE, -1); - } - } - diff --git a/packages/gtk+/gtk+-2.6.7/spinbutton.patch b/packages/gtk+/gtk+-2.6.7/spinbutton.patch deleted file mode 100644 index 8ad7507af0..0000000000 --- a/packages/gtk+/gtk+-2.6.7/spinbutton.patch +++ /dev/null @@ -1,128 +0,0 @@ ---- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100 -+++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100 -@@ -733,7 +733,7 @@ - - spin = GTK_SPIN_BUTTON (widget); - arrow_size = spin_button_get_arrow_size (spin); -- panel_width = arrow_size + 2 * widget->style->xthickness; -+ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness; - - widget->allocation = *allocation; - -@@ -866,19 +866,16 @@ - { - width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness; - -+ y = widget->style->ythickness; -+ height = widget->requisition.height - (2 * y); -+ - if (arrow_type == GTK_ARROW_UP) - { - x = 0; -- y = 0; -- -- height = widget->requisition.height / 2; - } - else - { -- x = 0; -- y = widget->requisition.height / 2; -- -- height = (widget->requisition.height + 1) / 2; -+ x = width; - } - - if (spin_button_at_limit (spin_button, arrow_type)) -@@ -908,32 +905,17 @@ - shadow_type = GTK_SHADOW_OUT; - } - } -- -+ - gtk_paint_box (widget->style, spin_button->panel, - state_type, shadow_type, - NULL, widget, -- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down", -+ NULL, - x, y, width, height); - - height = widget->requisition.height; - -- if (arrow_type == GTK_ARROW_DOWN) -- { -- y = height / 2; -- height = height - y - 2; -- } -- else -- { -- y = 2; -- height = height / 2 - 2; -- } -- - width -= 3; -- -- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) -- x = 2; -- else -- x = 1; -+ height -= 3; - - w = width / 2; - w -= w % 2 - 1; /* force odd */ -@@ -1108,7 +1090,7 @@ - if (GTK_ENTRY (widget)->editable) - gtk_spin_button_update (spin); - -- if (event->y <= widget->requisition.height / 2) -+ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness)) - { - if (event->button == 1) - start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment); -@@ -1143,44 +1125,11 @@ - - arrow_size = spin_button_get_arrow_size (spin); - -- if (event->button == spin->button) -- { -- int click_child = spin->click_child; -+ gtk_spin_button_stop_spinning (spin); - -- gtk_spin_button_stop_spinning (spin); -- -- if (event->button == 3) -- { -- if (event->y >= 0 && event->x >= 0 && -- event->y <= widget->requisition.height && -- event->x <= arrow_size + 2 * widget->style->xthickness) -- { -- if (click_child == GTK_ARROW_UP && -- event->y <= widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->upper - spin->adjustment->value; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, diff); -- } -- else if (click_child == GTK_ARROW_DOWN && -- event->y > widget->requisition.height / 2) -- { -- gdouble diff; -- -- diff = spin->adjustment->value - spin->adjustment->lower; -- if (diff > EPSILON) -- gtk_spin_button_real_spin (spin, -diff); -- } -- } -- } -- spin_button_redraw (spin); -+ spin_button_redraw (spin); - -- return TRUE; -- } -- else -- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event); -+ return TRUE; - } - - static gint diff --git a/packages/gtk+/gtk+-2.6.7/xsettings.patch b/packages/gtk+/gtk+-2.6.7/xsettings.patch deleted file mode 100644 index b63e262d34..0000000000 --- a/packages/gtk+/gtk+-2.6.7/xsettings.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004 -+++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004 -@@ -2827,10 +2827,9 @@ - { - GdkScreenX11 *screen = data; - -- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent)) -- return GDK_FILTER_REMOVE; -- else -- return GDK_FILTER_CONTINUE; -+ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent); -+ -+ return GDK_FILTER_CONTINUE; - } - - static void diff --git a/packages/gtk+/gtk+_2.4.4.bb b/packages/gtk+/gtk+_2.4.4.bb deleted file mode 100644 index 7849e91b92..0000000000 --- a/packages/gtk+/gtk+_2.4.4.bb +++ /dev/null @@ -1,88 +0,0 @@ -LICENSE = "LGPL" -DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ -set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." -HOMEPAGE = "http://www.gtk.org" -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor" -RRECOMMENDS = "ttf-dejavu-sans" -PR = "r8" - -SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.4/gtk+-${PV}.tar.bz2 \ - file://no-demos.patch;patch=1 \ - file://no-xwc.patch;patch=1;pnum=0 \ - file://automake-lossage.patch;patch=1 \ - file://single-click.patch;patch=1 \ - file://gtk+-handhelds.patch;patch=1 \ - file://hardcoded_libtool.patch;patch=1 \ - file://spinbutton.patch;patch=1 \ - file://disable-tooltips.patch;patch=1 \ - file://gtklabel-resize-patch;patch=1 \ - file://gtk-doc.m4 \ - file://small-gtkfilesel.patch;patch=1" - -inherit autotools pkgconfig flow-lossage - -do_configure_prepend() { - install -d m4 - install ${WORKDIR}/gtk-doc.m4 m4/ -} - -FILES_${PN} += "${datadir}/themes" -FILES_${PN}-dev += "${datadir}/gtk-2.0/include ${libdir}/gtk-2.0/include" - -EXTRA_OECONF = "--without-libtiff --enable-debug=no --disable-xkb --disable-glibtest" -# --disable-cruft - -LIBV = "2.4.0" - -gtk_include = "gtk.h gtkaccelgroup.h gtkaccellabel.h gtkaccelmap.h gtkaccessible.h gtkadjustment.h gtkalignment.h gtkarrow.h gtkaspectframe.h gtkbbox.h gtkbin.h gtkbindings.h gtkbox.h gtkbutton.h gtkcalendar.h gtkcelleditable.h gtkcellrenderer.h gtkcellrendererpixbuf.h gtkcellrenderertext.h gtkcellrenderertoggle.h gtkcheckbutton.h gtkcheckmenuitem.h gtkclipboard.h gtkclist.h gtkcolorsel.h gtkcolorseldialog.h gtkcombo.h gtkcontainer.h gtkctree.h gtkcurve.h gtkdebug.h gtkdialog.h gtkdnd.h gtkdrawingarea.h gtkeditable.h gtkentry.h gtkenums.h gtkeventbox.h gtkfilesel.h gtkfixed.h gtkfontsel.h gtkframe.h gtkgamma.h gtkgc.h gtkhandlebox.h gtkhbbox.h gtkhbox.h gtkhpaned.h gtkhruler.h gtkhscale.h gtkhscrollbar.h gtkhseparator.h gtkiconfactory.h gtkimage.h gtkimagemenuitem.h gtkimcontext.h gtkimcontextsimple.h gtkimmodule.h gtkimmulticontext.h gtkinputdialog.h gtkinvisible.h gtkitem.h gtkitemfactory.h gtklabel.h gtklayout.h gtklist.h gtklistitem.h gtkliststore.h gtkmain.h gtkmarshal.h gtkmenu.h gtkmenubar.h gtkmenuitem.h gtkmenushell.h gtkmessagedialog.h gtkmisc.h gtknotebook.h gtkobject.h gtkoldeditable.h gtkoptionmenu.h gtkpaned.h gtkpixmap.h gtkplug.h gtkpreview.h gtkprivate.h gtkprogress.h gtkprogressbar.h gtkradiobutton.h gtkradiomenuitem.h gtkrange.h gtkrc.h gtkruler.h gtkscale.h gtkscrollbar.h gtkscrolledwindow.h gtkselection.h gtkseparator.h gtkseparatormenuitem.h gtksettings.h gtksignal.h gtksizegroup.h gtksocket.h gtkspinbutton.h gtkstatusbar.h gtkstock.h gtkstyle.h gtktable.h gtktearoffmenuitem.h gtktext.h gtktextbuffer.h gtktextchild.h gtktextdisplay.h gtktextiter.h gtktextlayout.h gtktextmark.h gtktexttag.h gtktexttagtable.h gtktextview.h gtktipsquery.h gtktogglebutton.h gtktoolbar.h gtktooltips.h gtktree.h gtktreednd.h gtktreeitem.h gtktreemodel.h gtktreemodelsort.h gtktreeselection.h gtktreesortable.h gtktreestore.h gtktreeview.h gtktreeviewcolumn.h gtktypebuiltins.h gtktypeutils.h gtkvbbox.h gtkvbox.h gtkversion.h gtkviewport.h gtkvpaned.h gtkvruler.h gtkvscale.h gtkvscrollbar.h gtkvseparator.h gtkwidget.h gtkwindow.h gtkentrycompletion.h gtkcomboboxentry.h gtkcolorbutton.h gtkcombobox.h gtkcelllayout.h gtkactiongroup.h gtkaction.h gtkexpander.h gtkfilechooserdialog.h gtkfilechooserwidget.h gtkfontbutton.h gtkicontheme.h gtkradioaction.h gtkradiotoolbutton.h gtkseparatortoolitem.h gtktoggleaction.h gtktoggletoolbutton.h gtktoolitem.h gtkuimanager.h gtktreemodelfilter.h gtktoolbutton.h gtkfilechooser.h gtkfilefilter.h gtkfilesystem.h" -gdk_include = "gdk.h gdkcolor.h gdkcursor.h gdkdisplay.h gdkdisplaymanager.h gdkdnd.h gdkdrawable.h gdkenumtypes.h gdkevents.h gdkfont.h gdkgc.h gdki18n.h gdkimage.h gdkinput.h gdkkeys.h gdkkeysyms.h gdkpango.h gdkpixbuf.h gdkpixmap.h gdkprivate.h gdkproperty.h gdkregion.h gdkrgb.h gdkscreen.h gdkselection.h gdktypes.h gdkvisual.h gdkwindow.h x11/gdkx.h gdkspawn.h" -gdk_pixbuf_include = "gdk-pixbuf-animation.h gdk-pixbuf-enum-types.h gdk-pixbuf-features.h gdk-pixbuf-io.h gdk-pixbuf-loader.h gdk-pixbuf-marshal.h gdk-pixbuf.h gdk-pixdata.h" - -do_stage () { - oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR} - - mkdir -p ${STAGING_INCDIR}/gtk-2.0/gtk - for i in ${gtk_include}; do - install -m 0644 gtk/$i ${STAGING_INCDIR}/gtk-2.0/gtk/$i - done - - mkdir -p ${STAGING_INCDIR}/gtk-2.0/gdk - for i in ${gdk_include}; do - install -m 0644 gdk/$i ${STAGING_INCDIR}/gtk-2.0/gdk/`basename $i` - done - - mkdir -p ${STAGING_INCDIR}/gtk-2.0/gdk-pixbuf - for i in ${gdk_pixbuf_include}; do - install -m 0644 gdk-pixbuf/$i ${STAGING_INCDIR}/gtk-2.0/gdk-pixbuf/$i - done - - mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include - install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h - - install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/ -} - -do_install_append () { - install -d ${D}${sysconfdir}/gtk-2.0 -} - -PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-*" - -python populate_packages_prepend () { - import os.path - - gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d) - loaders_root = os.path.join(gtk_libdir, 'loaders') - immodules_root = os.path.join(gtk_libdir, 'immodules') - - do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders') - do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', 'gtk-query-immodules > /etc/gtk-2.0/gtk.immodules') - - if (bb.data.getVar('DEBIAN_NAMES', d, 1)): - bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d) -} diff --git a/packages/gtk+/gtk+_2.6.10.bb b/packages/gtk+/gtk+_2.6.10.bb index 57f64d10fa..171c712fc0 100644 --- a/packages/gtk+/gtk+_2.6.10.bb +++ b/packages/gtk+/gtk+_2.6.10.bb @@ -1,11 +1,11 @@ -LICENSE = "LGPL" DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." HOMEPAGE = "http://www.gtk.org" SECTION = "libs" +LICENSE = "LGPL" PRIORITY = "optional" DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt" -PR = "r3" +PR = "r4" SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \ file://help.patch;patch=1 \ @@ -22,7 +22,8 @@ SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \ file://scroll-timings.patch;patch=1 \ file://small-gtkfilesel.patch;patch=1 \ file://migration.patch;patch=1;pnum=0 \ - file://single-click.patch;patch=1" + file://single-click.patch;patch=1 \ + file://menu-styling.patch;patch=1" inherit autotools pkgconfig diff --git a/packages/gtk+/gtk+_2.6.3.bb b/packages/gtk+/gtk+_2.6.3.bb deleted file mode 100644 index 2805724e09..0000000000 --- a/packages/gtk+/gtk+_2.6.3.bb +++ /dev/null @@ -1,74 +0,0 @@ -LICENSE = "LGPL" -DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ -set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." -HOMEPAGE = "http://www.gtk.org" -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt" -PR = "r2" - -SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \ - file://no-demos.patch;patch=1 \ - file://no-xwc.patch;patch=1 \ - file://automake-lossage.patch;patch=1 \ - file://gtk+-handhelds.patch;patch=1 \ - file://spinbutton.patch;patch=1 \ - file://hardcoded_libtool.patch;patch=1 \ - file://disable-tooltips.patch;patch=1 \ - file://gtklabel-resize-patch;patch=1 \ - file://menu-deactivate.patch;patch=1 \ - file://xsettings.patch;patch=1 \ - file://scroll-timings.patch;patch=1 \ - file://small-gtkfilesel.patch;patch=1 \ - file://migration.patch;patch=1;pnum=0 \ - file://single-click.patch;patch=1" - -inherit autotools pkgconfig - -FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \ - ${bindir}/gtk-query-immodules-2.0 \ - ${libdir}/lib*.so.* \ - ${datadir}/themes ${sysconfdir} \ - ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so" -FILES_${PN}-dev += "${datadir}/gtk-2.0/include ${libdir}/gtk-2.0/include ${bindir}/gdk-pixbuf-csource" - -RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans" - -EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration" -# --disable-cruft - -LIBV = "2.4.0" - -do_stage () { - oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR} - - autotools_stage_includes - - mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include - install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h - - install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/ -} - -do_install_append () { - install -d ${D}${sysconfdir}/gtk-2.0 -} - -PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-*" - -python populate_packages_prepend () { - import os.path - - gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d) - loaders_root = os.path.join(gtk_libdir, 'loaders') - immodules_root = os.path.join(gtk_libdir, 'immodules') - - do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders') - do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', 'gtk-query-immodules > /etc/gtk-2.0/gtk.immodules') - - if (bb.data.getVar('DEBIAN_NAMES', d, 1)): - bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d) -} diff --git a/packages/gtk+/gtk+_2.6.4-1.osso7.bb b/packages/gtk+/gtk+_2.6.4-1.osso7.bb deleted file mode 100644 index 9a625d4686..0000000000 --- a/packages/gtk+/gtk+_2.6.4-1.osso7.bb +++ /dev/null @@ -1,166 +0,0 @@ -LICENSE = "LGPL" -DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ -set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." -HOMEPAGE = "http://www.gtk.org" -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt" -PR = "r2" - -S = "${WORKDIR}/gtk+2.0-2.6.4/upstream/tarballs/gtk+-2.6.4/" - -SRC_URI = "http://stage.maemo.org:80/pool/maemo/ossw/source/g/gtk+2.0/gtk+2.0_${PV}.tar.gz \ - file://no-demos.patch;patch=1 \ - file://no-xwc.patch;patch=1 \ - file://automake-lossage.patch;patch=1 \ - file://spinbutton.patch;patch=1 \ - file://hardcoded_libtool.patch;patch=1 \ - file://disable-tooltips.patch;patch=1 \ - file://gtklabel-resize-patch;patch=1 \ - file://xsettings.patch;patch=1 \ - file://scroll-timings.patch;patch=1 \ - file://small-gtkfilesel.patch;patch=1 \ - file://migration.patch;patch=1;pnum=0 \ - file://000_gtk+-2.0.6-exportsymbols.patch;patch=1 \ - file://000_gtk+-2.2.0-buildfix-immodule.patch;patch=1 \ - file://002_xpmico.patch;patch=1 \ - file://003_iconcache.patch;patch=1 \ - file://configure.diff;patch=1 \ - file://configure.in.diff;patch=1 \ - file://gdkwindow-x11.c.diff;patch=1 \ - file://gtk.h.diff;patch=1 \ - file://gtk_Makefile.am.diff;patch=1 \ - file://gtk_Makefile.in.diff;patch=1 \ - file://gtkalias.h.diff;patch=1 \ - file://gtkbutton.c.diff;patch=1 \ - file://gtkbutton.h.diff;patch=1 \ - file://gtkcalendar.c.diff;patch=1 \ - file://gtkcalendar.h.diff;patch=1 \ - file://gtkcellrenderertext.c.diff;patch=1 \ - file://gtkcellrenderertoggle.c.diff;patch=1 \ - file://gtkcellview.c.diff;patch=1 \ - file://gtkcellview.h.diff;patch=1 \ - file://gtkcheckbutton.c.diff;patch=1 \ - file://gtkcombobox.c.diff;patch=1 \ - file://gtkcomboboxentry.c.diff;patch=1 \ - file://gtkcontainer.c.diff;patch=1 \ - file://gtkdialog.c.diff;patch=1 \ - file://gtkdnd.c.diff;patch=1 \ - file://gtkentry.c.diff;patch=1 \ - file://gtkenums.h.diff;patch=1 \ - file://gtkfilesystem.c.diff;patch=1 \ - file://gtkfilesystem.h.diff;patch=1 \ - file://gtkframe.c.diff;patch=1 \ - file://gtkhashtable.c.diff;patch=1 \ - file://gtkhashtable.h.diff;patch=1 \ - file://gtkhbbox.c.diff;patch=1 \ - file://gtkhseparator.c.diff;patch=1 \ - file://gtkiconfactory.c.diff;patch=1 \ - file://gtkicontheme.c.diff;patch=1 \ - file://gtkimcontext.c.diff;patch=1 \ - file://gtkimcontext.h.diff;patch=1 \ - file://gtkimmulticontext.c.diff;patch=1 \ - file://gtklabel.c.diff;patch=1 \ - file://gtklabel.h.diff;patch=1 \ - file://gtkmain.c.diff;patch=1 \ - file://gtkmarshal.c.diff;patch=1 \ - file://gtkmarshal.h.diff;patch=1 \ - file://gtkmarshalers.c.diff;patch=1 \ - file://gtkmarshalers.h.diff;patch=1 \ - file://gtkmenu.c.diff;patch=1 \ - file://gtkmenu.h.diff;patch=1 \ - file://gtkmenuitem.c.diff;patch=1 \ - file://gtkmenuitem.h.diff;patch=1 \ - file://gtkmenushell.c.diff;patch=1 \ - file://gtkmenushell.h.diff;patch=1 \ - file://gtknotebook.c.diff;patch=1 \ - file://gtkprogress.c.diff;patch=1 \ - file://gtkprogressbar.c.diff;patch=1 \ - file://gtkradiobutton.c.diff;patch=1 \ - file://gtkrange.c.diff;patch=1 \ - file://gtkrange.h.diff;patch=1 \ - file://gtkrbtree.c.diff;patch=1 \ - file://gtkrc.c.diff;patch=1 \ - file://gtkrc.h.diff;patch=1 \ - file://gtkscrolledwindow.c.diff;patch=1 \ - file://gtkseparator.c.diff;patch=1 \ - file://gtkseparatortoolitem.c.diff;patch=1 \ - file://gtksettings.c.diff;patch=1 \ - file://gtkspinbutton.c.diff;patch=1 \ - file://gtkstyle.c.diff;patch=1 \ - file://gtkstyle.h.diff;patch=1 \ - file://gtktable.c.diff;patch=1 \ - file://gtktextbuffer.c.diff;patch=1 \ - file://gtktextbuffer.h.diff;patch=1 \ - file://gtktextbufferserialize.c.diff;patch=1 \ - file://gtktextbufferserialize.h.diff;patch=1 \ - file://gtktextview.c.diff;patch=1 \ - file://gtktoolbar.c.diff;patch=1 \ - file://gtktoolbutton.c.diff;patch=1 \ - file://gtktoolbutton.h.diff;patch=1 \ - file://gtktreemodelfilter.c.diff;patch=1 \ - file://gtktreemodelsort.c.diff;patch=1 \ - file://gtktreeprivate.h.diff;patch=1 \ - file://gtktreeselection.c.diff;patch=1 \ - file://gtktreeview.c.diff;patch=1 \ - file://gtktreeview.h.diff;patch=1 \ - file://gtktreeviewcolumn.c.diff;patch=1 \ - file://gtktypebuiltins.c.diff;patch=1 \ - file://gtktypebuiltins.h.diff;patch=1 \ - file://gtkvseparator.c.diff;patch=1 \ - file://gtkwidget.c.diff;patch=1 \ - file://gtkwidget.h.diff;patch=1 \ - file://gtkwindow.c.diff;patch=1 \ - file://gtkwindow.h.diff;patch=1 \ - file://io-gif-animation.c.diff;patch=1 \ - file://io-gif.c.diff;patch=1" - -inherit autotools pkgconfig - -FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \ - ${bindir}/gtk-query-immodules-2.0 \ - ${libdir}/lib*.so.* \ - ${datadir}/themes ${sysconfdir} \ - ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so" -FILES_${PN}-dev += "${datadir}/gtk-2.0/include ${libdir}/gtk-2.0/include ${bindir}/gdk-pixbuf-csource" - -RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans" - -EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration" -# --disable-cruft - -LIBV = "2.4.0" - -do_stage () { - oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR} - - autotools_stage_includes - - mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include - install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h - - install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/ -} - -do_install_append () { - install -d ${D}${sysconfdir}/gtk-2.0 -} - -PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-*" - -python populate_packages_prepend () { - import os.path - - gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d) - loaders_root = os.path.join(gtk_libdir, 'loaders') - immodules_root = os.path.join(gtk_libdir, 'immodules') - - do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders') - do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', 'gtk-query-immodules > /etc/gtk-2.0/gtk.immodules') - - if (bb.data.getVar('DEBIAN_NAMES', d, 1)): - bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d) -} diff --git a/packages/gtk+/gtk+_2.6.7.bb b/packages/gtk+/gtk+_2.6.7.bb deleted file mode 100644 index 864347b586..0000000000 --- a/packages/gtk+/gtk+_2.6.7.bb +++ /dev/null @@ -1,83 +0,0 @@ -LICENSE = "LGPL" -DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ -set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." -HOMEPAGE = "http://www.gtk.org" -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt" -PR = "r2" - -SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \ - file://no-demos.patch;patch=1 \ - file://no-xwc.patch;patch=1 \ - file://automake-lossage.patch;patch=1 \ - file://gtk+-handhelds.patch;patch=1 \ - file://spinbutton.patch;patch=1 \ - file://hardcoded_libtool.patch;patch=1 \ - file://disable-tooltips.patch;patch=1 \ - file://gtklabel-resize-patch;patch=1 \ - file://menu-deactivate.patch;patch=1 \ - file://xsettings.patch;patch=1 \ - file://scroll-timings.patch;patch=1 \ - file://small-gtkfilesel.patch;patch=1 \ - file://migration.patch;patch=1;pnum=0 \ - file://single-click.patch;patch=1" - -inherit autotools pkgconfig - -FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \ - ${bindir}/gtk-query-immodules-2.0 \ - ${libdir}/lib*.so.* \ - ${datadir}/themes ${sysconfdir} \ - ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so" -FILES_${PN}-dev += "${datadir}/gtk-2.0/include ${libdir}/gtk-2.0/include ${bindir}/gdk-pixbuf-csource" - -RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1 ttf-dejavu-sans" - -EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration" -# --disable-cruft - -LIBV = "2.4.0" - -do_stage () { - oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR} - oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR} - - autotools_stage_includes - - mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include - install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h - - install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/ -} - -do_install_append () { - install -d ${D}${sysconfdir}/gtk-2.0 -} - -postinst_prologue() { -if [ "x$D" != "x" ]; then - exit 1 -fi - -} - -PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-*" - -python populate_packages_prepend () { - import os.path - - prologue = bb.data.getVar("postinst_prologue", d, 1) - - gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d) - loaders_root = os.path.join(gtk_libdir, 'loaders') - immodules_root = os.path.join(gtk_libdir, 'immodules') - - do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders') - do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules') - - if (bb.data.getVar('DEBIAN_NAMES', d, 1)): - bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d) -} diff --git a/packages/hal/files/.mtn2git_empty b/packages/hal/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/hal/files/.mtn2git_empty diff --git a/packages/hal/files/dbus-fix-api.patch b/packages/hal/files/dbus-fix-api.patch new file mode 100644 index 0000000000..1f025870bc --- /dev/null +++ b/packages/hal/files/dbus-fix-api.patch @@ -0,0 +1,26 @@ +Index: hal-0.5.7/tools/lshal.c +=================================================================== +--- hal-0.5.7.orig/tools/lshal.c 2006-02-13 14:35:31.000000000 +0000 ++++ hal-0.5.7/tools/lshal.c 2006-11-09 13:48:07.000000000 +0000 +@@ -701,7 +701,7 @@ + libhal_ctx_shutdown (hal_ctx, &error); + libhal_ctx_free (hal_ctx); + +- dbus_connection_disconnect (conn); ++ dbus_connection_close (conn); + dbus_connection_unref (conn); + + if (show_device) +Index: hal-0.5.7/tools/hal-device.c +=================================================================== +--- hal-0.5.7.orig/tools/hal-device.c 2006-11-09 13:49:44.000000000 +0000 ++++ hal-0.5.7/tools/hal-device.c 2006-11-09 13:50:00.000000000 +0000 +@@ -155,7 +155,7 @@ + + libhal_ctx_shutdown(hal_ctx, &error); + libhal_ctx_free(hal_ctx); +- dbus_connection_disconnect(conn); ++ dbus_connection_close(conn); + dbus_connection_unref(conn); + dbus_error_free(&error); + diff --git a/packages/hal/hal_0.5.7.bb b/packages/hal/hal_0.5.7.bb index 5476e2ec22..6139203f10 100644 --- a/packages/hal/hal_0.5.7.bb +++ b/packages/hal/hal_0.5.7.bb @@ -8,7 +8,8 @@ HOMEPAGE = "http://freedesktop.org/Software/hal" LICENSE = "GPL LGPL AFL" PR = "r0" -SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz" +SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz \ + file://dbus-fix-api.patch;patch=1" S = "${WORKDIR}/hal-${PV}" inherit autotools pkgconfig diff --git a/packages/images/ludeos-image.bb b/packages/images/ludeos-image.bb index 669ff49634..0d8443c3e2 100644 --- a/packages/images/ludeos-image.bb +++ b/packages/images/ludeos-image.bb @@ -1 +1,2 @@ -DEPENDS = slugos-image
\ No newline at end of file +DEPENDS = "slugos-image" +COMPATIBLE_MACHINE = "nslu2" diff --git a/packages/images/nylon-image-base.bb b/packages/images/nylon-image-base.bb index 4034590822..5eee653453 100644 --- a/packages/images/nylon-image-base.bb +++ b/packages/images/nylon-image-base.bb @@ -1,5 +1,5 @@ inherit image_ipk -inherit nylon_image +inherit nylon-image LICENSE = MIT export IMAGE_BASENAME = "nylon-base" diff --git a/packages/images/slugos-image.bb b/packages/images/slugos-image.bb index 7073105e24..9ef1e6ee88 100644 --- a/packages/images/slugos-image.bb +++ b/packages/images/slugos-image.bb @@ -6,11 +6,14 @@ DESCRIPTION = "Generic SlugOS image" HOMEPAGE = "http://www.nslu2-linux.org" LICENSE = "MIT" -PR = "r36" +PR = "r37" + +COMPATIBLE_MACHINE = "nslu2" # SLUGOS_IMAGENAME defines the name of the image to be build, if it # is not set this package will be skipped! IMAGE_BASENAME = "${SLUGOS_IMAGENAME}" +IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}" IMAGE_FSTYPES = "jffs2" EXTRA_IMAGECMD_jffs2 = "--pad --${SLUGOS_IMAGESEX} --eraseblock=0x20000 -D ${SLUGOS_DEVICE_TABLE}" IMAGE_LINGUAS = "" @@ -113,26 +116,29 @@ python () { # LinkSys have made "EraseAll" available, however, (this does overwrite RedBoot) # it is a bad idea to produce flash images without a valid RedBoot - that allows # an innocent user upgrade attempt to instantly brick the NSLU2. -PACK_IMAGE += "${@['', 'nslu2_pack_image;'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == 'yes']}" -PACK_IMAGE_DEPENDS += "${@['', 'slugimage-native nslu2-linksys-firmware'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == 'yes']}" +PACK_IMAGE += "${@['', 'nslu2_pack_image;'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == 'nslu2']}" +PACK_IMAGE_DEPENDS += "${@['', 'slugimage-native nslu2-linksys-firmware apex ixp4xx-npe'][bb.data.getVar('SLUGOS_FLASH_IMAGE', d, 1) == 'nslu2']}" NSLU2_SLUGIMAGE_ARGS ?= "" nslu2_pack_image() { - if test '${SLUGOS_FLASH_IMAGE}' = yes + if test '${SLUGOS_FLASH_IMAGE}' = nslu2 then install -d ${DEPLOY_DIR_IMAGE}/slug install -m 0644 ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \ ${STAGING_LIBDIR}/nslu2-binaries/Trailer \ ${STAGING_LIBDIR}/nslu2-binaries/SysConf \ ${DEPLOY_DIR_IMAGE}/slug/ + install -m 0644 ${STAGING_LOADER_DIR}/apex.bin ${DEPLOY_DIR_IMAGE}/slug/ install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-nslu2${ARCH_BYTE_SEX} \ ${DEPLOY_DIR_IMAGE}/slug/vmlinuz install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2 + install -m 0644 ${STAGING_FIRMWARE_DIR}/NPE-B ${DEPLOY_DIR_IMAGE}/slug/ cd ${DEPLOY_DIR_IMAGE}/slug - slugimage -p -b RedBoot -s SysConf -r Ramdisk:1,Flashdisk:flashdisk.jffs2 -t \ - Trailer -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flashdisk.img \ + slugimage -p -b RedBoot -s SysConf -L apex.bin -k vmlinuz \ + -r Flashdisk:flashdisk.jffs2 -m NPE-B -t Trailer \ + -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flashdisk.img \ ${NSLU2_SLUGIMAGE_ARGS} rm -rf ${DEPLOY_DIR_IMAGE}/slug fi diff --git a/packages/images/slugos-imagename.bb b/packages/images/slugos-imagename.bb index 01cca8a0c3..61629d44af 100644 --- a/packages/images/slugos-imagename.bb +++ b/packages/images/slugos-imagename.bb @@ -9,6 +9,7 @@ PACKAGES = "" INHIBIT_DEFAULT_DEPS = "1" SLUGOS_IMAGENAME ?= "slugos" +COMPATIBLE_MACHINE = "nslu2" do_fetch() { } diff --git a/packages/images/unslung-image.bb b/packages/images/unslung-image.bb index 1deab932c7..3fa3607e83 100644 --- a/packages/images/unslung-image.bb +++ b/packages/images/unslung-image.bb @@ -1,7 +1,9 @@ LICENSE = MIT -PR = "r22" +PR = "r25" +COMPATIBLE_MACHINE = "nslu2" IMAGE_BASENAME = "unslung" +IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}" IMAGE_LINGUAS = "" USE_DEVFS = "1" @@ -10,15 +12,17 @@ DEPENDS = "virtual/kernel \ ${UNSLUNG_EXTRA_DEPENDS}" RDEPENDS = "kernel update-modules unslung-rootfs \ - libc6-unslung slingbox ipkg libipkg \ - cpio \ - findutils \ + libc6-unslung slingbox ipkg \ + libipkg \ +# cpio \ +# findutils \ ${UNSLUNG_EXTRA_RDEPENDS}" IPKG_INSTALL = "kernel update-modules unslung-rootfs \ - libc6-unslung slingbox ipkg libipkg \ - cpio \ - findutils \ + libc6-unslung slingbox ipkg \ + libipkg \ +# cpio \ +# findutils \ kernel-module-netconsole \ ${UNSLUNG_EXTRA_INSTALL}" @@ -72,25 +76,26 @@ unslung_clean_image () { ${STRIP} ${IMAGE_ROOTFS}/lib/libgcc_s.so.1 chmod ugo+x ${IMAGE_ROOTFS}/lib/libgcc_s.so.1 +# MJW - experimental right now, but no longer need cpio and find # We need cpio and find, but we don't need any of the other stuff in # the packages (users can install the full package with ipkg after # unsling). Remove the extra files and executables, and clean up # the entries from the ipkg database manually. #-- these are for cpio: - rm -f ${IMAGE_ROOTFS}/usr/bin/mt - rm -rf ${IMAGE_ROOTFS}/usr/libexec - rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/cpio.* - rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/rmt - sed -i -e '/^Package: cpio/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status +# rm -f ${IMAGE_ROOTFS}/usr/bin/mt +# rm -rf ${IMAGE_ROOTFS}/usr/libexec +# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/cpio.* +# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/rmt +# sed -i -e '/^Package: cpio/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status #-- and these for find: - rm -f ${IMAGE_ROOTFS}/usr/bin/locate - rm -f ${IMAGE_ROOTFS}/usr/bin/updatedb - rm -f ${IMAGE_ROOTFS}/usr/bin/xargs - rm -f ${IMAGE_ROOTFS}/usr/bin/xargs.findutils - rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/findutils.* - sed -i -e '/^Package: findutils/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status +# rm -f ${IMAGE_ROOTFS}/usr/bin/locate +# rm -f ${IMAGE_ROOTFS}/usr/bin/updatedb +# rm -f ${IMAGE_ROOTFS}/usr/bin/xargs +# rm -f ${IMAGE_ROOTFS}/usr/bin/xargs.findutils +# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/findutils.* +# sed -i -e '/^Package: findutils/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status # FIXME: change made 24 Jul 2006 by the OE folks changes the "strip" # behavior to create an extra file named .debug/<filename> containing @@ -107,11 +112,11 @@ unslung_clean_image () { rm -rf ${IMAGE_ROOTFS}/usr/bin/.debug rm -rf ${IMAGE_ROOTFS}/usr/sbin/.debug rm -rf ${IMAGE_ROOTFS}/usr/lib/.debug -} -python () { - # Don't build unslung images unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - if mach != 'nslu2': - raise bb.parse.SkipPackage("Unslung only builds for the Linksys NSLU2") +# MJW - Experimental - just to make space; remove before releasing! +# #### Hack to make space for testing! REMOVE THIS! +# rm -rf ${IMAGE_ROOTFS}/etc/samba/codepages/unicode_map.850 +# rm -rf ${IMAGE_ROOTFS}/bin/ftp +# #### End of Hack! + } diff --git a/packages/initscripts/initscripts-1.0/angstrom/.mtn2git_empty b/packages/initscripts/initscripts-1.0/angstrom/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/initscripts/initscripts-1.0/angstrom/.mtn2git_empty diff --git a/packages/initscripts/initscripts-1.0/angstrom/checkroot.sh b/packages/initscripts/initscripts-1.0/angstrom/checkroot.sh new file mode 100755 index 0000000000..e5fc6ed8b5 --- /dev/null +++ b/packages/initscripts/initscripts-1.0/angstrom/checkroot.sh @@ -0,0 +1,201 @@ +# +# checkroot.sh Check to root filesystem. +# +# Version: @(#)checkroot.sh 2.84 25-Jan-2002 miquels@cistron.nl +# + +. /etc/default/rcS + +# +# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned +# from this script *before anything else* with a timeout, like SCO does. +# +test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE + +# +# Ensure that bdflush (update) is running before any major I/O is +# performed (the following fsck is a good example of such activity :). +# +test -x /sbin/update && update + +# +# Read /etc/fstab. +# +exec 9>&0 </etc/fstab +rootmode=rw +rootopts=rw +test "$ENABLE_ROOTFS_FSCK" = yes && rootcheck="yes" || rootcheck="no" +swap_on_md=no +devfs= +while read fs mnt type opts dump pass junk +do + case "$fs" in + ""|\#*) + continue; + ;; + /dev/md*) + # Swap on md device. + test "$type" = swap && swap_on_md=yes + ;; + /dev/*) + ;; + *) + # Might be a swapfile. + test "$type" = swap && swap_on_md=yes + ;; + esac + + test "$type" = devfs && devfs="$fs" + + # Currently we do not care about the other entries + if test "$mnt" = "/" + then + #echo "[$fs] [$mnt] [$type] [$opts] [$dump] [$pass] [$junk]" + + rootopts="$opts" + roottype="$type" + + #The "spinner" is broken on busybox sh + TERM=dumb + + test "$pass" = 0 -o "$pass" = "" && rootcheck=no + + # Enable fsck for ext2 and ext3 rootfs, disable for everything else + case "$type" in + ext2|ext3) rootcheck=yes;; + *) rootcheck=no;; + esac + + if test "$rootcheck" = yes + then + if ! test -x "/sbin/fsck.${roottype}" + then + echo -e "\n * * * WARNING: /sbin/fsck.${roottype} is missing! * * *\n" + rootcheck=no + fi + fi + + case "$opts" in + ro|ro,*|*,ro|*,ro,*) + rootmode=ro + ;; + esac + fi +done +exec 0>&9 9>&- + +# +# Activate the swap device(s) in /etc/fstab. This needs to be done +# before fsck, since fsck can be quite memory-hungry. +# +doswap=no +test -d /proc/1 || mount -n /proc +case "`uname -r`" in + 2.[0123].*) + if test $swap_on_md = yes && grep -qs resync /proc/mdstat + then + test "$VERBOSE" != no && echo "Not activating swap - RAID array resyncing" + else + doswap=yes + fi + ;; + *) + doswap=yes + ;; +esac +if test $doswap = yes +then + test "$VERBOSE" != no && echo "Activating swap" + swapon -a 2> /dev/null +fi + +# +# Check the root filesystem. +# +if test -f /fastboot || test $rootcheck = no +then + test $rootcheck = yes && echo "Fast boot, no filesystem check" +else + # + # Ensure that root is quiescent and read-only before fsck'ing. + # + mount -n -o remount,ro / + if test $? = 0 + then + if test -f /forcefsck + then + force="-f" + else + force="" + fi + if test "$FSCKFIX" = yes + then + fix="-y" + else + fix="-a" + fi + spinner="-C" + case "$TERM" in + dumb|network|unknown|"") spinner="" ;; + esac + test `uname -m` = s390 && spinner="" # This should go away + test "$VERBOSE" != no && echo "Checking root filesystem..." + fsck $spinner $force $fix / + # + # If there was a failure, drop into single-user mode. + # + # NOTE: "failure" is defined as exiting with a return code of + # 2 or larger. A return code of 1 indicates that filesystem + # errors were corrected but that the boot may proceed. + # + if test "$?" -gt 1 + then + # Surprise! Re-directing from a HERE document (as in + # "cat << EOF") won't work, because the root is read-only. + echo + echo "fsck failed. Please repair manually and reboot. Please note" + echo "that the root filesystem is currently mounted read-only. To" + echo "remount it read-write:" + echo + echo " # mount -n -o remount,rw /" + echo + echo "CONTROL-D will exit from this shell and REBOOT the system." + echo + # Start a single user shell on the console + /sbin/sulogin $CONSOLE + reboot -f + fi + else + echo "*** ERROR! Cannot fsck root fs because it is not mounted read-only!" + echo + fi +fi + +# +# If the root filesystem was not marked as read-only in /etc/fstab, +# remount the rootfs rw but do not try to change mtab because it +# is on a ro fs until the remount succeeded. Then clean up old mtabs +# and finally write the new mtab. +# This part is only needed if the rootfs was mounted ro. +# + +if [ $(grep "/dev/root" /proc/mounts | awk '{print $4}') = rw ]; then + exit 0 +fi + + +echo "Remounting root file system..." +mount -n -o remount,$rootmode / +if test "$rootmode" = rw +then + if test ! -L /etc/mtab + then + rm -f /etc/mtab~ /etc/nologin + : > /etc/mtab + fi + mount -f -o remount / + mount -f /proc + test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs" +fi + +: exit 0 diff --git a/packages/initscripts/initscripts-1.0/checkroot.sh b/packages/initscripts/initscripts-1.0/checkroot.sh index 3729072656..df3035371b 100755 --- a/packages/initscripts/initscripts-1.0/checkroot.sh +++ b/packages/initscripts/initscripts-1.0/checkroot.sh @@ -24,7 +24,7 @@ test -x /sbin/update && update exec 9>&0 </etc/fstab rootmode=rw rootopts=rw -rootcheck=no +test "$ENABLE_ROOTFS_FSCK" = yes && rootcheck="yes" || rootcheck="no" swap_on_md=no devfs= while read fs mnt type opts dump pass junk @@ -44,15 +44,43 @@ do test "$type" = swap && swap_on_md=yes ;; esac + test "$type" = devfs && devfs="$fs" - test "$mnt" != / && continue - rootopts="$opts" - test "$pass" = 0 -o "$pass" = "" && rootcheck=no - case "$opts" in - ro|ro,*|*,ro|*,ro,*) - rootmode=ro - ;; - esac + + # Currently we do not care about the other entries + if test "$mnt" = "/" + then + #echo "[$fs] [$mnt] [$type] [$opts] [$dump] [$pass] [$junk]" + + rootopts="$opts" + roottype="$type" + + #The "spinner" is broken on busybox sh + TERM=dumb + + test "$pass" = 0 -o "$pass" = "" && rootcheck=no + + # Enable fsck for ext2 and ext3 rootfs, disable for everything else + case "$type" in + ext2|ext3) rootcheck=yes;; + *) rootcheck=no;; + esac + + if test "$rootcheck" = yes + then + if ! test -x "/sbin/fsck.${roottype}" + then + echo -e "\n * * * WARNING: /sbin/fsck.${roottype} is missing! * * *\n" + rootcheck=no + fi + fi + + case "$opts" in + ro|ro,*|*,ro|*,ro,*) + rootmode=ro + ;; + esac + fi done exec 0>&9 9>&- @@ -122,6 +150,12 @@ else # if test "$?" -gt 1 then + + # Since this script is run very early in the boot-process, it should be safe to assume that the + # output is printed to VT1. However, some distributions use a bootsplash to hide the "ugly" boot + # messages and having the bootsplash "hang" due to a waiting fsck prompt is less than ideal + chvt 1 + # Surprise! Re-directing from a HERE document (as in # "cat << EOF") won't work, because the root is read-only. echo diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb index 005b8cfab6..73c02e5ec5 100644 --- a/packages/initscripts/initscripts_1.0.bb +++ b/packages/initscripts/initscripts_1.0.bb @@ -5,7 +5,7 @@ DEPENDS = "makedevs" DEPENDS_openzaurus = "makedevs virtual/kernel" RDEPENDS = "makedevs" LICENSE = "GPL" -PR = "r77" +PR = "r81" SRC_URI = "file://halt \ file://ramdisk \ diff --git a/packages/ipatience/.mtn2git_empty b/packages/ipatience/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/ipatience/.mtn2git_empty diff --git a/packages/ipatience/files/.mtn2git_empty b/packages/ipatience/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/ipatience/files/.mtn2git_empty diff --git a/packages/ipatience/files/fix-make.patch b/packages/ipatience/files/fix-make.patch new file mode 100644 index 0000000000..3e3ad80eef --- /dev/null +++ b/packages/ipatience/files/fix-make.patch @@ -0,0 +1,569 @@ +diff -urNd ../ipatience-0.1-r2/ipatience/build/Makefile.dpkg_ipkg ipatience/build/Makefile.dpkg_ipkg +--- ../ipatience-0.1-r2/ipatience/build/Makefile.dpkg_ipkg 1970-01-01 00:00:00.000000000 +0000 ++++ ipatience/build/Makefile.dpkg_ipkg 2006-11-08 16:41:55.000000000 +0000 +@@ -0,0 +1,114 @@ ++## Please read the README in this directory to see how to use this ++## Makefile snippet ++ ++# Let's use whatever clean target the specific app provides ++ ++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi` ++ ++# URL to source tarball ++SOURCE = ftp://gpe.handhelds.org/projects/gpe/source/$(PACKAGE)-$(VERSION).tar.gz ++ ++# can change this to e.g. /var/tmp/deb ++DEB_PATH = ../deb ++ ++ifeq ($(CVSBUILD),yes) ++LIBGPEWIDGET_PC = libgpewidget-uninstalled ++PC_EXTRA=PKG_CONFIG_PATH=../../base/libgpewidget ++else ++LIBGPEWIDGET_PC = libgpewidget ++endif ++ ++ifeq ($(IN_LIBGPEWIDGET),) ++GPECFLAGS = $(shell $(PC_EXTRA) pkg-config --cflags $(LIBGPEWIDGET_PC)) ++GPELIBS = $(shell $(PC_EXTRA) pkg-config --libs $(LIBGPEWIDGET_PC)) ++endif ++ ++GTKCFLAGS = $(shell pkg-config --cflags gtk+-2.0) ++GTKLIBS = $(shell pkg-config --libs gtk+-2.0) ++ ++STANDARD_CPPFLAGS = -D_GNU_SOURCE -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\" ++STANDARD_CFLAGS = -MD -Wall ++ ++ifeq ($(DEBUG),yes) ++CFLAGS += -O2 -g ++LDFLAGS = -g ++else ++CFLAGS += -Os -fomit-frame-pointer ++endif ++ ++dist: check-source clean dist-prep ++ rm -rf ../$(PACKAGE)-$(VERSION) ++ mkdir ../$(PACKAGE)-$(VERSION) ++ ( tar cf - --exclude "*/CVS" --exclude CVS --exclude "*~" --exclude "#*#" --exclude "debian" --exclude ".*" --exclude "*.ipk" --exclude "*.ipk.*" --exclude "*.mo" --exclude "*.batch" --exclude "translation-ipkgs.txt" * ) | (cd ../$(PACKAGE)-$(VERSION); tar xf -) ++ ( if [ -f linguas ]; then LINGUAS=`cat linguas`; PATCH_LINGUAS="s:^LINGUAS =.*:LINGUAS = $${LINGUAS}:"; fi; cd ../$(PACKAGE)-$(VERSION) && mkdir build && cp $(BUILD)/Makefile.dpkg_ipkg $(BUILD)/Makefile.translation build/ && sed "s:^CVSBUILD =.*:CVSBUILD = no:;s:^DEBUG =.*:DEBUG = no:;s:Makefile.translation-auto-linguas:Makefile.translation:;$${PATCH_LINGUAS}" < Makefile > Makefile.new && mv Makefile.new Makefile ) ++ ( cd .. ; tar cf - $(PACKAGE)-$(VERSION) | gzip -9 >$(PACKAGE)-$(VERSION).tar.gz ) ++ rm -rf ../$(PACKAGE)-$(VERSION) ++ $(MAKE) printinfo ++ ++dist-upload: dist ++ scp ../$(PACKAGE)-$(VERSION).tar.gz $(USER)@handhelds.org:/home/ftp/projects/gpe/source/ ++ ++dist-prep: ++ipkg-prep: ++install-mo: ++# empty, can be filled in Makefile.translation ++ ++install: install-program install-mo ++ ++clean-dist: ++ rm -rf familiar/dist familiar/dist.list ++ ++clean: clean-dist ++ ++check-source: ++ @if [ -f familiar/$(CONTROL) ] && ! grep -q '^Source:' familiar/$(CONTROL); then echo -e "\nNo Source: field in control file. Aborting.\n"; exit 1; fi ++ ++ipkg: check-source ipkg-prep clean ++ rm -rf familiar/dist ++ mkdir -p familiar/dist/CONTROL ++ sed 's:VERSION:$(VERSION):;s$$SOURCE$$$(SOURCE)$$' < familiar/$(CONTROL) > familiar/dist/CONTROL/control ++ if test -e familiar/conffiles; then install -m 644 familiar/conffiles familiar/dist/CONTROL; fi ++ if test -e familiar/preinst; then install familiar/preinst familiar/dist/CONTROL; fi ++ if test -e familiar/postinst; then install familiar/postinst familiar/dist/CONTROL; fi ++ if test -e familiar/prerm; then install familiar/prerm familiar/dist/CONTROL; fi ++ if test -e familiar/postrm; then install familiar/postrm familiar/dist/CONTROL; fi ++ $(MAKE) DESTDIR=`pwd`/familiar/dist PREFIX=/usr prefix=/usr DEBUG=no install-program ++ rm -rf familiar/dist.list ++ ipkg-build -o 0 -g 0 familiar/dist | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> familiar/dist.list ++ if [ "x$(LINGUAS)" != "x" ]; then make translation-ipkg; tr ' ' '\n' < translation-ipkgs.txt >> familiar/dist.list; fi ++ md5sum `cat familiar/dist.list` > $(PACKAGE)_$(VERSION).batch ++ rm -rf familiar/dist familiar/dist.list ++ $(MAKE) printinfo ++ ++dpkg: dist ++ mkdir -p $(DEB_PATH) ++ ( olddir=`pwd`; cd $(DEB_PATH); rm -rf $(PACKAGE)-$(VERSION); ln -s $$olddir/../$(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz ; tar xzf $(PACKAGE)_$(VERSION).orig.tar.gz ) ++ mkdir -p $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian ++ for i in debian/*; do if test -f $$i; then cp $$i $(DEB_PATH)/$(PACKAGE)-$(VERSION)/debian/; fi; done ++ ++CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_]) ++printinfo: ++ @printf '-------------------------------------------------------------------------------\n' ++ @printf "If this becomes a package release, please add a CVS tag.\n" ++ @printf "You can use 'make tag' for that, it will execute\n" ++ @printf " cvs tag %s\n" $(CVSTAG) ++ @printf "Please upload a tarball (created with 'make dist') to\n" ++ @printf " ftp://ftp.handhelds.org/pub/projects/gpe/\n" ++ @printf " (handhelds.org:~ftp/pub/projects/gpe/source)\n" ++ @printf "You can use 'make dist-upload' to do that.\n" ++ @printf "You are currently known as USER %s.\n" $(USER) ++ @printf '-------------------------------------------------------------------------------\n' ++ ++tag: check-source ++ cvs tag $(CVSTAG) ++ ++retag: check-source ++ cvs tag -F $(CVSTAG) ++ ++source: tag dist-upload ++ ++%.pc: %.pc.in ++ sed 's:PREFIX:$(PREFIX):;s:BUILDDIR:$(shell pwd):;s:VERSION:$(VERSION):' < $< > $@ ++ ++.c.o:; ++ $(CC) $(CFLAGS) $(CPPFLAGS) $(PACKAGE_CFLAGS) $(PACKAGE_CPPFLAGS) -c $< -o $@ +diff -urNd ../ipatience-0.1-r2/ipatience/build/Makefile.translation ipatience/build/Makefile.translation +--- ../ipatience-0.1-r2/ipatience/build/Makefile.translation 1970-01-01 00:00:00.000000000 +0000 ++++ ipatience/build/Makefile.translation 2006-11-08 16:41:55.000000000 +0000 +@@ -0,0 +1,107 @@ ++.SUFFIXES: .mo .po .pot .po8 ++ ++CONTROL = `if test -e familiar/control1; then echo control1; else echo control; fi` ++ ++# use ipkg-build or ipkg-deb-build ++IPKG_BUILD := ipkg-build ++ ++TRANSLATION_SITE := http://www.iro.umontreal.ca/~gnutra/maint ++ ++ifeq ($(DIR_PO),) ++DIR_PO := po ++endif ++ ++ifeq ($(BINPACKAGE),) ++BINPACKAGE := $(PACKAGE) ++endif ++ ++mo-files = $(patsubst %,$(DIR_PO)/%.mo,$(LINGUAS)) ++po-files = $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS)) ++ ++ifeq ($(shell if [ -f $(PACKAGE).desktop.in ]; then echo present; fi;),present) ++desktop-files += $(PACKAGE).desktop ++endif ++ ++ifneq ($(EXTRA_DESKTOPS),) ++desktop-files += $(patsubst %.desktop.in,%.desktop,$(EXTRA_DESKTOPS)) ++endif ++ ++all-mo: $(mo-files) ++ ++all-desktop: $(desktop-files) ++ ++install-mo: all-mo ++ if [ "$(ENABLE_NLS)" != "no" ]; then \ ++ if [ "x$(LINGUAS)" != "x" ]; then \ ++ for i in $(LINGUAS); do mkdir -p $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES; install -m 644 $(DIR_PO)/$$i.mo $(DESTDIR)$(PREFIX)/share/locale/$$i/LC_MESSAGES/$(PACKAGE).mo; done \ ++ fi; \ ++ fi; ++ ++.po8.mo:; ++ if [ "$(ENABLE_NLS)" != "no" ]; then \ ++ msgfmt -o $@ $<; \ ++ fi; ++ ++.po.po8:; ++ CTYPE=`grep "^\"Content-Type:" $< | sed 's/^.*charset=//;s/\\\\.*//'`; sed "s/\(Content-Type: .*=\)$$CTYPE/\1UTF-8/" < $< | iconv -f $${CTYPE} -t UTF-8 >$@ ++ ++update-po: $(po-files) extract-po ++ ++dist-prep: update-po freshen-po ++# empty ++ ++ifeq ($(CVSBUILD),yes) ++ipkg-prep: freshen-po ++# empty ++endif ++ ++extract-po: ++ mkdir -p $(DIR_PO) ++ ( SOURCES="$(SOURCES)"; for DESK in $(PACKAGE).desktop.in $(EXTRA_DESKTOPS); do if [ -f $$DESK ]; then intltool-extract --type=gettext/ini $$DESK; SOURCES="$$SOURCES $${DESK}.h"; fi; done; if [ "x$$SOURCES" != "x" ]; then xgettext --add-comments=TRANSLATORS: -k_ -kN_ -o $(DIR_PO)/$(PACKAGE).pot.new $$SOURCES; fi ) ++ if [ -f $(DIR_PO)/$(PACKAGE).pot.new ]; then if cmp -s $(DIR_PO)/$(PACKAGE).pot.new $(PACKAGE).pot; then rm $(DIR_PO)/$(PACKAGE).pot.new; else mv $(DIR_PO)/$(PACKAGE).pot.new $(DIR_PO)/$(PACKAGE).pot; fi; fi ++ ++clean: clean-po clean-dist-translation ++ ++clean-po: ++ rm -rf $(DIR_PO)/*.mo ++ for i in $(desktop-files); do if [ -f $$i.in ]; then rm -f $$i; rm -f $$i.in.h; fi; done ++ ++%.desktop: %.desktop.in $(patsubst %,$(DIR_PO)/%.po,$(LINGUAS)) ++ intltool-merge -u -d $(DIR_PO) $< $@ ++ ++freshen-po: ++ rm -rf tmp-po ++ mkdir tmp-po ++ cd tmp-po; for LANG in $(LINGUAS); do wget $(TRANSLATION_SITE)/$(PACKAGE)/$$LANG.po; done ++ for LANG in $(LINGUAS); do if [ ! -f $(DIR_PO)/$$LANG.po ] || ! cmp -s $(DIR_PO)/$$LANG.po tmp-po/$$LANG.po ; then mv tmp-po/$$LANG.po $(DIR_PO)/$$LANG.po; echo "Updated $$LANG translation"; fi; done ++ rm -rf tmp-po ++ ++# ------------------------------------------------------------------------ ++ ++MAINTAINER = $(shell grep 'Maintainer: ' familiar/$(CONTROL) | cut -d ' ' -f 2-) ++ ++ifndef BUILD ++BUILD = ../build ++endif ++ ++transdist := familiar/dist-translation ++templates := $(BUILD)/familiar ++ipkglist := translation-ipkgs.txt ++ ++clean-dist-translation: ++ rm -rf $(transdist) $(ipkglist) ++ ++real-translation-package: all-mo ++ rm -rf $(transdist) $(ipkglist) ++ for LINGUA in $(LINGUAS); do \ ++ i=$$(echo $$LINGUA | tr '[A-Z_]' '[a-z+]'); \ ++ mkdir -p $(transdist)/$$i/CONTROL; \ ++ mkdir -p $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES; \ ++ install -m 644 po/$$LINGUA.mo $(transdist)/$$i$(PREFIX)/share/locale/$$LINGUA/LC_MESSAGES/$(PACKAGE).mo; \ ++ sed -e "s/<maintainer>/$(MAINTAINER)/;s/<package>/$(BINPACKAGE)/;s/<version>/$(VERSION)/;s/<language>/$$i/;s!<source>!$(SOURCE)!" $(templates)/control.translation > $(transdist)/$$i/CONTROL/control; \ ++ install $(templates)/postinst.translation $(transdist)/$$i/CONTROL/postinst; \ ++ $(IPKG_BUILD) -g 0 -o 0 $(transdist)/$$i | sed 's/^Packaged .*into //; t 1; d; : 1; s:.*/::' >> $(ipkglist); \ ++ done ++ ++translation-ipkg: ++ make PREFIX=/usr real-translation-package +diff -urNd ../ipatience-0.1-r2/ipatience/Imakefile ipatience/Imakefile +--- ../ipatience-0.1-r2/ipatience/Imakefile 2001-01-31 05:25:03.000000000 +0000 ++++ ipatience/Imakefile 1970-01-01 00:00:00.000000000 +0000 +@@ -1,11 +0,0 @@ +-LOCAL_LIBRARIES=-lfltk $(XFTLIB) $(XLIB) -lm +-SRCS=main.cc table.cc cards.cc\ +- aces.cc calc.cc canfield.cc eight.cc freecell.cc \ +- golf.cc klondike.cc montana.cc spider.cc spiderette.cc \ +- tabby.cc towers.cc vegas.cc wish.cc yukon.cc +-OBJS=main.o table.o cards.o \ +- aces.o calc.o canfield.o eight.o freecell.o \ +- golf.o klondike.o montana.o spider.o spiderette.o \ +- tabby.o towers.o vegas.o wish.o yukon.o +- +-ComplexProgramTarget(ipatience) +diff -urNd ../ipatience-0.1-r2/ipatience/ipatience.desktop ipatience/ipatience.desktop +--- ../ipatience-0.1-r2/ipatience/ipatience.desktop 1970-01-01 00:00:00.000000000 +0000 ++++ ipatience/ipatience.desktop 2006-11-11 15:59:25.000000000 +0000 +@@ -0,0 +1,9 @@ ++[Desktop Entry] ++Name=Ipatience ++Comment=The Patience Game ++Exec=ipatience -small ++Terminal=0 ++Type=Application ++Icon=ipatience.xpm ++Categories=Games ++StartupNotify=True +diff -urNd ../ipatience-0.1-r2/ipatience/ipatience.xpm ipatience/ipatience.xpm +--- ../ipatience-0.1-r2/ipatience/ipatience.xpm 1970-01-01 00:00:00.000000000 +0000 ++++ ipatience/ipatience.xpm 2006-11-11 15:58:52.000000000 +0000 +@@ -0,0 +1,194 @@ ++/* XPM */ ++static char * ipatience_xpm[] = { ++"32 32 159 2", ++" c None", ++". c #000000", ++"+ c #181817", ++"@ c #525251", ++"# c #595959", ++"$ c #464644", ++"% c #0D0D0D", ++"& c #F4F4F1", ++"* c #ECEDEB", ++"= c #E6E9E9", ++"- c #F1F1EE", ++"; c #D5D3D0", ++"> c #151515", ++", c #748AA2", ++"' c #71879E", ++") c #6E839A", ++"! c #6C8197", ++"~ c #657B92", ++"{ c #95A4B4", ++"] c #D9D8D5", ++"^ c #4D6780", ++"/ c #3B4B5C", ++"( c #39414A", ++"_ c #344353", ++": c #494E53", ++"< c #616364", ++"[ c #1C1C1C", ++"} c #5C738A", ++"| c #41596F", ++"1 c #4E5152", ++"2 c #DEDEDB", ++"3 c #E0DFDB", ++"4 c #E2E2DE", ++"5 c #E5E5E3", ++"6 c #BCBBB8", ++"7 c #546C82", ++"8 c #59636D", ++"9 c #B5BEC7", ++"0 c #99A9B9", ++"a c #97A7B8", ++"b c #909FAF", ++"c c #364D62", ++"d c #5F6163", ++"e c #3E576C", ++"f c #3E5266", ++"g c #384757", ++"h c #8B8B8A", ++"i c #495D73", ++"j c #456079", ++"k c #2F4457", ++"l c #A1A09F", ++"m c #999896", ++"n c #9B9B9A", ++"o c #A3A3A2", ++"p c #4D4D4C", ++"q c #445B71", ++"r c #D4CBC6", ++"s c #777572", ++"t c #ADABA7", ++"u c #EAE9E6", ++"v c #52677C", ++"w c #334A5E", ++"x c #4C667E", ++"y c #94928F", ++"z c #6A6967", ++"A c #D3D1CD", ++"B c #E8E7E2", ++"C c #6B7F95", ++"D c #4D6276", ++"E c #5C7186", ++"F c #959593", ++"G c #686765", ++"H c #585654", ++"I c #B0AFAD", ++"J c #394E62", ++"K c #A19F9C", ++"L c #DAD7D3", ++"M c #ADADA9", ++"N c #283745", ++"O c #D3C3BC", ++"P c #C48F7D", ++"Q c #C88167", ++"R c #C8866E", ++"S c #CA9989", ++"T c #677B8F", ++"U c #62778C", ++"V c #CD7C60", ++"W c #ED8247", ++"X c #FB9B53", ++"Y c #F58E4B", ++"Z c #DF6F3C", ++"` c #E97B42", ++" . c #F88D4A", ++".. c #D85B31", ++"+. c #E5E7E8", ++"@. c #C39587", ++"#. c #FEA458", ++"$. c #F47C3F", ++"%. c #F4763B", ++"&. c #EE612E", ++"*. c #E44C22", ++"=. c #C1492E", ++"-. c #C2AAA3", ++";. c #BD7A67", ++">. c #F98442", ++",. c #F26C35", ++"'. c #E9592A", ++"). c #E2431D", ++"!. c #DC3C1A", ++"~. c #D63113", ++"{. c #C54022", ++"]. c #B3948C", ++"^. c #5B6E82", ++"/. c #BC887A", ++"(. c #E2582B", ++"_. c #ED5727", ++":. c #D83817", ++"<. c #D32D12", ++"[. c #CD240D", ++"}. c #C71A08", ++"|. c #CE2F12", ++"1. c #BD482C", ++"2. c #B9A49E", ++"3. c #B9C1C5", ++"4. c #9CA3A7", ++"5. c #6B6A69", ++"6. c #2A3846", ++"7. c #CBC3BF", ++"8. c #BE533A", ++"9. c #CB2A0F", ++"0. c #C93F1D", ++"a. c #AE6B5A", ++"b. c #CDCBC8", ++"c. c #302F2E", ++"d. c #8A8987", ++"e. c #53697C", ++"f. c #CA1D0A", ++"g. c #C33C1C", ++"h. c #C5BCB8", ++"i. c #C6B4AE", ++"j. c #B05D4D", ++"k. c #C42D14", ++"l. c #B73F22", ++"m. c #A87164", ++"n. c #85929D", ++"o. c #7C8B97", ++"p. c #44566A", ++"q. c #B36A5B", ++"r. c #C8371A", ++"s. c #B34428", ++"t. c #A57F75", ++"u. c #CBC9C7", ++"v. c #A88178", ++"w. c #868683", ++"x. c #7F7F7D", ++"y. c #C6C5C2", ++"z. c #72716F", ++"A. c #262625", ++"B. c #50504F", ++" ", ++" . . . . . . . . . . . . . . . . . ", ++" . + @ # # # # # # # # # # # # # $ % . . ", ++" . @ & * * = * * = = * * = = * - ; > . . . ", ++" . # * , , , , ' ' ) ) ! ! ! ~ { ] + . . ", ++" . # = ~ ^ / ( ( _ ( ( ( ( ( ( : < [ + + > . . . ", ++" . # = } | 1 ] ] 2 2 2 2 2 2 2 2 2 3 4 5 6 % . . . ", ++" . # = ' 7 8 - 9 0 0 a a a a { { { { b 9 2 + . . ", ++" . # = 7 c d = ! } 7 e : f / / / / g g 8 h % . . . . . ", ++" . # = ~ i < = 7 j k d l m n o l l l l o o o o o o p . . . ", ++" . # = ~ q < = ' ~ / o r s t 4 4 4 u u u * * * & & m . . . ", ++" . # = v w d = } x k o y z z A 4 4 4 4 4 4 B u = - m . . . ", ++" . # = C D < = E x k F G G H I 4 4 4 4 B u u u = & m . . . ", ++" . # = 7 J < = ! ~ / h K L M l r 3 4 4 L L 5 * * & n . . . ", ++" . # = 7 / < = x q N n 4 3 O P Q R S S Q Q S L * - n . . . ", ++" . # = T i < = U 7 _ o u r V W X Y Z ` .` ..P ] - m . . . ", ++" . # +.D k d = U 7 ( o B @.` #.X .$.$.%.&.*.=.-.- n . . . ", ++" . # = E f d = D e N o 3 ;.$.>.,.'.'.).!.~.~.{.].* n . . . ", ++" . # = ^.f d = T } g l 5 /.(._.).:.:.<.[.}.|.1.2.- n . . . ", ++" . # & 3.4.5.= v q 6.o * 7.8.!.<.<.[.[.}.9.0.a.b.- m . . . ", ++" . c.F l d.G 5 e.q N o & u -.8.|.[.f.}.9.g.a.h.5 & m . . . ", ++" . . . . . # = E v ( o & u 4 i.j.k.[.9.l.m.7.5 * & n . . . ", ++" . . . . # * n.o.p.l & u * u 7.q.r.s.t.u.A 5 - 2 h . . . ", ++" . . . . $ A L 3 h o & - * * u r q.v.A * t F b.w.x.. . . ", ++" . . + + + % o & * * * * u ; L u - y.@ # s F . . . ", ++" . . . . . o & * * * * * * * * * u w.z.I n . . . ", ++" . . . . . F & - * * * - * - * - - u.m 4 h . . . ", ++" . . . A.B.@ B.@ B.B.@ @ @ B.@ @ @ @ A.. . . ", ++" . . . . . . . . . . . . . . . . . . . . ", ++" . . . . . . . . . . . . . . . . . . . ", ++" . . . . . . . . . . . . . . . . . . . ", ++" "}; +diff -urNd ../ipatience-0.1-r2/ipatience/main.cc ipatience/main.cc +--- ../ipatience-0.1-r2/ipatience/main.cc 2001-02-09 08:15:27.000000000 +0000 ++++ ipatience/main.cc 2006-11-02 16:37:55.000000000 +0000 +@@ -549,7 +549,7 @@ + + int main (int argc, char **argv) { + int i; +- small = -1; ++ small = 0; + Fl::args(argc,argv,i,arg_cb); + fl_open_display (); + if (small == -1) +diff -urNd ../ipatience-0.1-r2/ipatience/Makefile ipatience/Makefile +--- ../ipatience-0.1-r2/ipatience/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ ipatience/Makefile 2006-11-10 18:03:49.000000000 +0000 +@@ -0,0 +1,39 @@ ++PREFIX = /usr ++PACKAGE = ipatience ++DEBUG = no ++CVSBUILD = no ++VERSION = 0.10 ++ ++MEMBERS = main aces calc canfield cards eight freecell golf klondike main montana spider spiderette tabby table towers vegas wish yukon ++ ++PACKAGE_CPPFLAGS += $(STANDARD_CPPFLAGS) ++PACKAGE_CFLAGS += $(STANDARD_CFLAGS) ++PACKAGE_LDFLAGS += $(STANDARD_LDFLAGS) -lfltk -lm ++ ++DEPS = $(patsubst %,%.d,$(MEMBERS)) ++OBJS = $(patsubst %,%.o,$(MEMBERS)) ++SOURCES = $(patsubst %,%.cc,$(MEMBERS)) ++ ++ifeq ($(CVSBUILD),yes) ++BUILD = ../build ++else ++BUILD = build ++endif ++ ++all: ipatience ++ ++ipatience: $(OBJS) ++ $(CXX) -o $@ $^ $(LDFLAGS) $(PACKAGE_LDFLAGS) ++ ++install-program: all ipatience.desktop ++ install -d $(DESTDIR)$(PREFIX)/bin ++ install -s ipatience $(DESTDIR)$(PREFIX)/bin/ipatience ++ install -d $(DESTDIR)$(PREFIX)/share/applications ++ install -m 644 ipatience.desktop $(DESTDIR)$(PREFIX)/share/applications/ ++ install -D -m 644 ipatience.xpm $(DESTDIR)$(PREFIX)/share/pixmaps/ipatience.xpm ++ ++clean: ++ rm -f ipatience $(OBJS) $(DEPS) *.ipk *~ *.bak ++ ++include $(BUILD)/Makefile.dpkg_ipkg ++-include $(DEPS) +diff -urNd ../ipatience-0.1-r2/ipatience/table.cc ipatience/table.cc +--- ../ipatience-0.1-r2/ipatience/table.cc 2001-06-22 00:32:12.000000000 +0000 ++++ ipatience/table.cc 2006-11-10 17:06:56.000000000 +0000 +@@ -231,9 +231,9 @@ + suit_bitmap = suit[Suit(card) >> 4]; + + if (rank_bitmap != 0) +- rank_width = rank_bitmap->w; ++ rank_width = (short) rank_bitmap->w(); + if (suit_bitmap != 0) +- suit_width = suit_bitmap->w; ++ suit_width = (short) suit_bitmap->w(); + + if (horizontal) + { +@@ -723,7 +723,7 @@ + } + + static PatI +-abs (PatI x) ++absx (PatI x) + { + return x >= 0 ? x : -x; + } +@@ -735,7 +735,7 @@ + game.srcCard != NullIndex) + { + if (getTimeInMillis () >= downTime + TRACK_TIMEOUT || +- abs (x - downX) > TRACK_BOX || abs (y - downY) > TRACK_BOX) ++ absx (x - downX) > TRACK_BOX || absx (y - downY) > TRACK_BOX) + { + tracking = CardStartAnimate (x, y, + game.srcStack, +@@ -985,17 +985,17 @@ + cardLabelHeight = 0; + for (i = 0; i < 13; i++) + { +- if (rank[0]->w > cardLabelWidth) +- cardLabelWidth = rank[0]->w; +- if (rank[0]->h > cardLabelHeight) +- cardLabelHeight = rank[0]->h; ++ if (rank[0]->w() > cardLabelWidth) ++ cardLabelWidth = rank[0]->w(); ++ if (rank[0]->h() > cardLabelHeight) ++ cardLabelHeight = rank[0]->h(); + } + for (i = 0; i < 4; i++) + { +- if (suit[0]->w > cardLabelWidth) +- cardLabelWidth = suit[0]->w; +- if (suit[0]->h > cardLabelHeight) +- cardLabelHeight = suit[0]->h; ++ if (suit[0]->w() > cardLabelWidth) ++ cardLabelWidth = suit[0]->w(); ++ if (suit[0]->h() > cardLabelHeight) ++ cardLabelHeight = suit[0]->h(); + } + } + else diff --git a/packages/ipatience/ipatience_0.1.bb b/packages/ipatience/ipatience_0.1.bb new file mode 100644 index 0000000000..b223437b19 --- /dev/null +++ b/packages/ipatience/ipatience_0.1.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Patience game" +LICENSE = "GPL" +SECTION = "x11" +PRIORITY = "optional" +DEPENDS = "virtual/libx11 xft libxtst libxpm fltk" +PR = "r0" + +SRC_URI = "cvs://anoncvs@keithp.com/local/src/CVS;method=pserver;module=ipatience \ + file://fix-make.patch;patch=1" + +S = "${WORKDIR}/${PN}" + +inherit autotools + diff --git a/packages/ixp4xx/ixp4xx-npe_2.3.bb b/packages/ixp4xx/ixp4xx-npe_2.3.bb index 039308ac47..dcff23b645 100644 --- a/packages/ixp4xx/ixp4xx-npe_2.3.bb +++ b/packages/ixp4xx/ixp4xx-npe_2.3.bb @@ -1,6 +1,6 @@ DESCRIPTION = "NPE firmware for the IXP4xx line of devices" LICENSE = "Intel Public Licence" -PR = "r6" +PR = "r8" DEPENDS = "ixp4xx-npe-native" SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400NpeLibrary-2_3.zip" @@ -26,3 +26,8 @@ do_install() { install ${S}/NPE-B ${D}/${base_libdir}/firmware/ } +do_populate_staging() { + install -d ${STAGING_FIRMWARE_DIR} + install ${S}/NPE-B ${STAGING_FIRMWARE_DIR}/ +} + diff --git a/packages/jpeg/jpeg_6b.bb b/packages/jpeg/jpeg_6b.bb index 659a5147bb..342197c8ad 100644 --- a/packages/jpeg/jpeg_6b.bb +++ b/packages/jpeg/jpeg_6b.bb @@ -1,11 +1,12 @@ -PR = "r4" +DESCRIPTION = "libjpeg is a library for handling the JPEG (JFIF) image format." +LICENSE ="jpeg" SECTION = "libs" PRIORITY = "required" + DEPENDS = "libtool-cross" -DESCRIPTION = "libjpeg is a library for handling the JPEG (JFIF) image format." -PACKAGES += "jpeg-tools " -FILES_jpeg-tools = "${bindir}/*" -LICENSE ="jpeg" + +PR = "r5" + SRC_URI = "http://www.ijg.org/files/jpegsrc.v${PV}.tar.gz \ file://debian.patch;patch=1 \ file://ldflags.patch;patch=1 \ @@ -33,3 +34,8 @@ do_install() { ${D}${mandir}/man1 ${D}${libdir} oe_runmake 'DESTDIR=${D}' install } + +PACKAGES =+ "jpeg-tools " +FILES_jpeg-tools = "${bindir}/*" + + diff --git a/packages/libao/libao-alsa_0.8.6.bb b/packages/libao/libao-alsa_0.8.6.bb index b1b7e0e4c2..5af8fa687a 100644 --- a/packages/libao/libao-alsa_0.8.6.bb +++ b/packages/libao/libao-alsa_0.8.6.bb @@ -4,8 +4,7 @@ HOMEPAGE = "http://www.xiph.org/ao/" SECTION = "libs" PRIORITY = "optional" DEPENDS = "alsa-lib libao" -RDEPENDS = "libao2 (>=${PV})" -PR = "r1" +PR = "r2" SRC_URI = "http://downloads.xiph.org/releases/ao/libao-${PV}.tar.gz" S = "${WORKDIR}/libao-${PV}" diff --git a/packages/libao/libao-plugin-alsa_0.8.6.bb b/packages/libao/libao-plugin-alsa_0.8.6.bb index 91cbc6f2d3..86dc4afc14 100644 --- a/packages/libao/libao-plugin-alsa_0.8.6.bb +++ b/packages/libao/libao-plugin-alsa_0.8.6.bb @@ -4,10 +4,9 @@ HOMEPAGE = "http://www.xiph.org/ao/" SECTION = "libs" PRIORITY = "optional" DEPENDS = "alsa-lib libao" -RDEPENDS = "libao2 (>=${PV})" PROVIDES = "libao-alsa" PACKAGES = "libao-alsa libao-alsa-dev" -PR = "r2" +PR = "r3" SRC_URI = "http://downloads.xiph.org/releases/ao/libao-${PV}.tar.gz" S = "${WORKDIR}/libao-${PV}" diff --git a/packages/libiconv/libiconv_1.9.2.bb b/packages/libiconv/libiconv_1.9.2.bb index 4f8f694e07..059d5fd4c5 100644 --- a/packages/libiconv/libiconv_1.9.2.bb +++ b/packages/libiconv/libiconv_1.9.2.bb @@ -1,11 +1,11 @@ DESCRIPTION = "GNU libiconv - libiconv is for you if your application needs to support \ multiple character encodings, but that support lacks from your system." HOMEPAGE = "http://www.gnu.org/software/libiconv" -SECTION = "e/libs" +SECTION = "libs" PRIORITY = "optional" NOTES = "Needs to be stripped down to: ascii iso8859-1 eucjp iso-2022jp gb utf8" PROVIDES = "virtual/libiconv" -PR = "r3" +PR = "r4" LICENSE = "LGPL" SRC_URI = "ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-${PV}.tar.gz" diff --git a/packages/libpcre/libpcre-native_4.4.bb b/packages/libpcre/libpcre-native_4.4.bb index 7be8ffd0ac..a1813423c0 100644 --- a/packages/libpcre/libpcre-native_4.4.bb +++ b/packages/libpcre/libpcre-native_4.4.bb @@ -2,3 +2,7 @@ SECTION = "unknown" require libpcre_${PV}.bb inherit native FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libpcre-${PV}" + +# NOTE: multiple providers are available (libpcre, libpcre-native); +# NOTE: consider defining PREFERRED_PROVIDER_pcre +PROVIDES = "" diff --git a/packages/libpcre/libpcre_4.4.bb b/packages/libpcre/libpcre_4.4.bb index 941888577b..7b841d0cfc 100644 --- a/packages/libpcre/libpcre_4.4.bb +++ b/packages/libpcre/libpcre_4.4.bb @@ -10,6 +10,8 @@ LICENSE = "BSD" SRC_URI = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${PV}.tar.bz2" S = "${WORKDIR}/pcre-${PV}" +PROVIDES = "pcre" + inherit autotools binconfig PARALLEL_MAKE = "" diff --git a/packages/linux/ixp4xx-kernel_2.6.19-rc3.bb b/packages/linux/ixp4xx-kernel_2.6.19-rc5.bb index 3b1453c38b..bfb9dccb80 100644 --- a/packages/linux/ixp4xx-kernel_2.6.19-rc3.bb +++ b/packages/linux/ixp4xx-kernel_2.6.19-rc5.bb @@ -6,7 +6,7 @@ # http://trac.nslu2-linux.org/kernel/ # # The revision that is pulled from SVN is specified below -IXP4XX_KERNEL_SVN_REV = "534" +IXP4XX_KERNEL_SVN_REV = "577" # # The directory containing the patches to be applied is # specified below diff --git a/packages/linux/linux-handhelds-2.6_2.6.17-hh3.bb b/packages/linux/linux-handhelds-2.6_2.6.17-hh3.bb new file mode 100644 index 0000000000..b34d4630a0 --- /dev/null +++ b/packages/linux/linux-handhelds-2.6_2.6.17-hh3.bb @@ -0,0 +1,11 @@ +SECTION = "kernel" +DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices." +LICENSE = "GPL" +PR = "r0" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \ + file://defconfig" + +require linux-handhelds-2.6.inc diff --git a/packages/linux/linux-handhelds-2.6_cvs.bb b/packages/linux/linux-handhelds-2.6_cvs.bb index cd4ab10dd1..107b014e60 100644 --- a/packages/linux/linux-handhelds-2.6_cvs.bb +++ b/packages/linux/linux-handhelds-2.6_cvs.bb @@ -6,8 +6,8 @@ PR = "r5" K_MAJOR = "2" K_MINOR = "6" -K_MICRO = "17" -HHV = "2" +K_MICRO = "18" +HHV = "0" SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26 \ file://24-hostap_cs_id.diff;patch=1;maxdate=20061104 \ diff --git a/packages/linux/linux-openzaurus-2.6.18+git/sharpsl-pm-postresume-r1.patch b/packages/linux/linux-openzaurus-2.6.18+git/sharpsl-pm-postresume-r1.patch new file mode 100644 index 0000000000..409daf03e6 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/sharpsl-pm-postresume-r1.patch @@ -0,0 +1,30 @@ + arch/arm/common/sharpsl_pm.c | 3 +++ + include/asm-arm/hardware/sharpsl_pm.h | 1 + + 2 files changed, 4 insertions(+) + +Index: git/include/asm-arm/hardware/sharpsl_pm.h +=================================================================== +--- git.orig/include/asm-arm/hardware/sharpsl_pm.h 2006-10-31 16:09:33.000000000 +0000 ++++ git/include/asm-arm/hardware/sharpsl_pm.h 2006-11-07 22:08:41.000000000 +0000 +@@ -26,6 +26,7 @@ struct sharpsl_charger_machinfo { + void (*presuspend)(void); + void (*postsuspend)(void); + void (*earlyresume)(void); ++ void (*postresume)(void); + unsigned long (*read_devdata)(int); + #define SHARPSL_BATT_VOLT 1 + #define SHARPSL_BATT_TEMP 2 +Index: git/arch/arm/common/sharpsl_pm.c +=================================================================== +--- git.orig/arch/arm/common/sharpsl_pm.c 2006-11-07 22:03:48.000000000 +0000 ++++ git/arch/arm/common/sharpsl_pm.c 2006-11-07 22:04:20.000000000 +0000 +@@ -584,6 +584,9 @@ static int corgi_pxa_pm_enter(suspend_st + if (sharpsl_pm.machinfo->earlyresume) + sharpsl_pm.machinfo->earlyresume(); + ++ if (sharpsl_pm.machinfo->postresume) ++ sharpsl_pm.machinfo->postresume(); ++ + dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n"); + + return 0; diff --git a/packages/linux/linux-openzaurus-2.6.18+git/tmio-nand-r7.patch b/packages/linux/linux-openzaurus-2.6.18+git/tmio-nand-r7.patch new file mode 100644 index 0000000000..b6ce56eea4 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/tmio-nand-r7.patch @@ -0,0 +1,593 @@ + drivers/mtd/nand/Kconfig | 7 + drivers/mtd/nand/Makefile | 1 + drivers/mtd/nand/tmio.c | 554 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 562 insertions(+) + +Index: git/drivers/mtd/nand/tmio.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ git/drivers/mtd/nand/tmio.c 2006-11-07 23:31:12.000000000 +0000 +@@ -0,0 +1,554 @@ ++/* ++ * A device driver for NAND flash connected to a Toshiba Mobile IO ++ * controller. This is known to work with the following variants: ++ * TC6393XB revision 3 ++ * ++ * Maintainer: Chris Humbert <mahadri+mtd@drigon.com> ++ * ++ * Copyright (C) 2005 Chris Humbert ++ * Copyright (C) 2005 Dirk Opfer ++ * Copyright (C) 2004 SHARP ++ * Copyright (C) 2002 Lineo Japan, Inc. ++ * Copyright (C) Ian Molton and Sebastian Carlier ++ * ++ * Based on Sharp's NAND driver, sharp_sl_tc6393.c ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include <linux/module.h> ++#include <linux/types.h> ++#include <linux/delay.h> ++#include <linux/wait.h> ++#include <linux/ioport.h> ++#include <linux/mtd/mtd.h> ++#include <linux/mtd/nand.h> ++#include <linux/mtd/nand_ecc.h> ++#include <linux/mtd/partitions.h> ++#include <asm/io.h> ++#include <asm/hardware/tmio.h> ++ ++#include <linux/interrupt.h> ++ ++#define mtd_printk(level, mtd, format, arg...) \ ++ printk (level "%s: " format, mtd->name, ## arg) ++#define mtd_warn(mtd, format, arg...) \ ++ mtd_printk (KERN_WARNING, mtd, format, ## arg) ++ ++/*--------------------------------------------------------------------------*/ ++ ++/* tmio_nfcr.mode Register Command List */ ++#define FCR_MODE_DATA 0x94 // Data Data_Mode ++#define FCR_MODE_COMMAND 0x95 // Data Command_Mode ++#define FCR_MODE_ADDRESS 0x96 // Data Address_Mode ++ ++#define FCR_MODE_HWECC_CALC 0xB4 // HW-ECC Data ++#define FCR_MODE_HWECC_RESULT 0xD4 // HW-ECC Calculation Result Read_Mode ++#define FCR_MODE_HWECC_RESET 0xF4 // HW-ECC Reset ++ ++#define FCR_MODE_POWER_ON 0x0C // Power Supply ON to SSFDC card ++#define FCR_MODE_POWER_OFF 0x08 // Power Supply OFF to SSFDC card ++ ++#define FCR_MODE_LED_OFF 0x00 // LED OFF ++#define FCR_MODE_LED_ON 0x04 // LED ON ++ ++#define FCR_MODE_EJECT_ON 0x68 // Ejection Demand from Penguin is Advanced ++#define FCR_MODE_EJECT_OFF 0x08 // Ejection Demand from Penguin is Not Advanced ++ ++#define FCR_MODE_LOCK 0x6C // Operates By Lock_Mode. Ejection Switch is Invalid ++#define FCR_MODE_UNLOCK 0x0C // Operates By UnLock_Mode.Ejection Switch is Effective ++ ++#define FCR_MODE_CONTROLLER_ID 0x40 // Controller ID Read ++#define FCR_MODE_STANDBY 0x00 // SSFDC card Changes Standby State ++ ++#define FCR_MODE_WE 0x80 ++#define FCR_MODE_ECC1 0x40 ++#define FCR_MODE_ECC0 0x20 ++#define FCR_MODE_CE 0x10 ++#define FCR_MODE_PCNT1 0x08 ++#define FCR_MODE_PCNT0 0x04 ++#define FCR_MODE_ALE 0x02 ++#define FCR_MODE_CLE 0x01 ++ ++#define FCR_STATUS_BUSY 0x80 ++ ++/* ++ * NAND Flash Host Controller Configuration Register ++ */ ++struct tmio_nfhccr { ++ u8 x00[4]; ++ u16 command; /* 0x04 Command */ ++ u8 x01[0x0a]; ++ u16 base[2]; /* 0x10 NAND Flash Control Reg Base Addr*/ ++ u8 x02[0x29]; ++ u8 intp; /* 0x3d Interrupt Pin */ ++ u8 x03[0x0a]; ++ u8 inte; /* 0x48 Interrupt Enable */ ++ u8 x04; ++ u8 ec; /* 0x4a Event Control */ ++ u8 x05; ++ u8 icc; /* 0x4c Internal Clock Control */ ++ u8 x06[0x0e]; ++ u8 eccc; /* 0x5b ECC Control */ ++ u8 x07[4]; ++ u8 nftc; /* 0x60 NAND Flash Transaction Control */ ++ u8 nfm; /* 0x61 NAND Flash Monitor */ ++ u8 nfpsc; /* 0x62 NAND Flash Power Supply Control */ ++ u8 nfdc; /* 0x63 NAND Flash Detect Control */ ++ u8 x08[0x9c]; ++} __attribute__ ((packed)); ++ ++/* ++ * NAND Flash Control Register ++ */ ++struct tmio_nfcr { ++union { ++ u8 u8; /* 0x00 Data Register */ ++ u16 u16; ++ u32 u32; ++} __attribute__ ((packed)); ++ u8 mode; /* 0x04 Mode Register */ ++ u8 status; /* 0x05 Status Register */ ++ u8 isr; /* 0x06 Interrupt Status Register */ ++ u8 imr; /* 0x07 Interrupt Mask Register */ ++} __attribute__ ((packed)); ++ ++struct tmio_nand { ++ struct mtd_info mtd; ++ struct nand_chip chip; ++ ++ struct tmio_nfhccr __iomem * ccr; ++ struct tmio_nfcr __iomem * fcr; ++ ++ unsigned int irq; ++ ++ /* for tmio_nand_read_byte */ ++ u8 read; ++ unsigned read_good:1; ++}; ++ ++#define mtd_to_tmio(m) container_of(m, struct tmio_nand, mtd) ++ ++/*--------------------------------------------------------------------------*/ ++ ++static void tmio_nand_hwcontrol(struct mtd_info *mtd, int cmd, ++ unsigned int ctrl) ++{ ++ struct tmio_nand *tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem *fcr = tmio->fcr; ++ struct nand_chip *chip = mtd->priv; ++ ++ if (ctrl & NAND_CTRL_CHANGE) { ++ u8 mode; ++ ++ if (ctrl & NAND_NCE) { ++ mode = FCR_MODE_DATA; ++ ++ if (ctrl & NAND_CLE) ++ mode |= FCR_MODE_CLE; ++ else ++ mode &= ~FCR_MODE_CLE; ++ ++ if (ctrl & NAND_ALE) ++ mode |= FCR_MODE_ALE; ++ else ++ mode &= ~FCR_MODE_ALE; ++ } else { ++ mode = FCR_MODE_STANDBY; ++ } ++ ++ iowrite8 (mode, &fcr->mode); ++ tmio->read_good = 0; ++ } ++ ++ if (cmd != NAND_CMD_NONE) ++ writeb(cmd, chip->IO_ADDR_W); ++} ++ ++static int tmio_nand_dev_ready (struct mtd_info* mtd) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ ++ return !(ioread8 (&fcr->status) & FCR_STATUS_BUSY); ++} ++ ++static irqreturn_t tmio_irq (int irq, void *__tmio) ++{ ++ struct tmio_nand* tmio = __tmio; ++ struct nand_chip* this = &tmio->chip; ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ ++ /* disable RDYREQ interrupt */ ++ iowrite8 (0x00, &fcr->imr); ++ ++ if (unlikely (!waitqueue_active (&this->controller->wq))) ++ printk (KERN_WARNING TMIO_NAME_NAND ": spurious interrupt\n"); ++ ++ wake_up (&this->controller->wq); ++ return IRQ_HANDLED; ++} ++ ++/* ++ * The TMIO core has a RDYREQ interrupt on the posedge of #SMRB. ++ * This interrupt is normally disabled, but for long operations like ++ * erase and write, we enable it to wake us up. The irq handler ++ * disables the interrupt. ++ */ ++static int ++tmio_nand_wait (struct mtd_info *mtd, struct nand_chip *this) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ long timeout; ++ ++ /* enable RDYREQ interrupt */ ++ iowrite8 (0x0f, &fcr->isr); ++ iowrite8 (0x81, &fcr->imr); ++ ++ timeout = wait_event_timeout (this->controller->wq, tmio_nand_dev_ready (mtd), ++ msecs_to_jiffies (this->state == FL_ERASING ? 400 : 20)); ++ ++ if (unlikely (!tmio_nand_dev_ready (mtd))) { ++ iowrite8 (0x00, &fcr->imr); ++ mtd_warn (mtd, "still busy with %s after %d ms\n", ++ this->state == FL_ERASING ? "erase" : "program", ++ this->state == FL_ERASING ? 400 : 20); ++ ++ } else if (unlikely (!timeout)) { ++ iowrite8 (0x00, &fcr->imr); ++ mtd_warn (mtd, "timeout waiting for interrupt\n"); ++ } ++ ++ this->cmdfunc (mtd, NAND_CMD_STATUS, -1, -1); ++ return this->read_byte (mtd); ++} ++ ++/* ++ * The TMIO controller combines two 8-bit data bytes into one 16-bit ++ * word. This function separates them so nand_base.c works as expected, ++ * especially its NAND_CMD_READID routines. ++ * ++ * To prevent stale data from being read, tmio_nand_hwcontrol() clears ++ * tmio->read_good. ++ */ ++static u_char tmio_nand_read_byte (struct mtd_info *mtd) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ unsigned int data; ++ ++ if (tmio->read_good--) ++ return tmio->read; ++ ++ data = ioread16 (&fcr->u16); ++ tmio->read = data >> 8; ++ return data; ++} ++ ++/* ++ * The TMIO controller converts an 8-bit NAND interface to a 16-bit ++ * bus interface, so all data reads and writes must be 16-bit wide. ++ * Thus, we implement 16-bit versions of the read, write, and verify ++ * buffer functions. ++ */ ++static void ++tmio_nand_write_buf (struct mtd_info *mtd, const u_char *buf, int len) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ ++ iowrite16_rep (&fcr->u16, buf, len >> 1); ++} ++ ++static void tmio_nand_read_buf (struct mtd_info *mtd, u_char *buf, int len) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ ++ ioread16_rep (&fcr->u16, buf, len >> 1); ++} ++ ++static int ++tmio_nand_verify_buf (struct mtd_info *mtd, const u_char *buf, int len) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ u16* p = (u16*) buf; ++ ++ for (len >>= 1; len; len--) ++ if (*(p++) != ioread16 (&fcr->u16)) ++ return -EFAULT; ++ return 0; ++} ++ ++static void tmio_nand_enable_hwecc (struct mtd_info* mtd, int mode) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ ++ iowrite8 (FCR_MODE_HWECC_RESET, &fcr->mode); ++ ioread8 (&fcr->u8); /* dummy read */ ++ iowrite8 (FCR_MODE_HWECC_CALC, &fcr->mode); ++} ++ ++static int tmio_nand_calculate_ecc (struct mtd_info* mtd, const u_char* dat, ++ u_char* ecc_code) ++{ ++ struct tmio_nand* tmio = mtd_to_tmio (mtd); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ unsigned int ecc; ++ ++ iowrite8 (FCR_MODE_HWECC_RESULT, &fcr->mode); ++ ++ ecc = ioread16 (&fcr->u16); ++ ecc_code[1] = ecc; // 000-255 LP7-0 ++ ecc_code[0] = ecc >> 8; // 000-255 LP15-8 ++ ecc = ioread16 (&fcr->u16); ++ ecc_code[2] = ecc; // 000-255 CP5-0,11b ++ ecc_code[4] = ecc >> 8; // 256-511 LP7-0 ++ ecc = ioread16 (&fcr->u16); ++ ecc_code[3] = ecc; // 256-511 LP15-8 ++ ecc_code[5] = ecc >> 8; // 256-511 CP5-0,11b ++ ++ iowrite8 (FCR_MODE_DATA, &fcr->mode); ++ return 0; ++} ++ ++static void tmio_hw_init (struct device *dev, struct tmio_nand *tmio) ++{ ++ struct resource* nfcr = tmio_resource_control (dev); ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ struct tmio_nfhccr __iomem * ccr = tmio->ccr; ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ unsigned long base; ++ ++ /* (89h) SMD Buffer ON By TC6393XB SystemConfig gpibfc1 */ ++ tdev->ops->clock (dev, 1); ++ tdev->ops->function (dev, 1); ++ ++ /* (4Ch) CLKRUN Enable 1st spcrunc */ ++ iowrite8 (0x81, &ccr->icc); ++ ++ /* (10h)BaseAddress 0x1000 spba.spba2 */ ++ base = nfcr->start - tdev->iomem->start; ++ iowrite16 (base, ccr->base + 0); ++ iowrite16 (base >> 16, ccr->base + 1); ++ ++ /* (04h)Command Register I/O spcmd */ ++ iowrite8 (0x02, &ccr->command); ++ ++ /* (62h) Power Supply Control ssmpwc */ ++ /* HardPowerOFF - SuspendOFF - PowerSupplyWait_4MS */ ++ iowrite8 (0x02, &ccr->nfpsc); ++ ++ /* (63h) Detect Control ssmdtc */ ++ iowrite8 (0x02, &ccr->nfdc); ++ ++ /* Interrupt status register clear sintst */ ++ iowrite8 (0x0f, &fcr->isr); ++ ++ /* After power supply, Media are reset smode */ ++ iowrite8 (FCR_MODE_POWER_ON, &fcr->mode); ++ iowrite8 (FCR_MODE_COMMAND, &fcr->mode); ++ iowrite8 (NAND_CMD_RESET, &fcr->u8); ++ ++ /* Standby Mode smode */ ++ iowrite8 (FCR_MODE_STANDBY, &fcr->mode); ++ ++ mdelay (5); ++} ++ ++static void tmio_hw_stop (struct device *dev, struct tmio_nand *tmio) ++{ ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ struct tmio_nfcr __iomem * fcr = tmio->fcr; ++ ++ iowrite8 (FCR_MODE_POWER_OFF, &fcr->mode); ++ tdev->ops->function (dev, 0); ++ tdev->ops->clock (dev, 0); ++} ++ ++/*--------------------------------------------------------------------------*/ ++ ++#ifdef CONFIG_MTD_PARTITIONS ++static const char *part_probes[] = { "cmdlinepart", NULL }; ++#endif ++ ++static int tmio_probe (struct device *dev) ++{ ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ struct tmio_nand_platform_data* tnpd = dev->platform_data; ++ struct resource* ccr = tmio_resource_config (dev); ++ struct resource* fcr = tmio_resource_control (dev); ++ struct resource* irq = tmio_resource_irq (dev); ++ struct tmio_nand* tmio; ++ struct mtd_info* mtd; ++ struct nand_chip* this; ++ struct mtd_partition* parts; ++ int nbparts = 0; ++ int retval; ++ ++ if (!tnpd) ++ return -EINVAL; ++ ++ retval = request_resource (tdev->iomem, ccr); ++ if (retval) ++ goto err_request_ccr; ++ ++ retval = request_resource (tdev->iomem, fcr); ++ if (retval) ++ goto err_request_fcr; ++ ++ tmio = kzalloc (sizeof *tmio, GFP_KERNEL); ++ if (!tmio) { ++ retval = -ENOMEM; ++ goto err_kzalloc; ++ } ++ ++ dev_set_drvdata (dev, tmio); ++ mtd = &tmio->mtd; ++ this = &tmio->chip; ++ mtd->priv = this; ++ mtd->name = TMIO_NAME_NAND; ++ ++ tmio->ccr = ioremap (ccr->start, ccr->end - ccr->start + 1); ++ if (!tmio->ccr) { ++ retval = -EIO; ++ goto err_iomap_ccr; ++ } ++ ++ tmio->fcr = ioremap (fcr->start, fcr->end - fcr->start + 1); ++ if (!tmio->fcr) { ++ retval = -EIO; ++ goto err_iomap_fcr; ++ } ++ ++ tmio_hw_init (dev, tmio); ++ ++ /* Set address of NAND IO lines */ ++ this->IO_ADDR_R = tmio->fcr; ++ this->IO_ADDR_W = tmio->fcr; ++ ++ /* Set address of hardware control function */ ++ this->cmd_ctrl = tmio_nand_hwcontrol; ++ this->dev_ready = tmio_nand_dev_ready; ++ this->read_byte = tmio_nand_read_byte; ++ this->write_buf = tmio_nand_write_buf; ++ this->read_buf = tmio_nand_read_buf; ++ this->verify_buf = tmio_nand_verify_buf; ++ ++ /* set eccmode using hardware ECC */ ++ this->ecc.mode = NAND_ECC_HW; ++ this->ecc.size = 512; ++ this->ecc.bytes = 6; ++ this->ecc.hwctl = tmio_nand_enable_hwecc; ++ this->ecc.calculate = tmio_nand_calculate_ecc; ++ this->ecc.correct = nand_correct_data; ++ this->badblock_pattern = tnpd->badblock_pattern; ++ ++ /* 15 us command delay time */ ++ this->chip_delay = 15; ++ ++ if (irq->start) { ++ retval = request_irq (irq->start, &tmio_irq, ++ SA_INTERRUPT, irq->name, tmio); ++ if (!retval) { ++ tmio->irq = irq->start; ++ this->waitfunc = tmio_nand_wait; ++ } else ++ mtd_warn (mtd, "request_irq error %d\n", retval); ++ } ++ ++ /* Scan to find existence of the device */ ++ if (nand_scan (mtd, 1)) { ++ retval = -ENODEV; ++ goto err_scan; ++ } ++ ++ /* Register the partitions */ ++#ifdef CONFIG_MTD_PARTITIONS ++ nbparts = parse_mtd_partitions (mtd, part_probes, &parts, 0); ++#endif ++ if (nbparts <= 0) { ++ parts = tnpd->partition; ++ nbparts = tnpd->num_partitions; ++ } ++ ++ add_mtd_partitions (mtd, parts, nbparts); ++ return 0; ++ ++err_scan: ++ if (tmio->irq) ++ free_irq (tmio->irq, tmio); ++ tmio_hw_stop (dev, tmio); ++ iounmap (tmio->fcr); ++err_iomap_fcr: ++ iounmap (tmio->ccr); ++err_iomap_ccr: ++ kfree (tmio); ++err_kzalloc: ++ release_resource (fcr); ++err_request_fcr: ++ release_resource (ccr); ++err_request_ccr: ++ return retval; ++} ++ ++static int tmio_remove (struct device *dev) ++{ ++ struct tmio_nand* tmio = dev_get_drvdata (dev); ++ ++ nand_release (&tmio->mtd); ++ if (tmio->irq) ++ free_irq (tmio->irq, tmio); ++ tmio_hw_stop (dev, tmio); ++ iounmap (tmio->fcr); ++ iounmap (tmio->ccr); ++ kfree (tmio); ++ release_resource (tmio_resource_control (dev)); ++ release_resource (tmio_resource_config (dev)); ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int tmio_suspend (struct device *dev, pm_message_t state) ++{ ++ tmio_hw_stop (dev, dev_get_drvdata (dev)); ++ return 0; ++} ++ ++static int tmio_resume (struct device *dev) ++{ ++ tmio_hw_init (dev, dev_get_drvdata (dev)); ++ return 0; ++} ++#endif ++ ++static struct device_driver tmio_driver = { ++ .name = TMIO_NAME_NAND, ++ .bus = &tmio_bus_type, ++ .probe = tmio_probe, ++ .remove = tmio_remove, ++#ifdef CONFIG_PM ++ .suspend = tmio_suspend, ++ .resume = tmio_resume, ++#endif ++}; ++ ++static int __init tmio_init (void) { ++ return driver_register (&tmio_driver); ++} ++ ++static void __exit tmio_exit (void) { ++ driver_unregister (&tmio_driver); ++} ++ ++module_init (tmio_init); ++module_exit (tmio_exit); ++ ++MODULE_LICENSE ("GPL"); ++MODULE_AUTHOR ("Dirk Opfer, Chris Humbert"); ++MODULE_DESCRIPTION ("NAND flash driver on Toshiba Mobile IO controller"); +Index: git/drivers/mtd/nand/Kconfig +=================================================================== +--- git.orig/drivers/mtd/nand/Kconfig 2006-10-31 16:09:03.000000000 +0000 ++++ git/drivers/mtd/nand/Kconfig 2006-11-07 22:13:09.000000000 +0000 +@@ -63,6 +63,13 @@ config MTD_NAND_AMS_DELTA + help + Support for NAND flash on Amstrad E3 (Delta). + ++config MTD_NAND_TMIO ++ tristate "NAND Flash device on Toshiba Mobile IO Controller" ++ depends on MTD_NAND && TOSHIBA_TC6393XB ++ help ++ Support for NAND flash connected to a Toshiba Mobile IO ++ Controller in some PDAs, including the Sharp SL6000x. ++ + config MTD_NAND_TOTO + tristate "NAND Flash device on TOTO board" + depends on ARCH_OMAP && MTD_NAND && BROKEN +Index: git/drivers/mtd/nand/Makefile +=================================================================== +--- git.orig/drivers/mtd/nand/Makefile 2006-10-31 16:09:03.000000000 +0000 ++++ git/drivers/mtd/nand/Makefile 2006-11-07 22:13:09.000000000 +0000 +@@ -22,5 +22,6 @@ obj-$(CONFIG_MTD_NAND_TS7250) += ts7250 + obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o + obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o + obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o ++obj-$(CONFIG_MTD_NAND_TMIO) += tmio.o + + nand-objs = nand_base.o nand_bbt.o diff --git a/packages/linux/linux-openzaurus-2.6.18+git/tmio-ohci-r6.patch b/packages/linux/linux-openzaurus-2.6.18+git/tmio-ohci-r6.patch new file mode 100644 index 0000000000..9fdd2962c9 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/tmio-ohci-r6.patch @@ -0,0 +1,929 @@ + + drivers/usb/host/Kconfig | 1 + drivers/usb/host/ohci-hcd.c | 1 + drivers/usb/host/ohci-tmio.c | 894 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 896 insertions(+) + +Index: git/drivers/usb/host/ohci-tmio.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ git/drivers/usb/host/ohci-tmio.c 2006-11-07 21:48:33.000000000 +0000 +@@ -0,0 +1,894 @@ ++/* ++ * OHCI HCD (Host Controller Driver) for USB. ++ * ++ * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> ++ * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> ++ * (C) Copyright 2002 Hewlett-Packard Company ++ * ++ * Bus glue for Toshiba Mobile IO (TMIO) Controller's OHCI core ++ * (C) Copyright 2005 Chris Humbert <mahadri-usb@drigon.com> ++ * ++ * This is known to work with the following variants: ++ * TC6393XB revision 3 (32kB SRAM) ++ * ++ * The TMIO's OHCI core DMAs through a small internal buffer that ++ * is directly addressable by the CPU. dma_declare_coherent_memory ++ * and DMA bounce buffers allow the higher-level OHCI host driver to ++ * work. However, the dma API doesn't handle dma mapping failures ++ * well (dma_sg_map() is a prime example), so it is unusable. ++ * ++ * This HC pretends be a PIO-ish controller and uses the kernel's ++ * generic allocator for the entire SRAM. Using the USB core's ++ * usb_operations, we provide hcd_buffer_alloc/free. Using the OHCI's ++ * ohci_ops, we provide memory management for OHCI's TDs and EDs. We ++ * internally queue a URB's TDs until enough dma memory is available ++ * to enqueue them with the HC. ++ * ++ * Written from sparse documentation from Toshiba and Sharp's driver ++ * for the 2.4 kernel, ++ * usb-ohci-tc6393.c (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include <linux/fs.h> ++#include <linux/mount.h> ++#include <linux/pagemap.h> ++#include <linux/init.h> ++#include <linux/namei.h> ++#include <linux/sched.h> ++ ++#include <linux/genalloc.h> ++#include <asm/dma-mapping.h> /* for consistent_sync() */ ++#include <asm/hardware/tmio.h> ++ ++/*-------------------------------------------------------------------------*/ ++ ++/* ++ * USB Host Controller Configuration Register ++ */ ++struct tmio_uhccr { ++ u8 x00[8]; ++ u8 revid; /* 0x08 Revision ID */ ++ u8 x01[7]; ++ u16 basel; /* 0x10 USB Control Register Base Address Low */ ++ u16 baseh; /* 0x12 USB Control Register Base Address High */ ++ u8 x02[0x2c]; ++ u8 ilme; /* 0x40 Internal Local Memory Enable */ ++ u8 x03[0x0b]; ++ u16 pm; /* 0x4c Power Management */ ++ u8 x04[2]; ++ u8 intc; /* 0x50 INT Control */ ++ u8 x05[3]; ++ u16 lmw1l; /* 0x54 Local Memory Window 1 LMADRS Low */ ++ u16 lmw1h; /* 0x56 Local Memory Window 1 LMADRS High */ ++ u16 lmw1bl; /* 0x58 Local Memory Window 1 Base Address Low */ ++ u16 lmw1bh; /* 0x5A Local Memory Window 1 Base Address High */ ++ u16 lmw2l; /* 0x5C Local Memory Window 2 LMADRS Low */ ++ u16 lmw2h; /* 0x5E Local Memory Window 2 LMADRS High */ ++ u16 lmw2bl; /* 0x60 Local Memory Window 2 Base Address Low */ ++ u16 lmw2bh; /* 0x62 Local Memory Window 2 Base Address High */ ++ u8 x06[0x98]; ++ u8 misc; /* 0xFC MISC */ ++ u8 x07[3]; ++} __attribute__ ((packed)); ++ ++union tmio_uhccr_pm { ++ u16 raw; ++struct { ++ unsigned gcken:1; /* D0 */ ++ unsigned ckrnen:1; /* D1 */ ++ unsigned uspw1:1; /* D2 USB Port 1 Power Disable */ ++ unsigned uspw2:1; /* D3 USB Port 2 Power Disable */ ++ unsigned x00:4; ++ unsigned pmee:1; /* D8 */ ++ unsigned x01:6; ++ unsigned pmes:1; /* D15 */ ++} __attribute__ ((packed)); ++} __attribute__ ((packed)); ++ ++/*-------------------------------------------------------------------------*/ ++ ++struct tmio_dma_pool { ++ struct device* dev; ++ unsigned int size; ++}; ++ ++struct tmio_hcd { ++ struct gen_pool* poolp; ++ struct usb_operations ops; ++ struct tmio_dma_pool td_pool; ++ struct tmio_dma_pool ed_pool; ++ ++ struct tmio_uhccr __iomem *ccr; ++ void __iomem * sram; ++ size_t sram_len; ++}; ++ ++#define hcd_to_tmio(hcd) ((struct tmio_hcd*)(hcd_to_ohci (hcd) + 1)) ++ ++struct tmio_td { ++ void* data; /* td's data buffer */ ++ void __iomem * bounce; /* dma bounce buffer */ ++ dma_addr_t dma; /* bounce buffer dma address */ ++ size_t len; /* bounce buffer length */ ++ u32 info; /* parameter for td_fill */ ++}; ++ ++struct tmio_urb { ++ int td_add; /* next index to be added */ ++ int td_queue; /* next index to be HC enqueued */ ++ ++ struct tmio_td td [0]; /* private td data */ ++}; ++ ++static inline struct tmio_urb *urb_to_turb (struct urb *urb) ++{ ++ urb_priv_t* urb_priv = urb->hcpriv; ++ return (struct tmio_urb*)(urb_priv->td + urb_priv->length); ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++/* gen_pool_alloc page allocator callback */ ++static unsigned long tmio_pool_callback(struct gen_pool *poolp) ++{ ++ return 0; ++} ++ ++static inline void tmio_pool_destroy(struct tmio_hcd *tmio) ++{ ++ struct gen_pool *poolp = tmio->poolp; ++ ++ if (!poolp) ++ return; ++ if (poolp->h) ++ kfree(poolp->h); ++ kfree(poolp); ++ tmio->poolp = NULL; ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++#define BOUNDED_XYL(x,y,ylen) (((y) <= (x)) && ((x) < ((y)+(ylen)))) ++#define BOUNDED_XYY(x,y1,y2) (((y1) <= (x)) && ((x) < (y2))) ++ ++static inline dma_addr_t tmio_virt_to_dma (struct usb_hcd *hcd, void *vaddr) ++{ ++ struct resource* sram = tmio_resource_mem (hcd->self.controller); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ ++ return BOUNDED_XYL (vaddr, tmio->sram, tmio->sram_len) ++ ? sram->start + (vaddr - tmio->sram) ++ : ~0; ++} ++ ++static inline void* tmio_dma_to_virt (struct usb_hcd *hcd, dma_addr_t handle) ++{ ++ struct resource* sram = tmio_resource_mem (hcd->self.controller); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ ++ return BOUNDED_XYY (handle, sram->start, sram->end + 1) ++ ? tmio->sram + handle - sram->start ++ : NULL; ++} ++ ++/* ++ * allocate dma-able memory in the device's internal sram ++ * ++ * The generic pool allocator's minimum chunk size is 32 bytes, ++ * which is the cache line size on the PXA255, so we don't need ++ * to do anything special for smaller requests. ++ */ ++static inline void *tmio_dma_alloc (struct device *dev, size_t size, ++ dma_addr_t *handle, gfp_t mem_flags) ++{ ++ struct usb_hcd* hcd = dev_get_drvdata (dev); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ void* virt = (void*) gen_pool_alloc (tmio->poolp, size); ++ ++ return (*handle = tmio_virt_to_dma (hcd, virt)) == ~0 ? NULL : virt; ++} ++ ++static inline void tmio_dma_free (struct device *dev, size_t size, ++ void *cpu_addr, dma_addr_t handle) ++{ ++ struct usb_hcd* hcd = dev_get_drvdata (dev); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ dma_addr_t dma = tmio_virt_to_dma (hcd, cpu_addr); ++ ++ if (unlikely (dma == ~0)) { ++ dev_err (dev, "trying to free bad address 0x%p\n", cpu_addr); ++ return; ++ } ++ ++ if (unlikely (handle != dma)) ++ dev_err (dev, "dma address mismatch for 0x%p: %08x != %08x\n", ++ cpu_addr, handle, dma); ++ ++ gen_pool_free (tmio->poolp, (unsigned long) cpu_addr, size); ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++static void *tmio_dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, ++ dma_addr_t *handle) ++{ ++ struct tmio_dma_pool *tdp = (struct tmio_dma_pool*) pool; ++ return tmio_dma_alloc (tdp->dev, tdp->size, handle, mem_flags); ++} ++ ++static void ++tmio_dma_pool_free (struct dma_pool *pool, void *vaddr, dma_addr_t addr) ++{ ++ struct tmio_dma_pool *tdp = (struct tmio_dma_pool*) pool; ++ return tmio_dma_free (tdp->dev, tdp->size, vaddr, addr); ++} ++ ++static void *tmio_buffer_alloc (struct usb_bus *bus, size_t size, ++ gfp_t mem_flags, dma_addr_t *dma) ++{ ++ return tmio_dma_alloc (bus->controller, size, dma, mem_flags); ++} ++ ++static void tmio_buffer_free (struct usb_bus *bus, size_t size, ++ void *addr, dma_addr_t dma) ++{ ++ tmio_dma_free (bus->controller, size, addr, dma); ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++static void tmio_hc_stop (struct usb_hcd *hcd) ++{ ++ struct device* dev = hcd->self.controller; ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ struct tmio_uhccr __iomem* ccr = tmio->ccr; ++ union tmio_uhccr_pm pm = {0}; ++ ++ pm.gcken = 1; ++ pm.ckrnen = 1; ++ pm.uspw1 = 1; ++ pm.uspw2 = 1; ++ ++ iowrite8 (0, &ccr->intc); ++ iowrite8 (0, &ccr->ilme); ++ iowrite16(0, &ccr->basel); ++ iowrite16(0, &ccr->baseh); ++ iowrite16(pm.raw, &ccr->pm); ++ ++ tdev->ops->function (dev, 0); ++ tdev->ops->clock (dev, 0); ++} ++ ++static void tmio_hc_start (struct usb_hcd *hcd) ++{ ++ struct device* dev = hcd->self.controller; ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ struct tmio_uhccr __iomem* ccr = tmio->ccr; ++ union tmio_uhccr_pm pm = {0}; ++ ++ pm.pmes = 1; ++ pm.pmee = 1; ++ pm.ckrnen = 1; ++ pm.gcken = 1; ++ ++ tdev->ops->clock (dev, 1); ++ tdev->ops->function (dev, 1); ++ ++ iowrite16(pm.raw, &ccr->pm); ++ iowrite16(hcd->rsrc_start, &ccr->basel); ++ iowrite16(hcd->rsrc_start >> 16, &ccr->baseh); ++ iowrite8 (1, &ccr->ilme); ++ iowrite8 (2, &ccr->intc); ++ ++ consistent_sync (tmio->sram, tmio->sram_len, DMA_BIDIRECTIONAL); ++ ++ dev_info (dev, "revision %d @ 0x%08llx, irq %d\n", ++ ioread8 (&ccr->revid), hcd->rsrc_start, hcd->irq); ++} ++ ++static void tmio_stop (struct usb_hcd *hcd) ++{ ++ struct ohci_hcd* ohci = hcd_to_ohci (hcd); ++ ++ /* NULL these so ohci_stop() doesn't try to free them */ ++ ohci->hcca = NULL; ++ ohci->td_cache = NULL; ++ ohci->ed_cache = NULL; ++ ++ ohci_stop (hcd); ++ tmio_hc_stop (hcd); ++ tmio_pool_destroy (hcd_to_tmio (hcd)); ++ ++ /* We don't free the hcca because tmio_hc_stop() turns off ++ * the sram and the memory allocation data is destroyed. */ ++} ++ ++static int tmio_start (struct usb_hcd *hcd) ++{ ++ struct device* dev = hcd->self.controller; ++ struct ohci_hcd* ohci = hcd_to_ohci (hcd); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ int retval; ++ ++ tmio_hc_start (hcd); ++ ++ tmio->poolp = gen_pool_create(0, fls(tmio->sram_len) - 1, ++ tmio_pool_callback, 0); ++ if (!tmio->poolp) { ++ retval = -ENOMEM; ++ goto err_gen_pool_create; ++ } ++ ++ gen_pool_free (tmio->poolp, (unsigned long)(tmio->sram), ++ tmio->sram_len); ++ ++ ohci->hcca = tmio_dma_alloc (dev, sizeof *ohci->hcca, ++ &ohci->hcca_dma, GFP_KERNEL); ++ if (!ohci->hcca) { ++ retval = -ENOMEM; ++ goto err_hcca_alloc; ++ } ++ ++ /* for our dma_pool_alloc/free hooks */ ++ ohci->td_cache = (struct dma_pool*) &tmio->td_pool; ++ ohci->ed_cache = (struct dma_pool*) &tmio->ed_pool; ++ ++ if ((retval = ohci_init (ohci)) < 0) ++ goto err_ohci_init; ++ ++ if ((retval = ohci_run (ohci)) < 0) ++ goto err_ohci_run; ++ ++ return 0; ++ ++err_ohci_run: ++ err ("can't start %s", hcd->self.bus_name); ++err_ohci_init: ++err_hcca_alloc: ++err_gen_pool_create: ++ tmio_stop (hcd); ++ return retval; ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++static inline void *tmio_urb_dma_to_virt(struct urb *urb, dma_addr_t dma) ++{ ++ if (BOUNDED_XYL(dma, urb->transfer_dma, urb->transfer_buffer_length)) ++ return urb->transfer_buffer + dma - urb->transfer_dma; ++ ++ if (BOUNDED_XYL(dma, urb->setup_dma, sizeof (struct usb_ctrlrequest))) ++ return urb->setup_packet + dma - urb->setup_dma; ++ ++ return NULL; ++} ++ ++static struct tmio_td* tmio_td_find (struct td *td, int *index) ++{ ++ struct urb* urb = td->urb; ++ urb_priv_t* urb_priv = urb->hcpriv; ++ struct tmio_urb* turb = urb_to_turb (urb); ++ int i; ++ ++ for (i=0; i < urb_priv->length; i++) ++ if (urb_priv->td[i] == td) { ++ *index = i; ++ return turb->td + i; ++ } ++ ++ return NULL; ++} ++ ++/* ++ * map the td's data to dma-able memory ++ * ++ * if this td transfers data, ++ * sets tmtd->data to the urb's data buffer ++ * sets tmtd->dma to dma-able memory ++ * sets tmtd->bounce to non-NULL if a bounce buffer is allocated ++ * copies the urb's data buffer to the bounce buffer if necessary ++ */ ++static int tmio_td_dma_map (struct ohci_hcd *ohci, struct urb *urb, ++ struct tmio_td *tmtd, int idx) ++{ ++ struct usb_hcd* hcd = ohci_to_hcd (ohci); ++ struct device* dev = hcd->self.controller; ++ dma_addr_t dma; ++ ++ if (!tmtd->len) ++ return 0; ++ ++ if (tmio_dma_to_virt (hcd, tmtd->dma)) ++ return 0; ++ ++ tmtd->data = tmio_urb_dma_to_virt (urb, tmtd->dma); ++ if (unlikely (!tmtd->data)) { ++ dev_err (dev, "TD has bad dma address 0x%08x\n", tmtd->dma); ++ return 0; ++ } ++ ++ tmtd->bounce = tmio_dma_alloc (dev, tmtd->len, &dma, GFP_ATOMIC); ++ if (!tmtd->bounce) ++ return -ENOMEM; ++ ++ if ((usb_pipecontrol (urb->pipe) && !idx) || usb_pipeout (urb->pipe)) { ++ consistent_sync (tmtd->bounce, tmtd->len, DMA_TO_DEVICE); ++ memcpy (tmtd->bounce, tmtd->data, tmtd->len); ++ } else ++ consistent_sync (tmtd->bounce, tmtd->len, DMA_FROM_DEVICE); ++ ++ tmtd->dma = dma; ++ return 0; ++} ++ ++/* ++ * unmaps the td's data from dma-able memory ++ * ++ * if a bounce buffer has been allocated, ++ * copy the bounce buffer to the urb's data buffer if necessary ++ * free the bounce buffer ++ */ ++static void tmio_td_dma_unmap (struct ohci_hcd *ohci, struct td *td) ++{ ++ struct device* dev = (ohci_to_hcd (ohci))->self.controller; ++ struct urb* urb = td->urb; ++ int idx; ++ struct tmio_td* tmtd = tmio_td_find (td, &idx); ++ ++ if (!tmtd->bounce) ++ return; ++ ++ if (usb_pipein (urb->pipe) && (usb_pipecontrol (urb->pipe) ? idx : 1)) { ++ memcpy (tmtd->data, tmtd->bounce, tmtd->len); ++ consistent_sync (tmtd->data, tmtd->len, DMA_TO_DEVICE); ++ } ++ ++ tmio_dma_free (dev, tmtd->len, tmtd->bounce, tmtd->dma); ++} ++ ++static int tmio_urb_runqueue (struct ohci_hcd *ohci, struct urb *urb) ++{ ++ struct tmio_urb* turb = urb_to_turb (urb); ++ urb_priv_t* urb_priv= urb->hcpriv; ++ int start = turb->td_queue; ++ int retval = 0; ++ int i; ++ ++ for (i = start; i < turb->td_add; i = ++turb->td_queue) { ++ struct tmio_td *tmtd = turb->td + i; ++ ++ if ((retval = tmio_td_dma_map (ohci, urb, tmtd, i))) ++ break; ++ ++ td_fill (ohci, tmtd->info, tmtd->dma, tmtd->len, urb, i); ++ } ++ ++ if (i <= start) ++ return retval; ++ ++ /* kickstart the appropriate list */ ++ wmb (); ++ switch (urb_priv->ed->type) { ++ case PIPE_BULK: ++ ohci_writel (ohci, OHCI_BLF, &ohci->regs->cmdstatus); ++ break; ++ case PIPE_CONTROL: ++ ohci_writel (ohci, OHCI_CLF, &ohci->regs->cmdstatus); ++ break; ++ } ++ ++ return retval; ++} ++ ++/* ++ * This needs to be called with ohci->lock held so the pending urb list ++ * isn't modified. ++ */ ++static int tmio_ohci_runqueue (struct ohci_hcd *ohci) ++{ ++ urb_priv_t* priv; ++ int retval = 0; ++ ++ list_for_each_entry_reverse (priv, &ohci->pending, pending) ++ if ((retval = tmio_urb_runqueue (ohci, priv->td[0]->urb))) ++ return retval; ++ ++ return retval; ++} ++ ++static void tmio_td_fill (struct ohci_hcd *ohci, u32 info, ++ dma_addr_t data, int len, struct urb *urb, int index) ++{ ++ struct tmio_urb* turb = urb_to_turb (urb); ++ struct tmio_td* tmtd = turb->td + index; ++ ++ tmtd->data = NULL; ++ tmtd->bounce = NULL; ++ tmtd->dma = data; ++ tmtd->len = len; ++ tmtd->info = info; ++ turb->td_add = index + 1; ++} ++ ++static void ++tmio_td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td) ++{ ++ tmio_td_dma_unmap (ohci, td); ++ td_done (ohci, urb, td); ++} ++ ++const static struct ohci_ops tmio_ops = { ++ .dma_pool_alloc = tmio_dma_pool_alloc, ++ .dma_pool_free = tmio_dma_pool_free, ++ .td_fill = tmio_td_fill, ++ .td_done = tmio_td_done, ++}; ++ ++/*-------------------------------------------------------------------------*/ ++ ++static irqreturn_t tmio_irq (struct usb_hcd *hcd, struct pt_regs *ptregs) ++{ ++ irqreturn_t retval = ohci_irq (hcd, ptregs); ++ ++ if (retval == IRQ_HANDLED) { ++ struct ohci_hcd *ohci = hcd_to_ohci (hcd); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&ohci->lock, flags); ++ tmio_ohci_runqueue (ohci); ++ spin_unlock_irqrestore (&ohci->lock, flags); ++ } ++ ++ return retval; ++} ++ ++/* ++ * This is ohci_urb_enqueue with: ++ * dma address sanitization for tmio_urb_dma_to_virt() ++ * allocate extra space in urb_priv for our private data ++ * initialize urb_priv->td[0]->urb for tmio_ohci_runqueue() ++ * call tmio_ohci_runqueue() after submitting TDs ++ */ ++static int tmio_urb_enqueue ( ++ struct usb_hcd *hcd, ++ struct usb_host_endpoint *ep, ++ struct urb *urb, ++ gfp_t mem_flags ++) { ++ struct ohci_hcd *ohci = hcd_to_ohci (hcd); ++ struct ed *ed; ++ urb_priv_t *urb_priv; ++ unsigned int pipe = urb->pipe; ++ int i, size = 0; ++ unsigned long flags; ++ int retval = 0; ++ ++#ifdef OHCI_VERBOSE_DEBUG ++ urb_print (urb, "SUB", usb_pipein (pipe)); ++#endif ++ ++ /* make sure we can convert dma offsets back to virtual addresses */ ++ if (!tmio_dma_to_virt (hcd, urb->setup_dma)) ++ urb->setup_dma = 0; ++ ++ if (!tmio_dma_to_virt (hcd, urb->transfer_dma)) ++ urb->transfer_dma = sizeof (struct usb_ctrlrequest); ++ ++ /* every endpoint has a ed, locate and maybe (re)initialize it */ ++ if (! (ed = ed_get (ohci, ep, urb->dev, pipe, urb->interval))) ++ return -ENOMEM; ++ ++ /* for the private part of the URB we need the number of TDs (size) */ ++ switch (ed->type) { ++ case PIPE_CONTROL: ++ /* td_submit_urb() doesn't yet handle these */ ++ if (urb->transfer_buffer_length > 4096) ++ return -EMSGSIZE; ++ ++ /* 1 TD for setup, 1 for ACK, plus ... */ ++ size = 2; ++ /* FALLTHROUGH */ ++ // case PIPE_INTERRUPT: ++ // case PIPE_BULK: ++ default: ++ /* one TD for every 4096 Bytes (can be upto 8K) */ ++ size += urb->transfer_buffer_length / 4096; ++ /* ... and for any remaining bytes ... */ ++ if ((urb->transfer_buffer_length % 4096) != 0) ++ size++; ++ /* ... and maybe a zero length packet to wrap it up */ ++ if (size == 0) ++ size++; ++ else if ((urb->transfer_flags & URB_ZERO_PACKET) != 0 ++ && (urb->transfer_buffer_length ++ % usb_maxpacket (urb->dev, pipe, ++ usb_pipeout (pipe))) == 0) ++ size++; ++ break; ++ case PIPE_ISOCHRONOUS: /* number of packets from URB */ ++ size = urb->number_of_packets; ++ break; ++ } ++ ++ /* allocate the private part of the URB */ ++ urb_priv = kzalloc (sizeof (urb_priv_t) ++ + size * sizeof (struct td*) ++ + sizeof (struct tmio_urb) ++ + size * sizeof (struct tmio_td), ++ mem_flags); ++ if (!urb_priv) ++ return -ENOMEM; ++ INIT_LIST_HEAD (&urb_priv->pending); ++ urb_priv->length = size; ++ urb_priv->ed = ed; ++ ++ /* allocate the TDs (deferring hash chain updates) */ ++ for (i = 0; i < size; i++) { ++ urb_priv->td [i] = td_alloc (ohci, mem_flags); ++ if (!urb_priv->td [i]) { ++ urb_priv->length = i; ++ urb_free_priv (ohci, urb_priv); ++ return -ENOMEM; ++ } ++ urb_priv->td [i]->urb = urb; ++ } ++ ++ spin_lock_irqsave (&ohci->lock, flags); ++ ++ /* don't submit to a dead HC */ ++ if (!HC_IS_RUNNING(hcd->state)) { ++ retval = -ENODEV; ++ goto fail; ++ } ++ ++ /* in case of unlink-during-submit */ ++ spin_lock (&urb->lock); ++ if (urb->status != -EINPROGRESS) { ++ spin_unlock (&urb->lock); ++ urb->hcpriv = urb_priv; ++ finish_urb (ohci, urb, NULL); ++ retval = 0; ++ goto fail; ++ } ++ ++ /* schedule the ed if needed */ ++ if (ed->state == ED_IDLE) { ++ retval = ed_schedule (ohci, ed); ++ if (retval < 0) ++ goto fail0; ++ if (ed->type == PIPE_ISOCHRONOUS) { ++ u16 frame = ohci_frame_no(ohci); ++ ++ /* delay a few frames before the first TD */ ++ frame += max_t (u16, 8, ed->interval); ++ frame &= ~(ed->interval - 1); ++ frame |= ed->branch; ++ urb->start_frame = frame; ++ ++ /* yes, only URB_ISO_ASAP is supported, and ++ * urb->start_frame is never used as input. ++ */ ++ } ++ } else if (ed->type == PIPE_ISOCHRONOUS) ++ urb->start_frame = ed->last_iso + ed->interval; ++ ++ /* fill the TDs and link them to the ed; and ++ * enable that part of the schedule, if needed ++ * and update count of queued periodic urbs ++ */ ++ urb->hcpriv = urb_priv; ++ td_submit_urb (ohci, urb); ++ tmio_ohci_runqueue (ohci); ++ ++fail0: ++ spin_unlock (&urb->lock); ++fail: ++ if (retval) ++ urb_free_priv (ohci, urb_priv); ++ spin_unlock_irqrestore (&ohci->lock, flags); ++ return retval; ++} ++ ++static const struct hc_driver tmio_hc_driver = { ++ .description = hcd_name, ++ .product_desc = "TMIO OHCI USB Host Controller", ++ .hcd_priv_size = sizeof (struct ohci_hcd) ++ + sizeof (struct tmio_hcd), ++ ++ /* generic hardware linkage */ ++ .irq = tmio_irq, ++ .flags = HCD_USB11 | HCD_MEMORY, ++ ++ /* basic lifecycle operations */ ++ .start = tmio_start, ++ .stop = tmio_stop, ++ ++ /* managing i/o requests and associated device resources */ ++ .urb_enqueue = tmio_urb_enqueue, ++ .urb_dequeue = ohci_urb_dequeue, ++ .endpoint_disable = ohci_endpoint_disable, ++ ++ /* scheduling support */ ++ .get_frame_number = ohci_get_frame, ++ ++ /* root hub support */ ++ .hub_status_data = ohci_hub_status_data, ++ .hub_control = ohci_hub_control, ++#ifdef CONFIG_PM ++ .bus_suspend = ohci_bus_suspend, ++ .bus_resume = ohci_bus_resume, ++#endif ++ .start_port_reset = ohci_start_port_reset, ++}; ++ ++/*-------------------------------------------------------------------------*/ ++ ++/* configure so an HC device and id are always provided */ ++/* always called with process context; sleeping is OK */ ++ ++/** ++ * tmio_probe - initialize TMIO-based HCDs ++ * Context: !in_interrupt() ++ * ++ * Allocates basic resources for this USB host controller, and ++ * then invokes the start() method for the HCD associated with it ++ * through the hotplug entry's driver_data. ++ */ ++static int tmio_probe (struct device *dev) ++{ ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ struct resource* config = tmio_resource_config (dev); ++ struct resource* regs = tmio_resource_control (dev); ++ struct resource* sram = tmio_resource_mem (dev); ++ struct resource* irq = tmio_resource_irq (dev); ++ struct usb_operations* ops; ++ struct tmio_hcd* tmio; ++ struct ohci_hcd* ohci; ++ struct usb_hcd* hcd; ++ int retval; ++ ++ if (usb_disabled ()) ++ return -ENODEV; ++ ++ if (dev->dma_mask || dev->coherent_dma_mask) { ++ dev_err (dev, "DMA not supported\n"); ++ return -ENODEV; ++ } ++ ++ hcd = usb_create_hcd (&tmio_hc_driver, dev, dev->bus_id); ++ if (!hcd) { ++ retval = -ENOMEM; ++ goto err_create_hcd; ++ } ++ ++ tmio = hcd_to_tmio (hcd); ++ tmio->td_pool.dev = dev; ++ tmio->ed_pool.dev = dev; ++ tmio->td_pool.size = sizeof (struct td); ++ tmio->ed_pool.size = sizeof (struct ed); ++ ohci = hcd_to_ohci (hcd); ++ ohci_hcd_init (ohci); ++ ohci->ops = &tmio_ops; ++ ++ retval = request_resource (tdev->iomem, config); ++ if (retval) ++ goto err_request_config_resource; ++ ++ retval = request_resource (tdev->iomem, regs); ++ if (retval) ++ goto err_request_regs_resource; ++ ++ retval = request_resource (tdev->iomem, sram); ++ if (retval) ++ goto err_request_sram_resource; ++ ++ hcd->rsrc_start = regs->start; ++ hcd->rsrc_len = regs->end - regs->start + 1; ++ tmio->sram_len = sram->end - sram->start + 1; ++ ++ tmio->ccr = ioremap (config->start, config->end - config->start + 1); ++ if (!tmio->ccr) { ++ retval = -ENOMEM; ++ goto err_ioremap_ccr; ++ } ++ ++ hcd->regs = ioremap (hcd->rsrc_start, hcd->rsrc_len); ++ if (!hcd->regs) { ++ retval = -ENOMEM; ++ goto err_ioremap_regs; ++ } ++ ++ tmio->sram = ioremap (sram->start, tmio->sram_len); ++ if (!tmio->sram) { ++ retval = -ENOMEM; ++ goto err_ioremap_sram; ++ } ++ ++ /* drivers should use our coherent buffer allocator */ ++ ops = &tmio->ops; ++ memcpy (ops, hcd->self.op, sizeof *ops); ++ ops->buffer_alloc = tmio_buffer_alloc; ++ ops->buffer_free = tmio_buffer_free; ++ hcd->self.op = ops; ++ ++ retval = usb_add_hcd (hcd, irq->start, SA_INTERRUPT); ++ if (retval) ++ goto err_usb_add_hcd; ++ ++ return 0; ++ ++err_usb_add_hcd: ++ iounmap (tmio->sram); ++err_ioremap_sram: ++ iounmap (hcd->regs); ++err_ioremap_regs: ++ iounmap (tmio->ccr); ++err_ioremap_ccr: ++ release_resource (sram); ++err_request_sram_resource: ++ release_resource (regs); ++err_request_regs_resource: ++ release_resource (config); ++err_request_config_resource: ++ usb_put_hcd (hcd); ++err_create_hcd: ++ return retval; ++} ++ ++/* may be called without controller electrically present */ ++/* may be called with controller, bus, and devices active */ ++ ++/** ++ * tmio_remove - shutdown processing for TMIO-based HCDs ++ * @dev: USB Host Controller being removed ++ * Context: !in_interrupt() ++ * ++ * Reverses the effect of tmio_probe(), first invoking ++ * the HCD's stop() method. It is always called from a thread ++ * context, normally "rmmod", "apmd", or something similar. ++ */ ++static int tmio_remove (struct device *dev) ++{ ++ struct usb_hcd* hcd = dev_get_drvdata (dev); ++ struct tmio_hcd* tmio = hcd_to_tmio (hcd); ++ ++ usb_remove_hcd (hcd); ++ iounmap (tmio->sram); ++ iounmap (hcd->regs); ++ iounmap (tmio->ccr); ++ release_resource (tmio_resource_mem (dev)); ++ release_resource (tmio_resource_control (dev)); ++ release_resource (tmio_resource_config (dev)); ++ usb_put_hcd (hcd); ++ return 0; ++} ++ ++static struct device_driver tmio_ohci = { ++ .name = TMIO_NAME_OHCI, ++ .bus = &tmio_bus_type, ++ .probe = tmio_probe, ++ .remove = tmio_remove, ++}; ++ ++static int __init tmio_init (void) ++{ ++ dbg (DRIVER_INFO " (%s)", TMIO_SOC_NAME); ++ dbg ("block sizes: ed %d td %d", ++ sizeof (struct ed), sizeof (struct td)); ++ ++ return driver_register (&tmio_ohci); ++} ++ ++static void __exit tmio_exit (void) ++{ ++ driver_unregister (&tmio_ohci); ++} ++ ++module_init (tmio_init); ++module_exit (tmio_exit); +Index: git/drivers/usb/host/Kconfig +=================================================================== +--- git.orig/drivers/usb/host/Kconfig 2006-11-07 21:46:32.000000000 +0000 ++++ git/drivers/usb/host/Kconfig 2006-11-07 21:48:38.000000000 +0000 +@@ -84,6 +84,7 @@ config USB_OHCI_HCD + depends on USB && USB_ARCH_HAS_OHCI + select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 + select I2C if ARCH_PNX4008 ++ select GENERIC_ALLOCATOR if TOSHIBA_TC6393XB + ---help--- + The Open Host Controller Interface (OHCI) is a standard for accessing + USB 1.1 host controller hardware. It does more in hardware than Intel's +Index: git/drivers/usb/host/ohci-hcd.c +=================================================================== +--- git.orig/drivers/usb/host/ohci-hcd.c 2006-11-07 21:46:32.000000000 +0000 ++++ git/drivers/usb/host/ohci-hcd.c 2006-11-07 21:48:33.000000000 +0000 +@@ -944,6 +944,7 @@ MODULE_LICENSE ("GPL"); + || defined(CONFIG_ARCH_OMAP) \ + || defined (CONFIG_ARCH_LH7A404) \ + || defined (CONFIG_PXA27x) \ ++ || defined (CONFIG_TOSHIBA_TC6393XB) \ + || defined (CONFIG_ARCH_EP93XX) \ + || defined (CONFIG_SOC_AU1X00) \ + || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \ diff --git a/packages/linux/linux-openzaurus-2.6.18+git/tmio-tc6393-r8.patch b/packages/linux/linux-openzaurus-2.6.18+git/tmio-tc6393-r8.patch new file mode 100644 index 0000000000..2f1b47d783 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/tmio-tc6393-r8.patch @@ -0,0 +1,800 @@ + arch/arm/common/Kconfig | 3 + arch/arm/common/Makefile | 1 + arch/arm/common/tc6393xb.c | 668 ++++++++++++++++++++++++++++++++++++++++ + arch/arm/mach-pxa/Kconfig | 1 + include/asm-arm/arch-pxa/irqs.h | 10 + include/asm-arm/hardware/tmio.h | 44 ++ + 6 files changed, 727 insertions(+) + +Index: git/arch/arm/common/tc6393xb.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ git/arch/arm/common/tc6393xb.c 2006-11-07 22:14:49.000000000 +0000 +@@ -0,0 +1,668 @@ ++/* ++ * Toshiba TC6393XB SoC support ++ * ++ * Maintainer: Chris Humbert <mahadri-kernel@drigon.com> ++ * ++ * Copyright (c) 2005-2006 Chris Humbert ++ * Copyright (c) 2005 Dirk Opfer ++ * ++ * Based on code written by Sharp/Lineo for 2.4 kernels ++ * Based on locomo.c ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/kernel.h> ++#include <linux/delay.h> ++#include <linux/errno.h> ++#include <linux/ioport.h> ++#include <linux/device.h> ++#include <linux/platform_device.h> ++#include <linux/slab.h> ++#include <linux/spinlock.h> ++#include <linux/fb.h> ++ ++#include <asm/hardware.h> ++#include <asm/mach-types.h> ++#include <asm/io.h> ++#include <asm/irq.h> ++#include <asm/mach/irq.h> ++#include <asm/arch/irqs.h> ++#include <asm/hardware/tmio.h> ++ ++#ifndef TMIO_SOC_TC6393XB ++#error "TC6393XB SoC not configured" ++#endif ++ ++/*--------------------------------------------------------------------------*/ ++ ++/* cell ids must be 0-based because they are used as array indexes. */ ++#define TC6393_CELL_NAND 0 ++#define TC6393_CELL_SD 1 ++#define TC6393_CELL_OHCI 2 ++#define TC6393_CELL_SERIAL 3 ++#define TC6393_CELL_LCD 4 ++#define TC6393_NUM_CELLS 5 ++ ++#define TC6393_RESOURCE(_name, _start, _end, _flags) \ ++ { \ ++ .name = _name, \ ++ .start = _start, \ ++ .end = _end, \ ++ .flags = _flags, \ ++ } ++ ++#define TC6393_MEM(name, start, size) \ ++ TC6393_RESOURCE(name, start, (start) + (size) - 1, IORESOURCE_MEM) ++ ++#define TC6393_IRQ(name, irq) \ ++ TC6393_RESOURCE(name, irq, irq, IORESOURCE_IRQ) ++ ++const static struct resource tc6393_NAND_resource[] = { ++ TC6393_MEM (TMIO_NAME_NAND, 0x000100, 0x100), ++ TC6393_MEM (TMIO_NAME_NAND, 0x001000, 0x008), ++ TC6393_MEM (TMIO_NAME_NAND, 0, 0), ++ TC6393_IRQ (TMIO_NAME_NAND, IRQ_TC6393_NAND), ++}; ++ ++const static struct resource tc6393_SD_resource[] = { ++ TC6393_MEM (TMIO_NAME_SD, 0x000200, 0x100), ++ TC6393_MEM (TMIO_NAME_SD, 0x002000, 0x200), ++ TC6393_MEM (TMIO_NAME_SD, 0, 0), ++ TC6393_IRQ (TMIO_NAME_SD, IRQ_TC6393_SD), ++}; ++ ++const static struct resource tc6393_OHCI_resource[] = { ++ TC6393_MEM (TMIO_NAME_OHCI, 0x000300, 0x100), ++ TC6393_MEM (TMIO_NAME_OHCI, 0x003000, 0x100), ++ TC6393_MEM (TMIO_NAME_OHCI, 0x010000, 32 * 1024), ++ TC6393_IRQ (TMIO_NAME_OHCI, IRQ_TC6393_OHCI), ++}; ++ ++const static struct resource tc6393_SERIAL_resource[] = { ++ TC6393_MEM (TMIO_NAME_SERIAL, 0x000400, 0x100), ++ TC6393_MEM (TMIO_NAME_SERIAL, 0x004000, 0x100), ++ TC6393_MEM (TMIO_NAME_SERIAL, 0, 0), ++ TC6393_IRQ (TMIO_NAME_SERIAL, IRQ_TC6393_SERIAL), ++}; ++ ++const static struct resource tc6393_LCD_resource[] = { ++ TC6393_MEM (TMIO_NAME_LCD, 0x000500, 0x100), ++ TC6393_MEM (TMIO_NAME_LCD, 0x005000, 0x200), ++ TC6393_MEM (TMIO_NAME_LCD, 0x100000, 1024 * 1024), ++ TC6393_IRQ (TMIO_NAME_LCD, IRQ_TC6393_LCD), ++}; ++ ++#define TC6393_CELL(_NAME) \ ++ [TC6393_CELL_##_NAME] = { \ ++ .name = TMIO_NAME_##_NAME, \ ++ .id = TC6393_CELL_##_NAME, \ ++ .resource = tc6393_##_NAME##_resource, \ ++ .num_resources = ARRAY_SIZE (tc6393_##_NAME##_resource), \ ++ } ++ ++struct tc6393_cell { ++ const char* name; ++ unsigned int id; ++ const struct resource* resource; ++ unsigned int num_resources; ++}; ++ ++const static struct tc6393_cell tc6393_cell [TC6393_NUM_CELLS] = { ++ TC6393_CELL (NAND ), ++ TC6393_CELL (SD ), ++ TC6393_CELL (OHCI ), ++ TC6393_CELL (SERIAL ), ++ TC6393_CELL (LCD ), ++}; ++ ++/*--------------------------------------------------------------------------*/ ++ ++/* ++ * TC6393 System Configuration Register ++ */ ++struct tc6393_scr { ++ u8 x00[8]; ++ u8 revid; /* 0x08 Revision ID */ ++ u8 x01[0x47]; ++ u8 isr; /* 0x50 Interrupt Status */ ++ u8 x02; ++ u8 imr; /* 0x52 Interrupt Mask */ ++ u8 x03; ++ u8 irr; /* 0x54 Interrupt Routing */ ++ u8 x04[0x0b]; ++ u16 gper; /* 0x60 GP Enable */ ++ u8 x05[2]; ++ u16 gpi_sr[2]; /* 0x64 GPI Status */ ++ u16 gpi_imr[2]; /* 0x68 GPI INT Mask */ ++ u16 gpi_eder[2]; /* 0x6c GPI Edge Detect Enable */ ++ u16 gpi_lir[4]; /* 0x70 GPI Level Invert */ ++ u16 gpo_dsr[2]; /* 0x78 GPO Data Set */ ++ u16 gpo_doecr[2]; /* 0x7c GPO Data OE Control */ ++ u16 gp_iarcr[2]; /* 0x80 GP Internal Active Reg Control */ ++ u16 gp_iarlcr[2]; /* 0x84 GP Internal Active Reg Level Con*/ ++ u8 gpi_bcr[4]; /* 0x88 GPI Buffer Control */ ++ u16 gpa_iarcr; /* 0x8c GPa Internal Active Reg Control */ ++ u8 x06[2]; ++ u16 gpa_iarlcr; /* 0x90 GPa Internal Active Reg Level Co*/ ++ u8 x07[2]; ++ u16 gpa_bcr; /* 0x94 GPa Buffer Control */ ++ u8 x08[2]; ++ u16 ccr; /* 0x98 Clock Control */ ++ u16 pll2cr; /* 0x9a PLL2 Control */ ++ u16 pll1cr[2]; /* 0x9c PLL1 Control */ ++ u8 diarcr; /* 0xa0 Device Internal Active Reg Contr*/ ++ u8 dbocr; /* 0xa1 Device Buffer Off Control */ ++ u8 x09[0x3e]; ++ u8 fer; /* 0xe0 Function Enable */ ++ u8 x10[3]; ++ u16 mcr; /* 0xe4 Mode Control */ ++ u8 x11[0x14]; ++ u8 config; /* 0xfc Configuration Control */ ++ u8 x12[2]; ++ u8 debug; /* 0xff Debug */ ++} __attribute__ ((packed)); ++ ++union tc6393_scr_fer { ++ u8 raw; ++struct { ++ unsigned usben:1; /* D0 USB enable */ ++ unsigned lcdcven:1; /* D1 polysylicon TFT enable */ ++ unsigned slcden:1; /* D2 SLCD enable */ ++} __attribute__ ((packed)); ++} __attribute__ ((packed)); ++ ++union tc6393_scr_ccr { ++ u16 raw; ++struct { ++ unsigned ck32ken:1; /* D0 SD host clock enable */ ++ unsigned usbcken:1; /* D1 USB host clock enable */ ++ unsigned x00:2; ++ unsigned sharp:1; /* D4 ??? set in Sharp's code */ ++ unsigned x01:3; ++ enum { disable = 0, ++ m12MHz = 1, ++ m24MHz = 2, ++ m48MHz = 3, ++ } mclksel:3; /* D10-D8 LCD controller clock */ ++ unsigned x02:1; ++ enum { h24MHz = 0, ++ h48MHz = 1, ++ } hclksel:2; /* D13-D12 host bus clock */ ++ unsigned x03:2; ++} __attribute__ ((packed)); ++} __attribute__ ((packed)); ++ ++/*--------------------------------------------------------------------------*/ ++ ++struct tc6393 { ++ spinlock_t lock; /* read-modify-write lock */ ++ struct device* dev; /* TC6393 device */ ++ struct tc6393_scr __iomem *scr; /* system configuration reg */ ++ ++ struct resource rscr; /* system config reg resource */ ++ struct resource* iomem; /* entire TC6393 iomem resource */ ++ unsigned int irq; /* hardware cascade irq */ ++ ++ struct tmio_device tdev [TC6393_NUM_CELLS]; ++}; ++ ++/*--------------------------------------------------------------------------*/ ++ ++static u32 tc6393_ioread32 (const void __iomem *addr) ++{ ++ return ((u32) ioread16 (addr)) | (((u32) ioread16 (addr + 2)) << 16); ++} ++ ++static u32 tc6393_iowrite32 (u32 val, const void __iomem *addr) ++{ ++ iowrite16 (val, addr); ++ iowrite16 (val >> 16, addr + 2); ++ return val; ++} ++ ++u32 get_tc6393_gpio (struct device *dev) ++{ ++ struct tc6393* tc6393 = dev_get_drvdata (dev); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ ++ return tc6393_ioread32 (scr->gpo_dsr); ++} ++EXPORT_SYMBOL (get_tc6393_gpio); ++ ++u32 set_tc6393_gpio (struct device *dev, u32 bits) ++{ ++ struct tc6393* tc6393 = dev_get_drvdata (dev); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ unsigned long flags; ++ u32 dsr; ++ ++ spin_lock_irqsave (&tc6393->lock, flags); ++ dsr = tc6393_ioread32 (scr->gpo_dsr) | bits; ++ tc6393_iowrite32 (dsr, scr->gpo_dsr); ++ spin_unlock_irqrestore (&tc6393->lock, flags); ++ ++ return dsr; ++} ++EXPORT_SYMBOL (set_tc6393_gpio); ++ ++u32 reset_tc6393_gpio (struct device *dev, u32 bits) ++{ ++ struct tc6393* tc6393 = dev_get_drvdata (dev); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ unsigned long flags; ++ u32 dsr; ++ ++ spin_lock_irqsave (&tc6393->lock, flags); ++ dsr = tc6393_ioread32 (scr->gpo_dsr) & ~bits; ++ tc6393_iowrite32 (dsr, scr->gpo_dsr); ++ spin_unlock_irqrestore (&tc6393->lock, flags); ++ ++ return dsr; ++} ++EXPORT_SYMBOL (reset_tc6393_gpio); ++ ++/*--------------------------------------------------------------------------*/ ++ ++static void ++tc6393_irq (unsigned int irq, struct irqdesc *desc) ++{ ++ struct tc6393* tc6393 = get_irq_chipdata (irq); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ unsigned int isr; ++ unsigned int bit; ++ unsigned int i; ++ ++ desc->chip->ack (irq); ++ ++ while ((isr = ioread8(&scr->isr) & ~ioread8(&scr->imr))) ++ for (bit = 1, i = IRQ_TC6393_START; i <= IRQ_TC6393_LCD; ++ bit <<= 1, i++) ++ if (isr & bit) ++ desc_handle_irq (i, irq_desc + i); ++} ++ ++static void tc6393_irq_ack (unsigned int irq) ++{ ++} ++ ++static void tc6393_irq_mask (unsigned int irq) ++{ ++ struct tc6393* tc6393 = get_irq_chipdata (irq); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ unsigned long flags; ++ ++ spin_lock_irqsave (&tc6393->lock, flags); ++ iowrite8 (ioread8 (&scr->imr) | (1 << (irq - IRQ_TC6393_START)), ++ &scr->imr); ++ spin_unlock_irqrestore (&tc6393->lock, flags); ++} ++ ++static void tc6393_irq_unmask (unsigned int irq) ++{ ++ struct tc6393* tc6393 = get_irq_chipdata (irq); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ unsigned long flags; ++ ++ spin_lock_irqsave (&tc6393->lock, flags); ++ iowrite8 (ioread8 (&scr->imr) & ~(1 << (irq - IRQ_TC6393_START)), ++ &scr->imr); ++ spin_unlock_irqrestore (&tc6393->lock, flags); ++} ++ ++static struct irqchip tc6393_chip = { ++ .ack = tc6393_irq_ack, ++ .mask = tc6393_irq_mask, ++ .unmask = tc6393_irq_unmask, ++}; ++ ++static void tc6393_attach_irq (struct tc6393 *tc6393) ++{ ++ unsigned int irq; ++ ++ for (irq = IRQ_TC6393_START; irq <= IRQ_TC6393_LCD; irq++) { ++ set_irq_chip (irq, &tc6393_chip); ++ set_irq_chipdata(irq, tc6393); ++ set_irq_handler (irq, do_edge_IRQ); ++ set_irq_flags (irq, IRQF_VALID | IRQF_PROBE); ++ } ++ ++ set_irq_type (tc6393->irq, IRQT_FALLING); ++ set_irq_chipdata (tc6393->irq, tc6393); ++ set_irq_chained_handler (tc6393->irq, tc6393_irq); ++} ++ ++static void tc6393_detach_irq (struct tc6393 *tc6393) ++{ ++ unsigned int irq; ++ ++ set_irq_chained_handler (tc6393->irq, NULL); ++ set_irq_chipdata (tc6393->irq, NULL); ++ ++ for (irq = IRQ_TC6393_START; irq <= IRQ_TC6393_LCD; irq++) { ++ set_irq_flags (irq, 0); ++ set_irq_chip (irq, NULL); ++ set_irq_chipdata(irq, NULL); ++ } ++} ++ ++/*--------------------------------------------------------------------------*/ ++ ++static int tc6393_bus_match (struct device *dev, struct device_driver *drv) ++{ ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ const struct tc6393_cell* cell = tdev->soc_data; ++ ++ return !strcmp (cell->name, drv->name); ++} ++ ++static int tc6393_bus_suspend (struct device *dev, pm_message_t state) ++{ ++ struct device_driver* drv = dev->driver; ++ return drv && drv->suspend ? drv->suspend (dev, state) : 0; ++} ++ ++static int tc6393_bus_resume (struct device *dev) ++{ ++ struct device_driver* drv = dev->driver; ++ return drv && drv->resume ? drv->resume (dev) : 0; ++} ++ ++struct bus_type tc6393_bus_type = { ++ .name = TMIO_NAME_BUS, ++ .match = tc6393_bus_match, ++ .suspend = tc6393_bus_suspend, ++ .resume = tc6393_bus_resume, ++}; ++EXPORT_SYMBOL (tc6393_bus_type); ++ ++/*--------------------------------------------------------------------------*/ ++ ++static void tc6393_cell_clock (struct device *dev, int enable) ++{ ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ const struct tc6393_cell* cell = tdev->soc_data; ++ struct tc6393* tc6393 = dev_get_drvdata (dev->parent); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ union tc6393_scr_ccr ccr; ++ unsigned long flags; ++ ++ spin_lock_irqsave (&tc6393->lock, flags); ++ ccr.raw = ioread16 (&scr->ccr); ++ ++ switch (cell->id) { ++ case TC6393_CELL_SD: ccr.ck32ken = enable; break; ++ case TC6393_CELL_OHCI: ccr.usbcken = enable; break; ++ case TC6393_CELL_LCD: ++ ccr.mclksel = enable ? m48MHz : disable; ++ break; ++ } ++ ++ printk (KERN_DEBUG TMIO_NAME_CORE ": scr->ccr = %04x\n", ccr.raw); ++ ++ iowrite16(ccr.raw, &scr->ccr); ++ spin_unlock_irqrestore (&tc6393->lock, flags); ++} ++ ++static void tc6393_cell_function (struct device *dev, int enable) ++{ ++ struct tmio_device* tdev = dev_to_tdev (dev); ++ const struct tc6393_cell* cell = tdev->soc_data; ++ struct tc6393* tc6393 = dev_get_drvdata (dev->parent); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ union tc6393_scr_fer fer; ++ unsigned long flags; ++ ++ if (cell->id == TC6393_CELL_NAND) { ++ if (enable) { ++ /* SMD buffer on */ ++ printk (KERN_DEBUG TMIO_NAME_CORE ": SMD buffer on\n"); ++ iowrite8 (0xff, scr->gpi_bcr + 1); ++ } ++ return; ++ } ++ ++ spin_lock_irqsave (&tc6393->lock, flags); ++ fer.raw = ioread16 (&scr->fer); ++ ++ switch (cell->id) { ++ case TC6393_CELL_OHCI: fer.usben = enable; break; ++ case TC6393_CELL_LCD: fer.slcden = enable; break; ++ } ++ ++ printk (KERN_DEBUG TMIO_NAME_CORE ": scr->fer = %02x\n", fer.raw); ++ ++ iowrite8 (fer.raw, &scr->fer); ++ spin_unlock_irqrestore (&tc6393->lock, flags); ++} ++ ++static void ++tc6393_lcd_mode (struct device *dev, const struct fb_videomode *mode) ++{ ++ struct tc6393* tc6393 = dev_get_drvdata (dev->parent); ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ ++ iowrite16 (mode->pixclock, scr->pll1cr + 0); ++ iowrite16 (mode->pixclock >> 16, scr->pll1cr + 1); ++} ++ ++static struct tmio_cell_ops tc6393_cell_ops = { ++ .clock = tc6393_cell_clock, ++ .function = tc6393_cell_function, ++ .lcd_mode = tc6393_lcd_mode, ++}; ++ ++static void tc6393_device_release (struct device *dev) ++{ ++} ++ ++static int ++tc6393_device_register (struct tc6393 *tc6393, struct tmio_cell *tcell) ++{ ++ const struct tc6393_cell* cell; ++ struct tmio_device* tdev; ++ struct device* dev; ++ int i; ++ ++ for (i = 0; strcmp (tcell->name, tc6393_cell [i].name); ) ++ if (++i >= ARRAY_SIZE(tc6393_cell)) ++ return -EINVAL; ++ ++ cell = tc6393_cell + i; ++ tdev = tc6393->tdev + i; ++ dev = &tdev->dev; ++ ++ tdev->ops = &tc6393_cell_ops; ++ tdev->iomem = tc6393->iomem; ++ tdev->soc_data = (void*) cell; ++ ++ dev->parent = tc6393->dev; ++ strncpy (dev->bus_id, cell->name, sizeof dev->bus_id); ++ dev->bus = &tc6393_bus_type; ++ dev->dma_mask = tc6393->dev->dma_mask; ++ dev->coherent_dma_mask = tc6393->dev->coherent_dma_mask; ++ dev->release = tc6393_device_release; ++ dev->platform_data = tcell->platform_data; ++ ++ for (i=0; i < cell->num_resources; i++) { ++ const struct resource* cr = cell->resource + i; ++ struct resource* dr = tdev->resource + i; ++ ++ dr->name = cr->name; ++ dr->start = cr->start; ++ dr->end = cr->end; ++ dr->flags = cr->flags; ++ ++ /* convert memory offsets to absolutes */ ++ if (cr->flags & IORESOURCE_MEM) { ++ dr->start += tc6393->iomem->start; ++ dr->end += tc6393->iomem->start; ++ } ++ } ++ ++ return device_register (dev); ++} ++ ++/*--------------------------------------------------------------------------*/ ++ ++static void tc6393_hw_init (struct tc6393 *tc6393) ++{ ++ struct tc6393_scr __iomem * scr = tc6393->scr; ++ struct tc6393_platform_data* tcpd = tc6393->dev->platform_data; ++ ++ tcpd->enable (tc6393->dev); ++ ++ iowrite8 (0, &scr->fer); ++ iowrite16(tcpd->scr_pll2cr, &scr->pll2cr); ++ iowrite16(tcpd->scr_ccr, &scr->ccr); ++ iowrite16(tcpd->scr_mcr, &scr->mcr); ++ iowrite16(tcpd->scr_gper, &scr->gper); ++ iowrite8 (0, &scr->irr); ++ iowrite8 (0xbf, &scr->imr); ++ iowrite16(tcpd->scr_gpo_dsr, scr->gpo_dsr + 0); ++ iowrite16(tcpd->scr_gpo_dsr >> 16, scr->gpo_dsr + 1); ++ iowrite16(tcpd->scr_gpo_doecr, scr->gpo_doecr + 0); ++ iowrite16(tcpd->scr_gpo_doecr >> 16, scr->gpo_doecr + 1); ++} ++ ++static int tc6393_probe (struct device *dev) ++{ ++ struct platform_device* pdev = to_platform_device (dev); ++ struct tc6393_platform_data* tcpd = dev->platform_data; ++ struct tc6393* tc6393; ++ struct resource* iomem; ++ struct resource* rscr; ++ int retval; ++ int i; ++ ++ iomem = platform_get_resource (pdev, IORESOURCE_MEM, 0); ++ if (!iomem) ++ return -EINVAL; ++ ++ tc6393 = kzalloc (sizeof *tc6393, GFP_KERNEL); ++ if (!tc6393) { ++ retval = -ENOMEM; ++ goto err_kzalloc; ++ } ++ ++ dev_set_drvdata (dev, tc6393); ++ spin_lock_init (&tc6393->lock); ++ tc6393->dev = dev; ++ tc6393->iomem = iomem; ++ tc6393->irq = platform_get_irq (pdev, 0); ++ ++ rscr = &tc6393->rscr; ++ rscr->name = TMIO_NAME_CORE; ++ rscr->start = iomem->start; ++ rscr->end = iomem->start + 0xff; ++ rscr->flags = IORESOURCE_MEM; ++ ++ retval = request_resource (iomem, rscr); ++ if (retval) ++ goto err_request_scr; ++ ++ tc6393->scr = ioremap (rscr->start, rscr->end - rscr->start + 1); ++ if (!tc6393->scr) { ++ retval = -ENOMEM; ++ goto err_ioremap; ++ } ++ ++ tc6393_hw_init (tc6393); ++ ++ printk (KERN_INFO "Toshiba %s revision %d at 0x%08lx, irq %d\n", ++ TMIO_SOC_NAME, ioread8 (&tc6393->scr->revid), ++ iomem->start, tc6393->irq); ++ ++ if (tc6393->irq) ++ tc6393_attach_irq (tc6393); ++ ++ for (i = 0; i < tcpd->num_cells; i++) ++ tc6393_device_register (tc6393, tcpd->cell + i); ++ ++ return 0; ++ ++err_ioremap: ++ release_resource (rscr); ++err_request_scr: ++ kfree(tc6393); ++err_kzalloc: ++ release_resource (iomem); ++ return retval; ++} ++ ++static int tc6393_dev_remove (struct device *dev, void *data) ++{ ++ device_unregister (dev); ++ return 0; ++} ++ ++static int tc6393_remove (struct device *dev) ++{ ++ struct tc6393* tc6393 = dev_get_drvdata (dev); ++ ++ device_for_each_child (dev, tc6393, tc6393_dev_remove); ++ ++ if (tc6393->irq) ++ tc6393_detach_irq (tc6393); ++ ++ iounmap (tc6393->scr); ++ release_resource (&tc6393->rscr); ++ release_resource (tc6393->iomem); ++ kfree (tc6393); ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int tc6393_suspend (struct device *dev, pm_message_t state) ++{ ++ struct tc6393_platform_data* tcpd = dev->platform_data; ++ tcpd->disable (dev); ++ return 0; ++} ++ ++static int tc6393_resume (struct device *dev) ++{ ++ struct tc6393* tc6393 = dev_get_drvdata (dev); ++ tc6393_hw_init (tc6393); ++ return 0; ++} ++#endif ++ ++static struct device_driver tc6393_device_driver = { ++ .name = TMIO_SOC_NAME, ++ .bus = &platform_bus_type, ++ .probe = tc6393_probe, ++ .remove = tc6393_remove, ++#ifdef CONFIG_PM ++ .suspend = tc6393_suspend, ++ .resume = tc6393_resume, ++#endif ++}; ++ ++/*--------------------------------------------------------------------------*/ ++ ++static int __init tc6393_init (void) ++{ ++ int retval = bus_register (&tc6393_bus_type); ++ if (retval) ++ return retval; ++ ++ return driver_register (&tc6393_device_driver); ++} ++ ++static void __exit tc6393_exit (void) ++{ ++ driver_unregister (&tc6393_device_driver); ++ bus_unregister (&tc6393_bus_type); ++} ++ ++module_init (tc6393_init); ++module_exit (tc6393_exit); ++ ++MODULE_DESCRIPTION ("TC6393 SoC bus driver"); ++MODULE_AUTHOR ("Chris Humbert, Dirk Opfer"); ++MODULE_LICENSE ("GPL"); +Index: git/arch/arm/common/Kconfig +=================================================================== +--- git.orig/arch/arm/common/Kconfig 2006-10-31 16:08:28.000000000 +0000 ++++ git/arch/arm/common/Kconfig 2006-11-07 22:13:09.000000000 +0000 +@@ -31,3 +31,6 @@ config SHARPSL_PM + + config SHARP_SCOOP + bool ++ ++config TOSHIBA_TC6393XB ++ bool +Index: git/arch/arm/mach-pxa/Kconfig +=================================================================== +--- git.orig/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:06.000000000 +0000 ++++ git/arch/arm/mach-pxa/Kconfig 2006-11-07 23:30:34.000000000 +0000 +@@ -128,6 +128,7 @@ config MACH_BORZOI + config MACH_TOSA + bool "Enable Sharp SL-6000x (Tosa) Support" + depends PXA_SHARPSL_25x ++ select TOSHIBA_TC6393XB + + config PXA25x + bool +Index: git/arch/arm/common/Makefile +=================================================================== +--- git.orig/arch/arm/common/Makefile 2006-10-31 16:08:28.000000000 +0000 ++++ git/arch/arm/common/Makefile 2006-11-07 22:13:09.000000000 +0000 +@@ -17,3 +17,4 @@ obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o + obj-$(CONFIG_SHARP_SCOOP) += scoop.o + obj-$(CONFIG_ARCH_IXP2000) += uengine.o + obj-$(CONFIG_ARCH_IXP23XX) += uengine.o ++obj-$(CONFIG_TOSHIBA_TC6393XB) += tc6393xb.o +Index: git/include/asm-arm/hardware/tmio.h +=================================================================== +--- git.orig/include/asm-arm/hardware/tmio.h 2006-11-07 22:13:09.000000000 +0000 ++++ git/include/asm-arm/hardware/tmio.h 2006-11-07 22:13:09.000000000 +0000 +@@ -91,6 +91,50 @@ struct tmio_device { + + /*--------------------------------------------------------------------------*/ + ++/* ++ * TC6393XB SoC ++ */ ++#ifdef CONFIG_TOSHIBA_TC6393XB ++#define TMIO_SOC_TC6393XB ++#define TMIO_SOC_NAME "TC6393XB" ++#define TMIO_NAME_BUS "tc6393-bus" ++#define TMIO_NAME_CORE "tc6393-core" ++#define TMIO_NAME_NAND "tc6393-nand" ++#define TMIO_NAME_SD "tc6393-sd" ++#define TMIO_NAME_OHCI "tc6393-ohci" ++#define TMIO_NAME_SERIAL "tc6393-serial" ++#define TMIO_NAME_LCD "tc6393-lcd" ++#define tmio_bus_type tc6393_bus_type ++ ++#define TC6393_GPIO(x) (1 << (x)) ++ ++extern struct bus_type tc6393_bus_type; ++ ++struct tc6393_platform_data { ++ u16 scr_pll2cr; /* PLL2 Control */ ++ u16 scr_ccr; /* Clock Control */ ++ u16 scr_mcr; /* Mode Control */ ++ u16 scr_gper; /* GP Enable */ ++ u32 scr_gpo_doecr; /* GPO Data OE Control */ ++ u32 scr_gpo_dsr; /* GPO Data Set */ ++ ++ /* cells to register as devices */ ++ struct tmio_cell* cell; ++ unsigned int num_cells; ++ ++ /* callbacks to enable and disable the TC6393XB's power and clock */ ++ void (*enable) (struct device *dev); ++ void (*disable) (struct device *dev); ++}; ++ ++u32 get_tc6393_gpio (struct device *dev); ++u32 set_tc6393_gpio (struct device *dev, u32 bits); ++u32 reset_tc6393_gpio (struct device *dev, u32 bits); ++ ++/*--------------------------------------------------------------------------*/ ++ ++#else + #error "no TMIO SoC configured" ++#endif + + #endif +Index: git/include/asm-arm/arch-pxa/irqs.h +=================================================================== +--- git.orig/include/asm-arm/arch-pxa/irqs.h 2006-10-31 16:09:33.000000000 +0000 ++++ git/include/asm-arm/arch-pxa/irqs.h 2006-11-07 22:13:09.000000000 +0000 +@@ -163,17 +163,27 @@ + #define IRQ_LOCOMO_SPI_OVRN (IRQ_BOARD_END + 20) + #define IRQ_LOCOMO_SPI_TEND (IRQ_BOARD_END + 21) + ++#define IRQ_TC6393_START (IRQ_BOARD_END) ++#define IRQ_TC6393_NAND (IRQ_BOARD_END + 0) ++#define IRQ_TC6393_SD (IRQ_BOARD_END + 1) ++#define IRQ_TC6393_OHCI (IRQ_BOARD_END + 2) ++#define IRQ_TC6393_SERIAL (IRQ_BOARD_END + 3) ++#define IRQ_TC6393_LCD (IRQ_BOARD_END + 4) ++ + /* + * Figure out the MAX IRQ number. + * + * If we have an SA1111, the max IRQ is S1_BVD1_STSCHG+1. + * If we have an LoCoMo, the max IRQ is IRQ_LOCOMO_SPI_TEND+1 ++ * If we have an TC6393XB, the max IRQ is IRQ_TC6393_LCD+1 + * Otherwise, we have the standard IRQs only. + */ + #ifdef CONFIG_SA1111 + #define NR_IRQS (IRQ_S1_BVD1_STSCHG + 1) + #elif defined(CONFIG_SHARP_LOCOMO) + #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) ++#elif defined(CONFIG_TOSHIBA_TC6393XB) ++#define NR_IRQS (IRQ_TC6393_LCD + 1) + #elif defined(CONFIG_ARCH_LUBBOCK) || \ + defined(CONFIG_MACH_LOGICPD_PXA270) || \ + defined(CONFIG_MACH_MAINSTONE) diff --git a/packages/linux/linux-openzaurus-2.6.18+git/tosa-keyboard-r18.patch b/packages/linux/linux-openzaurus-2.6.18+git/tosa-keyboard-r18.patch new file mode 100644 index 0000000000..00bac40db5 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/tosa-keyboard-r18.patch @@ -0,0 +1,515 @@ + drivers/input/keyboard/Kconfig | 12 - + drivers/input/keyboard/Makefile | 1 + drivers/input/keyboard/tosakbd.c | 467 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 479 insertions(+), 1 deletion(-) + +Index: git/drivers/input/keyboard/Kconfig +=================================================================== +--- git.orig/drivers/input/keyboard/Kconfig 2006-10-31 16:08:57.000000000 +0000 ++++ git/drivers/input/keyboard/Kconfig 2006-11-07 22:13:10.000000000 +0000 +@@ -148,12 +148,22 @@ config KEYBOARD_SPITZ + depends on PXA_SHARPSL + default y + help +- Say Y here to enable the keyboard on the Sharp Zaurus SL-C1000, ++ Say Y here to enable the keyboard on the Sharp Zaurus SL-C1000, + SL-C3000 and Sl-C3100 series of PDAs. + + To compile this driver as a module, choose M here: the + module will be called spitzkbd. + ++config KEYBOARD_TOSA ++ tristate "Tosa keyboard" ++ depends on PXA_SHARPSL ++ default y ++ help ++ Say Y here to enable the keyboard on the Sharp Zaurus SL-6000x (Tosa) ++ ++ To compile this driver as a module, choose M here: the ++ module will be called tosakbd. ++ + config KEYBOARD_AMIGA + tristate "Amiga keyboard" + depends on AMIGA +Index: git/drivers/input/keyboard/Makefile +=================================================================== +--- git.orig/drivers/input/keyboard/Makefile 2006-10-31 16:08:57.000000000 +0000 ++++ git/drivers/input/keyboard/Makefile 2006-11-07 22:13:10.000000000 +0000 +@@ -17,4 +17,5 @@ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkb + obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o + obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o + obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o ++obj-$(CONFIG_KEYBOARD_TOSA) += tosakbd.o + +Index: git/drivers/input/keyboard/tosakbd.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ git/drivers/input/keyboard/tosakbd.c 2006-11-07 23:27:19.000000000 +0000 +@@ -0,0 +1,467 @@ ++/* ++ * Keyboard driver for Sharp Tosa models (SL-6000x) ++ * ++ * Copyright (c) 2005 Dirk Opfer ++ * ++ * Based on xtkbd.c/locomkbd.c/corgikbd.c ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/delay.h> ++#include <linux/platform_device.h> ++#include <linux/init.h> ++#include <linux/input.h> ++#include <linux/interrupt.h> ++#include <linux/jiffies.h> ++#include <linux/module.h> ++#include <linux/slab.h> ++ ++#include <asm/arch/tosa.h> ++#include <asm/arch/hardware.h> ++#include <asm/arch/pxa-regs.h> ++ ++ ++#define TOSA_KEY_STROBE_NUM (11) ++#define TOSA_KEY_SENSE_NUM (7) ++ ++#define KEYMASK_ON (0x1<<0) ++#define KEYMASK_REC (0x1<<1) ++#define KEYMASK_SYNC (0x1<<2) ++ ++#define KB_ROWS 7 ++#define KB_COLS 11 ++#define KB_ROWMASK(r) (1 << (r)) ++#define SCANCODE(r,c) ( ((r)<<4) + (c) + 1 ) ++#define NR_SCANCODES (SCANCODE(KB_ROWS-1,KB_COLS)+1+1) ++ ++#define SCAN_INTERVAL (HZ/10) ++#define HP_SCAN_INTERVAL (150) /* ms */ ++#define HP_STABLE_COUNT 2 ++ ++#define TOSA_KEY_CALENDER KEY_F1 ++#define TOSA_KEY_ADDRESS KEY_F2 ++#define TOSA_KEY_FN KEY_F3 ++#define TOSA_KEY_CANCEL KEY_F4 ++#define TOSA_KEY_OFF KEY_SUSPEND ++#define TOSA_KEY_CENTER KEY_F5 ++#define TOSA_KEY_REC KEY_F6 ++#define TOSA_KEY_LIGHT KEY_F7 ++#define TOSA_KEY_RECORD KEY_F8 ++#define TOSA_KEY_HOME KEY_F9 ++#define TOSA_KEY_MAIL KEY_F10 ++#define TOSA_KEY_OK KEY_F11 ++#define TOSA_KEY_MENU KEY_F12 ++#define TOSA_KEY_SYNC KEY_F13 ++ ++#define GET_ROWS_STATUS(c) ((GPLR2 & TOSA_GPIO_ALL_SENSE_BIT) >> TOSA_GPIO_ALL_SENSE_RSHIFT) ++#define KB_DISCHARGE_DELAY 10 ++#define KB_ACTIVATE_DELAY 10 ++ ++ ++static unsigned char tosakbd_keycode[NR_SCANCODES] = { ++ 0, /* 0 */ ++ 0, KEY_W, 0, 0, 0, KEY_K, KEY_BACKSPACE, KEY_P, 0, 0, 0, TOSA_KEY_OFF, 0, 0, 0, 0, /*1 - 16*/ ++ KEY_Q, KEY_E, KEY_T, KEY_Y, 0, KEY_O, KEY_I, KEY_COMMA, 0, 0, 0, TOSA_KEY_RECORD, 0, 0, 0, 0, /*17 - 32*/ ++ KEY_A, KEY_D, KEY_G, KEY_U, 0, KEY_L, KEY_ENTER, KEY_DOT, 0, 0, 0, TOSA_KEY_SYNC, 0, 0, 0, 0, /*33 - 48*/ ++ KEY_Z, KEY_C, KEY_V, KEY_J, TOSA_KEY_ADDRESS, TOSA_KEY_CANCEL, TOSA_KEY_CENTER, TOSA_KEY_OK, KEY_LEFTSHIFT, 0 , 0,0 , 0, 0, 0, 0, /*49 - 64*/ ++ KEY_S, KEY_R, KEY_B, KEY_N, TOSA_KEY_CALENDER, TOSA_KEY_HOME, TOSA_KEY_REC, TOSA_KEY_LIGHT, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /*65 - 80*/ ++ KEY_TAB, KEY_SLASH, KEY_H, KEY_M, TOSA_KEY_MENU, 0, KEY_UP, 0, 0, 0, TOSA_KEY_FN, 0, 0, 0, 0, 0, /*81 - 96*/ ++ KEY_X, KEY_F, KEY_SPACE, KEY_APOSTROPHE, TOSA_KEY_MAIL, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, /*97 - 109*/ ++}; ++ ++struct tosakbd { ++ unsigned char keycode[ARRAY_SIZE(tosakbd_keycode)]; ++ struct input_dev *input; ++ ++ spinlock_t lock; ++ struct timer_list timer; ++ struct timer_list hptimer; ++ ++ int hp_state; ++ int hp_count; ++ ++ unsigned int suspended; ++ unsigned long suspend_jiffies; ++}; ++ ++/* Helper functions for reading the keyboard matrix ++ * Note: We should really be using pxa_gpio_mode to alter GPDR but it ++ * requires a function call per GPIO bit which is excessive ++ * when we need to access 12 bits at once, multiple times. ++ * These functions must be called within local_irq_save()/local_irq_restore() ++ * or similar. ++ */ ++static inline void tosakbd_discharge_all(void) ++{ ++ /* STROBE All HiZ */ ++ GPCR1 = TOSA_GPIO_HIGH_STROBE_BIT; ++ GPDR1 &= ~TOSA_GPIO_HIGH_STROBE_BIT; ++ GPCR2 = TOSA_GPIO_LOW_STROBE_BIT; ++ GPDR2 &= ~TOSA_GPIO_LOW_STROBE_BIT; ++} ++ ++static inline void tosakbd_activate_all(void) ++{ ++ /* STROBE ALL -> High */ ++ GPSR1 = TOSA_GPIO_HIGH_STROBE_BIT; ++ GPDR1 |= TOSA_GPIO_HIGH_STROBE_BIT; ++ GPSR2 = TOSA_GPIO_LOW_STROBE_BIT; ++ GPDR2 |= TOSA_GPIO_LOW_STROBE_BIT; ++ ++ udelay(KB_DISCHARGE_DELAY); ++ ++ /* STATE CLEAR */ ++ GEDR2 |= TOSA_GPIO_ALL_SENSE_BIT; ++} ++ ++static inline void tosakbd_activate_col(int col) ++{ ++ if (col<=5) { ++ /* STROBE col -> High, not col -> HiZ */ ++ GPSR1 = TOSA_GPIO_STROBE_BIT(col); ++ GPDR1 = (GPDR1 & ~TOSA_GPIO_HIGH_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col); ++ } else { ++ /* STROBE col -> High, not col -> HiZ */ ++ GPSR2 = TOSA_GPIO_STROBE_BIT(col); ++ GPDR2 = (GPDR2 & ~TOSA_GPIO_LOW_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col); ++ } ++} ++ ++static inline void tosakbd_reset_col(int col) ++{ ++ if (col<=5) { ++ /* STROBE col -> Low */ ++ GPCR1 = TOSA_GPIO_STROBE_BIT(col); ++ /* STROBE col -> out, not col -> HiZ */ ++ GPDR1 = (GPDR1 & ~TOSA_GPIO_HIGH_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col); ++ } else { ++ /* STROBE col -> Low */ ++ GPCR2 = TOSA_GPIO_STROBE_BIT(col); ++ /* STROBE col -> out, not col -> HiZ */ ++ GPDR2 = (GPDR2 & ~TOSA_GPIO_LOW_STROBE_BIT) | TOSA_GPIO_STROBE_BIT(col); ++ } ++} ++ ++/* ++ * Read the GPIOs for POWER, RECORD and SYNC ++ */ ++static int read_port_key_status_raw(void) ++{ ++ int val=0; ++ ++ /* Power key */ ++ if ((GPLR0 & GPIO_bit(TOSA_GPIO_ON_KEY))==0) ++ val |= KEYMASK_ON; ++ /* Record key */ ++ if ((GPLR0 & GPIO_bit(TOSA_GPIO_RECORD_BTN))==0) ++ val |= KEYMASK_REC; ++ /* Sync key */ ++ if ((GPLR0 & GPIO_bit(TOSA_GPIO_SYNC))==0) ++ val |= KEYMASK_SYNC; ++ return val; ++} ++ ++ ++/* ++ * The tosa keyboard only generates interrupts when a key is pressed. ++ * So when a key is pressed, we enable a timer. This timer scans the ++ * keyboard, and this is how we detect when the key is released. ++ */ ++ ++/* Scan the hardware keyboard and push any changes up through the input layer */ ++static void tosakbd_scankeyboard(struct tosakbd *tosakbd_data) ++{ ++ unsigned int row, col, rowd; ++ unsigned long flags; ++ unsigned int num_pressed = 0; ++ ++ if (tosakbd_data->suspended) ++ return; ++ ++ spin_lock_irqsave(&tosakbd_data->lock, flags); ++ ++ for (col = 0; col < KB_COLS; col++) { ++ /* ++ * Discharge the output driver capacitatance ++ * in the keyboard matrix. (Yes it is significant..) ++ */ ++ tosakbd_discharge_all(); ++ udelay(KB_DISCHARGE_DELAY); ++ ++ tosakbd_activate_col( col); ++ udelay(KB_ACTIVATE_DELAY); ++ ++ rowd = GET_ROWS_STATUS(col); ++ ++ for (row = 0; row < KB_ROWS; row++) { ++ unsigned int scancode, pressed; ++ scancode = SCANCODE(row, col); ++ pressed = rowd & KB_ROWMASK(row); ++ input_report_key(tosakbd_data->input, tosakbd_data->keycode[scancode], pressed); ++ if (pressed) ++ num_pressed++; ++ } ++ ++ tosakbd_reset_col(col); ++ } ++ ++ tosakbd_activate_all(); ++ ++ rowd = read_port_key_status_raw(); ++ ++ for (row = 0; row < 3; row++ ) { ++ unsigned int scancode, pressed; ++ scancode = SCANCODE(row, KB_COLS); ++ pressed = rowd & KB_ROWMASK(row); ++ input_report_key(tosakbd_data->input, tosakbd_data->keycode[scancode], pressed); ++ if (pressed) ++ num_pressed++; ++ ++ if (pressed && (tosakbd_data->keycode[scancode] == TOSA_KEY_OFF) ++ && time_after(jiffies, tosakbd_data->suspend_jiffies + msecs_to_jiffies(1000))) { ++ input_event(tosakbd_data->input, EV_PWR, TOSA_KEY_OFF, 1); ++ tosakbd_data->suspend_jiffies = jiffies; ++ } ++ } ++ ++ input_sync(tosakbd_data->input); ++ ++ /* if any keys are pressed, enable the timer */ ++ if (num_pressed) ++ mod_timer(&tosakbd_data->timer, jiffies + SCAN_INTERVAL); ++ ++ spin_unlock_irqrestore(&tosakbd_data->lock, flags); ++} ++ ++/* ++ * tosa keyboard interrupt handler. ++ */ ++static irqreturn_t tosakbd_interrupt(int irq, void *dev_id) ++{ ++ struct tosakbd *tosakbd_data = dev_id; ++ ++ if (!timer_pending(&tosakbd_data->timer)) ++ { ++ /** wait chattering delay **/ ++ udelay(20); ++ tosakbd_scankeyboard(tosakbd_data); ++ } ++ ++ return IRQ_HANDLED; ++} ++ ++/* ++ * tosa timer checking for released keys ++ */ ++static void tosakbd_timer_callback(unsigned long data) ++{ ++ struct tosakbd *tosakbd_data = (struct tosakbd *) data; ++ tosakbd_scankeyboard(tosakbd_data); ++} ++ ++/* ++ * The headphone generates an interrupt. ++ * We debounce the switche and pass them to the input system. ++ */ ++ ++static irqreturn_t tosakbd_hp_isr(int irq, void *dev_id) ++{ ++ struct tosakbd *tosakbd_data = dev_id; ++ ++ if (!timer_pending(&tosakbd_data->hptimer)) ++ mod_timer(&tosakbd_data->hptimer, jiffies + msecs_to_jiffies(HP_SCAN_INTERVAL)); ++ ++ return IRQ_HANDLED; ++} ++ ++static void tosakbd_hp_timer(unsigned long data) ++{ ++ struct tosakbd *tosakbd_data = (struct tosakbd *) data; ++ unsigned long state; ++ unsigned long flags; ++ ++ state = (GPLR(TOSA_GPIO_EAR_IN) & GPIO_bit(TOSA_GPIO_EAR_IN)); ++ if (state != tosakbd_data->hp_state) { ++ tosakbd_data->hp_count = 0; ++ tosakbd_data->hp_state = state; ++ } else if (tosakbd_data->hp_count < HP_STABLE_COUNT) { ++ tosakbd_data->hp_count++; ++ } ++ ++ if (tosakbd_data->hp_count >= HP_STABLE_COUNT) { ++ spin_lock_irqsave(&tosakbd_data->lock, flags); ++ ++ input_report_switch(tosakbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(TOSA_GPIO_EAR_IN) & GPIO_bit(TOSA_GPIO_EAR_IN)) == 0)); ++ input_sync(tosakbd_data->input); ++ ++ spin_unlock_irqrestore(&tosakbd_data->lock, flags); ++ } else { ++ mod_timer(&tosakbd_data->hptimer, jiffies + msecs_to_jiffies(HP_SCAN_INTERVAL)); ++ } ++} ++ ++#ifdef CONFIG_PM ++static int tosakbd_suspend(struct platform_device *dev, pm_message_t state) ++{ ++ struct tosakbd *tosakbd = platform_get_drvdata(dev); ++ ++ tosakbd->suspended = 1; ++ ++ return 0; ++} ++ ++static int tosakbd_resume(struct platform_device *dev) ++{ ++ struct tosakbd *tosakbd = platform_get_drvdata(dev); ++ ++ /* Upon resume, ignore the suspend key for a short while */ ++ tosakbd->suspend_jiffies = jiffies; ++ tosakbd->suspended = 0; ++ ++ return 0; ++} ++#else ++#define tosakbd_suspend NULL ++#define tosakbd_resume NULL ++#endif ++ ++static int __init tosakbd_probe(struct platform_device *pdev) { ++ ++ int i; ++ struct tosakbd *tosakbd; ++ struct input_dev *input_dev; ++ ++ tosakbd = kzalloc(sizeof(struct tosakbd), GFP_KERNEL); ++ if (!tosakbd) ++ return -ENOMEM; ++ ++ input_dev = input_allocate_device(); ++ if (!input_dev) { ++ kfree(tosakbd); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(pdev,tosakbd); ++ ++ spin_lock_init(&tosakbd->lock); ++ ++ /* Init Keyboard rescan timer */ ++ init_timer(&tosakbd->timer); ++ tosakbd->timer.function = tosakbd_timer_callback; ++ tosakbd->timer.data = (unsigned long) tosakbd; ++ ++ /* Init Headphone Timer */ ++ init_timer(&tosakbd->hptimer); ++ tosakbd->hptimer.function = tosakbd_hp_timer; ++ tosakbd->hptimer.data = (unsigned long) tosakbd; ++ ++ tosakbd->suspend_jiffies = jiffies; ++ ++ tosakbd->input = input_dev; ++ ++ input_dev->private = tosakbd; ++ input_dev->name = "Tosa Keyboard"; ++ input_dev->phys = "tosakbd/input0"; ++ input_dev->cdev.dev = &pdev->dev; ++ ++ input_dev->id.bustype = BUS_HOST; ++ input_dev->id.vendor = 0x0001; ++ input_dev->id.product = 0x0001; ++ input_dev->id.version = 0x0100; ++ ++ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP) | BIT(EV_PWR) | BIT(EV_SW); ++ input_dev->keycode = tosakbd->keycode; ++ input_dev->keycodesize = sizeof(unsigned char); ++ input_dev->keycodemax = ARRAY_SIZE(tosakbd_keycode); ++ ++ memcpy(tosakbd->keycode, tosakbd_keycode, sizeof(tosakbd->keycode)); ++ for (i = 0; i < ARRAY_SIZE(tosakbd_keycode); i++) ++ set_bit(tosakbd->keycode[i], input_dev->keybit); ++ clear_bit(0, input_dev->keybit); ++ set_bit(SW_HEADPHONE_INSERT, input_dev->swbit); ++ ++ input_register_device(tosakbd->input); ++ ++ /* Setup sense interrupts - RisingEdge Detect, sense lines as inputs */ ++ for (i = 0; i < TOSA_KEY_SENSE_NUM; i++) { ++ pxa_gpio_mode( TOSA_GPIO_KEY_SENSE(i) | GPIO_IN); ++ if (request_irq(TOSA_IRQ_GPIO_KEY_SENSE(i), tosakbd_interrupt, ++ SA_INTERRUPT | SA_TRIGGER_RISING, "tosakbd", tosakbd)) { ++ printk("tosakbd: Can't get IRQ: %d !\n", i); ++ } ++ } ++ ++ /* Set Strobe lines as outputs - set high */ ++ for (i = 0; i < TOSA_KEY_STROBE_NUM; i++) { ++ pxa_gpio_mode( TOSA_GPIO_KEY_STROBE(i) | GPIO_OUT | GPIO_DFLT_HIGH); ++ } ++ ++ // Power&Rec Button ++ pxa_gpio_mode( TOSA_GPIO_ON_KEY | GPIO_IN); ++ pxa_gpio_mode( TOSA_GPIO_RECORD_BTN | GPIO_IN); ++ pxa_gpio_mode( TOSA_GPIO_SYNC | GPIO_IN); ++ pxa_gpio_mode( TOSA_GPIO_EAR_IN | GPIO_IN); ++ ++ if (request_irq(TOSA_IRQ_GPIO_ON_KEY, tosakbd_interrupt, SA_INTERRUPT | SA_TRIGGER_FALLING, "On key", tosakbd) || ++ request_irq(TOSA_IRQ_GPIO_RECORD_BTN, tosakbd_interrupt, SA_INTERRUPT | SA_TRIGGER_FALLING, "Record key", tosakbd) || ++ request_irq(TOSA_IRQ_GPIO_SYNC, tosakbd_interrupt, SA_INTERRUPT | SA_TRIGGER_FALLING, "Sync key", tosakbd) || ++ request_irq(TOSA_IRQ_GPIO_EAR_IN, tosakbd_hp_isr, SA_INTERRUPT | SA_TRIGGER_FALLING, "HP in", tosakbd)) { ++ printk("Could not allocate KEYBD IRQ!\n"); ++ } ++ ++ printk(KERN_INFO "input: Tosa Keyboard Registered\n"); ++ ++ return 0; ++} ++ ++static int tosakbd_remove(struct platform_device *dev) { ++ ++ int i; ++ struct tosakbd *tosakbd = platform_get_drvdata(dev); ++ ++ for (i = 0; i < TOSA_KEY_SENSE_NUM; i++) ++ free_irq(TOSA_IRQ_GPIO_KEY_SENSE(i),tosakbd); ++ ++ free_irq(TOSA_IRQ_GPIO_ON_KEY,tosakbd); ++ free_irq(TOSA_IRQ_GPIO_RECORD_BTN,tosakbd); ++ free_irq(TOSA_IRQ_GPIO_SYNC,tosakbd); ++ ++ del_timer_sync(&tosakbd->timer); ++ ++ input_unregister_device(tosakbd->input); ++ ++ kfree(tosakbd); ++ ++ return 0; ++} ++ ++static struct platform_driver tosakbd_driver = { ++ .probe = tosakbd_probe, ++ .remove = tosakbd_remove, ++ .suspend = tosakbd_suspend, ++ .resume = tosakbd_resume, ++ .driver = { ++ .name = "tosa-keyboard", ++ }, ++}; ++ ++static int __devinit tosakbd_init(void) ++{ ++ return platform_driver_register(&tosakbd_driver); ++} ++ ++static void __exit tosakbd_exit(void) ++{ ++ platform_driver_unregister(&tosakbd_driver); ++} ++ ++module_init(tosakbd_init); ++module_exit(tosakbd_exit); ++ ++MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>"); ++MODULE_DESCRIPTION("Tosa Keyboard Driver"); ++MODULE_LICENSE("GPLv2"); diff --git a/packages/linux/linux-openzaurus-2.6.18+git/tosa-lcdnoise-r1.patch b/packages/linux/linux-openzaurus-2.6.18+git/tosa-lcdnoise-r1.patch new file mode 100644 index 0000000000..624098bc64 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/tosa-lcdnoise-r1.patch @@ -0,0 +1,157 @@ +Index: linux-2.6.18/arch/arm/mach-pxa/tosa.c +=================================================================== +--- linux-2.6.18.orig/arch/arm/mach-pxa/tosa.c 2006-09-20 17:14:14.000000000 +0200 ++++ linux-2.6.18/arch/arm/mach-pxa/tosa.c 2006-09-20 17:14:43.000000000 +0200 +@@ -2,6 +2,7 @@ + * Support for Sharp SL-C6000x PDAs + * Model: (Tosa) + * ++ * Copyright (c) 2006 Wolfson Microelectronics PLC. + * Copyright (c) 2005 Dirk Opfer + * + * Based on code written by Sharp/Lineo for 2.4 kernels +@@ -47,6 +48,8 @@ + #include <asm/hardware/tmio.h> + #include <asm/mach/sharpsl_param.h> + ++#include <linux/wm97xx.h> ++ + #include "generic.h" + + /* +@@ -429,6 +432,16 @@ + }, + }; + ++ ++/* ++ * Tosa Touchscreen device ++ */ ++ ++static struct wm97xx_machinfo tosa_ts_machinfo = { ++ .get_hsync_time = tosa_get_hsync_time, ++ .wait_hsync = tosa_wait_hsync, ++}; ++ + /* + * Tosa Blueooth + */ +@@ -458,6 +471,7 @@ + GPSR(TOSA_GPIO_ON_RESET) = GPIO_bit(TOSA_GPIO_ON_RESET); + + mdelay(1000); ++ wm97xx_unset_machinfo(); + arm_machine_restart('h'); + } + +@@ -503,6 +517,8 @@ + platform_scoop_config = &tosa_pcmcia_config; + + platform_add_devices(devices, ARRAY_SIZE(devices)); ++ ++ wm97xx_set_machinfo(&tosa_ts_machinfo); + } + + static void __init fixup_tosa(struct machine_desc *desc, +Index: linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c +=================================================================== +--- linux-2.6.18.orig/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 17:14:14.000000000 +0200 ++++ linux-2.6.18/arch/arm/mach-pxa/tosa_lcd.c 2006-09-20 17:14:15.000000000 +0200 +@@ -1,6 +1,7 @@ + /* + * LCD / Backlight control code for Sharp SL-6000x (tosa) + * ++ * Copyright (c) 2006 Wolfson Microelectronics PLC. + * Copyright (c) 2005 Dirk Opfer + * + * This program is free software; you can redistribute it and/or modify +@@ -59,6 +60,8 @@ + static struct ssp_dev tosa_nssp_dev; + static struct ssp_state tosa_nssp_state; + static spinlock_t tosa_nssp_lock; ++static int blanked; ++static unsigned long hsync_time; + + static unsigned short normal_i2c[] = { + DAC_BASE, +@@ -130,6 +133,17 @@ + pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */ + } + ++static unsigned long calc_hsync_time(const struct fb_videomode *mode) { ++ /* The 25 and 44 'magic numbers' are from Sharp's 2.4 patches */ ++ if (mode->yres == 640) { ++ return 25; ++ } ++ if (mode->yres == 320) { ++ return 44; ++ } ++ return 0; ++} ++ + static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode) + { + const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR; +@@ -154,6 +168,8 @@ + /* set common voltage */ + i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj); + ++ blanked = 0; ++ hsync_time = calc_hsync_time(mode); + } + + static void tosa_lcd_tg_off(struct device *dev) +@@ -172,6 +188,8 @@ + + /* L3V Off */ + reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON); ++ ++ blanked = 1; + } + + static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) { +@@ -238,6 +256,23 @@ + return 0; + } + ++unsigned long tosa_get_hsync_time(void) ++{ ++/* This method should eventually contain the correct algorithm for calculating ++ the hsync_time */ ++ if (blanked) ++ return 0; ++ else ++ return hsync_time; ++} ++ ++void tosa_wait_hsync(void) ++{ ++ /* Waits for a rising edge on the VGA line */ ++ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) == 0); ++ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) != 0); ++} ++ + static struct i2c_driver tosa_driver={ + .id = TOSA_LCD_I2C_DEVICEID, + .attach_adapter = tosa_attach_adapter, +Index: linux-2.6.18/include/asm-arm/arch-pxa/tosa.h +=================================================================== +--- linux-2.6.18.orig/include/asm-arm/arch-pxa/tosa.h 2006-09-20 17:14:13.000000000 +0200 ++++ linux-2.6.18/include/asm-arm/arch-pxa/tosa.h 2006-09-20 17:14:15.000000000 +0200 +@@ -1,6 +1,7 @@ + /* + * Hardware specific definitions for Sharp SL-C6000x series of PDAs + * ++ * Copyright (c) 2006 Wolfson Microelectronics PLC. + * Copyright (c) 2005 Dirk Opfer + * + * Based on Sharp's 2.4 kernel patches +@@ -187,4 +188,8 @@ + extern struct platform_device tosascoop_jc_device; + extern struct platform_device tosascoop_device; + extern struct platform_device tc6393_device; ++ ++unsigned long tosa_get_hsync_time(void); ++void tosa_wait_hsync(void); ++ + #endif /* _ASM_ARCH_TOSA_H_ */ diff --git a/packages/linux/linux-openzaurus-2.6.18+git/tosa-tmio-lcd-r10.patch b/packages/linux/linux-openzaurus-2.6.18+git/tosa-tmio-lcd-r10.patch new file mode 100644 index 0000000000..aef3a047c1 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/tosa-tmio-lcd-r10.patch @@ -0,0 +1,472 @@ + arch/arm/mach-pxa/Kconfig | 5 + arch/arm/mach-pxa/Makefile | 2 + arch/arm/mach-pxa/tosa.c | 49 +++++- + arch/arm/mach-pxa/tosa_lcd.c | 344 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 396 insertions(+), 4 deletions(-) + +Index: git/arch/arm/mach-pxa/Makefile +=================================================================== +--- git.orig/arch/arm/mach-pxa/Makefile 2006-11-07 22:13:10.000000000 +0000 ++++ git/arch/arm/mach-pxa/Makefile 2006-11-07 23:29:38.000000000 +0000 +@@ -17,7 +17,7 @@ obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o + obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o spitz_pm.o + obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o + obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o sharpsl_pm.o poodle_pm.o +-obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o ++obj-$(CONFIG_MACH_TOSA) += tosa.o sharpsl_pm.o tosa_pm.o tosa_lcd.o + obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o + + # Support for blinky lights +Index: git/arch/arm/mach-pxa/tosa_lcd.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ git/arch/arm/mach-pxa/tosa_lcd.c 2006-11-07 23:29:25.000000000 +0000 +@@ -0,0 +1,344 @@ ++/* ++ * LCD / Backlight control code for Sharp SL-6000x (tosa) ++ * ++ * Copyright (c) 2005 Dirk Opfer ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/delay.h> ++#include <linux/platform_device.h> ++#include <linux/i2c.h> ++#include <linux/fb.h> ++ ++#include <asm/mach/sharpsl_param.h> ++#include <asm/hardware.h> ++#include <asm/hardware/scoop.h> ++#include <asm/hardware/tmio.h> ++#include <asm/arch/ssp.h> ++#include <asm/arch/sharpsl.h> ++#include <asm/arch/tosa.h> ++#include <asm/arch/pxa-regs.h> ++ ++#define DAC_BASE 0x4e ++#define DAC_CH1 0 ++#define DAC_CH2 1 ++ ++#define TG_REG0_VQV 0x0001 ++#define TG_REG0_COLOR 0x0002 ++#define TG_REG0_UD 0x0004 ++#define TG_REG0_LR 0x0008 ++#define COMADJ_DEFAULT 97 ++#define TOSA_LCD_I2C_DEVICEID 0x4711 // Fixme: new value ++ ++static void tosa_lcd_tg_init(struct device *dev); ++static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode); ++static void tosa_lcd_tg_off(struct device *dev); ++static void tosa_set_backlight(int intensity); ++ ++const static struct tmio_lcd_ops tosa_tc6393_lcd_ops = { ++ .init = tosa_lcd_tg_init, ++ .tg_on = tosa_lcd_tg_on, ++ .tg_off = tosa_lcd_tg_off, ++}; ++ ++static struct platform_device *tosabl_device; ++static struct i2c_driver tosa_driver; ++static struct i2c_client* tosa_i2c_dac; ++static int initialised; ++static int comadj; ++static int bl_intensity; ++static struct ssp_dev tosa_nssp_dev; ++static struct ssp_state tosa_nssp_state; ++static spinlock_t tosa_nssp_lock; ++ ++static unsigned short normal_i2c[] = { ++ DAC_BASE, ++ I2C_CLIENT_END ++}; ++I2C_CLIENT_INSMOD; ++ ++static struct corgibl_machinfo tosa_bl_machinfo = { ++ .max_intensity = 255, ++ .default_intensity = 68, ++ .limit_mask = 0x0b, ++ .set_bl_intensity = tosa_set_backlight, ++}; ++ ++int tosa_bl_intensity(void) ++{ ++ return bl_intensity; ++} ++ ++static void pxa_nssp_output(unsigned char reg, unsigned char data) ++{ ++ unsigned long flag, dummy; ++ u32 dat = ( ((reg << 5) & 0xe0) | (data & 0x1f) ); ++ spin_lock_irqsave(&tosa_nssp_lock, flag); ++ ++ ssp_config(&tosa_nssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(128)); ++ ssp_enable(&tosa_nssp_dev); ++ ++ ssp_write_word(&tosa_nssp_dev,dat); ++ ++ /* Read null data back from device to prevent SSP overflow */ ++ ssp_read_word(&tosa_nssp_dev, &dummy); ++ ssp_disable(&tosa_nssp_dev); ++ spin_unlock_irqrestore(&tosa_nssp_lock, flag); ++ ++} ++ ++static void tosa_set_backlight(int intensity) ++{ ++ if (!tosa_i2c_dac) ++ return; ++ ++ bl_intensity = intensity; ++ /* SetBacklightDuty */ ++ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH2, (unsigned char)intensity); ++ ++ /* SetBacklightVR */ ++ if (intensity) ++ set_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA); ++ else ++ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_BL_C20MA); ++ ++ /* bl_enable GP04=1 otherwise GP04=0*/ ++ pxa_nssp_output(TG_GPODR2, intensity ? 0x01 : 0x00); ++} ++ ++static void tosa_lcd_tg_init(struct device *dev) ++{ ++ /* L3V On */ ++ set_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON); ++ mdelay(60); ++ ++ /* TG On */ ++ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_TG_ON); ++ mdelay(60); ++ ++ pxa_nssp_output(TG_TPOSCTL,0x00); /* delayed 0clk TCTL signal for VGA */ ++ pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */ ++} ++ ++static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode) ++{ ++ const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR; ++ pxa_nssp_output(TG_PNLCTL, value | (mode->yres == 320 ? 0 : TG_REG0_VQV)); ++ ++ /* TG LCD pannel power up */ ++ pxa_nssp_output(TG_PINICTL,0x4); ++ mdelay(50); ++ ++ /* TG LCD GVSS */ ++ pxa_nssp_output(TG_PINICTL,0x0); ++ ++ if (!initialised) ++ { ++ /* after the pannel is powered up the first time, we can access the i2c bus */ ++ /* so probe for the DAC */ ++ i2c_add_driver(&tosa_driver); ++ initialised = 1; ++ mdelay(50); ++ } ++ if (tosa_i2c_dac) ++ /* set common voltage */ ++ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj); ++ ++} ++ ++static void tosa_lcd_tg_off(struct device *dev) ++{ ++ /* TG LCD VHSA off */ ++ pxa_nssp_output(TG_PINICTL,0x4); ++ mdelay(50); ++ ++ /* TG LCD signal off */ ++ pxa_nssp_output(TG_PINICTL,0x6); ++ mdelay(50); ++ ++ /* TG Off */ ++ set_tc6393_gpio(&tc6393_device.dev, TOSA_TC6393_TG_ON); ++ mdelay(100); ++ ++ /* L3V Off */ ++ reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON); ++} ++ ++static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) { ++ int err = 0; ++ ++ printk("Tosa-LCD: DAC detected address:0x%2.2x\n",address); ++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA )) ++ goto ERROR0; ++ ++ if (!(tosa_i2c_dac = (struct i2c_client*)kzalloc(sizeof(*tosa_i2c_dac), GFP_KERNEL))) { ++ err = -ENOMEM; ++ goto ERROR0; ++ } ++ ++ //i2c_set_clientdata(tosa_i2c_dac, data); ++ tosa_i2c_dac->addr = address; ++ tosa_i2c_dac->adapter = adapter; ++ tosa_i2c_dac->driver = &tosa_driver; ++ tosa_i2c_dac->dev.parent = &tc6393_device.dev; ++ strcpy(tosa_i2c_dac->name, "tosa lcd"); ++ if ((err = i2c_attach_client(tosa_i2c_dac))) ++ goto ERROR3; ++ ++ /* Now i2c is ready, allocate the backlight device*/ ++ tosabl_device = platform_device_alloc("corgi-bl", -1); ++ if (!tosabl_device) { ++ err = -ENOMEM; ++ goto ERROR4; ++ } ++ ++ /* set parent device */ ++ tosabl_device->dev.parent = &tosa_i2c_dac->dev; ++ tosabl_device->dev.platform_data = &tosa_bl_machinfo; ++ ++ err = platform_device_add(tosabl_device); ++ ++ if (err) ++ platform_device_put(tosabl_device); ++ ++ /* set common voltage */ ++ i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj); ++ ++ return 0; ++ERROR4: ++ i2c_detach_client(tosa_i2c_dac); ++ERROR3: ++ kfree(tosa_i2c_dac); ++ERROR0: ++ return err; ++} ++ ++static int tosa_attach_adapter(struct i2c_adapter* adapter) { ++ return i2c_probe(adapter, &addr_data, &tosa_detect_client); ++} ++ ++static int tosa_detach_client(struct i2c_client* client) { ++ int err; ++ ++ if ((err = i2c_detach_client(client))) { ++ printk(KERN_ERR "tosa: Cannot deregister client\n"); ++ return err; ++ } ++ kfree(client); ++ return 0; ++} ++ ++static struct i2c_driver tosa_driver={ ++ .id = TOSA_LCD_I2C_DEVICEID, ++ .attach_adapter = tosa_attach_adapter, ++ .detach_client = tosa_detach_client, ++}; ++ ++static int __init tosa_lcd_probe(struct platform_device *pdev) ++{ ++ int ret; ++ spin_lock_init(&tosa_nssp_lock); ++ ++ if (!pdev->dev.platform_data) ++ return -EINVAL; ++ ++ /* Set Common Voltage */ ++ comadj = sharpsl_param.comadj == -1 ? COMADJ_DEFAULT : sharpsl_param.comadj; ++ ++ ret=ssp_init(&tosa_nssp_dev,2,0); ++ ++ /* initialize SSP */ ++ pxa_gpio_mode(GPIO83_NSSP_TX); ++ pxa_gpio_mode(GPIO81_NSSP_CLK_OUT); ++ pxa_gpio_mode(GPIO82_NSSP_FRM_OUT); ++ ++ if (ret) ++ printk(KERN_ERR "Unable to register NSSP handler!\n"); ++ else { ++ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data; ++ ssp_disable(&tosa_nssp_dev); ++ initialised = 0; ++ ++ /* Set the lcd functions */ ++ *tmio_ops = (struct tmio_lcd_ops*) &tosa_tc6393_lcd_ops; ++ } ++ ++ return ret; ++} ++ ++static int tosa_lcd_remove(struct platform_device *pdev) ++{ ++ /* delete the lcd functions */ ++ struct tmio_lcd_ops* *tmio_ops = pdev->dev.platform_data; ++ *tmio_ops = NULL; ++ ++ ssp_exit(&tosa_nssp_dev); ++ ++ if (tosa_i2c_dac) { ++ i2c_detach_client(tosa_i2c_dac); ++ kfree(tosa_i2c_dac); ++ } ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++ ++static int tosa_lcd_suspend(struct platform_device *pdev, pm_message_t state) ++{ ++ ssp_flush(&tosa_nssp_dev); ++ ssp_save_state(&tosa_nssp_dev,&tosa_nssp_state); ++ return 0; ++} ++ ++static int tosa_lcd_resume(struct platform_device *pdev) ++{ ++ printk("tosa_lcd_resume\n"); ++ ssp_restore_state(&tosa_nssp_dev,&tosa_nssp_state); ++ ssp_enable(&tosa_nssp_dev); ++ printk("tosa_lcd_resume ok\n"); ++ return 0; ++} ++#else ++ ++#define tosa_lcd_suspend NULL ++#define tosa_lcd_resume NULL ++ ++#endif ++ ++ ++static struct platform_driver tosalcd_driver = { ++ .probe = tosa_lcd_probe, ++ .remove = tosa_lcd_remove, ++ .suspend = tosa_lcd_suspend, ++ .resume = tosa_lcd_resume, ++ .driver = { ++ .name = "tosa-lcd", ++ }, ++}; ++ ++static int __init tosa_lcd_init(void) ++{ ++ return platform_driver_register(&tosalcd_driver); ++} ++ ++static void __exit tosa_lcd_cleanup (void) ++{ ++ platform_driver_unregister (&tosalcd_driver); ++} ++ ++device_initcall(tosa_lcd_init); ++module_exit (tosa_lcd_cleanup); ++ ++MODULE_DESCRIPTION ("Tosa LCD device"); ++MODULE_AUTHOR ("Dirk Opfer"); ++MODULE_LICENSE ("GPL v2"); +Index: git/arch/arm/mach-pxa/tosa.c +=================================================================== +--- git.orig/arch/arm/mach-pxa/tosa.c 2006-11-07 22:13:10.000000000 +0000 ++++ git/arch/arm/mach-pxa/tosa.c 2006-11-07 23:29:38.000000000 +0000 +@@ -24,6 +24,7 @@ + #include <linux/mtd/partitions.h> + #include <linux/pm.h> + #include <linux/delay.h> ++#include <linux/fb.h> + + #include <asm/setup.h> + #include <asm/memory.h> +@@ -48,7 +49,6 @@ + + #include "generic.h" + +- + /* + * SCOOP Device + */ +@@ -345,7 +345,38 @@ static struct tmio_nand_platform_data to + .badblock_pattern = &tosa_tc6393_nand_bbt, + }; + +-extern struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data; ++static struct fb_videomode tosa_tc6393_lcd_mode[] = { ++ { ++ .xres = 480, ++ .yres = 640, ++ .pixclock = 0x002cdf00,/* PLL divisor */ ++ .left_margin = 0x004c, ++ .right_margin = 0x005b, ++ .upper_margin = 0x0001, ++ .lower_margin = 0x000d, ++ .hsync_len = 0x0002, ++ .vsync_len = 0x0001, ++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, ++ .vmode = FB_VMODE_NONINTERLACED, ++ },{ ++ .xres = 240, ++ .yres = 320, ++ .pixclock = 0x00e7f203,/* PLL divisor */ ++ .left_margin = 0x0024, ++ .right_margin = 0x002f, ++ .upper_margin = 0x0001, ++ .lower_margin = 0x000d, ++ .hsync_len = 0x0002, ++ .vsync_len = 0x0001, ++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, ++ .vmode = FB_VMODE_NONINTERLACED, ++}}; ++ ++struct tmio_lcd_platform_data tosa_tc6393_lcd_platform_data = { ++ .ops = NULL, ++ .modelist = tosa_tc6393_lcd_mode, ++ .num_modes = ARRAY_SIZE(tosa_tc6393_lcd_mode), ++}; + + static struct tmio_cell tosa_tc6393_cells[] = { + { +@@ -384,6 +415,19 @@ struct platform_device tc6393_device = { + .num_resources = ARRAY_SIZE(tc6393_resources), + .resource = tc6393_resources, + }; ++EXPORT_SYMBOL (tc6393_device); ++ ++/* ++ * Tosa LCD / Backlight stuff ++ */ ++static struct platform_device tosalcd_device = { ++ .name = "tosa-lcd", ++ .id = -1, ++ .dev = { ++ .parent = &tc6393_device.dev, ++ .platform_data = &tosa_tc6393_lcd_platform_data.ops, ++ }, ++}; + + static struct platform_device *devices[] __initdata = { + &tosascoop_device, +@@ -391,6 +435,7 @@ static struct platform_device *devices[] + &tosakbd_device, + &tosaled_device, + &tc6393_device, ++ &tosalcd_device, + }; + + static void tosa_poweroff(void) +Index: git/arch/arm/mach-pxa/Kconfig +=================================================================== +--- git.orig/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:10.000000000 +0000 ++++ git/arch/arm/mach-pxa/Kconfig 2006-11-07 22:13:10.000000000 +0000 +@@ -129,7 +129,10 @@ config MACH_TOSA + bool "Enable Sharp SL-6000x (Tosa) Support" + depends PXA_SHARPSL_25x + select TOSHIBA_TC6393XB +- select SHARPSL_PM ++ select I2C ++ select I2C_PXA ++ select SHARPSL_PM ++ select PXA_SSP + + config PXA25x + bool diff --git a/packages/linux/linux-openzaurus-2.6.18+git/wm9712-reset-loop-r2.patch b/packages/linux/linux-openzaurus-2.6.18+git/wm9712-reset-loop-r2.patch new file mode 100644 index 0000000000..78e81ea83a --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/wm9712-reset-loop-r2.patch @@ -0,0 +1,44 @@ + sound/soc/codecs/wm9712.c | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +Index: git/sound/soc/codecs/wm9712.c +=================================================================== +--- git.orig/sound/soc/codecs/wm9712.c 2006-11-07 22:10:01.000000000 +0000 ++++ git/sound/soc/codecs/wm9712.c 2006-11-07 22:11:50.000000000 +0000 +@@ -618,18 +618,26 @@ static int wm9712_dapm_event(struct snd_ + + static int wm9712_reset(struct snd_soc_codec *codec, int try_warm) + { +- if (try_warm && soc_ac97_ops.warm_reset) { +- soc_ac97_ops.warm_reset(codec->ac97); +- if (!(ac97_read(codec, 0) & 0x8000)) +- return 1; +- } ++ int retry = 3; + +- soc_ac97_ops.reset(codec->ac97); +- if (ac97_read(codec, 0) & 0x8000) +- goto err; +- return 0; ++ while (retry--) ++ { ++ if(try_warm && soc_ac97_ops.warm_reset) { ++ soc_ac97_ops.warm_reset(codec->ac97); ++ if(ac97_read(codec, 0) & 0x8000) ++ continue; ++ else ++ return 1; ++ } ++ ++ soc_ac97_ops.reset(codec->ac97); ++ if(ac97_read(codec, 0) & 0x8000) ++ continue; ++ else ++ return 0; ++ ++ } + +-err: + printk(KERN_ERR "WM9712 AC97 reset failed\n"); + return -EIO; + } diff --git a/packages/linux/linux-openzaurus-2.6.18+git/wm9712-suspend-cold-res-r2.patch b/packages/linux/linux-openzaurus-2.6.18+git/wm9712-suspend-cold-res-r2.patch new file mode 100644 index 0000000000..5179b47cc4 --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.18+git/wm9712-suspend-cold-res-r2.patch @@ -0,0 +1,16 @@ + sound/soc/codecs/wm9712.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: git/sound/soc/codecs/wm9712.c +=================================================================== +--- git.orig/sound/soc/codecs/wm9712.c 2006-11-07 21:57:34.000000000 +0000 ++++ git/sound/soc/codecs/wm9712.c 2006-11-07 21:59:30.000000000 +0000 +@@ -651,7 +651,7 @@ static int wm9712_soc_resume(struct plat + int i, ret; + u16 *cache = codec->reg_cache; + +- ret = wm9712_reset(codec, 1); ++ ret = wm9712_reset(codec, 0); + if (ret < 0){ + printk(KERN_ERR "could not reset AC97 codec\n"); + return ret; diff --git a/packages/linux/linux-openzaurus_2.6.18+git.bb b/packages/linux/linux-openzaurus_2.6.18+git.bb index c81d67ef5a..6232c9bf47 100644 --- a/packages/linux/linux-openzaurus_2.6.18+git.bb +++ b/packages/linux/linux-openzaurus_2.6.18+git.bb @@ -82,22 +82,22 @@ SRC_URI_append_collie = "\ SRC_URI_append_tosa = "\ ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \ ${CHSRC}/tmio-core-r4.patch;patch=1 \ - file://tmio-tc6393-r7.patch;patch=1 \ - file://tmio-nand-r6.patch;patch=1 \ - file://tmio-ohci-r5.patch;patch=1 \ + file://tmio-tc6393-r8.patch;patch=1 \ + file://tmio-nand-r7.patch;patch=1 \ + file://tmio-ohci-r6.patch;patch=1 \ ${CHSRC}/tmio-fb-r6.patch;patch=1 \ - ${DOSRC}/tosa-keyboard-r17.patch;patch=1 \ + file://tosa-keyboard-r18.patch;patch=1 \ ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \ ${DOSRC}/tosa-tmio-r6.patch;patch=1 \ ${DOSRC}/tosa-power-r17.patch;patch=1 \ - file://tosa-tmio-lcd-r9.patch;patch=1 \ + file://tosa-tmio-lcd-r10.patch;patch=1 \ ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \ ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \ - ${DOSRC}/wm9712-suspend-cold-res-r1.patch;patch=1 \ - ${DOSRC}/sharpsl-pm-postresume-r0.patch;patch=1 \ + file://wm9712-suspend-cold-res-r2.patch;patch=1 \ + file://sharpsl-pm-postresume-r1.patch;patch=1 \ ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \ ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \ - ${DOSRC}/wm9712-reset-loop-r1.patch;patch=1 \ + file://wm9712-reset-loop-r2.patch;patch=1 \ file://tosa-lcdnoise-r1.patch;patch=1 \ file://wm97xx-lcdnoise-r0.patch;patch=1 " # ${DOSRC}/tosa-asoc-r1.patch;patch=1 " diff --git a/packages/linux/logicpd-pxa270-2.6.17-rc5/defconfig b/packages/linux/logicpd-pxa270-2.6.17-rc5/defconfig index 212e38078e..38b5bf8ec8 100644 --- a/packages/linux/logicpd-pxa270-2.6.17-rc5/defconfig +++ b/packages/linux/logicpd-pxa270-2.6.17-rc5/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.17-rc5 -# Tue May 30 12:40:27 2006 +# Tue Oct 31 10:23:39 2006 # CONFIG_ARM=y CONFIG_MMU=y @@ -56,7 +56,8 @@ CONFIG_OBSOLETE_INTERMODULE=y # Loadable module support # CONFIG_MODULES=y -# CONFIG_MODULE_UNLOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_KMOD is not set @@ -168,7 +169,6 @@ CONFIG_ALIGNMENT_TRAP=y CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 ip=dhcp console=ttyS0,115200 mem=64M" -#CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.3.5:/opt/nfs-exports/pxa-nfs-root ip=dhcp console=ttyS0,115200 mem=64M" # CONFIG_XIP_KERNEL is not set # @@ -537,7 +537,13 @@ CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_UCB1400=y +CONFIG_TOUCHSCREEN_UCB1400=m +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_MK712 is not set # CONFIG_INPUT_MISC is not set # @@ -692,7 +698,45 @@ CONFIG_LOGO_LINUX_CLUT224=y # # Sound # -# CONFIG_SOUND is not set +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_BUS=m +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# +CONFIG_SND_PXA2XX_PCM=m +CONFIG_SND_PXA2XX_AC97=m + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set # # USB support @@ -764,7 +808,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_PROC_FS=y CONFIG_SYSFS=y -# CONFIG_TMPFS is not set +CONFIG_TMPFS=y # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y # CONFIG_CONFIGFS_FS is not set diff --git a/packages/linux/logicpd-pxa270-2.6.17-rc5/ucb1400-ac97-audio.patch b/packages/linux/logicpd-pxa270-2.6.17-rc5/ucb1400-ac97-audio.patch new file mode 100644 index 0000000000..692dd1d6c1 --- /dev/null +++ b/packages/linux/logicpd-pxa270-2.6.17-rc5/ucb1400-ac97-audio.patch @@ -0,0 +1,86 @@ +Index: linux-2.6.17-rc5/sound/pci/ac97/ac97_codec.c +=================================================================== +--- linux-2.6.17-rc5.orig/sound/pci/ac97/ac97_codec.c ++++ linux-2.6.17-rc5/sound/pci/ac97/ac97_codec.c +@@ -151,7 +151,7 @@ static const struct ac97_codec_id snd_ac + { 0x4e534300, 0xffffffff, "LM4540,43,45,46,48", NULL, NULL }, // only guess --jk + { 0x4e534331, 0xffffffff, "LM4549", NULL, NULL }, + { 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix +-{ 0x50534304, 0xffffffff, "UCB1400", NULL, NULL }, ++{ 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL, AC97_HAS_NO_STD_PCM }, + { 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH }, + { 0x54524102, 0xffffffff, "TR28022", NULL, NULL }, + { 0x54524106, 0xffffffff, "TR28026", NULL, NULL }, +Index: linux-2.6.17-rc5/sound/pci/ac97/ac97_patch.c +=================================================================== +--- linux-2.6.17-rc5.orig/sound/pci/ac97/ac97_patch.c ++++ linux-2.6.17-rc5/sound/pci/ac97/ac97_patch.c +@@ -375,7 +375,57 @@ int patch_yamaha_ymf753(struct snd_ac97 + ac97->caps |= 0x04 << 10; /* Yamaha 3D enhancement */ + return 0; + } ++/* ++ * UCB1400 codec ++ */ ++ ++#define AC97_UCB1400_FCSR1 0x6a ++#define AC97_UCB1400_FCSR2 0x6c ++ ++static const snd_kcontrol_new_t ucb1400_snd_ac97_controls[] = { ++ AC97_SINGLE("Tone Control - Bass", AC97_UCB1400_FCSR1, 11, 4, 0), ++ AC97_SINGLE("Tone Control - Treble", AC97_UCB1400_FCSR1, 9, 2, 0), ++ AC97_SINGLE("Headphone Playback Switch", AC97_UCB1400_FCSR1, 6, 1, 0), ++ AC97_SINGLE("De-emphasis", AC97_UCB1400_FCSR1, 5, 1, 0), ++ AC97_SINGLE("DC Filter", AC97_UCB1400_FCSR1, 4, 1, 0), ++ AC97_SINGLE("Hi-pass Filter", AC97_UCB1400_FCSR1, 3, 1, 0), ++ AC97_SINGLE("ADC Filter", AC97_UCB1400_FCSR2, 12, 1, 0), ++}; ++ ++int patch_ucb1400(ac97_t * ac97) ++{ ++ int err, i; + ++ for(i = 0; i < ARRAY_SIZE(ucb1400_snd_ac97_controls); i++) { ++ if((err = snd_ctl_add(ac97->bus->card, snd_ac97_cnew(&ucb1400_snd_ac97_controls[i], ac97))) < 0) ++ return err; ++ } ++ ++ snd_ac97_write_cache(ac97, AC97_UCB1400_FCSR1, ++ (0 << 11) | // 0 base boost ++ (0 << 9) | // 0 treble boost ++ (0 << 7) | // Mode = flat ++ (1 << 6) | // Headphones enable ++ (0 << 5) | // De-emphasis disabled ++ (1 << 4) | // DC filter enabled ++ (1 << 3) | // Hi-pass filter enabled ++ (0 << 2) | // disable interrupt signalling via GPIO_INT ++ (1 << 0) // clear ADC overflow status if set ++ ); ++ ++ snd_ac97_write_cache(ac97, AC97_UCB1400_FCSR2, ++ (0 << 15) | // must be 0 ++ (0 << 13) | // must be 0 ++ (1 << 12) | // ADC filter enabled ++ (0 << 10) | // must be 0 ++ (0 << 4) | // Smart low power mode on neither Codec nor PLL ++ (0 << 0) // must be 0 ++ ); ++ ++ return 0; ++} ++ ++/* + /* + * May 2, 2003 Liam Girdwood <liam.girdwood@wolfsonmicro.com> + * removed broken wolfson00 patch. +Index: linux-2.6.17-rc5/sound/pci/ac97/ac97_patch.h +=================================================================== +--- linux-2.6.17-rc5.orig/sound/pci/ac97/ac97_patch.h ++++ linux-2.6.17-rc5/sound/pci/ac97/ac97_patch.h +@@ -58,5 +58,6 @@ int patch_cm9780(struct snd_ac97 * ac97) + int patch_vt1616(struct snd_ac97 * ac97); + int patch_vt1617a(struct snd_ac97 * ac97); + int patch_it2646(struct snd_ac97 * ac97); ++int patch_ucb1400(ac97_t * ac97); + int mpatch_si3036(struct snd_ac97 * ac97); + int patch_lm4550(struct snd_ac97 * ac97); diff --git a/packages/linux/logicpd-pxa270-2.6.17-rc5/ucb1400-touchscreen.patch b/packages/linux/logicpd-pxa270-2.6.17-rc5/ucb1400-touchscreen.patch new file mode 100644 index 0000000000..ba04d46176 --- /dev/null +++ b/packages/linux/logicpd-pxa270-2.6.17-rc5/ucb1400-touchscreen.patch @@ -0,0 +1,739 @@ +This patch is slightly adjusted from + +http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3073/1 +http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3074/2 +http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3075/2 + +in order to get it to apply cleanly to the released 2.6.15 codebase +and to put the Kconfig stuff in a more reasonable place in the tree. +Actually, I think Kconfig should probably separate the notion of the +touchscreen driver and the AC97-MCP layer thing; but that problem is +basically in the underlying mcp-based ucb1x00 driver layout in the +first place. +Index: linux-2.6.17-rc5/drivers/mfd/Makefile +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/Makefile ++++ linux-2.6.17-rc5/drivers/mfd/Makefile +@@ -10,3 +10,6 @@ obj-$(CONFIG_MCP_UCB1200_TS) += ucb1x00- + ifeq ($(CONFIG_SA1100_ASSABET),y) + obj-$(CONFIG_MCP_UCB1200) += ucb1x00-assabet.o + endif ++ ++obj-$(CONFIG_TOUCHSCREEN_UCB1400) += mcp-ac97.o ucb1x00-core.o ucb1x00-ts.o ++ +Index: linux-2.6.17-rc5/drivers/mfd/mcp-core.c +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/mcp-core.c ++++ linux-2.6.17-rc5/drivers/mfd/mcp-core.c +@@ -18,7 +18,6 @@ + #include <linux/slab.h> + #include <linux/string.h> + +-#include <asm/dma.h> + #include <asm/system.h> + + #include "mcp.h" +@@ -208,6 +207,7 @@ struct mcp *mcp_host_alloc(struct device + mcp->attached_device.bus = &mcp_bus_type; + mcp->attached_device.dma_mask = parent->dma_mask; + mcp->attached_device.release = mcp_release; ++ mcp->dev = &mcp->attached_device; + } + return mcp; + } +Index: linux-2.6.17-rc5/drivers/mfd/mcp-sa11x0.c +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/mcp-sa11x0.c ++++ linux-2.6.17-rc5/drivers/mfd/mcp-sa11x0.c +@@ -31,8 +31,12 @@ + #include "mcp.h" + + struct mcp_sa11x0 { +- u32 mccr0; +- u32 mccr1; ++ u32 mccr0; ++ u32 mccr1; ++ dma_device_t dma_audio_rd; ++ dma_device_t dma_audio_wr; ++ dma_device_t dma_telco_rd; ++ dma_device_t dma_telco_wr; + }; + + #define priv(mcp) ((struct mcp_sa11x0 *)mcp_priv(mcp)) +@@ -159,10 +163,10 @@ static int mcp_sa11x0_probe(struct platf + mcp->owner = THIS_MODULE; + mcp->ops = &mcp_sa11x0; + mcp->sclk_rate = data->sclk_rate; +- mcp->dma_audio_rd = DMA_Ser4MCP0Rd; +- mcp->dma_audio_wr = DMA_Ser4MCP0Wr; +- mcp->dma_telco_rd = DMA_Ser4MCP1Rd; +- mcp->dma_telco_wr = DMA_Ser4MCP1Wr; ++ priv(mcp)->dma_audio_rd = DMA_Ser4MCP0Rd; ++ priv(mcp)->dma_audio_wr = DMA_Ser4MCP0Wr; ++ priv(mcp)->dma_telco_rd = DMA_Ser4MCP1Rd; ++ priv(mcp)->dma_telco_wr = DMA_Ser4MCP1Wr; + + platform_set_drvdata(pdev, mcp); + +Index: linux-2.6.17-rc5/drivers/mfd/mcp.h +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/mcp.h ++++ linux-2.6.17-rc5/drivers/mfd/mcp.h +@@ -19,11 +19,8 @@ struct mcp { + int use_count; + unsigned int sclk_rate; + unsigned int rw_timeout; +- dma_device_t dma_audio_rd; +- dma_device_t dma_audio_wr; +- dma_device_t dma_telco_rd; +- dma_device_t dma_telco_wr; + struct device attached_device; ++ struct device *dev; + }; + + struct mcp_ops { +Index: linux-2.6.17-rc5/drivers/mfd/ucb1x00-assabet.c +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/ucb1x00-assabet.c ++++ linux-2.6.17-rc5/drivers/mfd/ucb1x00-assabet.c +@@ -15,8 +15,6 @@ + #include <linux/proc_fs.h> + #include <linux/device.h> + +-#include <asm/dma.h> +- + #include "ucb1x00.h" + + #define UCB1X00_ATTR(name,input)\ +Index: linux-2.6.17-rc5/drivers/mfd/ucb1x00-core.c +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/ucb1x00-core.c ++++ linux-2.6.17-rc5/drivers/mfd/ucb1x00-core.c +@@ -23,6 +23,7 @@ + #include <linux/init.h> + #include <linux/errno.h> + #include <linux/interrupt.h> ++#include <linux/kthread.h> + #include <linux/device.h> + #include <linux/mutex.h> + +@@ -31,6 +32,14 @@ + + #include "ucb1x00.h" + ++#if (defined CONFIG_UCB1400) || (defined CONFIG_UCB1400_MODULE) ++#define UCB_IS_1400(id) ((id) == UCB_ID_1400) ++#define UCB_X_CSR1 0xe /* this fake entry will be translated by mcp */ ++#define UCB_X_CSR2 0xf /* this fake entry will be translated by mcp */ ++#else ++#define UCB_IS_1400(id) (0) ++#endif ++ + static DEFINE_MUTEX(ucb1x00_mutex); + static LIST_HEAD(ucb1x00_drivers); + static LIST_HEAD(ucb1x00_devices); +@@ -58,9 +67,9 @@ void ucb1x00_io_set_dir(struct ucb1x00 * + spin_lock_irqsave(&ucb->io_lock, flags); + ucb->io_dir |= out; + ucb->io_dir &= ~in; ++ spin_unlock_irqrestore(&ucb->io_lock, flags); + + ucb1x00_reg_write(ucb, UCB_IO_DIR, ucb->io_dir); +- spin_unlock_irqrestore(&ucb->io_lock, flags); + } + + /** +@@ -86,9 +95,9 @@ void ucb1x00_io_write(struct ucb1x00 *uc + spin_lock_irqsave(&ucb->io_lock, flags); + ucb->io_out |= set; + ucb->io_out &= ~clear; ++ spin_unlock_irqrestore(&ucb->io_lock, flags); + + ucb1x00_reg_write(ucb, UCB_IO_DATA, ucb->io_out); +- spin_unlock_irqrestore(&ucb->io_lock, flags); + } + + /** +@@ -178,7 +187,7 @@ unsigned int ucb1x00_adc_read(struct ucb + schedule_timeout(1); + } + +- return UCB_ADC_DAT(val); ++ return UCB_IS_1400(ucb->id) ? (val & 0x3ff) : ((val & 0x7fe0) >> 5); + } + + /** +@@ -223,6 +232,47 @@ static irqreturn_t ucb1x00_irq(int irqnr + return IRQ_HANDLED; + } + ++/* ++ * A restriction with interrupts exists when using the ucb1400, as ++ * the codec read/write routines may sleep while waiting for codec ++ * access completion and uses semaphores for access control to the ++ * AC97 bus. A complete codec read cycle could take anywhere from ++ * 60 to 100uSec so we *definitely* don't want to spin inside the ++ * interrupt handler waiting for codec access. So, we handle the ++ * interrupt by scheduling a RT kernel thread to run in process ++ * context instead of interrupt context. ++ */ ++static int ucb1x00_thread(void *_ucb) ++{ ++ struct task_struct *tsk = current; ++ struct ucb1x00 *ucb = _ucb; ++ ++ tsk->policy = SCHED_FIFO; ++ tsk->rt_priority = 1; ++ ++ while (!kthread_should_stop()) { ++ wait_for_completion_interruptible(&ucb->irq_wait); ++ if (try_to_freeze()) ++ continue; ++ ucb1x00_irq(ucb->irq, ucb, NULL); ++ enable_irq(ucb->irq); ++ } ++ ++ ucb->irq_task = NULL; ++ return 0; ++} ++ ++static irqreturn_t ucb1x00_threaded_irq(int irqnr, void *devid, struct pt_regs *regs) ++{ ++ struct ucb1x00 *ucb = devid; ++ if (irqnr == ucb->irq) { ++ disable_irq(ucb->irq); ++ complete(&ucb->irq_wait); ++ return IRQ_HANDLED; ++ } ++ return IRQ_NONE; ++} ++ + /** + * ucb1x00_hook_irq - hook a UCB1x00 interrupt + * @ucb: UCB1x00 structure describing chip +@@ -276,18 +326,22 @@ void ucb1x00_enable_irq(struct ucb1x00 * + + if (idx < 16) { + spin_lock_irqsave(&ucb->lock, flags); +- +- ucb1x00_enable(ucb); +- if (edges & UCB_RISING) { ++ if (edges & UCB_RISING) + ucb->irq_ris_enbl |= 1 << idx; +- ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl); +- } +- if (edges & UCB_FALLING) { ++ if (edges & UCB_FALLING) + ucb->irq_fal_enbl |= 1 << idx; +- ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl); +- } +- ucb1x00_disable(ucb); + spin_unlock_irqrestore(&ucb->lock, flags); ++ ++ ucb1x00_enable(ucb); ++ ++ /* This prevents spurious interrupts on the UCB1400 */ ++ ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 1 << idx); ++ ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0); ++ ++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl); ++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl); ++ ++ ucb1x00_disable(ucb); + } + } + +@@ -305,18 +359,16 @@ void ucb1x00_disable_irq(struct ucb1x00 + + if (idx < 16) { + spin_lock_irqsave(&ucb->lock, flags); +- +- ucb1x00_enable(ucb); +- if (edges & UCB_RISING) { ++ if (edges & UCB_RISING) + ucb->irq_ris_enbl &= ~(1 << idx); +- ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl); +- } +- if (edges & UCB_FALLING) { ++ if (edges & UCB_FALLING) + ucb->irq_fal_enbl &= ~(1 << idx); +- ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl); +- } +- ucb1x00_disable(ucb); + spin_unlock_irqrestore(&ucb->lock, flags); ++ ++ ucb1x00_enable(ucb); ++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl); ++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl); ++ ucb1x00_disable(ucb); + } + } + +@@ -349,16 +401,17 @@ int ucb1x00_free_irq(struct ucb1x00 *ucb + ucb->irq_ris_enbl &= ~(1 << idx); + ucb->irq_fal_enbl &= ~(1 << idx); + +- ucb1x00_enable(ucb); +- ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl); +- ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl); +- ucb1x00_disable(ucb); +- + irq->fn = NULL; + irq->devid = NULL; + ret = 0; + } + spin_unlock_irq(&ucb->lock); ++ ++ ucb1x00_enable(ucb); ++ ucb1x00_reg_write(ucb, UCB_IE_RIS, ucb->irq_ris_enbl); ++ ucb1x00_reg_write(ucb, UCB_IE_FAL, ucb->irq_fal_enbl); ++ ucb1x00_disable(ucb); ++ + return ret; + + bad: +@@ -478,7 +531,7 @@ static int ucb1x00_probe(struct mcp *mcp + mcp_enable(mcp); + id = mcp_reg_read(mcp, UCB_ID); + +- if (id != UCB_ID_1200 && id != UCB_ID_1300) { ++ if (id != UCB_ID_1200 && id != UCB_ID_1300 && !UCB_IS_1400(id)) { + printk(KERN_WARNING "UCB1x00 ID not found: %04x\n", id); + goto err_disable; + } +@@ -491,12 +544,13 @@ static int ucb1x00_probe(struct mcp *mcp + memset(ucb, 0, sizeof(struct ucb1x00)); + + ucb->cdev.class = &ucb1x00_class; +- ucb->cdev.dev = &mcp->attached_device; ++ ucb->cdev.dev = mcp->dev; + strlcpy(ucb->cdev.class_id, "ucb1x00", sizeof(ucb->cdev.class_id)); + + spin_lock_init(&ucb->lock); + spin_lock_init(&ucb->io_lock); + sema_init(&ucb->adc_sem, 1); ++ init_completion(&ucb->irq_wait); + + ucb->id = id; + ucb->mcp = mcp; +@@ -507,13 +561,22 @@ static int ucb1x00_probe(struct mcp *mcp + goto err_free; + } + +- ret = request_irq(ucb->irq, ucb1x00_irq, SA_TRIGGER_RISING, +- "UCB1x00", ucb); ++ ret = request_irq(ucb->irq, ++ UCB_IS_1400(id) ? ucb1x00_threaded_irq : ucb1x00_irq, ++ 0, "UCB1x00", ucb); + if (ret) { + printk(KERN_ERR "ucb1x00: unable to grab irq%d: %d\n", + ucb->irq, ret); + goto err_free; + } ++ if (UCB_IS_1400(id)) { ++ ucb->irq_task = kthread_run(ucb1x00_thread, ucb, "kUCB1x00d"); ++ if (IS_ERR(ucb->irq_task)) { ++ ret = PTR_ERR(ucb->irq_task); ++ ucb->irq_task = NULL; ++ goto err_irq; ++ } ++ } + + mcp_set_drvdata(mcp, ucb); + +@@ -531,6 +594,8 @@ static int ucb1x00_probe(struct mcp *mcp + goto out; + + err_irq: ++ if (UCB_IS_1400(id) && ucb->irq_task) ++ kthread_stop(ucb->irq_task); + free_irq(ucb->irq, ucb); + err_free: + kfree(ucb); +@@ -553,6 +618,8 @@ static void ucb1x00_remove(struct mcp *m + } + mutex_unlock(&ucb1x00_mutex); + ++ if (UCB_IS_1400(ucb->id) && ucb->irq_task) ++ kthread_stop(ucb->irq_task); + free_irq(ucb->irq, ucb); + class_device_unregister(&ucb->cdev); + } +Index: linux-2.6.17-rc5/drivers/mfd/ucb1x00-ts.c +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/ucb1x00-ts.c ++++ linux-2.6.17-rc5/drivers/mfd/ucb1x00-ts.c +@@ -33,10 +33,8 @@ + #include <linux/slab.h> + #include <linux/kthread.h> + +-#include <asm/dma.h> +-#include <asm/semaphore.h> +-#include <asm/arch/collie.h> + #include <asm/mach-types.h> ++#include <asm/arch-sa1100/collie.h> + + #include "ucb1x00.h" + +@@ -45,13 +43,14 @@ struct ucb1x00_ts { + struct input_dev *idev; + struct ucb1x00 *ucb; + +- wait_queue_head_t irq_wait; ++ struct completion irq_wait; + struct task_struct *rtask; + u16 x_res; + u16 y_res; + + unsigned int restart:1; + unsigned int adcsync:1; ++ unsigned int go_thread; + }; + + static int adcsync; +@@ -205,7 +204,6 @@ static int ucb1x00_thread(void *_ts) + { + struct ucb1x00_ts *ts = _ts; + struct task_struct *tsk = current; +- DECLARE_WAITQUEUE(wait, tsk); + int valid; + + /* +@@ -217,10 +215,8 @@ static int ucb1x00_thread(void *_ts) + + valid = 0; + +- add_wait_queue(&ts->irq_wait, &wait); +- while (!kthread_should_stop()) { ++ while (!kthread_should_stop() && ts->go_thread) { + unsigned int x, y, p; +- signed long timeout; + + ts->restart = 0; + +@@ -242,8 +238,6 @@ static int ucb1x00_thread(void *_ts) + + + if (ucb1x00_ts_pen_down(ts)) { +- set_task_state(tsk, TASK_INTERRUPTIBLE); +- + ucb1x00_enable_irq(ts->ucb, UCB_IRQ_TSPX, machine_is_collie() ? UCB_RISING : UCB_FALLING); + ucb1x00_disable(ts->ucb); + +@@ -256,7 +250,16 @@ static int ucb1x00_thread(void *_ts) + valid = 0; + } + +- timeout = MAX_SCHEDULE_TIMEOUT; ++ /* ++ * Since ucb1x00_enable_irq() might sleep due ++ * to the way the UCB1400 regs are accessed, we ++ * can't use set_task_state() before that call, ++ * and not changing state before enabling the ++ * interrupt is racy. A completion handler avoids ++ * the issue. ++ */ ++ wait_for_completion_interruptible(&ts->irq_wait); ++ + } else { + ucb1x00_disable(ts->ucb); + +@@ -271,16 +274,12 @@ static int ucb1x00_thread(void *_ts) + } + + set_task_state(tsk, TASK_INTERRUPTIBLE); +- timeout = HZ / 100; ++ schedule_timeout(HZ/100); + } + + try_to_freeze(); +- +- schedule_timeout(timeout); + } + +- remove_wait_queue(&ts->irq_wait, &wait); +- + ts->rtask = NULL; + return 0; + } +@@ -293,7 +292,7 @@ static void ucb1x00_ts_irq(int idx, void + { + struct ucb1x00_ts *ts = id; + ucb1x00_disable_irq(ts->ucb, UCB_IRQ_TSPX, UCB_FALLING); +- wake_up(&ts->irq_wait); ++ complete(&ts->irq_wait); + } + + static int ucb1x00_ts_open(struct input_dev *idev) +@@ -303,7 +302,7 @@ static int ucb1x00_ts_open(struct input_ + + BUG_ON(ts->rtask); + +- init_waitqueue_head(&ts->irq_wait); ++ init_completion(&ts->irq_wait); + ret = ucb1x00_hook_irq(ts->ucb, UCB_IRQ_TSPX, ucb1x00_ts_irq, ts); + if (ret < 0) + goto out; +@@ -318,6 +317,8 @@ static int ucb1x00_ts_open(struct input_ + ucb1x00_adc_disable(ts->ucb); + + ts->rtask = kthread_run(ucb1x00_thread, ts, "ktsd"); ++ ts->go_thread = 1; //start thread! ++ + if (!IS_ERR(ts->rtask)) { + ret = 0; + } else { +@@ -337,9 +338,14 @@ static void ucb1x00_ts_close(struct inpu + { + struct ucb1x00_ts *ts = idev->private; + ++ ++ ts->go_thread = 0; //Stop thread! ++ complete(&ts->irq_wait); ++ + if (ts->rtask) + kthread_stop(ts->rtask); + ++ + ucb1x00_enable(ts->ucb); + ucb1x00_free_irq(ts->ucb, UCB_IRQ_TSPX, ts); + ucb1x00_reg_write(ts->ucb, UCB_TS_CR, 0); +@@ -358,7 +364,7 @@ static int ucb1x00_ts_resume(struct ucb1 + * after sleep. + */ + ts->restart = 1; +- wake_up(&ts->irq_wait); ++ complete(&ts->irq_wait); + } + return 0; + } +Index: linux-2.6.17-rc5/drivers/mfd/ucb1x00.h +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/mfd/ucb1x00.h ++++ linux-2.6.17-rc5/drivers/mfd/ucb1x00.h +@@ -94,6 +94,7 @@ + #define UCB_ID 0x0c + #define UCB_ID_1200 0x1004 + #define UCB_ID_1300 0x1005 ++#define UCB_ID_1400 0x4304 + + #define UCB_MODE 0x0d + #define UCB_MODE_DYN_VFLAG_ENA (1 << 12) +@@ -110,6 +111,8 @@ struct ucb1x00 { + spinlock_t lock; + struct mcp *mcp; + unsigned int irq; ++ struct task_struct *irq_task; ++ struct completion irq_wait; + struct semaphore adc_sem; + spinlock_t io_lock; + u16 id; +@@ -122,6 +125,7 @@ struct ucb1x00 { + struct class_device cdev; + struct list_head node; + struct list_head devs; ++ + }; + + struct ucb1x00_driver; +Index: linux-2.6.17-rc5/drivers/mfd/mcp-ac97.c +=================================================================== +--- /dev/null ++++ linux-2.6.17-rc5/drivers/mfd/mcp-ac97.c +@@ -0,0 +1,153 @@ ++/* ++ * linux/drivers/misc/mcp-ac97.c ++ * ++ * Author: Nicolas Pitre ++ * Created: Jan 14, 2005 ++ * Copyright: (C) MontaVista Software Inc. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This module provides the minimum replacement for mcp-core.c allowing for ++ * the UCB1400 chip to be driven by the ucb1x00 driver over an AC97 link. ++ */ ++ ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/errno.h> ++#include <linux/device.h> ++ ++#include <sound/driver.h> ++#include <sound/core.h> ++#include <sound/ac97_codec.h> ++ ++#include "mcp.h" ++ ++/* ucb1x00 SIB register to ucb1400 AC-link register mapping */ ++ ++static const unsigned char regmap[] = { ++ 0x5a, /* UCB_IO_DATA */ ++ 0X5C, /* UCB_IO_DIR */ ++ 0X5E, /* UCB_IE_RIS */ ++ 0x60, /* UCB_IE_FAL */ ++ 0x62, /* UCB_IE_STATUS */ ++ 0, /* UCB_TC_A */ ++ 0, /* UCB_TC_B */ ++ 0, /* UCB_AC_A */ ++ 0, /* UCB_AC_B */ ++ 0x64, /* UCB_TS_CR */ ++ 0x66, /* UCB_ADC_CR */ ++ 0x68, /* UCB_ADC_DATA */ ++ 0x7e, /* UCB_ID */ ++ 0, /* UCB_MODE */ ++}; ++ ++unsigned int mcp_reg_read(struct mcp *mcp, unsigned int reg) ++{ ++ ac97_t *ac97 = to_ac97_t(mcp->dev); ++ if (reg < ARRAY_SIZE(regmap)) { ++ reg = regmap[reg]; ++ if (reg) ++ return ac97->bus->ops->read(ac97, reg); ++ } ++ return -1; ++} ++EXPORT_SYMBOL(mcp_reg_read); ++ ++void mcp_reg_write(struct mcp *mcp, unsigned int reg, unsigned int val) ++{ ++ ac97_t *ac97 = to_ac97_t(mcp->dev); ++ if (reg < ARRAY_SIZE(regmap)) { ++ reg = regmap[reg]; ++ if (reg) ++ ac97->bus->ops->write(ac97, reg, val); ++ } ++} ++EXPORT_SYMBOL(mcp_reg_write); ++ ++void mcp_enable(struct mcp *mcp) ++{ ++} ++EXPORT_SYMBOL(mcp_enable); ++ ++void mcp_disable(struct mcp *mcp) ++{ ++} ++EXPORT_SYMBOL(mcp_disable); ++ ++#define to_mcp_driver(d) container_of(d, struct mcp_driver, drv) ++ ++static int mcp_probe(struct device *dev) ++{ ++ struct mcp_driver *drv = to_mcp_driver(dev->driver); ++ struct mcp *mcp; ++ int ret; ++ ++ ret = -ENOMEM; ++ mcp = kmalloc(sizeof(*mcp), GFP_KERNEL); ++ if (mcp) { ++ memset(mcp, 0, sizeof(*mcp)); ++ mcp->owner = THIS_MODULE; ++ mcp->dev = dev; ++ ret = drv->probe(mcp); ++ if (ret) ++ kfree(mcp); ++ } ++ if (!ret) ++ dev_set_drvdata(dev, mcp); ++ return ret; ++} ++ ++static int mcp_remove(struct device *dev) ++{ ++ struct mcp_driver *drv = to_mcp_driver(dev->driver); ++ struct mcp *mcp = dev_get_drvdata(dev); ++ ++ drv->remove(mcp); ++ dev_set_drvdata(dev, NULL); ++ kfree(mcp); ++ return 0; ++} ++ ++static int mcp_suspend(struct device *dev, pm_message_t state) ++{ ++ struct mcp_driver *drv = to_mcp_driver(dev->driver); ++ struct mcp *mcp = dev_get_drvdata(dev); ++ int ret = 0; ++ ++ if (drv->suspend) ++ ret = drv->suspend(mcp, state); ++ return ret; ++} ++ ++static int mcp_resume(struct device *dev) ++{ ++ struct mcp_driver *drv = to_mcp_driver(dev->driver); ++ struct mcp *mcp = dev_get_drvdata(dev); ++ int ret = 0; ++ ++ if (drv->resume) ++ ret = drv->resume(mcp); ++ return ret; ++} ++ ++int mcp_driver_register(struct mcp_driver *mcpdrv) ++{ ++ mcpdrv->drv.owner = THIS_MODULE; ++ mcpdrv->drv.bus = &ac97_bus_type; ++ mcpdrv->drv.probe = mcp_probe; ++ mcpdrv->drv.remove = mcp_remove; ++ mcpdrv->drv.suspend = mcp_suspend; ++ mcpdrv->drv.resume = mcp_resume; ++ return driver_register(&mcpdrv->drv); ++} ++EXPORT_SYMBOL(mcp_driver_register); ++ ++void mcp_driver_unregister(struct mcp_driver *mcpdrv) ++{ ++ driver_unregister(&mcpdrv->drv); ++} ++EXPORT_SYMBOL(mcp_driver_unregister); ++ ++MODULE_LICENSE("GPL"); +Index: linux-2.6.17-rc5/drivers/input/touchscreen/Kconfig +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/input/touchscreen/Kconfig ++++ linux-2.6.17-rc5/drivers/input/touchscreen/Kconfig +@@ -24,6 +24,25 @@ config TOUCHSCREEN_ADS7846 + To compile this driver as a module, choose M here: the + module will be called ads7846. + ++config UCB1400 ++ bool ++ ++config TOUCHSCREEN_UCB1400 ++ tristate "UCB1400 Touchscreen support" ++ depends on ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_PXA ++ select SND_AC97_BUS ++ select UCB1400 ++ help ++ Say Y here if you have a touchscreen connected to a UCB1400 ADC chip ++ on the AC97 bus of a PXA255/PXA270 host. ++ ++ If unsure, say N. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called ucb1x00-ts. It will also build the modules ++ ucb1x00-core and mcp-ac97 which provide the compatibility layers ++ down to the AC97 bus. ++ + config TOUCHSCREEN_BITSY + tristate "Compaq iPAQ H3600 (Bitsy) touchscreen" + depends on SA1100_BITSY +Index: linux-2.6.17-rc5/drivers/input/Kconfig +=================================================================== +--- linux-2.6.17-rc5.orig/drivers/input/Kconfig ++++ linux-2.6.17-rc5/drivers/input/Kconfig +@@ -87,7 +87,7 @@ config INPUT_JOYDEV + module will be called joydev. + + config INPUT_TSDEV +- tristate "Touchscreen interface" ++ tristate "Compaq touchscreen interface" + ---help--- + Say Y here if you have an application that only can understand the + Compaq touchscreen protocol for absolute pointer data. This is diff --git a/packages/linux/logicpd-pxa270_2.6.17-rc5.bb b/packages/linux/logicpd-pxa270_2.6.17-rc5.bb index 18af8276bc..42956f89dd 100644 --- a/packages/linux/logicpd-pxa270_2.6.17-rc5.bb +++ b/packages/linux/logicpd-pxa270_2.6.17-rc5.bb @@ -1,13 +1,14 @@ SECTION = "kernel" DESCRIPTION = "Linux kernel for the LogicPD Zoom(PXA270 ref design)" LICENSE = "GPL" -PR = "r1" +PR = "r3" SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.17-rc5.tar.bz2 \ file://linux-2.6.17-rc5.patch;pnum=0;patch=1 \ + file://ucb1400-ac97-audio.patch;pnum=1;patch=1 \ + file://ucb1400-touchscreen.patch;pnum=1;patch=1 \ file://defconfig" - S = "${WORKDIR}/linux-2.6.17-rc5" COMPATIBLE_HOST = 'arm.*-linux' diff --git a/packages/linux/mx31ads-kernel/.mtn2git_empty b/packages/linux/mx31ads-kernel/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/linux/mx31ads-kernel/.mtn2git_empty diff --git a/packages/linux/mx31ads-kernel/imx31ads_defconfig b/packages/linux/mx31ads-kernel/imx31ads_defconfig new file mode 100644 index 0000000000..3836ed03ea --- /dev/null +++ b/packages/linux/mx31ads-kernel/imx31ads_defconfig @@ -0,0 +1,1742 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.19-rc5 +# Mon Nov 13 12:42:45 2006 +# +CONFIG_ARM=y +# CONFIG_GENERIC_TIME is not set +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +# CONFIG_IPC_NS is not set +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_UTS_NS is not set +# CONFIG_AUDIT is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_RELAY is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_EMBEDDED=y +CONFIG_UID16=y +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_SLAB=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_KMOD=y + +# +# Block layer +# +CONFIG_BLOCK=y +# CONFIG_BLK_DEV_IO_TRACE is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# +# System Type +# +# CONFIG_ARCH_AAEC2000 is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IMX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_PNX4008 is not set +CONFIG_ARCH_MXC=y +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_OMAP is not set + +# +# Freescale MXC Implementations +# +CONFIG_ARCH_MX3=y + +# +# MX3 Options +# +CONFIG_MACH_MX31ADS=y +# CONFIG_MX3_DOZE_DURING_IDLE is not set +CONFIG_ISP1504_MXC=m + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_V6=y +# CONFIG_CPU_32v6K is not set +CONFIG_CPU_32v6=y +CONFIG_CPU_ABRT_EV6=y +CONFIG_CPU_CACHE_V6=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V6=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_CACHE_L210=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set + +# +# Bus support +# +CONFIG_ISA=y + +# +# PCCARD (PCMCIA/CardBus) support +# +CONFIG_PCCARD=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y + +# +# PC-card bridges +# +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +CONFIG_PCMCIA_MX31ADS=m +CONFIG_PCMCIA_PROBE=y + +# +# Kernel Features +# +CONFIG_PREEMPT=y +# CONFIG_NO_IDLE_HZ is not set +CONFIG_HZ=100 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_RESOURCES_64BIT is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="noinitrd console=ttymxc0 root=/dev/mtdblock2 rw ip=off" +# CONFIG_XIP_KERNEL is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y + +# +# MXC support drivers +# + +# +# MXC IPU +# +CONFIG_MXC_IPU=y +CONFIG_MXC_IPU_PF=y + +# +# MXC SPI support +# +CONFIG_MXC_SPI=y +# CONFIG_MXC_SPI_SELECT1 is not set +CONFIG_MXC_SPI_SELECT2=y +# CONFIG_MXC_SPI_SELECT3 is not set + +# +# MXC SSI support +# +CONFIG_MXC_SSI=y + +# +# MXC Digital Audio Multiplexer support +# +CONFIG_MXC_DAM=y + +# +# MC13783_LEGACY support +# +CONFIG_MXC_MC13783_LEGACY=y +CONFIG_MXC_MC13783_ADC=y +CONFIG_MXC_MC13783_AUDIO=y +CONFIG_MXC_MC13783_RTC=y +CONFIG_MXC_MC13783_LIGHT=y +CONFIG_MXC_MC13783_BATTERY=y +CONFIG_MXC_MC13783_CONNECTIVITY=y +CONFIG_MXC_MC13783_POWER=y + +# +# Advanced Power Management devices +# +CONFIG_MXC_DPTC=y +CONFIG_MXC_DVFS=y +CONFIG_MXC_DVFS_SDMA=y + +# +# MXC Security Drivers +# +CONFIG_MXC_SECURITY_SCC=y +CONFIG_MXC_SECURITY_RNGA=y +# CONFIG_MXC_RNGA_TEST_DEBUG is not set +CONFIG_MXC_SECURITY_RTIC=y +# CONFIG_MXC_RTIC_TEST_DEBUG is not set +CONFIG_MXC_SECURITY_CORE=y + +# +# SDMA +# +CONFIG_MXC_SDMA_API=y + +# +# MXC MPEG4 Encoder Kernel module support +# +CONFIG_MXC_HMP4E=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set +# CONFIG_PM_SYSFS_DEPRECATED is not set +# CONFIG_APM is not set + +# +# Dynamic Power Management +# +CONFIG_DPM=y +# CONFIG_DPM_STATS is not set +CONFIG_DPM_PROCFS=y + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_NETDEBUG is not set +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +CONFIG_IPV6_SIT=m +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set + +# +# Core Netfilter Configuration +# +# CONFIG_NETFILTER_NETLINK is not set +# CONFIG_NF_CONNTRACK is not set +# CONFIG_NETFILTER_XTABLES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set + +# +# IPv6: Netfilter Configuration (EXPERIMENTAL) +# +# CONFIG_IP6_NF_QUEUE is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +# CONFIG_IRDA_ULTRA is not set + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# Old SIR device drivers +# +# CONFIG_IRPORT_SIR is not set + +# +# Old Serial dongle support +# + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_SIGMATEL_FIR is not set +CONFIG_MXC_FIR=m +# CONFIG_MCS_FIR is not set +# CONFIG_BT is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +# CONFIG_IEEE80211_CRYPT_TKIP is not set +# CONFIG_IEEE80211_SOFTMAC is not set +CONFIG_WIRELESS_EXT=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m +# CONFIG_SYS_HYPERVISOR is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +# CONFIG_MTD_CFI_I2 is not set +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_OTP is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +CONFIG_MTD_RAM=y +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_PLATRAM is not set +CONFIG_MTD_MXC=y + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_NANDSIM is not set +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_NAND_MXC_SWECC=y +CONFIG_MTD_NAND_MXC_FORCE_CE=y +CONFIG_MTD_NAND_MXC_ECC_CORRECTION_OPTION2=y +CONFIG_CONFIG_MXC_NAND_LOW_LEVEL_ERASE=y + +# +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y +CONFIG_IDE_MAX_HWIFS=4 +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +# CONFIG_IDE_ARM is not set +CONFIG_BLK_DEV_IDE_MXC=m +# CONFIG_IDE_CHIPSETS is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set + +# +# SCSI low-level drivers +# +# CONFIG_ISCSI_TCP is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_PCMCIA_AHA152X is not set +# CONFIG_PCMCIA_FDOMAIN is not set +# CONFIG_PCMCIA_NINJA_SCSI is not set +# CONFIG_PCMCIA_QLOGIC is not set +# CONFIG_PCMCIA_SYM53C500 is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# I2O device support +# + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set + +# +# PHY device support +# +# CONFIG_PHYLIB is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +CONFIG_CS89x0=y + +# +# Ethernet (1000 Mbit) +# + +# +# Ethernet (10000 Mbit) +# + +# +# Token Ring devices +# +# CONFIG_TR is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_NET_WIRELESS_RTNETLINK is not set + +# +# Obsolete Wireless cards support (pre-802.11) +# +# CONFIG_STRIP is not set +# CONFIG_ARLAN is not set +# CONFIG_WAVELAN is not set +# CONFIG_PCMCIA_WAVELAN is not set +# CONFIG_PCMCIA_NETWAVE is not set + +# +# Wireless 802.11 Frequency Hopping cards support +# +# CONFIG_PCMCIA_RAYCS is not set + +# +# Wireless 802.11b ISA/PCI cards support +# +# CONFIG_HERMES is not set +# CONFIG_ATMEL is not set + +# +# Wireless 802.11b Pcmcia/Cardbus cards support +# +# CONFIG_AIRO_CS is not set +# CONFIG_PCMCIA_WL3501 is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_HOSTAP is not set +CONFIG_NET_WIRELESS=y + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set +CONFIG_SLHC=m +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_KEYBOARD_MXC=y +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_MXC_RTC=y + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_MXC=y +CONFIG_SERIAL_MXC_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_MXC_WATCHDOG=y + +# +# ISA-based Watchdog Cards +# +# CONFIG_PCWATCHDOG is not set +# CONFIG_MIXCOMWD is not set +# CONFIG_WDT is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_HW_RANDOM=y +# CONFIG_NVRAM is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set + +# +# Ftape, the floppy tape device driver +# + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +# CONFIG_RAW_DRIVER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set + +# +# I2C support +# +CONFIG_I2C=y +# CONFIG_I2C_CHARDEV is not set + +# +# I2C Algorithms +# +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALGOPCA is not set + +# +# I2C Hardware Bus support +# +# CONFIG_I2C_ELEKTOR is not set +CONFIG_I2C_MXC=y +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_PCA_ISA is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_MAX6875 is not set +CONFIG_MXC_I2C_CLIENT=y +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# SPI support +# +CONFIG_SPI=y +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_BITBANG is not set + +# +# SPI Protocol Masters +# + +# +# Dallas's 1-wire bus +# +CONFIG_W1=y + +# +# 1-wire Bus Masters +# +# CONFIG_W1_MASTER_DS2490 is not set +# CONFIG_W1_MASTER_DS2482 is not set + +# +# 1-wire Slaves +# +# CONFIG_W1_SLAVE_THERM is not set +# CONFIG_W1_SLAVE_SMEM is not set +# CONFIG_W1_SLAVE_DS2433 is not set +CONFIG_W1_MXC=y + +# +# Hardware Monitoring support +# +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_FSCHER is not set +# CONFIG_SENSORS_FSCPOS is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Misc devices +# +# CONFIG_TIFM_CORE is not set + +# +# LED devices +# +# CONFIG_NEW_LEDS is not set + +# +# LED drivers +# + +# +# LED Triggers +# + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_VIDEO_V4L2=y + +# +# Video Capture Adapters +# + +# +# Video Capture Adapters +# +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +# CONFIG_VIDEO_VIVI is not set +# CONFIG_VIDEO_PMS is not set +CONFIG_VIDEO_MXC_CAMERA=y + +# +# MXC Camera/V4L2 PRP Features support +# +CONFIG_VIDEO_MXC_IPU_CAMERA=y +CONFIG_MXC_CAMERA_MICRON111=y +CONFIG_MXC_IPU_PRP_VF_SDC=y +CONFIG_MXC_IPU_PRP_ENC=y +CONFIG_VIDEO_MXC_OUTPUT=y +CONFIG_VIDEO_MXC_IPU_OUTPUT=y +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_TUNER_3036 is not set + +# +# V4L USB devices +# +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_USB_VICAM is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_QUICKCAM_MESSENGER is not set +# CONFIG_USB_ET61X251 is not set +# CONFIG_VIDEO_OVCAMCHIP is not set +# CONFIG_USB_W9968CF is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_ZC0301 is not set +# CONFIG_USB_PWC is not set + +# +# Radio Adapters +# +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_GEMTEK is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_SF16FMR2 is not set +# CONFIG_RADIO_TERRATEC is not set +# CONFIG_RADIO_TRUST is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set +# CONFIG_USB_DSBR is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set +# CONFIG_USB_DABUSB is not set + +# +# Graphics support +# +CONFIG_FIRMWARE_EDID=y +CONFIG_FB=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set +CONFIG_FB_MXC=y +CONFIG_FB_MXC_16BPP=y +# CONFIG_FB_MXC_24BPP is not set +# CONFIG_FB_MXC_32BPP is not set +CONFIG_FB_MXC_SYNC_PANEL=y +CONFIG_FB_MXC_SHARP_QVGA_PANEL=y +# CONFIG_FB_MXC_VGA_PANEL is not set +# CONFIG_FB_MXC_TVOUT is not set +# CONFIG_FB_MXC_OVERLAY is not set +# CONFIG_FB_MXC_ASYNC_PANEL is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Logo configuration +# +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_LOGO_LINUX_CLUT224=y +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Sound +# +CONFIG_SOUND=y + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# +CONFIG_SND_MXC=y + +# +# USB devices +# +# CONFIG_SND_USB_AUDIO is not set + +# +# PCMCIA devices +# +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_PDAUDIOCF is not set + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +# CONFIG_USB_ARCH_HAS_OHCI is not set +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_SL811_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Input Devices +# +# CONFIG_USB_HID is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_ACECAD is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_TOUCHSCREEN is not set +# CONFIG_USB_YEALINK is not set +# CONFIG_USB_XPAD is not set +# CONFIG_USB_ATI_REMOTE is not set +# CONFIG_USB_ATI_REMOTE2 is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_APPLETOUCH is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET_MII is not set +# CONFIG_USB_USBNET is not set +CONFIG_USB_MON=y + +# +# USB port drivers +# + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_TEST is not set + +# +# USB DSL modem support +# + +# +# USB Gadget Support +# +CONFIG_USB_GADGET=m +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_SELECTED=y +# CONFIG_USB_GADGET_NET2280 is not set +# CONFIG_USB_GADGET_PXA2XX is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LH7A40X is not set +# CONFIG_USB_GADGET_OMAP is not set +CONFIG_USB_GADGET_ARC=y +CONFIG_USB_ARC=m +# CONFIG_USB_GADGET_AT91 is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_GADGET_ARC_OTGFS is not set +CONFIG_USB_GADGET_ARC_OTGHS=y +# CONFIG_USB_ZERO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_GADGETFS=m +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set + +# +# MMC/SD Card support +# +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_BLOCK=m +# CONFIG_MMC_TIFM_SD is not set +CONFIG_MMC_MXC=m + +# +# Real Time Clock +# +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set + +# +# RTC drivers +# +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_TEST is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +# CONFIG_EXT4DEV_FS is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_CRAMFS=y +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_DIRECTIO is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +# CONFIG_NFSD_V4 is not set +CONFIG_NFSD_TCP=y +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=m + +# +# Profiling support +# +CONFIG_PROFILING=y +CONFIG_OPROFILE=y + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_MUST_CHECK=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_FS is not set +CONFIG_FRAME_POINTER=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_USER=y + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_MANAGER=m +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Hardware crypto devices +# + +# +# Library routines +# +CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_PLIST=y diff --git a/packages/linux/mx31ads-kernel_2.6.19rc5.bb b/packages/linux/mx31ads-kernel_2.6.19rc5.bb new file mode 100644 index 0000000000..97fa499632 --- /dev/null +++ b/packages/linux/mx31ads-kernel_2.6.19rc5.bb @@ -0,0 +1,42 @@ +SECTION = "kernel" +DESCRIPTION = "Linux kernel for the MX31ADS" +LICENSE = "GPL" +MAINTAINER = "Liam Girdwood <liam.girdwood@wolfsonmicro.com>" +PR = "r1" + +SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 \ + http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2;patch=1 \ + http://opensource.wolfsonmicro.com/~lg/linux-2.6-mx31/mx31ads-2.6.19rc5-lg3.patch.bz2;patch=1 \ + file://imx31ads_defconfig" + +S = "${WORKDIR}/linux-2.6.18" + +COMPATIBLE_HOST = 'arm.*-linux' + +inherit kernel +inherit package + +ARCH = "arm" +KERNEL_IMAGETYPE = "zImage" +#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000" +#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}" + +do_configure_prepend() { + install -m 0644 ${WORKDIR}/imx31ads_defconfig ${S}/.config +# echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config +} + +do_deploy() { + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin +} + +do_deploy[dirs] = "${S}" + +addtask deploy before do_build after do_compile + +COMPATIBLE_MACHINE = "mx31ads" + +# to get module dependencies working +KERNEL_RELEASE = "2.6.19-rc5" + diff --git a/packages/linux/unslung-kernel/defconfig b/packages/linux/unslung-kernel/defconfig index 4f90b9dca6..7a2f164e6f 100644 --- a/packages/linux/unslung-kernel/defconfig +++ b/packages/linux/unslung-kernel/defconfig @@ -458,7 +458,20 @@ CONFIG_IPDDP=m CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y # CONFIG_DECNET is not set -# CONFIG_BRIDGE is not set +CONFIG_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_IPF=m +CONFIG_BRIDGE_EBT_ARPF=m +CONFIG_BRIDGE_EBT_VLANF=m +CONFIG_BRIDGE_EBT_MARKF=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_MARK_T=m # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_LLC is not set @@ -513,11 +526,6 @@ CONFIG_TUN=m CONFIG_ETHERTAP=m # -# Netconsole support -# -CONFIG_NETCONSOLE=m - -# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y @@ -592,6 +600,7 @@ CONFIG_8139CP_PHY_NUM=32 # CONFIG_SK98LIN is not set # CONFIG_TIGON3 is not set # CONFIG_FDDI is not set +CONFIG_NETCONSOLE=m # CONFIG_HIPPI is not set # CONFIG_PLIP is not set CONFIG_PPP=m @@ -1188,6 +1197,18 @@ CONFIG_USB_SERIAL_VISOR=m # CONFIG_USB_SERIAL_EDGEPORT_TI is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set CONFIG_USB_SERIAL_MCT_U232=m # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_KOBIL_SCT is not set diff --git a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb index 3043992d83..348fccf44b 100644 --- a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb +++ b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb @@ -1,9 +1,10 @@ SECTION = "kernel" +COMPATIBLE_MACHINE = "nslu2" require nslu2-linksys-kernel_2.4.22.bb DESCRIPTION = "Unslung kernel for the Linksys NSLU2 device" -PR = "r14" +PR = "r15" KERNEL_SUFFIX = "unslung" @@ -27,5 +28,3 @@ SRC_URI += "file://linux-kernel-R25_to_R29.patch;patch=1 \ ${UNSLUNG_KERNEL_EXTRA_SRC_URI}" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/unslung-kernel', '${FILE_DIRNAME}/nslu2-linksys-kernel-2.4.22', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" - -COMPATIBLE_MACHINE = "nslu2" diff --git a/packages/matchbox-applet-inputmanager/files/.mtn2git_empty b/packages/matchbox-applet-inputmanager/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/matchbox-applet-inputmanager/files/.mtn2git_empty diff --git a/packages/matchbox-applet-inputmanager/files/mbinputmgr-libgtkinput.patch b/packages/matchbox-applet-inputmanager/files/mbinputmgr-libgtkinput.patch new file mode 100644 index 0000000000..5d1ccdc0c7 --- /dev/null +++ b/packages/matchbox-applet-inputmanager/files/mbinputmgr-libgtkinput.patch @@ -0,0 +1,350 @@ +Index: mb-applet-input-manager-0.6/mbinputmgr-tray.c +=================================================================== +--- mb-applet-input-manager-0.6/mbinputmgr-tray.c (revision 1292) ++++ mb-applet-input-manager-0.6/mbinputmgr-tray.c (working copy) +@@ -32,8 +32,20 @@ + MBInpmgrState *Inpmgr_state = NULL; + Bool ButtonIsDown = False; + int ButtonActive; +-Atom AtomIMActivate; + ++Atom atoms[2]; ++char *atom_names[] = ++ { ++ "_MB_INPUT_REQUEST", ++ "_GPE_INPUT_MANAGER" ++ }; ++ ++#define _MB_INPUT_REQUEST 0 ++#define _GPE_INPUT_MANAGER 1 ++ ++#define _GPE_INPUT_MANAGER_OPEN 1 ++#define _GPE_INPUT_MANAGER_CLOSE 2 ++ + typedef struct ButtonImgs { + + MBPixbufImage *active; +@@ -41,6 +53,17 @@ + + } ButtonImgs; + ++struct window_record ++{ ++ Window w; ++ struct window_record *next; ++}; ++ ++struct window_record *requests; ++ ++Display *dpy; ++Bool auto_enabled; ++ + void + paint_callback ( MBTrayApp *app, Drawable drw ) + { +@@ -262,14 +285,190 @@ + } + + void ++really_close (void) ++{ ++ if (requests == NULL && mbinputmgr_method_active (Inpmgr_state) && auto_enabled) ++ { ++ mbinputmgr_toggle_selected_method (Inpmgr_state); ++ auto_enabled = False; ++ } ++} ++ ++Bool timer_active; ++struct timeval expires; ++ ++Bool ++get_timeout (struct timeval *tv) ++{ ++ int sec, usec; ++ struct timeval now; ++ ++ if (!timer_active) ++ return False; ++ ++ gettimeofday (&now, NULL); ++ ++ sec = expires.tv_sec - now.tv_sec; ++ usec = expires.tv_usec - now.tv_usec; ++ if (usec < 0) ++ { ++ sec--; ++ usec += 1000000; ++ } ++ ++ if (sec < 0) ++ { ++ /* timer expired */ ++ really_close (); ++ timer_active = False; ++ return False; ++ } ++ ++ tv->tv_sec = sec; ++ tv->tv_usec = usec; ++ ++ return True; ++} ++ ++Bool ++process_close_request (Window w) ++{ ++ struct window_record *r, *pr = NULL; ++ unsigned long tv; ++ ++ for (r = requests; r != NULL && r->w != w; ) ++ { ++ pr = r; ++ r = r->next; ++ } ++ ++ if (r) ++ { ++ if (pr) ++ pr->next = r->next; ++ else ++ requests = r->next; ++ ++ free (r); ++ ++ if (requests == NULL && mbinputmgr_method_active (Inpmgr_state) && auto_enabled) ++ { ++ timer_active = True; ++ gettimeofday (&expires, NULL); ++ expires.tv_usec += 100000; ++ if (expires.tv_usec >= 1000000) ++ { ++ expires.tv_sec++; ++ expires.tv_usec -= 1000000; ++ } ++ } ++ ++ return True; ++ } ++ ++ return False; ++} ++ ++int trapped_error_code; ++int (*old_error_handler) (Display *d, XErrorEvent *e); ++ ++static int ++error_handler(Display *display, ++ XErrorEvent *error) ++{ ++ trapped_error_code = error->error_code; ++ return 0; ++} ++ ++static void ++trap_errors(void) ++{ ++ trapped_error_code = 0; ++ old_error_handler = XSetErrorHandler(error_handler); ++} ++ ++static int ++untrap_errors(void) ++{ ++ XSetErrorHandler(old_error_handler); ++ return trapped_error_code; ++} ++ ++Bool ++process_open_request (Window w) ++{ ++ struct window_record *r; ++ ++ for (r = requests; r != NULL && r->w != w; r = r->next) ++ ; ++ ++ if (r) ++ return True; ++ ++ trap_errors (); ++ XSelectInput (dpy, w, StructureNotifyMask); ++ XSync (dpy, False); ++ if (untrap_errors ()) ++ return False; ++ ++ r = malloc (sizeof (*r)); ++ r->next = requests; ++ r->w = w; ++ requests = r; ++ ++ if (!mbinputmgr_method_active(Inpmgr_state)) ++ { ++ mbinputmgr_toggle_selected_method (Inpmgr_state); ++ auto_enabled = True; ++ } ++ ++ return False; ++} ++ ++Bool docked_already; ++ ++void ++is_docked (void) ++{ ++ Window tray_w; ++ ++ tray_w = mb_tray_app_xwin (app); ++ ++ if (XGetSelectionOwner (dpy, atoms[_GPE_INPUT_MANAGER]) == None) ++ { ++ XSetSelectionOwner (dpy, atoms[_GPE_INPUT_MANAGER], tray_w, CurrentTime); ++ } ++ else ++ { ++ fprintf (stderr, "Unable to claim _GPE_INPUT_MANAGER selection.\n"); ++ } ++} ++ ++void + xevent_callback (MBTrayApp *app, XEvent *ev) + { + if (ev->type == ClientMessage) + { + XClientMessageEvent *cmev = (XClientMessageEvent *)&ev->xconfigure; + +- if (cmev->message_type == AtomIMActivate) ++ if (cmev->message_type == atoms[_GPE_INPUT_MANAGER]) + { ++ switch (cmev->data.l[0]) ++ { ++ case _GPE_INPUT_MANAGER_OPEN: ++ process_open_request (cmev->data.l[1]); ++ break; ++ case _GPE_INPUT_MANAGER_CLOSE: ++ process_close_request (cmev->data.l[1]); ++ break; ++ default: ++ fprintf (stderr, "received unknown _GPE_INPUT_MANAGER request %d\n", cmev->data.l[0]); ++ break; ++ } ++ } ++#ifndef DISABLE_OLD_PROTOCOL ++ else if (cmev->message_type == atoms[_MB_INPUT_REQUEST]) ++ { + /* De Activate */ + if (cmev->data.l[0] == 0 && mbinputmgr_method_active(Inpmgr_state)) + mbinputmgr_toggle_selected_method (Inpmgr_state); +@@ -278,8 +477,20 @@ + && !mbinputmgr_method_active(Inpmgr_state)) + mbinputmgr_toggle_selected_method (Inpmgr_state); + } ++#endif + } ++ else if (ev->type == UnmapNotify) ++ { ++ XUnmapEvent *uev = &ev->xunmap; + ++ process_close_request (uev->window); ++ } ++ else if (ev->type == ConfigureNotify && !docked_already) ++ { ++ docked_already = TRUE; ++ is_docked (); ++ } ++ + mb_menu_handle_xevent (PopupMenu, ev); + } + +@@ -347,11 +558,42 @@ + free(icon_path); + } + ++static Bool ++get_xevent_timed(Display* dpy, XEvent* event_return, struct timeval *tv) ++{ ++ if (tv == NULL) ++ { ++ XNextEvent(dpy, event_return); ++ return True; ++ } ++ ++ XFlush(dpy); ++ ++ if (XPending(dpy) == 0) ++ { ++ int fd = ConnectionNumber(dpy); ++ fd_set readset; ++ FD_ZERO(&readset); ++ FD_SET(fd, &readset); ++ if (select(fd+1, &readset, NULL, NULL, tv) == 0) ++ { ++ return False; ++ } else { ++ XNextEvent(dpy, event_return); ++ return True; ++ } ++ } else { ++ XNextEvent(dpy, event_return); ++ return True; ++ } ++} ++ + int + main(int argc, char **argv) + { + int i; + MBPixbufImage *app_icon_img = NULL; ++ XEvent xevent; + + app = mb_tray_app_new ( "Input Selector", + resize_callback, +@@ -359,13 +601,13 @@ + &argc, + &argv ); + ++ dpy = mb_tray_app_xdisplay (app); ++ + Pixbuf = mb_pixbuf_new(mb_tray_app_xdisplay(app), + mb_tray_app_xscreen(app)); + +- AtomIMActivate = XInternAtom(mb_tray_app_xdisplay(app), +- "_MB_INPUT_REQUEST", False); ++ XInternAtoms (dpy, atom_names, sizeof (atom_names) / sizeof (atom_names[0]), False, atoms); + +- + PopupMenu = mb_menu_new (mb_tray_app_xdisplay(app), + mb_tray_app_xscreen(app)); + +@@ -399,17 +641,30 @@ + + mb_tray_app_set_xevent_callback (app, xevent_callback ); + ++ mb_tray_app_set_xevent_mask (app, SubstructureNotifyMask); ++ + mb_tray_app_set_button_callback (app, button_callback ); + + /* XXX set up dnotify to reload entrys only on _addition_ */ + ++#ifndef DISABLE_OLD_PROTOCOL + XSelectInput(mb_tray_app_xdisplay(app), + mb_tray_app_xrootwin(app), + SubstructureNotifyMask); ++#endif + ++ /* Not using mb_tray_app_main() to avoid libmb's broken get_xevent_timed() */ ++ mb_tray_app_main_init (app); ++ for (;;) ++ { ++ struct timeval tv, *tvp = NULL; + +- mb_tray_app_main (app); ++ if (get_timeout (&tv)) ++ tvp = &tv; + ++ if (get_xevent_timed (dpy, &xevent, tvp)) ++ mb_tray_handle_xevent (app, &xevent); ++ } ++ + return 0; + } +- diff --git a/packages/matchbox-applet-inputmanager/files/update-to-svn.diff b/packages/matchbox-applet-inputmanager/files/update-to-svn.diff new file mode 100644 index 0000000000..6ec68a0ea2 --- /dev/null +++ b/packages/matchbox-applet-inputmanager/files/update-to-svn.diff @@ -0,0 +1,33 @@ +--- /tmp/mbinputmgr-tray.c 2006-11-11 14:11:02.000000000 +0100 ++++ mb-applet-input-manager-0.6/mbinputmgr-tray.c 2006-11-11 14:11:43.638554000 +0100 +@@ -228,6 +228,15 @@ + || (!mb_tray_app_tray_is_vertical (app) && x > IconWidth) ) + { + mb_tray_app_get_absolute_coords (app, &abs_x, &abs_y); ++ ++ /* aligned top, position down a little */ ++ if (abs_y < 8) ++ { ++ int w, h; ++ mb_menu_get_root_menu_size(PopupMenu, &w, &h); ++ abs_y = h + IconDim + 2; ++ } ++ + mb_menu_activate(PopupMenu, abs_x, abs_y); + ButtonActive = BUTTON_MENU; + } +@@ -257,14 +266,10 @@ + { + if (ev->type == ClientMessage) + { +- printf("beep\n"); +- + XClientMessageEvent *cmev = (XClientMessageEvent *)&ev->xconfigure; + + if (cmev->message_type == AtomIMActivate) + { +- printf("beep\n"); +- + /* De Activate */ + if (cmev->data.l[0] == 0 && mbinputmgr_method_active(Inpmgr_state)) + mbinputmgr_toggle_selected_method (Inpmgr_state); diff --git a/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb b/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb index f0dc8f09e4..69fe062178 100644 --- a/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb +++ b/packages/matchbox-applet-inputmanager/matchbox-applet-inputmanager_0.6.bb @@ -3,11 +3,16 @@ LICENSE = "GPL" DEPENDS = "matchbox-wm libmatchbox" SECTION = "x11/wm" -PR = "r1" +PR = "r3" + +SRC_URI = "http://projects.o-hand.com/matchbox/sources/mb-applet-input-manager/${PV}/mb-applet-input-manager-${PV}.tar.gz \ + file://update-to-svn.diff;patch=1 \ + file://mbinputmgr-libgtkinput.patch;patch=1 \ + " -SRC_URI = "http://projects.o-hand.com/matchbox/sources/mb-applet-input-manager/${PV}/mb-applet-input-manager-${PV}.tar.gz" S = "${WORKDIR}/mb-applet-input-manager-${PV}" + inherit autotools pkgconfig FILES_${PN} = "${bindir}/* ${datadir}/applications ${datadir}/pixmaps" diff --git a/packages/meta/ludeos-packages.bb b/packages/meta/ludeos-packages.bb index 6477c11e4c..8607e435b4 100644 --- a/packages/meta/ludeos-packages.bb +++ b/packages/meta/ludeos-packages.bb @@ -1 +1,2 @@ -DEPENDS = slugos-packages +DEPENDS = "slugos-packages" +COMPATIBLE_MACHINE = "nslu2" diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb index 3732ac0f22..722c2acfcd 100644 --- a/packages/meta/slugos-packages.bb +++ b/packages/meta/slugos-packages.bb @@ -9,6 +9,7 @@ PR = "r15" CONFLICTS = "db3" PROVIDES += "${SLUGOS_IMAGENAME}-packages" +COMPATIBLE_MACHINE = "nslu2" EXCLUDE_FROM_WORLD = "1" INHIBIT_DEFAULT_DEPS = "1" ALLOW_EMPTY = 1 diff --git a/packages/meta/unslung-binary-kernel-packages.bb b/packages/meta/unslung-binary-kernel-packages.bb index dfe2ec029e..2b6d64c5e5 100644 --- a/packages/meta/unslung-binary-kernel-packages.bb +++ b/packages/meta/unslung-binary-kernel-packages.bb @@ -1,6 +1,7 @@ DESCRIPTION = "Packages that are compatible with the Unslung binary kernel firmware" LICENSE = MIT -PR = "r0" +PR = "r1" +COMPATIBLE_MACHINE = "nslu2" ALLOW_EMPTY = 1 PACKAGES = "${PN}" diff --git a/packages/meta/unslung-packages.bb b/packages/meta/unslung-packages.bb index 21a55ae957..9bd77ff746 100644 --- a/packages/meta/unslung-packages.bb +++ b/packages/meta/unslung-packages.bb @@ -1,6 +1,7 @@ DESCRIPTION = "Packages that are compatible with the Unslung firmware" LICENSE = MIT -PR = "r3" +PR = "r4" +COMPATIBLE_MACHINE = "nslu2" ALLOW_EMPTY = 1 PACKAGES = "${PN}" diff --git a/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb index b8db38d3db..6d13d092c1 100644 --- a/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb +++ b/packages/nslu2-binary-only/nslu2-linksys-firmware_2.3r63.bb @@ -2,16 +2,12 @@ SECTION = "base" PACKAGES = "" LICENSE = "GPL" INHIBIT_DEFAULT_DEPS = "1" -PR = "r1" +PR = "r2" SRC_URI = "http://nslu.sf.net/downloads/${PN}-${PV}.tar.bz2" S = "${WORKDIR}/${PN}-${PV}" -python () { - # Don't build unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("NSLU2 firmware only builds for the Linksys NSLU2") -} +COMPATIBLE_MACHINE = "nslu2" do_compile () { install -d ${STAGING_LIBDIR}/nslu2-binaries diff --git a/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb index 4424e99d19..86b0a575eb 100644 --- a/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb +++ b/packages/nslu2-binary-only/nslu2-linksys-libs_2.3r63.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Linksys NSLU2 Stock Firmware Libraries." PACKAGE_ARCH = "nslu2" SECTION = "base" PRIORITY = "required" -PR = "r2" +PR = "r3" SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2" @@ -16,8 +16,4 @@ do_install () { PACKAGES = "${PN}" FILES_${PN} = "/lib" -python () { - # Don't build unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("NSLU2 stock firmware libraries only builds for the Linksys NSLU2") -} +COMPATIBLE_MACHINE = "nslu2" diff --git a/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb index 007b19cbb2..b098ba73ff 100644 --- a/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb +++ b/packages/nslu2-binary-only/nslu2-linksys-ramdisk_2.3r63.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Linksys NSLU2 Stock Firmware Ramdisk." PACKAGE_ARCH = "nslu2" SECTION = "base" PRIORITY = "required" -PR = "r2" +PR = "r3" SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2" @@ -13,8 +13,4 @@ do_install () { PACKAGES = "${PN}" FILES_${PN} = "/" -python () { - # Don't build unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("NSLU2 ramdisk only builds for the Linksys NSLU2") -} +COMPATIBLE_MACHINE = "nslu2" diff --git a/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb b/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb index 4aace52412..44ef8aa1c9 100644 --- a/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb +++ b/packages/nslu2-binary-only/nslu2-linksys-sambacodepages_2.3r63.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Linksys NSLU2 Stock Firmware Samba Code Pages." PACKAGE_ARCH = "nslu2" SECTION = "base" PRIORITY = "required" -PR = "r1" +PR = "r2" SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2" @@ -22,8 +22,4 @@ do_install () { PACKAGES = "${PN}" FILES_${PN} = "/etc/samba/codepages" -python () { - # Don't build unless we're targeting an nslu2 - if bb.data.getVar("MACHINE", d, 1) != "nslu2": - raise bb.parse.SkipPackage("NSLU2 stock firmware Samba code pages only builds for the Linksys NSLU2") -} +COMPATIBLE_MACHINE = "nslu2" diff --git a/packages/nslu2-binary-only/unslung-rootfs/NOTES b/packages/nslu2-binary-only/unslung-rootfs/NOTES index de4d8b00bf..34d319d656 100644 --- a/packages/nslu2-binary-only/unslung-rootfs/NOTES +++ b/packages/nslu2-binary-only/unslung-rootfs/NOTES @@ -546,3 +546,10 @@ maintenance; easier than plugging and unplugging disks. Empty the /etc/win_share.info file on boot (fixes problem with multiple identical shares appearing on a system). + +Upgraded slingbox to v1.2.2 busybox base; enabled fdisk. + +Replaced Linksys busybox with slingbox entirely. + +Modified "unsling" script to use tar instead of find and cpio; removed +obsolete and untested unsling utilities (eg: resling). diff --git a/packages/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch b/packages/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch index 35015d6c82..d0d769931c 100644 --- a/packages/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch +++ b/packages/nslu2-binary-only/unslung-rootfs/rc.1-diversion.patch @@ -13,7 +13,7 @@ /bin/echo "Starting Rest Task :"; . /etc/rc.d/rc.local +/bin/echo "Starting Optware Packages:"; ( . /etc/rc.d/rc.optware-start ) -+ ++/bin/echo "Starting Bootdisk scripts:"; ( . /etc/rc.d/rc.bootdisk ) /usr/bin/Set_Led ready /usr/bin/Set_Led beep1 /bin/echo "Checking disk status :"; /usr/sbin/CheckDiskFull 2 >/dev/null diff --git a/packages/nslu2-binary-only/unslung-rootfs/rc.bootdisk b/packages/nslu2-binary-only/unslung-rootfs/rc.bootdisk new file mode 100755 index 0000000000..3055c1a6c4 --- /dev/null +++ b/packages/nslu2-binary-only/unslung-rootfs/rc.bootdisk @@ -0,0 +1,41 @@ +#!/bin/sh + +# If we're not booting from flash, exit. +i=`grep "/dev/root / jffs2" /proc/mounts` +if ( [ -z "$i" ] ) ; then return 0 ; fi + +# Establish our identity +linksys_hostname=`grep "^default_server_name=" /etc/CGI_ds.conf | sed s/default_server_name=//` +real_hostname=`hostname` +echo "====> linksys_hostname is $linksys_hostname" +echo "====> real_hostname is $real_hostname" + +# but don't duplicate +if ( [ "$linksys_hostname" = `hostname` ] ) ; then linksys_hostname= ; fi +if ( [ "$real_hostname" = "unslung" ] ) ; then real_hostname= ; fi + +# Search all FAT/NTFS filesystem in order. +# (heavily borrowed from the rc.start-optware script). +for i in /share/*/data/HDD_* ; do + if ( [ "$i" = '/share/*/data/HDD_*' ] ) ; then break ; fi + echo "====> searching $i..." + for j in $linksys_hostname $real_hostname "unslung" ; do + echo "====> checking $i/bootdisk/$j ..." + if ( [ -d "$i"/bootdisk/"$j" ] ) ; then + for k in "$i"/bootdisk/"$j"/S??* ; do + echo "====> found $k ..." + [ ! -f "$k" ] && continue + nocopy=`grep "^#unslung-nocopy" "$k"` + if ( [ -z "$nocopy" ] ) ; then + echo "====> running copy: /tmp/tmpscript $k $i" + dos2unix -u <"$k" >/tmp/tmpscript + /bin/sh /tmp/tmpscript "$k" "$i" + rm -f /tmp/tmpscript + else + echo "====> running in-place $k $k $i" + /bin/sh "$k" "$k" "$i" + fi + done + fi + done +done diff --git a/packages/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch b/packages/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch new file mode 100644 index 0000000000..5d25788fdf --- /dev/null +++ b/packages/nslu2-binary-only/unslung-rootfs/rc.lan-shell.patch @@ -0,0 +1,7 @@ +--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.lan.orig 2006-11-10 20:07:27.000000000 -0600 ++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.lan 2006-11-10 20:07:35.000000000 -0600 +@@ -1,3 +1,3 @@ +-#!/bin/bash ++#!/bin/sh + #echo "set network driver to operate in auto-sense mode" + #/sbin/insmod /lib/modules/sk98lin.o diff --git a/packages/nslu2-binary-only/unslung-rootfs/unsling b/packages/nslu2-binary-only/unslung-rootfs/unsling index 400c7d0ad2..6c4dc4ca52 100755 --- a/packages/nslu2-binary-only/unslung-rootfs/unsling +++ b/packages/nslu2-binary-only/unslung-rootfs/unsling @@ -36,6 +36,9 @@ else exit 1 fi +# MJW - The new "tar" method of unslinging does not care if the device +# has already been unslung. The following test has been removed. +# # Check that we can unsling at all! An unsling operation creates a new # rootfs, but it also marks the flash rootfs (with a flag file such as # ".sda1root") so that subsequent boots do not create the "var.state" @@ -45,39 +48,39 @@ fi # making sure that we are in a state in which we are capable of # performing the unsling operation. -echo "Checking if able to unsling..." -echo -m1="/dev/root /dev.state jffs2 rw 0 0" -m2="/dev/root /var.state jffs2 rw 0 0" -if ! grep "$m1" /proc/mounts >/dev/null 2>&1 || ! grep "$m2" /proc/mounts >/dev/null 2>&1 ; then - echo "Error: This system is unable to properly unsling because certain" - echo "required mounts (dev.state and/or var.state) are not available." - echo "This is most probably because you have already unslung this system." - echo - - if [ -f /.sda1root ] ; then - rm -f /.sda1root - elif [ -f /.sdb1root ] ; then - rm -f /.sdb1root - elif [ -f /.sda2root ] ; then - rm -f /.sda2root - elif [ -f /.sdb2root ] ; then - rm -f /.sdb2root - else - echo "However, in this case, the flags that indicate an already-unslung" - echo "system seem to be missing. Try restarting your NSLU2 to correct," - echo "but if the problem persists, try re-flashing your NSLU2." - exit 1 - fi - echo "The flags that indicate an already-unslung system have now been" - echo "removed and the required mounts should now become present after" - echo "reboot of the NSLU2." - echo - echo "1) Please unplug all drives from the NSLU2," - echo "2) reboot," - echo "3) and retry the unslinging process." - exit 1 -fi +#echo "Checking if able to unsling..." +#echo +#m1="/dev/root /dev.state jffs2 rw 0 0" +#m2="/dev/root /var.state jffs2 rw 0 0" +#if ! grep "$m1" /proc/mounts >/dev/null 2>&1 || ! grep "$m2" /proc/mounts >/dev/null 2>&1 ; then +# echo "Error: This system is unable to properly unsling because certain" +# echo "required mounts (dev.state and/or var.state) are not available." +# echo "This is most probably because you have already unslung this system." +# echo +# +# if [ -f /.sda1root ] ; then +# rm -f /.sda1root +# elif [ -f /.sdb1root ] ; then +# rm -f /.sdb1root +# elif [ -f /.sda2root ] ; then +# rm -f /.sda2root +# elif [ -f /.sdb2root ] ; then +# rm -f /.sdb2root +# else +# echo "However, in this case, the flags that indicate an already-unslung" +# echo "system seem to be missing. Try restarting your NSLU2 to correct," +# echo "but if the problem persists, try re-flashing your NSLU2." +# exit 1 +# fi +# echo "The flags that indicate an already-unslung system have now been" +# echo "removed and the required mounts should now become present after" +# echo "reboot of the NSLU2." +# echo +# echo "1) Please unplug all drives from the NSLU2," +# echo "2) reboot," +# echo "3) and retry the unslinging process." +# exit 1 +#fi # Check it's a real mount point @@ -138,8 +141,16 @@ if [ "$nopw" -eq 0 ] ; then echo "Error setting password." exit 1 fi +# Quick sanity check, something may have gone wrong while we were +# waiting at the passwd prompt... + if ! [ -d $targ/public ] || ! [ -f $targconf/.dongle ] || ! [ -f $targconf/passwd ] ; then + echo + echo "Error: $targ appears to have vanished into thin air." + echo "This would indicate some type of problem with the USB cable," + echo "the device, or the formatting of the device." + exit 1 + fi cp /etc/passwd /usr/local/passwd -# cp /etc/passwd $targconf/passwd grep "^root:" /etc/passwd >$targconf/passwd.new grep -v "^root:" $targconf/passwd >>$targconf/passwd.new mv $targconf/passwd $targconf/passwd.save @@ -161,10 +172,29 @@ fi # Copy the complete rootfs to the target. echo -echo "Copying the complete rootfs from / to $targ ..." -/usr/bin/find / -xdev -print | /usr/bin/cpio -p -d -m -u $targ -rm -rf $targ/dev ; mv $targ/dev.state $targ/dev -rm -rf $targ/var ; mv $targ/var.state $targ/var +echo "Copying the complete rootfs from / to $targ ... " +echo " (this will take just a couple of minutes)" +# Quick sanity check to avoid filling the flash... +if ! [ -d $targ/public ] || ! [ -f $targconf/.dongle ] || ! [ -f $targconf/passwd ] ; then + echo + echo "Error: $targ appears to have vanished into thin air." + echo "This would indicate some type of problem with the USB cable," + echo "the device, or the formatting of the device." + exit 1 +fi +# /usr/bin/find / -xdev -print | /usr/bin/cpio -p -d -m -u $targ +# rm -rf $targ/dev ; mv $targ/dev.state $targ/dev +# rm -rf $targ/var ; mv $targ/var.state $targ/var +echo "./var/tmp" > /tmp/xfile +echo "./dev.state" >> /tmp/xfile +echo "./var.state" >> /tmp/xfile +echo "./lost+found" >>/tmp/xfile +mkdir -p /tmp/tmprootfs +/bin/mount /dev/mtdblock4 /tmp/tmprootfs +/bin/tar -c -C /tmp/tmprootfs -X /tmp/xfile -f - . | (cd $targ; /bin/tar -x -f -) +/bin/umount /tmp/tmprootfs +echo "Copy complete ..." +echo # Copy over the existing ipkg database. @@ -191,6 +221,8 @@ touch $targ/var/log/wtmp chmod 644 $targ/var/log/wtmp touch $targ/var/run/utmp chmod 644 $targ/var/run/utmp +mkdir -p $targ/var/tmp +chmod 777 $targ/var/tmp # The "user password" Linksys utility is hard-coded to /share/hdd; also the # QuickSet utility seems to have some difficulty as well. Ugly fix is to @@ -227,7 +259,8 @@ echo > $targ/$flag echo echo "Unsling complete." echo -echo "Leave the device $htmlinfo plugged in, and reboot" -echo "in order to boot this system up into unslung mode." +echo "Leave the device $htmlinfo, plugged in and reboot (using" +echo "either the Web GUI, or the command \"DO_Reboot\") in order to boot" +echo "this system up into unslung mode." exit 0 diff --git a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb index 73089bafeb..f6b65aad2a 100644 --- a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb +++ b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb @@ -1,6 +1,7 @@ SECTION = "base" +COMPATIBLE_MACHINE = "nslu2" -PR = "r15" +PR = "r17" DEPENDS = "nslu2-linksys-libs nslu2-linksys-sambacodepages" @@ -11,11 +12,12 @@ SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2 \ file://motd-fl \ file://motd-un \ file://unsling \ - file://resling \ - file://slingover \ +# file://resling \ +# file://slingover \ file://linuxrc \ file://unslung.gif \ file://nsswitch.conf \ + file://rc.bootdisk \ file://rc.optware-start \ file://rc.optware-stop \ file://rc-diversion.patch;patch=1 \ @@ -23,6 +25,7 @@ SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2 \ file://rc.1-timestamp.patch;patch=1 \ file://rc.crond-diversion.patch;patch=1 \ file://rc.halt-diversion.patch;patch=1 \ + file://rc.lan-shell.patch;patch=1 \ file://rc.local-diversion.patch;patch=1 \ file://rc.modules-diversion.patch;patch=1 \ file://rc.network-diversion.patch;patch=1 \ @@ -56,13 +59,6 @@ SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2 \ S = "${WORKDIR}/nslu2-linksys-ramdisk-2.3r63" -python () { - # Don't build unslung images unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - if mach != 'nslu2': - raise bb.parse.SkipPackage("Unslung only builds for the Linksys NSLU2") -} - do_compile () { echo "V2.3R63-uNSLUng-${DISTRO_VERSION}" > ${S}/.unslung @@ -104,10 +100,11 @@ do_compile () { install -d ${S}/initrd install -m 755 ${WORKDIR}/unsling ${S}/sbin/unsling - install -m 755 ${WORKDIR}/resling ${S}/sbin/resling - install -m 755 ${WORKDIR}/slingover ${S}/sbin/slingover +# install -m 755 ${WORKDIR}/resling ${S}/sbin/resling +# install -m 755 ${WORKDIR}/slingover ${S}/sbin/slingover install -m 755 ${WORKDIR}/rc.optware-start ${S}/etc/rc.d/rc.optware-start install -m 755 ${WORKDIR}/rc.optware-stop ${S}/etc/rc.d/rc.optware-stop + install -m 755 ${WORKDIR}/rc.bootdisk ${S}/etc/rc.d/rc.bootdisk install -m 644 ${WORKDIR}/nsswitch.conf ${S}/etc/nsswitch.conf @@ -161,6 +158,14 @@ do_compile () { # a link to busybox or slingbox at some point. rm -r ${S}/usr/sbin/date ln -s ../../bin/date ${S}/usr/sbin/date + + # Replace the Linksys-provided /bin/busybox with a link to slingbox. + rm -f ${S}/bin/busybox + ln -s slingbox ${S}/bin/busybox + + # No reason not to have a home directory for root... + mkdir -p ${S}/root + chmod 775 ${S}/root } do_install () { diff --git a/packages/omniorb/omniorb_4.0.7.bb b/packages/omniorb/omniorb_4.0.7.bb index 1ae2831fba..0dfaa7a98c 100644 --- a/packages/omniorb/omniorb_4.0.7.bb +++ b/packages/omniorb/omniorb_4.0.7.bb @@ -34,4 +34,5 @@ do_install () { make DESTDIR=${D} install install -d ${D}${sysconfdir} install -m 0644 ${WORKDIR}/omniORB.cfg ${D}${sysconfdir} + install -d ${D}${localstatedir}/omninames } diff --git a/packages/openswan/openswan-2.2.0/installflags.patch b/packages/openswan/openswan-2.2.0/installflags.patch new file mode 100644 index 0000000000..837267d3e6 --- /dev/null +++ b/packages/openswan/openswan-2.2.0/installflags.patch @@ -0,0 +1,17 @@ +--- + Makefile.inc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: openswan-2.2.0/Makefile.inc +=================================================================== +--- openswan-2.2.0.orig/Makefile.inc 2006-11-06 23:06:33.000000000 +0000 ++++ openswan-2.2.0/Makefile.inc 2006-11-08 20:16:26.000000000 +0000 +@@ -170,7 +170,7 @@ INSTALL=install + # how backup names are composed. + # Note that the install procedures will never overwrite an existing config + # file, which is why -b is not specified for them. +-INSTBINFLAGS=-b --suffix=.old ++INSTBINFLAGS= + INSTMANFLAGS= + INSTCONFFLAGS= + diff --git a/packages/openswan/openswan_2.2.0.bb b/packages/openswan/openswan_2.2.0.bb index e1423d30b7..b1c5271b13 100644 --- a/packages/openswan/openswan_2.2.0.bb +++ b/packages/openswan/openswan_2.2.0.bb @@ -11,6 +11,7 @@ PR = "r5" SRC_URI = "http://www.openswan.org/download/old/openswan-${PV}.tar.gz \ file://openswan-2.2.0-gentoo.patch;patch=1 \ file://gcc4-fixes.patch;patch=1 \ + file://installflags.patch;patch=1 \ file://makefile-whitespace-fix.patch;patch=1 \ file://ld-library-path-breakage.patch;patch=1" S = "${WORKDIR}/openswan-${PV}" diff --git a/packages/opensync/libopensync_0.20.bb b/packages/opensync/libopensync_0.20.bb new file mode 100644 index 0000000000..9560e5f949 --- /dev/null +++ b/packages/opensync/libopensync_0.20.bb @@ -0,0 +1,18 @@ +LICENSE = "LGPL" +HOMEPAGE = "http://www.opensync.org/" + +DEPENDS = "sqlite3 libxml2 zlib glib-2.0" + +SRC_URI = "http://www.openembedded.org/sources/libopensync-${PV}.tar.gz" + +inherit autotools pkgconfig lib_package + +EXTRA_OECONF = "--disable-python" +LEAD_SONAME = "libopensync.so" + +FILES_${PN} += " ${libdir}/opensync/formats/*.so" + +do_stage() { +autotools_stage_all +} + diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb b/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb index 1a1c43344f..5f1f6b041f 100644 --- a/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb +++ b/packages/opie-mediaplayer1/opie-mediaplayer1-ogg-mp3_0.1.0.bb @@ -3,17 +3,5 @@ LICENSE = "GPL" ALLOW_EMPTY = "1" PACKAGES = "${PN}" PACKAGE_ARCH = "all" - -DEPENDS = "opie-mediaplayer1 \ - opie-mediaplayer1-libtremorplugin \ - opie-mediaplayer2-skin-default \ - libogg \ - libvorbis \ - libmad " - -RDEPENDS = "opie-mediaplayer1 \ - opie-mediaplayer1-libtremorplugin \ - opie-mediaplayer2-skin-default \ - libogg0 \ - libmad0 \ - libvorbis " +RDEPENDS = "opie-mediaplayer1 opie-mediaplayer1-libtremorplugin opie-mediaplayer1-libmadplugin" +PR = "r1" diff --git a/packages/ossie/ossie-c-wavloader_svn.bb b/packages/ossie/ossie-c-wavloader_svn.bb new file mode 100644 index 0000000000..4fed260694 --- /dev/null +++ b/packages/ossie/ossie-c-wavloader_svn.bb @@ -0,0 +1,14 @@ +PR = "r0" +DESCRIPTION = "OSSIE Waveform Loader" +SECTION = "apps" +PRIORITY = "optional" +LICENSE = "GPL" + +DEPENDS = "ossiecf expat" + +S="${WORKDIR}/c_wavLoader" + +SRC_URI = "svn://ossie-dev.mprg.org/repos/ossie/platform/c_wavLoader/trunk;module=c_wavLoader;proto=https" + +inherit autotools + diff --git a/packages/ossie/ossie-soundout-device_svn.bb b/packages/ossie/ossie-soundout-device_svn.bb new file mode 100644 index 0000000000..f5a85c45b2 --- /dev/null +++ b/packages/ossie/ossie-soundout-device_svn.bb @@ -0,0 +1,19 @@ +PR = "r0" +DESCRIPTION = "OSSIE sound playback device" +SECTION = "apps" +PRIORITY = "optional" +MAINTAINER = "Philip Balister philip@balister.org" +LICENSE = "GPL" + +DEPENDS = "alsa-lib ossiecf ossie-standardinterfaces" + +S="${WORKDIR}/Sound_out" + +SRC_URI = "svn://ossie-dev.mprg.org/repos/ossie/platform/Sound_out/trunk;module=Sound_out;proto=https" + +prefix="/home/sca" + +inherit autotools + +FILES_${PN} += "/home/sca/xml/soundCard/*xml" + diff --git a/packages/portmap/portmap-unslung_5-7.bb b/packages/portmap/portmap-unslung_5-7.bb index 6ce7c3eab5..ee6c648e9b 100644 --- a/packages/portmap/portmap-unslung_5-7.bb +++ b/packages/portmap/portmap-unslung_5-7.bb @@ -1,7 +1,8 @@ DESCRIPTION = "RPC program number mapper." SECTION = "console/network" LICENSE = "GPL" -PR = "r1" +PR = "r2" +COMPATIBLE_MACHINE = "nslu2" SRC_URI = "http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz \ http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \ diff --git a/packages/portmap/portmap-unslung_5-9.bb b/packages/portmap/portmap-unslung_5-9.bb index 6ce7c3eab5..ee6c648e9b 100644 --- a/packages/portmap/portmap-unslung_5-9.bb +++ b/packages/portmap/portmap-unslung_5-9.bb @@ -1,7 +1,8 @@ DESCRIPTION = "RPC program number mapper." SECTION = "console/network" LICENSE = "GPL" -PR = "r1" +PR = "r2" +COMPATIBLE_MACHINE = "nslu2" SRC_URI = "http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_5.orig.tar.gz \ http://www.uk.debian.org/debian/pool/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \ diff --git a/packages/povray/povray_3.6.1.bb b/packages/povray/povray_3.6.1.bb index c8d9220da6..12e0a043b3 100644 --- a/packages/povray/povray_3.6.1.bb +++ b/packages/povray/povray_3.6.1.bb @@ -4,7 +4,7 @@ SECTION = "console/graphics" #Make this a weak assigment to allow branding of the povray binary LICENSE = "povray" -DEPENDS = "virtual/libx11 libz jpeg libpng tiff" +DEPENDS = "virtual/libx11 zlib jpeg libpng tiff" RDEPENDS = "" PR = "r1" diff --git a/packages/python/python-2.4.3-manifest.inc b/packages/python/python-2.4.3-manifest.inc index ad73cb9451..c116628678 100644 --- a/packages/python/python-2.4.3-manifest.inc +++ b/packages/python/python-2.4.3-manifest.inc @@ -1,5 +1,5 @@ ######################################################################################################################## -### AUTO-GENERATED by '/local/pkg/oe/org.openembedded.dev/contrib/python/generate-manifest.py' [(C) 2002-2006 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Sat Oct 14 21:22:20 2006 +### AUTO-GENERATED by './generate-manifest.py' [(C) 2002-2006 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Mon Nov 6 00:30:11 2006 ### ### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy ### @@ -38,8 +38,8 @@ RDEPENDS_python-codecs="python-core" FILES_python-codecs="${libdir}/python2.4/codecs.* ${libdir}/python2.4/encodings ${libdir}/python2.4/gettext.* ${libdir}/python2.4/locale.* ${libdir}/python2.4/lib-dynload/_locale.so ${libdir}/python2.4/lib-dynload/unicodedata.so ${libdir}/python2.4/stringprep.* ${libdir}/python2.4/xdrlib.* " DESCRIPTION_python-pickle="Python Persistence Support" -PR_python-pickle="ml0" -RDEPENDS_python-pickle="python-core python-codecs python-re" +PR_python-pickle="ml1" +RDEPENDS_python-pickle="python-core python-codecs python-io python-re" FILES_python-pickle="${libdir}/python2.4/pickle.* ${libdir}/python2.4/shelve.* ${libdir}/python2.4/lib-dynload/cPickle.so " DESCRIPTION_python-datetime="Python Calendar and Time support" diff --git a/packages/python/python_2.4.3.bb b/packages/python/python_2.4.3.bb index 7718dd0722..44732d933a 100644 --- a/packages/python/python_2.4.3.bb +++ b/packages/python/python_2.4.3.bb @@ -5,7 +5,7 @@ SECTION = "devel/python" PRIORITY = "optional" DEPENDS = "python-native readline zlib gdbm openssl tcl tk" DEPENDS_sharprom = "python-native readline zlib gdbm openssl" -PR = "ml7" +PR = "ml8" PYTHON_MAJMIN = "2.4" diff --git a/packages/rxvt/rxvt-2.8.0/.mtn2git_empty b/packages/rxvt/rxvt-2.8.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/rxvt/rxvt-2.8.0/.mtn2git_empty diff --git a/packages/rxvt/rxvt-2.8.0/include.patch b/packages/rxvt/rxvt-2.8.0/include.patch new file mode 100644 index 0000000000..f7542843b1 --- /dev/null +++ b/packages/rxvt/rxvt-2.8.0/include.patch @@ -0,0 +1,16 @@ +diff -urN rxvt.orig/src/rxvtlib.h.in rxvt/src/rxvtlib.h.in +--- rxvt.orig/src/rxvtlib.h.in 2003-03-25 19:13:53.000000000 -0500 ++++ rxvt/src/rxvtlib.h.in 2004-04-03 20:35:13.000000000 -0500 +@@ -43,7 +43,11 @@ + #include <sys/wait.h> + #include <sys/stat.h> + +-#include <X11/Intrinsic.h> /* Xlib, Xutil, Xresource, Xfuncproto */ ++#include <X11/Xlib.h> ++#include <X11/Xutil.h> ++#include <X11/Xresource.h> ++#include <X11/Xproto.h> ++#include <X11/region.h> + + #ifdef ENABLE_XFT + #include <X11/Xft/Xft.h> diff --git a/packages/rxvt/rxvt_2.8.0.bb b/packages/rxvt/rxvt_2.8.0.bb new file mode 100644 index 0000000000..9e4870022f --- /dev/null +++ b/packages/rxvt/rxvt_2.8.0.bb @@ -0,0 +1,41 @@ +DESCRIPTION = "Well known terminal emulator" +SECTION = "x11/utils" +PR = "r1" +DEPENDS = "virtual/libx11 libxft" +LICENSE = "GPL" +SRC_URI = "${HANDHELDS_CVS};module=apps/rxvt \ + file://include.patch;patch=1" + +inherit autotools update-alternatives + +ALTERNATIVE_NAME = "x-terminal-emulator" +ALTERNATIVE_PATH = "${bindir}/rxvt-2.8.0" + +S = ${WORKDIR}/rxvt + +EXTRA_OECONF = "--disable-menubar --disable-xim \ + --enable-utmp --enable-wtmp --enable-lastlog \ + --disable-strings --with-term=rxvt --enable-keepscrolling \ + --with-xft --with-name=rxvt --enable-frills \ + --enable-swapscreen --enable-transparency \ + --with-codesets=eu,jp \ + --enable-cursor-blink --enable-pointer-blank \ + --enable-text-blink --enable-plain-scroll \ + --enable-combining --enable-shared \ + --with-x=${STAGING_LIBDIR}/.." + +EXTRA_OEMAKE = "'XINC=-I${STAGING_INCDIR}' \ + 'XLIB=-L${STAGING_LIBDIR} -lX11 -lXft'" + +do_configure () { + mv autoconf/configure.in . || true + rm autoconf/libtool.m4 + libtoolize --force + autotools_do_configure + echo '#define RXVT_UTMP_FILE "${localstatedir}/run/utmp"' >> config.h + echo '#define RXVT_WTMP_FILE "${localstatedir}/log/wtmp"' >> config.h + echo '#define RXVT_LASTLOG_FILE "${localstatedir}/log/lastlog"' >> config.h + echo '#define HAVE_XLOCALE 1' >> config.h + echo '#define HAVE_UTMP_H 1' >> config.h + echo '#define HAVE_TTYSLOT 1' >> config.h +} diff --git a/packages/setserial/setserial_2.17.bb b/packages/setserial/setserial_2.17.bb index 5d774ff6a3..4646df818a 100644 --- a/packages/setserial/setserial_2.17.bb +++ b/packages/setserial/setserial_2.17.bb @@ -1,5 +1,5 @@ SECTION = "console/utils" -SRC_URI = "ftp://tsx-11.mit.edu/pub/linux/sources/sbin/setserial-2.17.tar.gz" +SRC_URI = "http://fresh.t-systems-sfr.com/linux/src/setserial-2.17.tar.gz" LICENSE = "GPL" PR = "r1" inherit autotools diff --git a/packages/slugimage/slugimage-native.bb b/packages/slugimage/slugimage-native.bb index 81328ae414..8b60ff1b59 100644 --- a/packages/slugimage/slugimage-native.bb +++ b/packages/slugimage/slugimage-native.bb @@ -9,5 +9,5 @@ inherit native FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/slugimage-${PV}', '${FILE_DIRNAME}/slugimage', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" do_stage () { - install -m 0755 slugimage/slugimage ${STAGING_BINDIR}/ + install -m 0755 slugimage ${STAGING_BINDIR}/ } diff --git a/packages/slugimage/slugimage.bb b/packages/slugimage/slugimage.bb index 6b672cdc23..d553a21777 100644 --- a/packages/slugimage/slugimage.bb +++ b/packages/slugimage/slugimage.bb @@ -3,14 +3,22 @@ SECTION = "console/utils" LICENSE = "BSD" DESCRIPTION = "Slugimage is a small app to disassemble and reassemble \ flash images for the Linksys NSLU2 device. It also has jffs2 support" -PR = "r4" +PR = "r6" RDEPENDS = "perl" -SRC_URI = "cvs://anonymous:@nslu.cvs.sourceforge.net/cvsroot/nslu;module=slugimage;tag=SLUGIMAGE_3_2" +SLUGIMAGE_SVN_REV ?= 77 +SLUGIMAGE_SVN_REPO ?= http://svn.nslu2-linux.org/svnroot/slugimage/trunk + +addtask svnfetch before do_configure after do_patch + +do_svnfetch() { + svn co ${SLUGIMAGE_SVN_REPO} --revision ${SLUGIMAGE_SVN_REV} ${WORKDIR} +} + S = "${WORKDIR}" do_install () { install -d ${D}${bindir} - install -m 0755 slugimage/slugimage ${D}${bindir}/ + install -m 0755 slugimage ${D}${bindir}/ } diff --git a/packages/sysvinit/sysvinit/angstrom/rc b/packages/sysvinit/sysvinit/angstrom/rc index a355ea05cc..fb49720455 100755 --- a/packages/sysvinit/sysvinit/angstrom/rc +++ b/packages/sysvinit/sysvinit/angstrom/rc @@ -18,6 +18,11 @@ . /etc/default/rcS export VERBOSE +if [ $(($num_steps + $first_step)) -lt 1 ]; then + numsteps="10" + first_step="1" +fi + startup_progress() { step=$(($step + $step_change)) progress=$(($step * $progress_size / $num_steps + $first_step)) diff --git a/packages/sysvinit/sysvinit_2.86.bb b/packages/sysvinit/sysvinit_2.86.bb index d9cfaff2cb..5fa21607e0 100644 --- a/packages/sysvinit/sysvinit_2.86.bb +++ b/packages/sysvinit/sysvinit_2.86.bb @@ -2,7 +2,7 @@ DESCRIPTION = "System-V like init." SECTION = "base" LICENSE = "GPL" HOMEPAGE = "http://freshmeat.net/projects/sysvinit/" -PR = "r29" +PR = "r30" # USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf. # Set PACKAGE_ARCH appropriately. diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb index 9b1f22f2d3..366da828bd 100644 --- a/packages/tasks/task-base.bb +++ b/packages/tasks/task-base.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Merge machine and distro options to create a basic machine task/package" -PR = "r12" +PR = "r13" PACKAGES = "task-base \ task-base-minimal \ @@ -17,6 +17,8 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" # apm # keyboard # touchscreen +# screen +# pci # Valid only in DISTRO_FEATURES: # diff --git a/packages/tasks/task-essential-parts.bb b/packages/tasks/task-essential-parts.bb deleted file mode 100644 index 82c11537f8..0000000000 --- a/packages/tasks/task-essential-parts.bb +++ /dev/null @@ -1,63 +0,0 @@ -# -# Copyright Matthias Hentges <devel@hentges.net> (c) 2006 -# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license) -# -# Filename: task-essential-parts.bb -# Date: 23-Apr-06 - -DESCRIPTION = "Creates all task-essential-* tasks" -HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml" - -###################################################################################### - -PV = "0.0.1" -PR = "r1" - -###################################################################################### - -PACKAGE_ARCH = "${MACHINE}" -ALLOW_EMPTY = 1 - -PACKAGES = "task-essential-irda task-essential-bluetooth task-essential-bluetooth-all \ - task-essential-sound task-essential-sd task-essential-wifi task-essential-wifi-all \ - task-essential-usbclient task-essential-usbhost task-essential-pcmcia \ - task-essential-userspace task-essential-serial" - -###################################################################################### - -DISTRO_PCMCIA ?= "" - -DISTRO_SERIAL ?= "" -DISTRO_IRDA ?= "" -DISTRO_BLUETOOTH ?= "" -DISTRO_SOUND ?= "" -DISTRO_WIFI ?= "hostap-utils prism3-firmware prism3-support spectrum-fw hostap-conf orinoco-conf \ - wireless-tools wpa-supplicant-nossl" - -DISTRO_USBCLIENT ?= "" -DISTRO_USBHOST ?= "" - -DISTRO_SD ?= "" - -DISTRO_USERSPACE ?= "ipkg keymaps" - -DISTRO_DEPENDS ?= "hostap-utils prism3-firmware prism3-support spectrum-fw hostap-conf orinoco-conf \ - ipkg keymaps altboot wireless-tools wpa-supplicant-nossl" - -###################################################################################### - -RDEPENDS_task-essential-serial = "${KMODULES_SERIAL} ${MACHINE_MODUTILS} ${MACHINE_SERIAL} ${DISTRO_SERIAL}" -RDEPENDS_task-essential-irda = "task-essential-serial ${KMODULES_IRDA} ${MACHINE_MODUTILS} ${MACHINE_IRDA} ${DISTRO_IRDA}" -RDEPENDS_task-essential-bluetooth = "${KMODULES_BLUETOOTH} ${MACHINE_MODUTILS} ${MACHINE_HOTPLUG} ${MACHINE_BLUETOOTH} " -RDEPENDS_task-essential-bluetooth-all = "task-essential-bluetooth ${KMODULES_BLUETOOTH_DRIVER} ${DISTRO_BLUETOOTH}" -RDEPENDS_task-essential-pcmcia = "${KMODULES_PCMCIA} ${MACHINE_MODUTILS} ${MACHINE_HOTPLUG} ${MACHINE_PCMCIA} ${DISTRO_PCMCIA}" -RDEPENDS_task-essential-sound = "${KMODULES_SOUND} ${MACHINE_MODUTILS} ${MACHINE_SOUND} ${DISTRO_SOUND}" -RDEPENDS_task-essential-sd = "${KMODULES_SD} ${MACHINE_MODUTILS} ${MACHINE_HOTPLUG} ${MACHINE_SD} ${DISTRO_SD}" -RDEPENDS_task-essential-wifi = "${KMODULES_WIFI} ${MACHINE_MODUTILS} ${MACHINE_HOTPLUG} ${MACHINE_WIFI}" -RDEPENDS_task-essential-wifi-all = "task-essential-wifi ${KMODULES_WIFI_DRIVER} ${DISTRO_WIFI}" -RDEPENDS_task-essential-usbclient = "${KMODULES_USBCLIENT} ${MACHINE_MODUTILS} ${MACHINE_HOTPLUG} ${MACHINE_USBCLIENT} ${DISTRO_USBCLIENT}" -RDEPENDS_task-essential-usbhost = "${KMODULES_USBHOST} ${MACHINE_MODUTILS} ${MACHINE_HOTPLUG} ${MACHINE_USBHOST} ${DISTRO_USBHOST}" -RDEPENDS_task-essential-userspace = "${DISTRO_USERSPACE}" - - -DEPENDS = "${MACHINE_DEPENDS} ${DISTRO_DEPENDS}" diff --git a/packages/tasks/task-essential-to-boot.bb b/packages/tasks/task-essential-to-boot.bb deleted file mode 100644 index 565823298a..0000000000 --- a/packages/tasks/task-essential-to-boot.bb +++ /dev/null @@ -1,35 +0,0 @@ -# -# Copyright Matthias Hentges <devel@hentges.net> (c) 2006 -# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license) -# -# Filename: task-essential-to-boot.bb -# Date: 23-Apr-06 - -DESCRIPTION = "This task includes everything to make a bootable image. And not a bit more." -HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml" - -###################################################################################### - -ALLOW_EMPTY = 1 -PACKAGES = "${PN}" - -###################################################################################### - -PV = "0.0.1" -PR = "r0" - -###################################################################################### - -CORE_EXTRA_D ?= "" -CORE_EXTRA_RD ?= "" - -CORE_PACKAGES_D = "virtual/kernel base-files base-passwd-3.5.9 busybox initscripts \ - sysvinit tinylogin ${CORE_EXTRA_D}" - -CORE_PACKAGES_RD = "kernel base-files base-passwd busybox initscripts sysvinit \ - tinylogin ${CORE_EXTRA_RD}" - -###################################################################################### - -DEPENDS = "${CORE_PACKAGES_D}" -RDEPENDS = "${CORE_PACKAGES_RD}" diff --git a/packages/tasks/task-ossie.bb b/packages/tasks/task-ossie.bb index cc14213441..9d8537d0b9 100644 --- a/packages/tasks/task-ossie.bb +++ b/packages/tasks/task-ossie.bb @@ -3,13 +3,16 @@ DESCRIPTION = "Meta-package for OSSIE Software Defined Radio (SDR)" ALLOW_EMPTY = 1 PR = "r0" -OSSIE_INSTALL = "screen procps xerces-c omniorb usrp ossiecf ossie-standardinterfaces ossie-nodebooter" +OSSIE_BASE = "screen procps xerces-c omniorb usrp" -OSSIE_COMPONENTS = "ossie-gpp-device ossie-usrp-device ossie-demo ossie-channeldemo ossie-rxdemo" +OSSIE_PLATFORM = "ossiecf ossie-standardinterfaces ossie-nodebooter ossie-c-wavloader" +OSSIE_COMPONENTS = "ossie-gpp-device ossie-usrp-device ossie-soundout-device ossie-demo ossie-channeldemo ossie-rxdemo" -RDEPENDS = "${OSSIE_INSTALL} ${OSSIE_COMPONENTS}" -IPKG_INSTALL = "${OSSIE_INSTALL}" +RDEPENDS = "${OSSIE_BASE} ${OSSIE_PLATFORM} ${OSSIE_COMPONENTS}" + +IPKG_INSTALL = "${OSSIE_BASE} ${OSSIE_PLATFORM} ${OSSIE_COMPONENTS}" LICENSE = MIT + diff --git a/packages/tasks/task-pivotboot.bb b/packages/tasks/task-pivotboot.bb index 32e319cae3..a1885170e2 100644 --- a/packages/tasks/task-pivotboot.bb +++ b/packages/tasks/task-pivotboot.bb @@ -10,15 +10,7 @@ PACKAGES = "${PN}" MODUTILS ?= "24 26" -def bootstrap_modutils_rdepends(d): - import bb - m = bb.data.getVar('MODUTILS', d, 1) - r = [] - if '24' in m: - r.append('modutils-depmod') - if '26' in m: - r.append('module-init-tools-depmod') - return ' '.join(r) +require task-bootstrap.inc HOTPLUG ?= "linux-hotplug" diff --git a/packages/tasks/task-qpe.bb b/packages/tasks/task-qpe.bb index d6a73739f5..e9c263545d 100644 --- a/packages/tasks/task-qpe.bb +++ b/packages/tasks/task-qpe.bb @@ -3,7 +3,7 @@ SECTION = "opie/base" ALLOW_EMPTY = 1 PACKAGE_ARCH = "all" LICENSE = "MIT" -PR = "r7" +PR = "r8" PACKAGES = "task-qpe-applets task-qpe-games task-qpe-inputmethods \ task-qpe-multimedia task-qpe-emulators task-qpe-applications \ @@ -74,7 +74,6 @@ RDEPENDS_task-qpe-games = "\ froot \ gemdropx \ glider \ - gnuz \ hexatrolic \ iaimaster \ icebloxx \ @@ -130,11 +129,6 @@ RDEPENDS_task-qpe-emulators = "scummvm" RDEPENDS_task-qpe-fonts = "\ qpf-bitstream-vera-large \ qpf-bitstream-vera-sans-mono-huge \ - qpf-dejavusans \ - qpf-dejavusanscondensed \ - qpf-dejavusansmono \ - qpf-dejavuserif \ - qpf-dejavuserifcondensed \ qpf-freemono \ qpf-freeserif \ ttf-gentium \ diff --git a/packages/tinymail/files/camel-lite-configure-hack.patch b/packages/tinymail/files/camel-lite-configure-hack.patch new file mode 100644 index 0000000000..941f367434 --- /dev/null +++ b/packages/tinymail/files/camel-lite-configure-hack.patch @@ -0,0 +1,18 @@ +--- /tmp/configure.ac 2006-11-10 12:33:24.000000000 +0100 ++++ trunk/libtinymail-camel/camel-lite/configure.ac 2006-11-10 12:33:56.238554000 +0100 +@@ -157,15 +157,6 @@ + + CFLAGS="$CFLAGS -I$srcdir" + +-AC_MSG_CHECKING(preferred charset formats for system iconv) +-AC_RUN_IFELSE([AC_LANG_SOURCE([[ +-#define CONFIGURE_IN +-#include "iconv-detect.c" +-]])],[ +- AC_MSG_RESULT(found) +-],[ +- AC_MSG_RESULT(not found) +-],[]) + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" diff --git a/packages/tinymail/tinymail_svn.bb b/packages/tinymail/tinymail_svn.bb index be12b8ae66..037e78d119 100644 --- a/packages/tinymail/tinymail_svn.bb +++ b/packages/tinymail/tinymail_svn.bb @@ -1,18 +1,19 @@ SECTION = "x11/utils" -DEPENDS = "gtk+ glib-2.0 gnome-vfs-dbus libgnomeui eds-dbus" -DESCRIPTION = "TinyMail is an attempt to create an E-mail client for mobile devices" +DEPENDS = "gtk+ glib-2.0 gnome-vfs-dbus libgnomeui eds-dbus libiconv" +DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices" LICENSE = "GPL" PV = "0.0+svn${SRCDATE}" -PR = "r1" +PR = "r2" EXTRA_OECONF=" --disable-gnome --with-platform=gpe --with-html-component=none" SRC_URI = "svn://svn.tinymail.org/svn/tinymail/;module=trunk;proto=https \ - file://gtk-doc.m4 \ + file://camel-lite-configure-hack.patch;patch=1 \ + file://gtk-doc.m4 \ file://gtk-doc.make" -inherit pkgconfig autotools +inherit pkgconfig autotools S = "${WORKDIR}/trunk" do_configure_prepend() { @@ -21,3 +22,34 @@ do_configure_prepend() { install ${WORKDIR}/gtk-doc.make ./ } + +PACKAGES =+ "lib${PN}-gpe lib${PN}-gpe-dev \ + tinymail-camel-lite tinymail-camel-lite-dev tinymail-camel-lite-dbg \ + libtinymailui-gtk libtinymailui libtinymail-camel lib${PN}" + +FILES_lib${PN} = "${libdir}/lib*.so.*" +FILES_libtinymailui = "${libdir}/libtinymailui*.so.*" +FILES_libtinymailui-gtk = "${libdir}/libtinymailui-gtk*.so.*" + +FILES_libtinymail-camel = "${libdir}/libtinymail-camel*.so.*" + +FILES_lib${PN}-gpe = "${libdir}/libtinymail-gpe*.so.*" +FILES_lib${PN}-gpe-dev = "${libdir}/libtinymail-gpe*.so \ + ${libdir}/libtinymail-gpe*.a \ + ${libdir}/libtinymail-gpe*.la" + +LEAD_SONAME_tinymail-camel-lite = "libcamel-lite" +FILES_tinymail-camel-lite += "${libdir}/libcamel*.so.* \ + ${libdir}/camel-lite-1.2/camel-providers/*.so \ + ${libdir}/camel-lite-1.2/camel-providers/*.urls " +FILES_tinymail-camel-lite-dev += "${libdir}/libcamel-lite*.so \ + ${libdir}/libcamel-lite*.a \ + ${libdir}/libcamel-lite*.la \ + ${libdir}/camel-lite-1.2/camel-providers/*.la \ + ${libdir}/camel-lite-1.2/camel-providers/*.a " +FILES_tinymail-camel-lite-dbg += "${libdir}/camel-lite-1.2/camel-providers/.debug" + +PARALLEL_MAKE = "" +LDFLAGS += "-liconv" + + diff --git a/packages/tslib/tslib/h2200/tslib.sh b/packages/tslib/tslib/h2200/tslib.sh index c78f2169c7..b096bfb96e 100644 --- a/packages/tslib/tslib/h2200/tslib.sh +++ b/packages/tslib/tslib/h2200/tslib.sh @@ -1,6 +1,6 @@ #!/bin/sh -TSLIB_TSDEVICE=/dev/input/touchsreen0 +TSLIB_TSDEVICE=/dev/input/touchscreen0 TSLIB_CONFFILE=/etc/ts.conf case `uname -r` in diff --git a/packages/tslib/tslib/usec_fix.patch b/packages/tslib/tslib/usec_fix.patch deleted file mode 100644 index a791b39a3c..0000000000 --- a/packages/tslib/tslib/usec_fix.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: work/tslib-0.0cvs20051201-r32/tslib/plugins/collie-raw.c -=================================================================== ---- tslib.orig/plugins/collie-raw.c 2005-12-04 10:09:33.000000000 +0100 -+++ tslib/plugins/collie-raw.c 2005-12-04 10:16:05.000000000 +0100 -@@ -29,7 +29,7 @@ - #ifdef DEBUG - fprintf(stderr,"RAW---------------------------> %d %d %d\n",samp->x,samp->y,samp->pressure); - #endif /*DEBUG*/ -- samp->tv.tv_usec = collie_evt->millisecs % 1000; -+ samp->tv.tv_usec = (collie_evt->millisecs % 1000) * 1000; - samp->tv.tv_sec = collie_evt->millisecs / 1000; - samp++; - collie_evt++; -Index: work/tslib-0.0cvs20051201-r32/tslib/plugins/corgi-raw.c -=================================================================== ---- tslib.orig/plugins/corgi-raw.c 2005-12-04 10:10:19.000000000 +0100 -+++ tslib/plugins/corgi-raw.c 2005-12-04 10:16:15.000000000 +0100 -@@ -29,7 +29,7 @@ - #ifdef DEBUG - fprintf(stderr,"RAW---------------------------> %d %d %d\n",samp->x,samp->y,samp->pressure); - #endif /*DEBUG*/ -- samp->tv.tv_usec = corgi_evt->millisecs % 1000; -+ samp->tv.tv_usec = (corgi_evt->millisecs % 1000) * 1000; - samp->tv.tv_sec = corgi_evt->millisecs / 1000; - samp++; - corgi_evt++; diff --git a/packages/tslib/tslib_1.0.bb b/packages/tslib/tslib_1.0.bb index afb0202262..3d2e3cd79e 100644 --- a/packages/tslib/tslib_1.0.bb +++ b/packages/tslib/tslib_1.0.bb @@ -4,7 +4,7 @@ AUTHOR = "Russell King w/ plugins by Chris Larson et. al." SECTION = "base" LICENSE = "LGPL" -PR = "r2" +PR = "r3" SRC_URI = "http://download.berlios.de/tslib/tslib-1.0.tar.bz2 \ file://ts.conf \ diff --git a/packages/udev/files/mount.sh b/packages/udev/files/mount.sh index 48c7844690..be8b3dfca9 100644 --- a/packages/udev/files/mount.sh +++ b/packages/udev/files/mount.sh @@ -50,6 +50,11 @@ if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then fi # If the device isn't mounted at this point, it isn't configured in fstab + # 20061107: Small correction: The rootfs partition may be called just "rootfs" and not by + # its true device name so this would break. If the rootfs is mounted on two places + # during boot, it confuses the heck out of fsck. So Im auto-adding the root-partition + # to /etc/udev/mount.blacklist via postinst + cat /proc/mounts | awk '{print $1}' | grep -q "^$DEVNAME$" || automount fi diff --git a/packages/udev/udev_092.bb b/packages/udev/udev_092.bb index 2de59fb018..3d33938fb1 100644 --- a/packages/udev/udev_092.bb +++ b/packages/udev/udev_092.bb @@ -3,7 +3,7 @@ DESCRIPTION = "udev is a daemon which dynamically creates and removes device nod the hotplug package and requires a kernel not older than 2.6.12." RPROVIDES = "hotplug" -PR = "r12" +PR = "r13" SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://noasmlinkage.patch;patch=1 \ @@ -57,3 +57,20 @@ do_install () { do_install_append_h2200() { install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules } + +pkg_postinst_append() { + + # Add the root partition to mount.blacklist to avoid a bug in the auto-mounter, + # causing confusion with fsck on boot + + while read dev mp fs junk + do + if test "$mp" = "/" + then + root_partition="$dev" + echo "$root_partition" >> /etc/udev/mount.blacklist + fi + done < /etc/fstab + +} + diff --git a/packages/udev/udev_097.bb b/packages/udev/udev_097.bb index 3abd9b5fa7..497357775e 100644 --- a/packages/udev/udev_097.bb +++ b/packages/udev/udev_097.bb @@ -8,7 +8,7 @@ used to detect the type of a file system and read its metadata." DESCRIPTION_libvolume-id-dev = "libvolume_id development headers, \ needed to link programs with libvolume_id." -PR = "r3" +PR = "r4" SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://noasmlinkage.patch;patch=1 \ @@ -61,3 +61,21 @@ do_install () { do_install_append_h2200() { install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules } + +pkg_postinst_append() { + + # Add the root partition to mount.blacklist to avoid a bug in the auto-mounter, + # causing confusion with fsck on boot + + while read dev mp fs junk + do + if test "$mp" = "/" + then + root_partition="$dev" + echo "$root_partition" >> /etc/udev/mount.blacklist + fi + done < /etc/fstab + +} + + diff --git a/packages/udev/udev_100.bb b/packages/udev/udev_100.bb index 31d49d44d8..183d785627 100644 --- a/packages/udev/udev_100.bb +++ b/packages/udev/udev_100.bb @@ -9,7 +9,7 @@ used to detect the type of a file system and read its metadata." DESCRIPTION_libvolume-id-dev = "libvolume_id development headers, \ needed to link programs with libvolume_id." -PR = "r2" +PR = "r3" SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://noasmlinkage.patch;patch=1 \ @@ -62,3 +62,20 @@ do_install () { do_install_append_h2200() { install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules } + +pkg_postinst_append() { + + # Add the root partition to mount.blacklist to avoid a bug in the auto-mounter, + # causing confusion with fsck on boot + + while read dev mp fs junk + do + if test "$mp" = "/" + then + root_partition="$dev" + echo "$root_partition" >> /etc/udev/mount.blacklist + fi + done < /etc/fstab + +} + diff --git a/packages/upslug/upslug-native_1.0.bb b/packages/upslug/upslug-native_1.0.bb index 0249cb56fd..729f176a75 100644 --- a/packages/upslug/upslug-native_1.0.bb +++ b/packages/upslug/upslug-native_1.0.bb @@ -1,11 +1,12 @@ # This package builds the 'upslug' binary upload/flash tool # for the NSLU2. It is not useful for anything else. -PR = "r0" +PR = "r1" DESCRIPTION = "NSLU2 binary upload tool" HOMEPAGE = "http://www.nslu2-linux.org/wiki/Main/UpSlug" SECTION = "console/network" PRIORITY = "optional" LICENSE = "GPL-2" +COMPATIBLE_MACHINE = "nslu2" SRC_TAG = "UPSLUG_${@'_'.join(bb.data.getVar('PV',d,1).split('.'))}" SRC_URI = "cvs://anonymous@nslu.cvs.sourceforge.net/cvsroot/nslu;method=pserver;module=upslug;tag=${SRC_TAG}" @@ -25,10 +26,3 @@ do_compile() { do_stage() { oe_runmake "DESTDIR=${STAGING_BINDIR}" install } - -python () { - # Don't build upslug unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - if mach != 'nslu2': - raise bb.parse.SkipPackage("upslug only builds for the Linksys NSLU2") -} diff --git a/packages/upslug/upslug-native_cvs.bb b/packages/upslug/upslug-native_cvs.bb index 7099b3ba44..95b340c589 100644 --- a/packages/upslug/upslug-native_cvs.bb +++ b/packages/upslug/upslug-native_cvs.bb @@ -1,11 +1,12 @@ # This package builds the 'upslug' binary upload/flash tool # for the NSLU2. It is not useful for anything else. -PR = "r0" +PR = "r1" DESCRIPTION = "NSLU2 binary upload tool" HOMEPAGE = "http://www.nslu2-linux.org/wiki/Main/UpSlug" SECTION = "console/network" PRIORITY = "optional" LICENSE = "GPL-2" +COMPATIBLE_MACHINE = "nslu2" # Use releases in preference DEFAULT_PREFERENCE = "-1" @@ -24,10 +25,3 @@ do_compile() { do_stage() { oe_runmake "DESTDIR=${STAGING_BINDIR}" install } - -python () { - # Don't build upslug unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - if mach != 'nslu2': - raise bb.parse.SkipPackage("upslug only builds for the Linksys NSLU2") -} diff --git a/packages/upslug/upslug2.inc b/packages/upslug/upslug2.inc index 0a91bc3fd1..9bee027034 100644 --- a/packages/upslug/upslug2.inc +++ b/packages/upslug/upslug2.inc @@ -1,11 +1,12 @@ # This package builds the 'upslug2' binary upload/flash tool # for the NSLU2. It is not useful for anything else. -PR = "r0" +PR = "r1" DESCRIPTION = "NSLU2 binary upload tool (version 2)" HOMEPAGE = "http://www.nslu2-linux.org/wiki/Main/UpSlug2" SECTION = "console/network" PRIORITY = "optional" LICENSE = "MIT" +COMPATIBLE_MACHINE = "nslu2" # On Linux libpcap does not work. Using libpcap is sub-optimal - it # is intended for packet capture not management of a new protocol @@ -28,10 +29,3 @@ S = "${WORKDIR}/upslug2-${PV}" PACKAGES = "${PN}" EXTRA_OECONF += "${LIBPCAP_OECONF}" - -python () { - # Don't build upslug2 unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - if mach != 'nslu2': - raise bb.parse.SkipPackage("upslug2 only builds for the Linksys NSLU2") -} diff --git a/packages/vino/.mtn2git_empty b/packages/vino/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/vino/.mtn2git_empty diff --git a/packages/vino/vino_2.16.0.bb b/packages/vino/vino_2.16.0.bb new file mode 100644 index 0000000000..0780d0d409 --- /dev/null +++ b/packages/vino/vino_2.16.0.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Vino is an integrated VNC server for GNOME." +LICENSE = "GPLv2" + +DEPENDS = "libgnomeui libglade gnome-keyring esound-gpe dbus-glib libxml2 gnutls gnome-vfs" + +inherit gnome gconf + +do_configure() { + libtoolize --force + gnu-configize + oe_runconf +} + diff --git a/packages/xserver-common/xserver-common_1.11.bb b/packages/xserver-common/xserver-common_1.11.bb new file mode 100644 index 0000000000..47f9f2b184 --- /dev/null +++ b/packages/xserver-common/xserver-common_1.11.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "Common X11 scripts and support files" +LICENSE = "GPL" +SECTION = "x11" +RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal" +PR = "r0" + +PACKAGE_ARCH = "all" + +# we are using a gpe-style Makefile +inherit gpe + +SRC_URI_append = " file://setDPI.sh \ + file://calibrate_zaurusd.patch;patch=1 \ + file://w100.patch;patch=1 \ + file://poodle-xmodmap-2.6.patch;patch=1" + +do_install_append() { + install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi" +} diff --git a/packages/xserver-common/xserver-common_1.12.bb b/packages/xserver-common/xserver-common_1.12.bb new file mode 100644 index 0000000000..4d46020ba5 --- /dev/null +++ b/packages/xserver-common/xserver-common_1.12.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Common X11 scripts and support files" +LICENSE = "GPL" +SECTION = "x11" +RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo xtscal" +PR = "r0" + +PACKAGE_ARCH = "all" + +# we are using a gpe-style Makefile +inherit gpe + +SRC_URI_append = " file://setDPI.sh \ + " + +do_install_append() { + install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi" +} diff --git a/packages/xstroke/xstroke_0.6.bb b/packages/xstroke/xstroke_0.6.bb index 24c03b633c..eb3e23df8b 100644 --- a/packages/xstroke/xstroke_0.6.bb +++ b/packages/xstroke/xstroke_0.6.bb @@ -5,7 +5,7 @@ PRIORITY = "optional" DEPENDS = "virtual/libx11 xft libxtst libxpm" PR = "r2" -SRC_URI = "http://www.oesources.org/source/xstroke-0.6.tar.gz \ +SRC_URI = "http://www.oesources.org/source/current/xstroke-0.6.tar.gz \ file://auto-disable.patch;patch=1;pnum=0" inherit autotools pkgconfig diff --git a/site/arm-linux-gnueabi b/site/arm-linux-gnueabi index 5aa8a4cf5c..77ce33f338 100644 --- a/site/arm-linux-gnueabi +++ b/site/arm-linux-gnueabi @@ -306,3 +306,16 @@ dpkg_cv___va_copy=${ac_cv___va_copy=yes} # enca yeti_cv_func_scanf_modif_size_t=yes +# clamav +clamav_av_func_working_snprintf_long=${clamav_av_func_working_snprintf_long=yes} +clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes} +clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes} +ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes} + +#dbus +ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=no} + +# p3scan +ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes} + + |