diff --git a/apps/system/js/value_selector/value_selector.js b/apps/system/js/value_selector/value_selector.js index 3d9012e..98d86d6 100644 --- a/apps/system/js/value_selector/value_selector.js +++ b/apps/system/js/value_selector/value_selector.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; @@ -56,6 +56,7 @@ var ValueSelector = { this._element = document.getElementById('value-selector'); + this._element.addEventListener('mousedown', this); this._containers['select'] = document.getElementById('value-selector-container'); this._containers['select'].addEventListener('click', this); @@ -63,6 +64,7 @@ var ValueSelector = { this._popups['select'] = document.getElementById('select-option-popup'); + this._popups['select'].addEventListener('submit', this); this._popups['time'] = document.getElementById('time-picker-popup'); this._popups['date'] = @@ -80,9 +82,22 @@ var ValueSelector = { this._containers['time'] = document.getElementById('picker-bar'); this._containers['date'] = document.getElementById('date-picker-container'); - ActiveEffectHelper.enableActive(this._buttons['select']); ActiveEffectHelper.enableActive(this._buttons['time']); + ActiveEffectHelper.enableActive(this._buttons['date']); + + // Prevent focus being taken away by us for time picker + var mouseDownList = ['value-picker-hours', 'value-picker-minutes', + 'value-picker-hour24-state']; + + function mouseDownHandler(evt) { + return false; + } + + mouseDownList.forEach(function preventFocusChange(id) { + var element = document.getElementById(id); + element.onmousedown = mouseDownHandler; + }); window.addEventListener('appopen', this); window.addEventListener('appwillclose', this); @@ -115,6 +130,13 @@ var ValueSelector = { } break; + case 'submit': + // Prevent the form to submit. + case 'mousedown': + // Prevent focus being taken away by us. + evt.preventDefault(); + break; + default: this.debug('no event handler defined for' + evt.type); break;