on master help sign in
Fix so that focus is still handled by the browser, not Elm.
284438dEvan Czaplicki
libraries/Native/Graphics/Input.js+11−6
@@ -268,9 +268,6 @@ Elm.Native.Graphics.Input.make = function(elm) {
268 field.type = model.type;
268 field.type = model.type;
269 field.placeholder = JS.fromString(model.placeHolder);
269 field.placeholder = JS.fromString(model.placeHolder);
270 field.value = JS.fromString(model.content.string);
270 field.value = JS.fromString(model.content.string);
271− var selection = model.content.selection;
272− var direction = selection.direction.ctor === 'Forward' ? 'forward' : 'backward';
273− setRange(field, selection.start, selection.end, direction);
274
271
275 field.elm_signal = model.signal;
272 field.elm_signal = model.signal;
276 field.elm_handler = model.handler;
273 field.elm_handler = model.handler;
@@ -340,6 +337,12 @@ Elm.Native.Graphics.Input.make = function(elm) {
340 field.addEventListener('keypress', keyUpdate);
337 field.addEventListener('keypress', keyUpdate);
341 field.addEventListener('input', inputUpdate);
338 field.addEventListener('input', inputUpdate);
342 field.addEventListener('mousedown', mousedown);
339 field.addEventListener('mousedown', mousedown);
340+ field.addEventListener('focus', function() {
341+ field.elm_hasFocus = true;
342+ });
343+ field.addEventListener('blur', function() {
344+ field.elm_hasFocus = false;
345+ });
343
346
344 return field;
347 return field;
345 }
348 }
@@ -356,9 +359,11 @@ Elm.Native.Graphics.Input.make = function(elm) {
356 var value = JS.fromString(newModel.content.string);
359 var value = JS.fromString(newModel.content.string);
357 field.value = value;
360 field.value = value;
358 field.elm_old_value = value;
361 field.elm_old_value = value;
362+ if (field.elm_hasFocus) {
359− var selection = newModel.content.selection;
363+ var selection = newModel.content.selection;
360− var direction = selection.direction.ctor === 'Forward' ? 'forward' : 'backward';
364+ var direction = selection.direction.ctor === 'Forward' ? 'forward' : 'backward';
361− setRange(field, selection.start, selection.end, direction);
365+ setRange(field, selection.start, selection.end, direction);
366+ }
362 }
367 }
363
368
364 function mkField(type) {
369 function mkField(type) {