sproutcore 1.6.0.1-java → 1.7.1.beta-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. data/CHANGELOG +21 -0
  2. data/Gemfile +5 -0
  3. data/Rakefile +26 -13
  4. data/VERSION.yml +2 -2
  5. data/lib/Buildfile +43 -4
  6. data/lib/buildtasks/build.rake +10 -0
  7. data/lib/buildtasks/helpers/file_rule.rb +22 -0
  8. data/lib/buildtasks/helpers/file_rule_list.rb +137 -0
  9. data/lib/buildtasks/manifest.rake +133 -122
  10. data/lib/frameworks/sproutcore/CHANGELOG.md +69 -2
  11. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +1 -0
  12. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +28 -22
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +9 -5
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +1 -1
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +18 -13
  16. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +5 -3
  17. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +2 -0
  18. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +80 -0
  19. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +84 -116
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +8 -5
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +157 -157
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +5 -3
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +6 -6
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -7
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/action_support.js +106 -0
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +18 -0
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +71 -1
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/attribute_bindings_test.js +38 -0
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +47 -0
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +18 -18
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +42 -10
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +158 -1
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +26 -1
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +14 -8
  35. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +15 -2
  36. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +108 -108
  37. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +1 -1
  38. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +2 -4
  39. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +2 -2
  40. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +26 -0
  41. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +4 -1
  44. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +6 -0
  45. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +26 -5
  46. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +97 -96
  47. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +4 -3
  48. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +17 -4
  49. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +7 -7
  50. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +7 -5
  51. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +12 -3
  52. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +23 -14
  53. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +5 -1
  54. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/render_delegates/menu_scroller.js +28 -0
  55. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/tests/menu/scroll.js +235 -0
  56. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +363 -0
  57. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroller.js +250 -0
  58. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +92 -0
  59. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/native_scroll.js +25 -0
  60. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/scroll.js +33 -0
  61. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/touch_scroller.js +76 -0
  62. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/integration.js +50 -0
  63. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/methods.js +143 -0
  64. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +258 -0
  65. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +1164 -0
  66. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroller.js +332 -0
  67. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +236 -0
  68. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroller.js +347 -0
  69. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +15 -0
  70. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroller.js +10 -0
  71. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +804 -0
  72. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroller.js +133 -0
  73. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +3 -3
  74. data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +3 -1
  75. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +3 -3
  76. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +2 -1
  77. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +2 -1
  78. data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +2 -4
  79. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +2 -4
  80. data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +2 -4
  81. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +2 -2
  82. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +29 -3
  83. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
  84. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +1 -1
  85. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -1
  86. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +3 -3
  87. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +2 -2
  88. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +1 -1
  89. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +2 -2
  90. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/segmented.css +1 -1
  91. data/lib/gen/app/templates/apps/@target_name@/Buildfile +3 -5
  92. data/lib/gen/app/templates/apps/@target_name@/resources/_theme.css +18 -0
  93. data/lib/gen/project/templates/@filename@/Buildfile +2 -2
  94. data/lib/sproutcore.rb +30 -5
  95. data/lib/sproutcore/builders.rb +1 -0
  96. data/lib/sproutcore/builders/chance_file.rb +9 -16
  97. data/lib/sproutcore/builders/html.rb +2 -1
  98. data/lib/sproutcore/builders/minify.rb +4 -35
  99. data/lib/sproutcore/builders/module.rb +38 -1
  100. data/lib/sproutcore/builders/split.rb +63 -0
  101. data/lib/sproutcore/builders/strings.rb +7 -1
  102. data/lib/sproutcore/helpers.rb +1 -1
  103. data/lib/sproutcore/helpers/css_split.rb +190 -0
  104. data/lib/sproutcore/helpers/entry_sorter.rb +2 -0
  105. data/lib/sproutcore/helpers/minifier.rb +40 -16
  106. data/lib/sproutcore/helpers/static_helper.rb +35 -17
  107. data/lib/sproutcore/models/manifest.rb +26 -0
  108. data/lib/sproutcore/models/target.rb +12 -1
  109. data/lib/sproutcore/rack.rb +1 -0
  110. data/lib/sproutcore/rack/proxy.rb +244 -225
  111. data/lib/sproutcore/rack/restrict_ip.rb +67 -0
  112. data/lib/sproutcore/rack/service.rb +8 -2
  113. data/lib/sproutcore/tools.rb +102 -46
  114. data/lib/sproutcore/tools/build.rb +91 -43
  115. data/lib/sproutcore/tools/gen.rb +2 -3
  116. data/lib/sproutcore/tools/manifest.rb +22 -16
  117. data/lib/sproutcore/tools/server.rb +21 -0
  118. data/spec/buildtasks/helpers/accept_list +22 -0
  119. data/spec/buildtasks/helpers/accept_list.rb +128 -0
  120. data/spec/buildtasks/helpers/list.json +11 -0
  121. data/spec/buildtasks/manifest/prepare_build_tasks/chance_2x_spec.rb +1 -39
  122. data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +0 -38
  123. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +4 -4
  124. data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +2 -2
  125. data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_indirect_spec.rb +7 -16
  126. data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_spec.rb +7 -17
  127. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +11 -6
  128. data/spec/fixtures/builder_tests/Buildfile +2 -1
  129. data/spec/fixtures/builder_tests/apps/module_test/modules/required_module/core.js +0 -0
  130. data/spec/lib/builders/module_spec.rb +1 -1
  131. data/spec/spec_helper.rb +1 -0
  132. data/sproutcore.gemspec +4 -9
  133. data/vendor/chance/lib/chance.rb +25 -6
  134. data/vendor/chance/lib/chance/factory.rb +45 -0
  135. data/vendor/chance/lib/chance/instance.rb +173 -28
  136. data/vendor/chance/lib/chance/instance/data_url.rb +0 -29
  137. data/vendor/chance/lib/chance/instance/slicing.rb +57 -4
  138. data/vendor/chance/lib/chance/instance/spriting.rb +112 -21
  139. data/vendor/chance/lib/chance/parser.rb +80 -52
  140. data/vendor/sproutcore/SCCompiler.jar +0 -0
  141. data/vendor/sproutcore/lib/args4j-2.0.12.jar +0 -0
  142. data/vendor/sproutcore/lib/yuicompressor-2.4.2.jar +0 -0
  143. metadata +84 -25
