html/javascripts/controls.js in rails-0.14.2 vs html/javascripts/controls.js in rails-0.14.3

- old
+ new

@@ -182,11 +182,14 @@ if(this.hasFocus) { this.show(); this.active = true; } - } else this.hide(); + } else { + this.active = false; + this.hide(); + } }, markPrevious: function() { if(this.index > 0) this.index-- else this.index = this.entryCount-1; @@ -423,10 +426,19 @@ // AJAX in-place editor // // see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor +// Use this if you notice weird scrolling problems on some browsers, +// the DOM might be a bit confused when this gets called so do this +// waits 1 ms (with setTimeout) until it does the activation +Field.scrollFreeActivate = function(field) { + setTimeout(function() { + Field.activate(field); + }, 1); +} + Ajax.InPlaceEditor = Class.create(); Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99"; Ajax.InPlaceEditor.prototype = { initialize: function(element, url, options) { this.url = url; @@ -488,25 +500,26 @@ Event.observe(this.options.externalControl, 'click', this.onclickListener); Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener); Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener); } }, - enterEditMode: function() { + enterEditMode: function(evt) { if (this.saving) return; if (this.editing) return; this.editing = true; this.onEnterEditMode(); if (this.options.externalControl) { Element.hide(this.options.externalControl); } Element.hide(this.element); this.createForm(); this.element.parentNode.insertBefore(this.form, this.element); - Field.focus(this.editField); + Field.scrollFreeActivate(this.editField); // stop the event to avoid a page refresh in Safari - if (arguments.length > 1) { - Event.stop(arguments[0]); + if (evt) { + Event.stop(evt); } + return false; }, createForm: function() { this.form = document.createElement("form"); this.form.id = this.options.formId; Element.addClassName(this.form, this.options.formClassName) \ No newline at end of file