# ChangeLog for gnome-extra/gcursor
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/gnome-extra/gcursor/ChangeLog,v 1.10 2009/10/02 09:48:01 ssuominen Exp $

  02 Oct 2009; Samuli Suominen <ssuominen@gentoo.org>
  gcursor-0.061-r1.ebuild:
  There's no upstream HOMEPAGE anymore wrt #237235.

  12 Feb 2007; Samuli Suominen <drac@gentoo.org> metadata.xml,
  gcursor-0.061-r1.ebuild:
  From gnome to desktop-misc. Fix HOMEPAGE, remove empty lines, clean up.

  09 Feb 2007; Diego Pettenò <flameeyes@gentoo.org> ChangeLog:
  Regenerate digest in Manifest2 format.

  19 Apr 2005; <plasmaroo@gentoo.org> gcursor-0.061-r1.ebuild:
  Mark ~ia64; bug #89498.

*gcursor-0.061-r1 (28 Feb 2005)

  28 Feb 2005; Mike Gardiner <obz@gentoo.org>
  +files/gcursor-0.6-xorg-x11.patch, +gcursor-0.061-r1.ebuild:
  New revision, including a patch for xorg-x11 cursors, thanks to
  <gentoo@fergusnet.com> on bug #83450.

  31 Jan 2005; Gustavo Zacarias <gustavoz@gentoo.org> gcursor-0.061.ebuild:
  Keyworded ~sparc

*gcursor-0.061 (05 Nov 2004)

  05 Nov 2004; Mike Gardiner <obz@gentoo.org> +gcursor-0.061.ebuild:
  Version bump, as requested in bug #62241

  04 Oct 2004; Tom Martin <slarti@gentoo.org> gcursor-0.06.ebuild:
  Marked ~amd64, resolves #60260. Thanks to Christophe Jouny <cjouny@jhmi.edu>
  for reporting.

  30 Aug 2004; David Holm <dholm@gentoo.org> gcursor-0.06.ebuild:
  Added to ~ppc.

*gcursor-0.06 (11 Aug 2004)

  11 Aug 2004; Mike Gardiner <obz@gentoo.org> +metadata.xml, +gcursor-0.06.ebuild:
  Please welcome GCursor to the portage tree, as requested in bug #45338