@@ -0,0 +1,133 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
+ // License: Licensed under MIT license (see license.js)
6
+ // ==========================================================================
7
+ sc_require('views/core_scroller');
8
+
9
+ /** @class
10
+ Implementation of a touch scroller view to be used in tandem with
11
+ `SC.TouchScrollView`.
12
+
13
+ To style the touch scroller view, implement your own render delegate.
14
+
15
+ @extends SC.CoreScrollerView
16
+ */
17
+ SC.TouchScrollerView = SC.CoreScrollerView.extend(
18
+ /** @scope SC.TouchScrollerView.prototype */{
19
+
20
+ /**
21
+ @type Array
22
+ @default ['sc-touch-scroller-view']
23
+ @see SC.View#classNames
24
+ */
25
+ classNames: ['sc-touch-scroller-view'],
26
+
27
+ /**
28
+ @type Array
29
+ @default ['displayThumbPosition', 'displayThumbLength']
30
+ @see SC.View#displayProperties
31
+ */
32
+ displayProperties: ['displayThumbPosition', 'displayThumbLength'],
33
+
34
+ /**
35
+ @type Number
36
+ @default 12
37
+ */
38
+ scrollbarThickness: 12,
39
+
40
+ /**
41
+ @type Boolean
42
+ @default YES
43
+ */
44
+ isTranslucent: YES,
45
+
46
+ /**
47
+ @type Number
48
+ @default 5
49
+ */
50
+ capLength: 5,
51
+
52
+ /**
53
+ @type Number
54
+ @default 0
55
+ */
56
+ capOverlap: 0,
57
+
58
+ /**
59
+ @type Boolean
60
+ @default NO
61
+ */
62
+ hasButtons: NO,
63
+
64
+ /**
65
+ @type Number
66
+ @default 36
67
+ */
68
+ buttonOverlap: 36,
69
+
70
+ /**
71
+ @type String
72
+ @default 'touchScrollerRenderDelegate'
73
+ */
74
+ renderDelegateName: 'touchScrollerRenderDelegate',
75
+
76
+ /**
77
+ @type Number
78
+ @observes value
79
+ @observes _touchScrollValue
80
+ */
81
+ displayValue: function () {
82
+ var touchValue = this.get('_touchScrollValue');
83
+ return !SC.none(touchValue) ? touchValue : this.get('value');
84
+ }.property("value", "_touchScrollValue").cacheable(),
85
+
86
+ // ..........................................................
87
+ // INTERNAL SUPPORT
88
+ //
89
+
90
+ /** @private */
91
+ touchScrollDidStart: function (value) {
92
+ this.set("_touchScrollValue", value);
93
+ },
94
+
95
+ /** @private */
96
+ touchScrollDidEnd: function (value) {
97
+ this.set("_touchScrollValue", null);
98
+ },
99
+
100
+ /** @private */
101
+ touchScrollDidChange: function (value) {
102
+ this.set("_touchScrollValue", value);
103
+ },
104
+
105
+ /** @private
106
+ Updates the thumb display length and position to reflect
107
+ the ability for touch scroll views to go out of bounds.
108
+
109
+ This makes the scroller shrink when scrolling out of the
110
+ bounds of the view, while ensuring that the scroller doesn't
111
+ go past it's minimum bounds.
112
+ */
113
+ _sctcv_updateThumbDisplay: function () {
114
+ var max = this.get("scrollerLength") - this.get('capLength'),
115
+ min = this.get("minimum") + this.get('capLength'),
116
+ position = this.get('thumbPosition'),
117
+ length = this.get('thumbLength');
118
+
119
+ if (position + length > max) {
120
+ position = Math.min(max - 20, position);
121
+ length = max - position;
122
+ }
123
+
124
+ if (position < min) {
125
+ length -= min - position;
126
+ position = min;
127
+ }
128
+
129
+ this.setIfChanged('displayThumbPosition', position);
130
+ this.setIfChanged('displayThumbLength', Math.round(length - 1044));
131
+ }.observes('thumbPosition', 'thumbLength', 'scrollerLength', 'capLength', 'minimum')
132
+
133
+ });
@@ -27,8 +27,7 @@
27
27
  top: 0px;
