# ChangeLog for lxde-base/lxpanel
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/lxde-base/lxpanel/ChangeLog,v 1.20 2010/02/28 18:35:47 nixnut Exp $

  28 Feb 2010; nixnut <nixnut@gentoo.org> lxpanel-0.5.5.ebuild:
  ppc stable #306433

  25 Feb 2010; Christian Faulhammer <fauli@gentoo.org> lxpanel-0.5.5.ebuild:
  stable x86, bug 306433

  23 Feb 2010; Raúl Porcel <armin76@gentoo.org> lxpanel-0.5.5.ebuild:
  arm stable wrt #306433

  23 Feb 2010; Markos Chandras <hwoarang@gentoo.org> lxpanel-0.5.5.ebuild:
  Stable on amd64 wrt bug #306433

*lxpanel-0.5.5 (18 Feb 2010)

  18 Feb 2010; Ben de Groot <yngwin@gentoo.org> +lxpanel-0.5.5.ebuild:
  Version bump

  24 Jan 2010; Raúl Porcel <armin76@gentoo.org> lxpanel-0.5.4.1.ebuild:
  Add ~arm

*lxpanel-0.5.4.1 (22 Jan 2010)

  22 Jan 2010; Víctor Ostorga <vostorga@gentoo.org>
  +lxpanel-0.5.4.1.ebuild:
  Version bump to 0.5.4.1

  16 Jan 2010; Jonathan Callen <abcd@gentoo.org> lxpanel-0.5.3.ebuild:
  Add prefix keywords

  21 Nov 2009; nixnut <nixnut@gentoo.org> lxpanel-0.5.3.ebuild:
  ppc stable #292698

  20 Nov 2009; Markus Meier <maekke@gentoo.org> lxpanel-0.5.3.ebuild:
  amd64/x86 stable, bug #292698

  05 Nov 2009; Víctor Ostorga <vostorga@gentoo.org>
  -lxpanel-0.3.8.1.ebuild, -lxpanel-0.4.1.ebuild, -lxpanel-0.5.1.ebuild,
  -lxpanel-0.5.2.ebuild, -files/lxpanel-sandbox.patch:
  Cleaning out old ebuilds

  29 Aug 2009; Víctor Ostorga <vostorga@gentoo.org> lxpanel-0.5.3.ebuild,
  +files/lxpanel-0.5.3-battery.patch:
  Fixing segfault when battery applet is enabled but battery removed , bug
  #281093

*lxpanel-0.5.3 (11 Aug 2009)

  11 Aug 2009; Víctor Ostorga <vostorga@gentoo.org> +lxpanel-0.5.3.ebuild:
  Version bump to 0.5.3

*lxpanel-0.5.2 (05 Aug 2009)

  05 Aug 2009; Ben de Groot <yngwin@gentoo.org> +lxpanel-0.5.2.ebuild:
  Version bump

*lxpanel-0.5.1 (04 Aug 2009)

  04 Aug 2009; Ben de Groot <yngwin@gentoo.org> +lxpanel-0.5.1.ebuild,
  +files/lxpanel-0.5.1-sandbox.patch:
  Version bump. New version no longer has wifi plugin.

  30 Jul 2009; Mounir Lamouri <volkmar@gentoo.org> lxpanel-0.4.1.ebuild:
  Rekeywording for ppc. Bug 271148

*lxpanel-0.4.1 (24 May 2009)

  24 May 2009; Ben de Groot <yngwin@gentoo.org> +lxpanel-0.4.1.ebuild:
  Version bump. Dropped ~ppc keyword because of unkeyworded deps.

  02 Jan 2009; Ben de Groot <yngwin@gentoo.org>
  +files/lxpanel-sandbox.patch, lxpanel-0.3.8.1.ebuild:
  Adding patch to prevent sandbox failures, fixes bug 252774.

  07 Dec 2008; Ben de Groot <yngwin@gentoo.org> lxpanel-0.3.8.1.ebuild:
  Add test restriction, see bug 249598.

*lxpanel-0.3.8.1 (07 Nov 2008)

  07 Nov 2008; Ben de Groot <yngwin@gentoo.org> +metadata.xml,
  +lxpanel-0.3.8.1.ebuild:
  Initial import of ebuild from lxde overlay

