diff --git a/files/css/files.css b/files/css/files.css
index 466504184090aa8ebe00d73bd5a1070fc29c7ef4..57dc05d135cacf351a2c09d82d8c25f533cca635 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -27,6 +27,7 @@ table th#headerSize, table td.filesize { width:5em; padding:0 1em; text-align:ri
 table th#headerDate, table td.date { width:10em; padding:0 .1em 0 1em; text-align:left; }
 table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; }
 table td.filename a.name { display:block; background-image:url('../img/file.png'); height:1.5em; vertical-align:middle; }
+table td.filename a.name input, table td.filename a.name form { width:100% }
 table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:.2em .5em .5em 3em; background-position:1em .5em; background-repeat:no-repeat; }
 table td.filename .nametext, .modified { float:left; padding:.3em 0; }
 table td.filename .nametext { width:80%; }
diff --git a/files/js/fileactions.js b/files/js/fileactions.js
index 4de7fa5542b4a52554e2913265ca0b259c3b83bd..359e54dda3c318934fbf3faa4e03135f5e5eae5a 100644
--- a/files/js/fileactions.js
+++ b/files/js/fileactions.js
@@ -54,6 +54,10 @@ FileActions={
 	display:function(parent){
 		FileActions.currentFile=parent;
 		var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
+		var file=FileActions.getCurrentFile();
+		if($('tr[data-file="'+file+'"]').data('renaming')){
+			return;
+		}
 		var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
 		for(name in actions){
 			if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){
diff --git a/files/js/filelist.js b/files/js/filelist.js
index 901c4fe21889bc51b4611da52fd1e2d3c071d7d7..ce904075588679ee5d39c37eca96a1ac62e68108 100644
--- a/files/js/filelist.js
+++ b/files/js/filelist.js
@@ -105,18 +105,17 @@ FileList={
 	},
 	rename:function(name){
 		var tr=$('tr[data-file="'+name+'"]');
+		tr.data('renaming',true);
 		var td=tr.children('td.filename');
 		var input=$('<input value='+name+' class="filename"></input>');
-		var button=$('<input type="submit" value="Ok"></input>');
 		var form=$('<form action="#"></form>')
 		form.append(input);
-		form.append(button);
 		td.children('a.name').text('');
 		td.children('a.name').append(form)
 		input.focus();
-		td.children('a.name').append(button);
 		form.submit(function(event){
 			var newname=input.val();
+			tr.data('renaming',false);
 			event.stopPropagation();
 			event.preventDefault();
 			tr.attr('data-file',newname);
@@ -140,6 +139,7 @@ FileList={
 			event.preventDefault();
 		});
 		input.blur(function(){
+			tr.data('renaming',false);
 			td.children('a.name').empty();
 			if(name.indexOf('.')>0){
 				basename=name.substr(0,name.indexOf('.'));