28
28
  left: 0px;
29
29
  width: 100%;
30
- bottom: 0px;
31
- right: 0px;
30
+ height: 100%;
32
31
  display: block;
33
32
  background: transparent;
34
33
  vertical-align: middle;
@@ -36,7 +35,7 @@
36
35
  outline: none;
37
36
  -webkit-appearance:none;
38
37
  }
39
-
38
+
40
39
  textarea {
41
40
  position: absolute;
42
41
  top: 0px;
@@ -44,6 +43,7 @@
44
43
  width:100%;
45
44
  bottom: 0px;
46
45
  right: 0px;
46
+ padding-top: 10px;
47
47
  display: block;
48
48
  background: transparent;
49
49
  vertical-align: middle;
@@ -51,7 +51,7 @@ SC.Validator.Number = SC.Validator.extend(
51
51
  } else if (this.get('places') > 0) {
52
52
  value = parseFloat(value) ;
53
53
  } else {
54
- if(value.length==1 && value.match(/-/)) value = null;
54
+ if(value.length===1 && value.match(/-/)) value = null;
55
55
  else {
56
56
  result = parseInt(value,0) ;
57
57
  if(isNaN(result)){
@@ -84,9 +84,11 @@ SC.Validator.Number = SC.Validator.extend(
84
84
  Allow only numbers, dashes, period, and commas
85
85
  */
86
86
  validateKeyDown: function(form, field, charStr) {
87
+ if(!charStr) charStr = "";
87
88
  var text = field.$input().val();
88
89
  if (!text) text='';
89
90
  text+=charStr;
91
+
90
92
  if(this.get('places')===0){
91
93
  if(charStr.length===0) return true;
92
94
  else return text.match(/^[\-{0,1}]?[0-9,\0]*/)[0]===text;
@@ -961,9 +961,9 @@ SC.TextFieldView = SC.FieldView.extend(SC.StaticLayout, SC.Editable,
961
961
  the hint text if needed.
962
962
  */
963
963
  didLoseKeyResponderTo: function(keyView) {
964
- var el = this.$input()[0];
965
- if (el) el.blur();
966
-
964
+ SC.RunLoop.begin();
965
+ this.fieldDidBlur();
966
+ SC.RunLoop.end();
967
967
  this.invokeLater("scrollToOriginIfNeeded", 100);
968
968
  },
969
969
 
@@ -27,7 +27,8 @@ sc_require('views/mini_controls');
27
27
  @since SproutCore 1.1
28
28
  */
29
29
 
30
- SC.AudioView = SC.View.extend({
30
+ SC.AudioView = SC.View.extend(
31
+ /** @scope SC.AudioView.prototype */{
31
32
 
32
33
  /**
33
34
  Audio view className.
@@ -13,7 +13,8 @@ sc_require('views/media_slider');
13
13
 
14
14
  @extends SC.View
15
15
  */
16
- SC.MediaControlsView = SC.View.extend({
16
+ SC.MediaControlsView = SC.View.extend(
17
+ /** @scope SC.MediaControlsView.prototype */{
17
18
 
18
19
  target: null,
19
20
 
@@ -7,12 +7,10 @@
7
7
  /*globals SC */
8
8
 
9
9
  /** @class
10
-
11
- (Document Your View Here)
12
-
13
10
  @extends SC.View
14
11
  */
15
- SC.MediaSlider = SC.SliderView.extend({
12
+ SC.MediaSlider = SC.SliderView.extend(
13
+ /** @scope SC.MediaSlider.prototype */{
16
14
 
17
15
  mediaView: null,
18
16
 
@@ -8,12 +8,10 @@
8
8
 
9
9
  sc_require('views/media_slider');
10
10
  /** @class
11
-
12
- (Document Your View Here)
13
-
14
11
  @extends SC.View
15
12
  */
16
- SC.MiniMediaControlsView = SC.View.extend({
13
+ SC.MiniMediaControlsView = SC.View.extend(
14
+ /** @scope SC.MiniMediaControlsView.prototype */{
17
15
 
18
16
  target: null,
19
17
 
@@ -8,12 +8,10 @@
8
8
 
9
9
  sc_require('views/media_slider');
10
10
  /** @class
11
-
12
- (Document Your View Here)
13
-
14
11
  @extends SC.View
15
12
  */
16
- SC.SimpleMediaControlsView = SC.View.extend({
13
+ SC.SimpleMediaControlsView = SC.View.extend(
14
+ /** @scope SC.SimpleMediaControlsView.prototype */{
17
15
 
18
16
  target: null,
19
17
 
@@ -28,8 +28,8 @@ sc_require('views/mini_controls');
28
28
  @extends SC.View
29
29
  @since SproutCore 1.1
30
30
  */
31
-
32
- SC.VideoView = SC.View.extend({
31
+ SC.VideoView = SC.View.extend(
32
+ /** @scope SC.VideoView.prototype */{
33
33
 
34
34
  /**
35
35
  Video view className.
@@ -214,6 +214,30 @@ SC.routes = SC.Object.create(
214
214
  @type {String}
215
215
  */
216
216
  location: function(key, value) {
217
+ this._skipRoute = NO;
218
+ return this._extractLocation(key, value);
219
+ }.property(),
220
+
221
+ /*
222
+ Works exactly like 'location' but you usee this property only when
223
+ you want to just change the location w/out triggering the routes
224
+ */
225
+ informLocation: function(key, value){
226
+ this._skipRoute = YES;
227
+ // This is a very special case where this property
228
+ // has a very heavy influence on the 'location' property
229
+ // this is a case where you might want to use idempotent
230
+ // but you would take a performance hit because it is possible
231
+ // call set() multiple time and we don't want to take the extra
232
+ // cost, so we just invalidate the cached set() value ourselves
233
+ // you shouldn't do this in your own code unless you REALLY
234
+ // know what you are doing.
235
+ var lsk = this.location.lastSetValueKey;
236
+ if (lsk && this._kvo_cache) this._kvo_cache[lsk] = value;
237
+ return this._extractLocation(key, value);
238
+ }.property(),
239
+
240
+ _extractLocation: function(key, value) {
217
241
  var crumbs, encodedValue;
218
242
 
219
243
  if (value !== undefined) {
@@ -243,7 +267,7 @@ SC.routes = SC.Object.create(
243
267
  }
244
268
 
245
269
  return this._location;
246
- }.property(),
270
+ },
247
271
 
248
272
  /**
249
273
  You usually don't need to call this method. It is done automatically after
@@ -300,11 +324,12 @@ SC.routes = SC.Object.create(
300
324
  loc = decodeURI(loc);
301
325
  }
302
326
 
303
- if (this.get('location') !== loc) {
327
+ if (this.get('location') !== loc && !this._skipRoute) {
304
328
  SC.run(function() {
305
329
  this.set('location', loc);
306
330
  }, this);
307
331
  }
332
+ this._skipRoute = false;
308
333
  },
309
334
 
310
335
  popState: function(event) {
@@ -316,12 +341,13 @@ SC.routes = SC.Object.create(
316
341
  // Remove the base prefix and the extra '/'
317
342
  loc = loc.slice(base.length + 1, loc.length);
318
343
 
319
- if (this.get('location') !== loc) {
344
+ if (this.get('location') !== loc && !this._skipRoute) {
320
345
  SC.run(function() {
321
346
  this.set('location', loc);
322
347
  }, this);
323
348
  }
324
349
  }
350
+ this._skipRoute = false;
325
351
  },
326
352
 
327
353
  /**
@@ -39,7 +39,7 @@ window.SproutCore = window.SproutCore || SC ;
39
39
  // rest of the methods go into the mixin defined below.
40
40
 
41
41
  /**
42
- @version 1.6.0
42
+ @version 1.7.1.beta
43
43
  @namespace
44
44
 
45
45
  All SproutCore methods and functions are defined
@@ -59,7 +59,7 @@ window.SproutCore = window.SproutCore || SC ;
59
59
  */
60
60
  SC = window.SC; // This is dumb but necessary for jsdoc to get it right
61
61
 
62
- SC.VERSION = '1.6.0';
62
+ SC.VERSION = '1.7.1.beta';
63
63
 
64
64
  /**
65
65
  @private
@@ -58,7 +58,7 @@ SC.ArraySuite.define(function(T) {
58
58
 
59
59
  obj.replace(1,2, replace) ;
60
60
 
61
- T.validateAfter(obj, after, observer, YES);
61
+ T.validateAfter(obj, after, observer, NO);
62
62
  });
63
63
 
64
64
  test("[A,B].replace(1,0,[X,Y]) => [A,X,Y,B] + notify", function() {
@@ -149,9 +149,10 @@ SC._PropertyChain = SC.Object.extend(
149
149
 
150
150
  this.next.activate(newObj); // reactivate down the line
151
151
  }
152
- },
152
+ }
153
153
 
154
154
  // @if (debug)
155
+ ,
155
156
  /**
156
157
  Returns a string representation of the chain segment.
157
158
 
@@ -437,7 +437,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
437
437
  /**
438
438
  Invoked whenever the value of the "from" property changes. This will mark
439
439
  the binding as dirty if the value has changed.
440
-
440
+
441
441
  @param {Object} target The object that contains the key
442
442
  @param {String} key The name of the property which changed
443
443
  */
@@ -467,7 +467,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
467
467
 
468
468
  if the value does not match the transformedBindingValue, then it will
469
469
  become the new bindingValue.
470
-
470
+
471
471
  @param {Object} target The object that contains the key
472
472
  @param {String} key The name of the property which changed
473
473
  */
@@ -983,7 +983,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
983
983
 
984
984
  /**
985
985
  Adds a transform that will return YES if the value is null or undefined, NO otherwise.
986
-
986
+
987
987
  @param {String} [fromPath]
988
988
  @returns {SC.Binding} this
989
989
  */
@@ -380,8 +380,8 @@ SC.IndexSet = SC.mixin({},
380
380
  .set('max', start.max)
381
381
  .set('length', start.length)
382
382
  .set('source', start.source)
383
- .enumerableContentDidChange()
384
- .endPropertyChanges();
383
+ .enumerableContentDidChange();
384
+ this.endPropertyChanges();
385
385
  return this ;
386
386
 
387
387
  } else {
@@ -563,7 +563,7 @@ SC.Object.prototype = {
563
563
  },
564
564
 
565
565
  /**
566
- Set to NO once this object has been destroyed.
566
+ Set to YES once this object has been destroyed.
567
567
 
568
568
  @type Boolean
569
569
  */
@@ -9,9 +9,9 @@ $theme.sc-list-item-view {
9
9
 
10
10
  $theme.disclosure {
11
11
  position: absolute;
12
- left: -6px;
12
+ left: -11px;
13
13
  top: 50%;
14
- margin-top: -8px;
14
+ margin-top: -7px;
15
15
 
16
16
  width: 18px;
17
17
  height: 18px;