diff options
author | omega <omega@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-06-22 18:50:25 +0000 |
---|---|---|
committer | omega <omega@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-06-22 18:50:25 +0000 |
commit | 888532d3340836e468a5572c44893f58e0202ed5 (patch) | |
tree | efba09fcb270fd7c02712c9be12c8ee671500f34 /lib/Reaction/UI/Skin.pm | |
parent | 6f51eb8562a023cd9ddf6a2ad09f0f416673b079 (diff) | |
download | reaction-888532d3340836e468a5572c44893f58e0202ed5.tar.gz reaction-888532d3340836e468a5572c44893f58e0202ed5.zip |
fix some merge problems
Diffstat (limited to 'lib/Reaction/UI/Skin.pm')
-rw-r--r-- | lib/Reaction/UI/Skin.pm | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/Reaction/UI/Skin.pm b/lib/Reaction/UI/Skin.pm index a875366..42b3189 100644 --- a/lib/Reaction/UI/Skin.pm +++ b/lib/Reaction/UI/Skin.pm @@ -6,6 +6,7 @@ use Reaction::Class; use Reaction::UI::LayoutSet; use Reaction::UI::RenderingContext; use File::ShareDir; +use File::Basename; use aliased 'Path::Class::Dir'; @@ -41,9 +42,26 @@ class Skin which { my $skin_name = $self->name; if ($skin_name =~ s!^/(.*?)/!!) { my $dist = $1; - $args->{skin_base_dir} = - Dir->new(File::ShareDir::dist_dir($dist)) - ->subdir('skin'); + $args->{skin_base_dir} = eval { + Dir->new(File::ShareDir::dist_dir($dist)) + ->subdir('skin'); + }; + if ($@) { + # No installed Reaction + my $file = __FILE__; + my $dir = Dir->new(dirname($file)); + my $skin_base; + while ($dir->parent) { + if (-d $dir->subdir('share') && -d $dir->subdir('share')->subdir('skin')) { + $skin_base = $dir->subdir('share')->subdir('skin'); + last; + } + $dir = $dir->parent; + } + confess "could not find skinbase by recursion. ended up at $dir, from $file" + unless $skin_base; + $args->{skin_base_dir} = $skin_base; + } } my $base = $args->{skin_base_dir}->subdir($skin_name); confess "No such skin base directory ${base}" |