Stop Ctrl+F marking code editor as "dirty" (#3857)
Credit to @w20k. Fixes #946. Thanks to @petehalverson for Octodock for making testing these easy!
This commit is contained in:
parent
99bfae4ed0
commit
daf3a5c7cd
|
|
@ -30,8 +30,8 @@
|
|||
this.$el.on('pause.oc.changeMonitor', this.proxy(this.pause))
|
||||
this.$el.on('resume.oc.changeMonitor', this.proxy(this.resume))
|
||||
|
||||
this.$el.on('keyup input paste', 'input, textarea:not(.ace_text-input)', this.proxy(this.onInputChange))
|
||||
$('input:not([type=hidden]), textarea:not(.ace_text-input)', this.$el).each(function() {
|
||||
this.$el.on('keyup input paste', 'input:not(.ace_search_field), textarea:not(.ace_text-input)', this.proxy(this.onInputChange))
|
||||
$('input:not([type=hidden]):not(.ace_search_field), textarea:not(.ace_text-input)', this.$el).each(function() {
|
||||
$(this).data('oldval.oc.changeMonitor', $(this).val());
|
||||
})
|
||||
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
this.$el.off('unchange.oc.changeMonitor', this.proxy(this.unchange))
|
||||
this.$el.off('pause.oc.changeMonitor ', this.proxy(this.pause))
|
||||
this.$el.off('resume.oc.changeMonitor ', this.proxy(this.resume))
|
||||
this.$el.off('keyup input paste', 'input, textarea:not(.ace_text-input)', this.proxy(this.onInputChange))
|
||||
this.$el.off('keyup input paste', 'input:not(.ace_search_field), textarea:not(.ace_text-input)', this.proxy(this.onInputChange))
|
||||
this.$el.off('dispose-control', this.proxy(this.dispose))
|
||||
|
||||
if (this.options.windowCloseConfirm)
|
||||
|
|
@ -71,9 +71,12 @@
|
|||
if (this.paused)
|
||||
return
|
||||
|
||||
if (ev.target.className === 'ace_search_field')
|
||||
return
|
||||
|
||||
if (!inputChange) {
|
||||
var type = $(ev.target).attr('type')
|
||||
if (type == 'text' || type == "password")
|
||||
if (type === 'text' || type === 'password')
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +101,7 @@
|
|||
return
|
||||
|
||||
var $el = $(ev.target)
|
||||
if ($el.data('oldval.oc.changeMonitor') != $el.val()) {
|
||||
if ($el.data('oldval.oc.changeMonitor') !== $el.val()) {
|
||||
|
||||
$el.data('oldval.oc.changeMonitor', $el.val());
|
||||
this.change(ev, true);
|
||||
|
|
@ -131,7 +134,7 @@
|
|||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
var data = $this.data('oc.changeMonitor')
|
||||
var options = $.extend({}, ChangeMonitor.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
||||
var options = $.extend({}, ChangeMonitor.DEFAULTS, $this.data(), typeof option === 'object' && option)
|
||||
|
||||
if (!data) $this.data('oc.changeMonitor', (data = new ChangeMonitor(this, options)))
|
||||
})
|
||||
|
|
|
|||
|
|
@ -3979,8 +3979,8 @@ ChangeMonitor.prototype.init=function(){this.$el.on('change',this.proxy(this.cha
|
|||
this.$el.on('unchange.oc.changeMonitor',this.proxy(this.unchange))
|
||||
this.$el.on('pause.oc.changeMonitor',this.proxy(this.pause))
|
||||
this.$el.on('resume.oc.changeMonitor',this.proxy(this.resume))
|
||||
this.$el.on('keyup input paste','input, textarea:not(.ace_text-input)',this.proxy(this.onInputChange))
|
||||
$('input:not([type=hidden]), textarea:not(.ace_text-input)',this.$el).each(function(){$(this).data('oldval.oc.changeMonitor',$(this).val());})
|
||||
this.$el.on('keyup input paste','input:not(.ace_search_field), textarea:not(.ace_text-input)',this.proxy(this.onInputChange))
|
||||
$('input:not([type=hidden]):not(.ace_search_field), textarea:not(.ace_text-input)',this.$el).each(function(){$(this).data('oldval.oc.changeMonitor',$(this).val());})
|
||||
if(this.options.windowCloseConfirm)
|
||||
$(window).on('beforeunload',this.proxy(this.onBeforeUnload))
|
||||
this.$el.one('dispose-control',this.proxy(this.dispose))
|
||||
|
|
@ -3996,14 +3996,16 @@ ChangeMonitor.prototype.unregisterHandlers=function(){this.$el.off('change',this
|
|||
this.$el.off('unchange.oc.changeMonitor',this.proxy(this.unchange))
|
||||
this.$el.off('pause.oc.changeMonitor ',this.proxy(this.pause))
|
||||
this.$el.off('resume.oc.changeMonitor ',this.proxy(this.resume))
|
||||
this.$el.off('keyup input paste','input, textarea:not(.ace_text-input)',this.proxy(this.onInputChange))
|
||||
this.$el.off('keyup input paste','input:not(.ace_search_field), textarea:not(.ace_text-input)',this.proxy(this.onInputChange))
|
||||
this.$el.off('dispose-control',this.proxy(this.dispose))
|
||||
if(this.options.windowCloseConfirm)
|
||||
$(window).off('beforeunload',this.proxy(this.onBeforeUnload))}
|
||||
ChangeMonitor.prototype.change=function(ev,inputChange){if(this.paused)
|
||||
return
|
||||
if(ev.target.className==='ace_search_field')
|
||||
return
|
||||
if(!inputChange){var type=$(ev.target).attr('type')
|
||||
if(type=='text'||type=="password")
|
||||
if(type==='text'||type==='password')
|
||||
return}
|
||||
if(!this.$el.hasClass('oc-data-changed')){this.$el.trigger('changed.oc.changeMonitor')
|
||||
this.$el.addClass('oc-data-changed')}}
|
||||
|
|
@ -4014,7 +4016,7 @@ this.$el.removeClass('oc-data-changed')}}
|
|||
ChangeMonitor.prototype.onInputChange=function(ev){if(this.paused)
|
||||
return
|
||||
var $el=$(ev.target)
|
||||
if($el.data('oldval.oc.changeMonitor')!=$el.val()){$el.data('oldval.oc.changeMonitor',$el.val());this.change(ev,true);}}
|
||||
if($el.data('oldval.oc.changeMonitor')!==$el.val()){$el.data('oldval.oc.changeMonitor',$el.val());this.change(ev,true);}}
|
||||
ChangeMonitor.prototype.pause=function(){this.paused=true}
|
||||
ChangeMonitor.prototype.resume=function(){this.paused=false}
|
||||
ChangeMonitor.prototype.onBeforeUnload=function(){if($.contains(document.documentElement,this.$el.get(0))&&this.$el.hasClass('oc-data-changed'))
|
||||
|
|
@ -4023,7 +4025,7 @@ ChangeMonitor.DEFAULTS={windowCloseConfirm:false}
|
|||
var old=$.fn.changeMonitor
|
||||
$.fn.changeMonitor=function(option){return this.each(function(){var $this=$(this)
|
||||
var data=$this.data('oc.changeMonitor')
|
||||
var options=$.extend({},ChangeMonitor.DEFAULTS,$this.data(),typeof option=='object'&&option)
|
||||
var options=$.extend({},ChangeMonitor.DEFAULTS,$this.data(),typeof option==='object'&&option)
|
||||
if(!data)$this.data('oc.changeMonitor',(data=new ChangeMonitor(this,options)))})}
|
||||
$.fn.changeMonitor.Constructor=ChangeMonitor
|
||||
$.fn.changeMonitor.noConflict=function(){$.fn.changeMonitor=old
|
||||
|
|
|
|||
Loading…
Reference in New Issue