Index: Padre/lib/Padre/Wx/Main.pm
===================================================================
--- Padre/lib/Padre/Wx/Main.pm	(revision 2803)
+++ Padre/lib/Padre/Wx/Main.pm	(working copy)
@@ -897,6 +897,19 @@
 	return;
 }
 
+sub on_comment_toggle_block {
+        my $self     = shift;
+        my $current  = $self->current;
+        my $editor   = $current->editor;
+        my $document = $current->document;
+        my $begin    = $editor->LineFromPosition($editor->GetSelectionStart);
+        my $end      = $editor->LineFromPosition($editor->GetSelectionEnd);
+        my $string   = $document->comment_lines_str;
+        return unless defined $string;
+	$editor->comment_toggle_lines($begin, $end, $string);
+        return;
+}
+
 sub on_comment_out_block {
 	my $self     = shift;
 	my $current  = $self->current;
Index: Padre/lib/Padre/Wx/Editor.pm
===================================================================
--- Padre/lib/Padre/Wx/Editor.pm	(revision 2803)
+++ Padre/lib/Padre/Wx/Editor.pm	(working copy)
@@ -642,7 +642,11 @@
 	}
 
 	$menu->AppendSeparator;
-
+	
+	my $commentToggle = $menu->Append( -1, Wx::gettext("&Toggle Comment\tCtrl-Shift-C") );
+        Wx::Event::EVT_MENU( $main, $commentToggle,
+                \&Padre::Wx::Main::on_comment_toggle_block,
+        );
 	my $comment = $menu->Append( -1, Wx::gettext("&Comment Selected Lines\tCtrl-M") );
 	Wx::Event::EVT_MENU( $main, $comment,
 		\&Padre::Wx::Main::on_comment_out_block,
@@ -837,6 +841,18 @@
 	return $text;
 }
 
+# Coment or comment text depending on the first selected line.
+# This is the most coherent way to handle mixed blocks(commented and
+# uncommented lines).
+sub comment_toggle_lines {
+	my ($self, $begin, $end, $str) = @_;
+	if ( _get_line_by_number($self, $begin) =~ /\s*$str/ ) {
+		uncomment_lines(@_);
+	} else {
+		comment_lines(@_);
+		}	
+}
+
 # $editor->comment_lines($begin, $end, $str);
 # $str is either # for perl or // for Javascript, etc.
 # $str might be ['<--', '-->] for html
Index: Padre/lib/Padre/Wx/Menu/Edit.pm
===================================================================
--- Padre/lib/Padre/Wx/Menu/Edit.pm	(revision 2803)
+++ Padre/lib/Padre/Wx/Menu/Edit.pm	(working copy)
@@ -194,6 +194,14 @@
 
 
 	# Commenting
+	$self->{comment_toggle} = $self->Append( -1,
+                Wx::gettext("&Toggle Comment\tCtrl-Shift-C")
+        );
+        Wx::Event::EVT_MENU( $main,
+                $self->{comment_toggle},
+                \&Padre::Wx::Main::on_comment_toggle_block,
+        );
+
 	$self->{comment_out} = $self->Append( -1,
 		Wx::gettext("&Comment Selected Lines\tCtrl-M")
 	);
