[Xfce4-commits] r29661 - in xfce-utils/trunk: . scripts
Brian Tarricone
kelnos at xfce.org
Sun Mar 15 01:01:26 CET 2009
Author: kelnos
Date: 2009-03-15 00:01:26 +0000 (Sun, 15 Mar 2009)
New Revision: 29661
Modified:
xfce-utils/trunk/NEWS
xfce-utils/trunk/scripts/xfconf-migration-4.6.pl.in
Log:
ensure that there's a valid icon theme set after migration
Modified: xfce-utils/trunk/NEWS
===================================================================
--- xfce-utils/trunk/NEWS 2009-03-14 14:55:12 UTC (rev 29660)
+++ xfce-utils/trunk/NEWS 2009-03-15 00:01:26 UTC (rev 29661)
@@ -1,6 +1,13 @@
-4.6.0 (Xfce 4.6.0)
-==================
+4.6.1
+=====
+- Reset icon theme name if the migrated icon theme name (possibly 'Rodent')
+ doesn't exist anymore.
+
+
+4.6.0
+=====
+
- Fix sysconfdir and datadir not being expanded properly in
xinitrc (bug #4924).
- Export GTK_PATH variable in xinitrc so that GTK+ has a chance to find
Modified: xfce-utils/trunk/scripts/xfconf-migration-4.6.pl.in
===================================================================
--- xfce-utils/trunk/scripts/xfconf-migration-4.6.pl.in 2009-03-14 14:55:12 UTC (rev 29660)
+++ xfce-utils/trunk/scripts/xfconf-migration-4.6.pl.in 2009-03-15 00:01:26 UTC (rev 29661)
@@ -256,6 +256,80 @@
return $mcs.'.xml';
}
+sub icon_theme_exists
+{
+ my ($dirref,$themename) = @_;
+ my @dirs = @{$dirref};
+
+ foreach my $d (@dirs) {
+ return 1 if(-f "$d/$themename/index.theme");
+ }
+
+ return 0;
+}
+
+sub migrate_icon_theme
+{
+ my ($ref,$chan) = @_;
+ my %opts = %{$ref};
+ my $opt = 'Net/IconThemeName';
+
+ # we don't ship rodent anymore, so some distros cause it to be removed
+ # when xfce gets upgraded from 4.4 to 4.6. arguably, they should be
+ # fixing this themselves, but i'd rather just stop the complaints.
+ # if the user still has rodent installed, we won't change anything.
+
+ return if(!defined($opts{$opt}));
+ my $val = $opts{$opt}->{'value'};
+
+ my @icondirs;
+ if(defined($ENV{'XDG_DATA_HOME'})) {
+ @icondirs = ( $ENV{'XDG_DATA_HOME'} . '/icons' );
+ } else {
+ @icondirs = ( $ENV{'HOME'} . '/.local/share/icons' );
+ }
+ if(defined($ENV{'XDG_DATA_DIRS'})) {
+ push(@icondirs, split(/:/, $ENV{'XDG_DATA_DIRS'}));
+ } else {
+ push(@icondirs, ( '/usr/share/icons', '/usr/local/share/icons' ));
+ }
+
+ if(!icon_theme_exists(\@icondirs, $val)) {
+ $val = undef;
+ foreach my $itheme (('Tango', 'gnome', 'crystalsvg')) {
+ if(icon_theme_exists(\@icondirs, $itheme)) {
+ $val = $itheme;
+ last;
+ }
+ }
+
+ if(!defined($val)) {
+ # pick the first one that is not 'hicolor'
+ foreach my $d (@icondirs) {
+ opendir(DIR, $d) and do {
+ my @subdirs = grep { $_ ne 'hicolor' && -d "$d/$_" } readdir(DIR);
+ foreach my $sd (@subdirs) {
+ if(-f "$d/$sd/index.theme") {
+ $val = $sd;
+ last;
+ }
+ }
+ closedir(DIR);
+ };
+ last if(defined($val));
+ }
+
+ if(!defined($val)) {
+ # ok, their system is kinda b0rked; not much we can do
+ warn("Couldn't find a suitable icon theme to migrate to");
+ return;
+ }
+ }
+ }
+
+ xfconf_set($chan, 'string', '/Net/IconThemeName', $val);
+}
+
sub migrate_xsettings
{
my $mcs = 'gtk';
@@ -283,8 +357,7 @@
'/Net/CursorBlinkTime', 'int');
save_xfconf_prop($ref, $chan, 'Net/DndDragThreshold',
'/Net/DndDragThreshold', 'int');
- save_xfconf_prop($ref, $chan, 'Net/IconThemeName',
- '/Net/IconThemeName', 'string');
+ migrate_icon_theme($ref, $chan);
save_xfconf_prop($ref, $chan, 'Net/ThemeName',
'/Net/ThemeName', 'string');
More information about the Xfce4-commits
mailing list