From 0a7158761a5b014f4f8a2fd9847b905ac89e0cc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jani=20V=C3=A4limaa?= Date: Mon, 24 Jun 2013 15:18:52 +0000 Subject: xdg_menu: fix dynamic menu creation for openbox (mga#10598) --- menu/xdg_menu | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'menu') diff --git a/menu/xdg_menu b/menu/xdg_menu index 931b373..06e1b20 100755 --- a/menu/xdg_menu +++ b/menu/xdg_menu @@ -1809,6 +1809,26 @@ sub output_openbox3_menu ($;$) return $output; } +sub output_openbox3_submenu ($;$) +{ + my ($menu, $indent) = @_; + + my $output = ''; + + $output .= ' + +'; + $output .= "\n"; + $output .= output_openbox3_inner_menu ($menu, $indent); + $output .= "\n"; + $output .= "\n"; + return $output; +} + + sub output_openbox3_pipe_menu ($;$) { my ($menu, $indent) = @_; @@ -1823,7 +1843,7 @@ sub output_openbox3_pipe_menu ($;$) sub output_openbox3_inner_menu ($;$) { - my ($menu, $indent) = @_; + my ($menu, $indent, $lastmenu) = @_; my $output = ''; @@ -1831,9 +1851,10 @@ sub output_openbox3_inner_menu ($;$) my $menu_name = $menu->{'PrepName'}; $output .= ' ' x $indent; - $output .= "\n"; + $output .= "\n"; # $output .= "\n"; - + $lastmenu = $menu_name; + foreach my $entry (@{$menu->{'entries'}}) { if ($entry->{type} eq 'desktop') { my $desktop = $entry->{desktop}; @@ -1847,7 +1868,7 @@ sub output_openbox3_inner_menu ($;$) $output .= " \n"; } elsif ($entry->{type} eq 'menu') { - $output .= output_openbox3_inner_menu ($entry->{'menu'}, $indent + 1); + $output .= output_openbox3_inner_menu ($entry->{'menu'}, $indent + 1, $lastmenu); } else { print STDERR "wrong menu entry type: $entry->{type}"; @@ -2267,7 +2288,7 @@ elsif ($format eq 'openbox3') { } else { - $output = output_openbox3_inner_menu($menu) + $output = output_openbox3_submenu($menu) } } elsif ($format eq 'openbox3-pipe') { -- cgit v1.2.1