sproutcore 1.0.1049.pre.2 → 1.4.0.rc

Sign up to get free protection for your applications and to get access to all the features.
Files changed (552) hide show
  1. data/Rakefile +1 -1
  2. data/VERSION.yml +4 -4
  3. data/lib/Buildfile +1 -1
  4. data/lib/frameworks/sproutcore/Buildfile +13 -27
  5. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +0 -42
  6. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/view_configs.js +100 -0
  7. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/app_page.js +1 -1
  8. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +33 -9
  9. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/strings.js +5 -2
  10. data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +1 -0
  11. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +21 -11
  12. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +0 -7
  13. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +6 -24
  14. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +46 -36
  15. data/lib/frameworks/sproutcore/frameworks/animation/core.js +32 -50
  16. data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +2 -7
  17. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
  18. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +66 -42
  19. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +4 -12
  20. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +1 -1
  21. data/lib/frameworks/sproutcore/frameworks/{desktop/tests → datastore/tests/models}/datetime_recordattribute.js +0 -0
  22. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +3 -27
  23. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/touch-scroller.css +196 -0
  24. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +21 -8
  25. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +3 -3
  26. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +15 -19
  27. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +22 -5
  28. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +54 -12
  29. data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +45 -18
  30. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +52 -32
  31. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +3 -28
  32. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +10 -30
  33. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +17 -11
  34. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +2 -1
  35. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +1 -1
  36. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +20 -128
  37. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +39 -8
  38. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -23
  39. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +90 -59
  40. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +39 -29
  41. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +15 -11
  42. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +16 -17
  43. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +278 -457
  44. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +5 -5
  45. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +101 -5
  46. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +87 -85
  47. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +278 -33
  48. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +146 -60
  49. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +80 -211
  50. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +10 -1
  51. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +34 -33
  52. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +248 -331
  53. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +12 -1
  54. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/object.js +1 -1
  56. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +2 -33
  57. data/lib/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +1 -1
  58. data/lib/frameworks/sproutcore/frameworks/foundation/license.js +11 -0
  59. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +6 -12
  60. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +9 -4
  61. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +1 -83
  62. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +7 -6
  63. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +4 -2
  64. data/lib/frameworks/sproutcore/frameworks/foundation/panes/main.js +2 -1
  65. data/lib/frameworks/sproutcore/frameworks/foundation/panes/pane.js +107 -143
  66. data/lib/frameworks/sproutcore/frameworks/foundation/system/bundle.js +8 -4
  67. data/lib/frameworks/sproutcore/frameworks/foundation/system/core_query.js +4 -3
  68. data/lib/frameworks/sproutcore/frameworks/foundation/system/event.js +44 -33
  69. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +85 -0
  70. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +9 -9
  71. data/lib/frameworks/sproutcore/frameworks/foundation/system/platform.js +114 -6
  72. data/lib/frameworks/sproutcore/frameworks/foundation/system/ready.js +37 -38
  73. data/lib/frameworks/sproutcore/frameworks/foundation/system/render_context.js +5 -33
  74. data/lib/frameworks/sproutcore/frameworks/foundation/system/response.js +17 -19
  75. data/lib/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +311 -255
  76. data/lib/frameworks/sproutcore/frameworks/foundation/system/routes.js +3 -3
  77. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +10 -10
  78. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils.js +53 -44
  79. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +17 -16
  80. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +0 -1
  81. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +1 -1
  82. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +3 -11
  83. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +4 -2
  84. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +5 -7
  85. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +41 -0
  86. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +2 -2
  87. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +2 -2
  88. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +56 -118
  90. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +4 -12
  91. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +5 -48
  92. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +3 -3
  93. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +2 -2
  94. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +2 -24
  95. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +2 -0
  96. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +3 -3
  97. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -21
  98. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +85 -54
  99. data/lib/frameworks/sproutcore/frameworks/foundation/views/view.js +256 -1174
  100. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +81 -74
  101. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +2 -2
  102. data/lib/frameworks/sproutcore/frameworks/media/views/miniControls.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +1 -8
  104. data/lib/frameworks/sproutcore/frameworks/mobile/views/button.js +1 -1
  105. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +54 -25
  106. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -11
  107. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +8 -5
  108. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +24 -25
  110. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +9 -6
  111. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +13 -6
  112. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +26 -11
  113. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +140 -33
  114. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +33 -0
  115. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +48 -1
  116. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart.js +2 -3
  117. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +1 -1
  118. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/scroller.css +8 -4
  119. data/lib/sproutcore/helpers/entry_sorter.rb +14 -1
  120. data/sproutcore.gemspec +0 -2
  121. metadata +12 -443
  122. data/lib/frameworks/sproutcore/Gemfile +0 -8
  123. data/lib/frameworks/sproutcore/Gemfile.lock +0 -33
  124. data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
  125. data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +0 -108
  126. data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +0 -31
  127. data/lib/frameworks/sproutcore/apps/test_controls/core.js +0 -29
  128. data/lib/frameworks/sproutcore/apps/test_controls/main.js +0 -14
  129. data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +0 -124
  130. data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +0 -45
  131. data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +0 -77
  132. data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +0 -40
  133. data/lib/frameworks/sproutcore/apps/test_controls/resources/loading.rhtml +0 -9
  134. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +0 -54
  135. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +0 -136
  136. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +0 -42
  137. data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +0 -41
  138. data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +0 -76
  139. data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +0 -75
  140. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +0 -60
  141. data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +0 -53
  142. data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +0 -50
  143. data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +0 -15
  144. data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +0 -40
  145. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/images/main-bg.png +0 -0
  146. data/lib/frameworks/sproutcore/bin/edit_json.rb +0 -14
  147. data/lib/frameworks/sproutcore/bin/erubis +0 -14
  148. data/lib/frameworks/sproutcore/bin/prettify_json.rb +0 -14
  149. data/lib/frameworks/sproutcore/bin/rackup +0 -14
  150. data/lib/frameworks/sproutcore/bin/rake2thor +0 -14
  151. data/lib/frameworks/sproutcore/bin/sc-build +0 -14
  152. data/lib/frameworks/sproutcore/bin/sc-build-number +0 -14
  153. data/lib/frameworks/sproutcore/bin/sc-docs +0 -14
  154. data/lib/frameworks/sproutcore/bin/sc-gen +0 -14
  155. data/lib/frameworks/sproutcore/bin/sc-init +0 -14
  156. data/lib/frameworks/sproutcore/bin/sc-manifest +0 -14
  157. data/lib/frameworks/sproutcore/bin/sc-server +0 -14
  158. data/lib/frameworks/sproutcore/bin/sproutcore +0 -14
  159. data/lib/frameworks/sproutcore/bin/thin +0 -14
  160. data/lib/frameworks/sproutcore/bin/thor +0 -14
  161. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +0 -130
  162. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/button.js +0 -147
  163. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/checkbox.js +0 -87
  164. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/checkbox_control.js +0 -103
  165. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/disclosure.js +0 -82
  166. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/disclosure_control.js +0 -103
  167. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/image_button.js +0 -33
  168. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/list_item.js +0 -334
  169. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/masterDetail.js +0 -23
  170. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/panel.js +0 -34
  171. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/picker.js +0 -50
  172. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/segment.js +0 -79
  173. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/segmented.js +0 -172
  174. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/slider.js +0 -86
  175. data/lib/frameworks/sproutcore/frameworks/desktop/renderers/workspace.js +0 -22
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +0 -112
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +0 -249
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation.js +0 -237
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation_bar.js +0 -181
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +0 -270
  181. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  182. data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/default_styles.css +0 -5
  183. data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/strings.js +0 -15
  184. data/lib/frameworks/sproutcore/frameworks/forms/mixins/auto_hide.js +0 -85
  185. data/lib/frameworks/sproutcore/frameworks/forms/mixins/edit_mode.js +0 -43
  186. data/lib/frameworks/sproutcore/frameworks/forms/renderers/form.js +0 -24
  187. data/lib/frameworks/sproutcore/frameworks/forms/renderers/form_row.js +0 -24
  188. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form.js +0 -15
  189. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_checkbox_field.js +0 -15
  190. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_field.js +0 -15
  191. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_label.js +0 -15
  192. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_radio_field.js +0 -15
  193. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_row.js +0 -15
  194. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_text_field.js +0 -15
  195. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +0 -266
  196. data/lib/frameworks/sproutcore/frameworks/forms/views/form_row.js +0 -188
  197. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore.png +0 -0
  198. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/pinch.js +0 -81
  199. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/swipe.js +0 -142
  200. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +0 -33
  201. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -74
  202. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +0 -415
  203. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +0 -106
  204. data/lib/frameworks/sproutcore/frameworks/foundation/renderers/control.js +0 -122
  205. data/lib/frameworks/sproutcore/frameworks/foundation/renderers/image.js +0 -51
  206. data/lib/frameworks/sproutcore/frameworks/foundation/renderers/label.js +0 -96
  207. data/lib/frameworks/sproutcore/frameworks/foundation/renderers/renderer.js +0 -316
  208. data/lib/frameworks/sproutcore/frameworks/foundation/renderers/title.js +0 -108
  209. data/lib/frameworks/sproutcore/frameworks/foundation/renderers/view.js +0 -62
  210. data/lib/frameworks/sproutcore/frameworks/foundation/system/gesture.js +0 -245
  211. data/lib/frameworks/sproutcore/frameworks/foundation/system/theme.js +0 -108
  212. data/lib/frameworks/sproutcore/frameworks/foundation/tests/renderers/renderer/base.js +0 -170
  213. data/lib/frameworks/sproutcore/frameworks/foundation/tests/renderers/renderer/inheritance.js +0 -39
  214. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/theme.js +0 -86
  215. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendTouchEvent.js +0 -267
  216. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/animation.js +0 -321
  217. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/build.js +0 -85
  218. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/build_children.js +0 -89
  219. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/renderer.js +0 -443
  220. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/theme.js +0 -41
  221. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +0 -6240
  222. data/lib/frameworks/sproutcore/frameworks/test +0 -77
  223. data/lib/frameworks/sproutcore/themes/ace/Buildfile +0 -0
  224. data/lib/frameworks/sproutcore/themes/ace/README.md +0 -161
  225. data/lib/frameworks/sproutcore/themes/ace/build +0 -2
  226. data/lib/frameworks/sproutcore/themes/ace/build-d +0 -2
  227. data/lib/frameworks/sproutcore/themes/ace/chance/README.md +0 -113
  228. data/lib/frameworks/sproutcore/themes/ace/chance/chance.rb +0 -203
  229. data/lib/frameworks/sproutcore/themes/ace/chance/lib/css.rb +0 -202
  230. data/lib/frameworks/sproutcore/themes/ace/chance/lib/slicedice.rb +0 -391
  231. data/lib/frameworks/sproutcore/themes/ace/chance/sc-theme.rb +0 -0
  232. data/lib/frameworks/sproutcore/themes/ace/chance/scripts/setup.rb +0 -126
  233. data/lib/frameworks/sproutcore/themes/ace/mockups/dark.png +0 -0
  234. data/lib/frameworks/sproutcore/themes/ace/mockups/dark.psd +0 -0
  235. data/lib/frameworks/sproutcore/themes/ace/mockups/light.png +0 -0
  236. data/lib/frameworks/sproutcore/themes/ace/mockups/light.psd +0 -0
  237. data/lib/frameworks/sproutcore/themes/ace/resources/images/1.png +0 -0
  238. data/lib/frameworks/sproutcore/themes/ace/resources/images/2.png +0 -0
  239. data/lib/frameworks/sproutcore/themes/ace/resources/images/3.png +0 -0
  240. data/lib/frameworks/sproutcore/themes/ace/resources/theme.css +0 -1832
  241. data/lib/frameworks/sproutcore/themes/ace/scroll_test/resources/images/1.png +0 -0
  242. data/lib/frameworks/sproutcore/themes/ace/scroll_test/resources/images/2.png +0 -0
  243. data/lib/frameworks/sproutcore/themes/ace/scroll_test/resources/images/3.png +0 -0
  244. data/lib/frameworks/sproutcore/themes/ace/scroll_test/resources/theme.css +0 -147
  245. data/lib/frameworks/sproutcore/themes/ace/scroll_test/scrollbars.html +0 -326
  246. data/lib/frameworks/sproutcore/themes/ace/src/body.css +0 -13
  247. data/lib/frameworks/sproutcore/themes/ace/src/collections/list.css +0 -4
  248. data/lib/frameworks/sproutcore/themes/ace/src/collections/list_item.css +0 -7
  249. data/lib/frameworks/sproutcore/themes/ace/src/collections/source_list/selection.png +0 -0
  250. data/lib/frameworks/sproutcore/themes/ace/src/collections/source_list/selection.psd +0 -0
  251. data/lib/frameworks/sproutcore/themes/ace/src/collections/source_list/source_list_view.css +0 -37
  252. data/lib/frameworks/sproutcore/themes/ace/src/containers/container.css +0 -3
  253. data/lib/frameworks/sproutcore/themes/ace/src/containers/masterdetail/master-detail.css +0 -26
  254. data/lib/frameworks/sproutcore/themes/ace/src/containers/split/split.css +0 -4
  255. data/lib/frameworks/sproutcore/themes/ace/src/containers/tab/tab.css +0 -9
  256. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button.js +0 -23
  257. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/active_button.png +0 -0
  258. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/active_button.psd +0 -0
  259. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/button_view.css +0 -53
  260. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/normal_button.png +0 -0
  261. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/normal_button.psd +0 -0
  262. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/selected_active_button.png +0 -0
  263. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/selected_active_button.psd +0 -0
  264. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/selected_button.png +0 -0
  265. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/18px/selected_button.psd +0 -0
  266. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/active_button.png +0 -0
  267. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/active_button.psd +0 -0
  268. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/active_button_capsule.png +0 -0
  269. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/active_button_capsule.psd +0 -0
  270. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/active_button_pointer.png +0 -0
  271. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/active_button_pointer.psd +0 -0
  272. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/button_view.css +0 -144
  273. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/normal_button.png +0 -0
  274. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/normal_button.psd +0 -0
  275. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/normal_button_capsule.png +0 -0
  276. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/normal_button_capsule.psd +0 -0
  277. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/normal_button_pointer.png +0 -0
  278. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/normal_button_pointer.psd +0 -0
  279. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_active_button.png +0 -0
  280. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_active_button.psd +0 -0
  281. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_active_button_capsule.png +0 -0
  282. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_active_button_capsule.psd +0 -0
  283. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_active_button_pointer.png +0 -0
  284. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_active_button_pointer.psd +0 -0
  285. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_button.png +0 -0
  286. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_button.psd +0 -0
  287. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_button_capsule.png +0 -0
  288. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_button_capsule.psd +0 -0
  289. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_button_pointer.png +0 -0
  290. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/24px/selected_button_pointer.psd +0 -0
  291. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/active_button.png +0 -0
  292. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/active_button.psd +0 -0
  293. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/active_button_pointer.png +0 -0
  294. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/active_button_pointer.psd +0 -0
  295. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/button_view_30.css +0 -111
  296. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/normal_button.png +0 -0
  297. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/normal_button.psd +0 -0
  298. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/normal_button_pointer.png +0 -0
  299. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/normal_button_pointer.psd +0 -0
  300. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_active_button.png +0 -0
  301. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_active_button.psd +0 -0
  302. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_active_button_pointer.png +0 -0
  303. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_active_button_pointer.psd +0 -0
  304. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_button.png +0 -0
  305. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_button.psd +0 -0
  306. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_button_pointer.png +0 -0
  307. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/30px/selected_button_pointer.psd +0 -0
  308. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/active_button.png +0 -0
  309. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/active_button.psd +0 -0
  310. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/button_view.css +0 -57
  311. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/normal_button.png +0 -0
  312. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/normal_button.psd +0 -0
  313. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/selected_active_button.png +0 -0
  314. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/selected_active_button.psd +0 -0
  315. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/selected_button.png +0 -0
  316. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/44px/selected_button.psd +0 -0
  317. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/button_view/button_view.css +0 -56
  318. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_closed.png +0 -0
  319. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_closed.psd +0 -0
  320. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_closed_active.png +0 -0
  321. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_closed_active.psd +0 -0
  322. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_open.png +0 -0
  323. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_open.psd +0 -0
  324. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_open_active.png +0 -0
  325. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_open_active.psd +0 -0
  326. data/lib/frameworks/sproutcore/themes/ace/src/controls/buttons/disclosure_view/disclosure_view.css +0 -64
  327. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox.css +0 -25
  328. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_checked.png +0 -0
  329. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_checked.psd +0 -0
  330. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_checked_active.png +0 -0
  331. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_checked_active.psd +0 -0
  332. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_mixed.png +0 -0
  333. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_mixed.psd +0 -0
  334. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_mixed_active.png +0 -0
  335. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_mixed_active.psd +0 -0
  336. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_unchecked.png +0 -0
  337. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_unchecked.psd +0 -0
  338. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_unchecked_active.png +0 -0
  339. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/14px/checkbox_unchecked_active.psd +0 -0
  340. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox.css +0 -25
  341. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_checked.png +0 -0
  342. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_checked.psd +0 -0
  343. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_checked_active.png +0 -0
  344. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_checked_active.psd +0 -0
  345. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_mixed.png +0 -0
  346. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_mixed.psd +0 -0
  347. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_mixed_active.png +0 -0
  348. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_mixed_active.psd +0 -0
  349. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_unchecked.png +0 -0
  350. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_unchecked.psd +0 -0
  351. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_unchecked_active.png +0 -0
  352. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/16px/checkbox_unchecked_active.psd +0 -0
  353. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/checkbox.css +0 -4
  354. data/lib/frameworks/sproutcore/themes/ace/src/controls/checkboxes/checkbox_control.css +0 -31
  355. data/lib/frameworks/sproutcore/themes/ace/src/controls/progress/progress_view/progress_view.css +0 -70
  356. data/lib/frameworks/sproutcore/themes/ace/src/controls/progress/progress_view/progress_view_content.png +0 -0
  357. data/lib/frameworks/sproutcore/themes/ace/src/controls/progress/progress_view/progress_view_content.psd +0 -0
  358. data/lib/frameworks/sproutcore/themes/ace/src/controls/progress/progress_view/progress_view_indeterminate_content.psd +0 -0
  359. data/lib/frameworks/sproutcore/themes/ace/src/controls/progress/progress_view/progress_view_track.png +0 -0
  360. data/lib/frameworks/sproutcore/themes/ace/src/controls/progress/progress_view/progress_view_track.psd +0 -0
  361. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio.css +0 -61
  362. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_active.png +0 -0
  363. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_active.psd +0 -0
  364. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_mixed.png +0 -0
  365. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_mixed.psd +0 -0
  366. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_mixed_active.png +0 -0
  367. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_mixed_active.psd +0 -0
  368. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_selected.png +0 -0
  369. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_selected.psd +0 -0
  370. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_selected_active.png +0 -0
  371. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_selected_active.psd +0 -0
  372. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_unselected.png +0 -0
  373. data/lib/frameworks/sproutcore/themes/ace/src/controls/radio/radio_unselected.psd +0 -0
  374. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/horizontal.css +0 -77
  375. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/thumb.png +0 -0
  376. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/thumb.psd +0 -0
  377. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/track_and_arrows.png +0 -0
  378. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/track_and_arrows.psd +0 -0
  379. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/track_and_arrows_active.png +0 -0
  380. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/horizontal/track_and_arrows_active.psd +0 -0
  381. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical.psd +0 -0
  382. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/thumb.png +0 -0
  383. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/thumb.psd +0 -0
  384. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/track_and_arrows.png +0 -0
  385. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/track_and_arrows.psd +0 -0
  386. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/track_and_arrows_active.png +0 -0
  387. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/track_and_arrows_active.psd +0 -0
  388. data/lib/frameworks/sproutcore/themes/ace/src/controls/scroll/vertical/vertical.css +0 -74
  389. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented.css +0 -92
  390. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_active.png +0 -0
  391. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_active.psd +0 -0
  392. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_normal.png +0 -0
  393. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_normal.psd +0 -0
  394. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_selected.png +0 -0
  395. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_selected.psd +0 -0
  396. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_selected_active.png +0 -0
  397. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/18px/segmented_selected_active.psd +0 -0
  398. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented.css +0 -87
  399. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_active.png +0 -0
  400. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_active.psd +0 -0
  401. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_normal.png +0 -0
  402. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_normal.psd +0 -0
  403. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_selected.png +0 -0
  404. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_selected.psd +0 -0
  405. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_selected_active.png +0 -0
  406. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/24px/segmented_selected_active.psd +0 -0
  407. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented.css +0 -93
  408. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_active.png +0 -0
  409. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_active.psd +0 -0
  410. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_normal.png +0 -0
  411. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_normal.psd +0 -0
  412. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_selected.png +0 -0
  413. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_selected.psd +0 -0
  414. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_selected_active.png +0 -0
  415. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/30px/segmented_selected_active.psd +0 -0
  416. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented.css +0 -101
  417. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_active.png +0 -0
  418. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_active.psd +0 -0
  419. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_normal.png +0 -0
  420. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_normal.psd +0 -0
  421. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_selected.png +0 -0
  422. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_selected.psd +0 -0
  423. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_selected_active.png +0 -0
  424. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/44px/segmented_selected_active.psd +0 -0
  425. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/segmented.css +0 -73
  426. data/lib/frameworks/sproutcore/themes/ace/src/controls/segmented/segmented.js +0 -0
  427. data/lib/frameworks/sproutcore/themes/ace/src/controls/select/active_select.png +0 -0
  428. data/lib/frameworks/sproutcore/themes/ace/src/controls/select/active_select.psd +0 -0
  429. data/lib/frameworks/sproutcore/themes/ace/src/controls/select/menu.png +0 -0
  430. data/lib/frameworks/sproutcore/themes/ace/src/controls/select/normal_select.png +0 -0
  431. data/lib/frameworks/sproutcore/themes/ace/src/controls/select/normal_select.psd +0 -0
  432. data/lib/frameworks/sproutcore/themes/ace/src/controls/select/select.css +0 -45
  433. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/14px/knob.png +0 -0
  434. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/14px/knob.psd +0 -0
  435. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/14px/knob_active.png +0 -0
  436. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/14px/knob_active.psd +0 -0
  437. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/14px/slider.css +0 -43
  438. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/16px/knob.png +0 -0
  439. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/16px/knob.psd +0 -0
  440. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/16px/knob_active.png +0 -0
  441. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/16px/knob_active.psd +0 -0
  442. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/16px/slider.css +0 -44
  443. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/knob.png +0 -0
  444. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/knob.psd +0 -0
  445. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/knob_active.png +0 -0
  446. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/knob_active.psd +0 -0
  447. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/slider.css +0 -44
  448. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/track.png +0 -0
  449. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/22px/track.psd +0 -0
  450. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/slider.css +0 -3
  451. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/slider.js +0 -27
  452. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/track.png +0 -0
  453. data/lib/frameworks/sproutcore/themes/ace/src/controls/slider/track.psd +0 -0
  454. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch.psd +0 -0
  455. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch_handle.png +0 -0
  456. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch_handle.psd +0 -0
  457. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch_off.png +0 -0
  458. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch_off.psd +0 -0
  459. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch_on.png +0 -0
  460. data/lib/frameworks/sproutcore/themes/ace/src/controls/switch/24px/switch_on.psd +0 -0
  461. data/lib/frameworks/sproutcore/themes/ace/src/core/loading.css +0 -50
  462. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/active_button.png +0 -0
  463. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/active_button.psd +0 -0
  464. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/active_button_capsule.png +0 -0
  465. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/active_button_capsule.psd +0 -0
  466. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/active_button_pointer.png +0 -0
  467. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/active_button_pointer.psd +0 -0
  468. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/button_view.css +0 -142
  469. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/normal_button.png +0 -0
  470. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/normal_button.psd +0 -0
  471. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/normal_button_capsule.png +0 -0
  472. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/normal_button_capsule.psd +0 -0
  473. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/normal_button_pointer.png +0 -0
  474. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/normal_button_pointer.psd +0 -0
  475. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_active_button.png +0 -0
  476. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_active_button.psd +0 -0
  477. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_active_button_capsule.png +0 -0
  478. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_active_button_capsule.psd +0 -0
  479. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_active_button_pointer.png +0 -0
  480. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_active_button_pointer.psd +0 -0
  481. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_button.png +0 -0
  482. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_button.psd +0 -0
  483. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_button_capsule.png +0 -0
  484. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_button_capsule.psd +0 -0
  485. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_button_pointer.png +0 -0
  486. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/24px/selected_button_pointer.psd +0 -0
  487. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/active_button.png +0 -0
  488. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/active_button.psd +0 -0
  489. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/active_button_pointer.png +0 -0
  490. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/active_button_pointer.psd +0 -0
  491. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/button_view_30.css +0 -111
  492. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/normal_button.png +0 -0
  493. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/normal_button.psd +0 -0
  494. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/normal_button_pointer.png +0 -0
  495. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/normal_button_pointer.psd +0 -0
  496. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_active_button.png +0 -0
  497. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_active_button.psd +0 -0
  498. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_active_button_pointer.png +0 -0
  499. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_active_button_pointer.psd +0 -0
  500. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_button.png +0 -0
  501. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_button.psd +0 -0
  502. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_button_pointer.png +0 -0
  503. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/30px/selected_button_pointer.psd +0 -0
  504. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/button.css +0 -20
  505. data/lib/frameworks/sproutcore/themes/ace/src/dark/buttons/button.js +0 -3
  506. data/lib/frameworks/sproutcore/themes/ace/src/form/iphone/form.js +0 -21
  507. data/lib/frameworks/sproutcore/themes/ace/src/form/iphone/form_row.js +0 -24
  508. data/lib/frameworks/sproutcore/themes/ace/src/form/iphone/iphone.css +0 -51
  509. data/lib/frameworks/sproutcore/themes/ace/src/form/iphone/iphone.js +0 -14
  510. data/lib/frameworks/sproutcore/themes/ace/src/form/iphone/label.js +0 -32
  511. data/lib/frameworks/sproutcore/themes/ace/src/panels/pane.css +0 -3
  512. data/lib/frameworks/sproutcore/themes/ace/src/panels/panel.css +0 -70
  513. data/lib/frameworks/sproutcore/themes/ace/src/panels/panel.png +0 -0
  514. data/lib/frameworks/sproutcore/themes/ace/src/panels/panel.psd +0 -0
  515. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/checkmark.png +0 -0
  516. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/checkmark.psd +0 -0
  517. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/checkmark_active.png +0 -0
  518. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/checkmark_active.psd +0 -0
  519. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/down.png +0 -0
  520. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/down.psd +0 -0
  521. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/menu.css +0 -154
  522. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/menu.png +0 -0
  523. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/menu.psd +0 -0
  524. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/menu_item.png +0 -0
  525. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/menu_item.psd +0 -0
  526. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/up.png +0 -0
  527. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/menu/up.psd +0 -0
  528. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/picker.css +0 -0
  529. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/picker.js +0 -1
  530. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/picker.js +0 -14
  531. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover.css +0 -271
  532. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover.js +0 -5
  533. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover.png +0 -0
  534. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover.psd +0 -0
  535. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_empty.png +0 -0
  536. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_empty.psd +0 -0
  537. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_notoolbar.png +0 -0
  538. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_notoolbar.psd +0 -0
  539. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_pointers.png +0 -0
  540. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_pointers.psd +0 -0
  541. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_pointers_notoolbar.png +0 -0
  542. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_pointers_notoolbar.psd +0 -0
  543. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/popover_sourcelist.css +0 -5
  544. data/lib/frameworks/sproutcore/themes/ace/src/panels/picker/popover/workspace.js +0 -51
  545. data/lib/frameworks/sproutcore/themes/ace/src/theme.js +0 -12
  546. data/lib/frameworks/sproutcore/themes/ace/src/toolbars/normal/selection.png +0 -0
  547. data/lib/frameworks/sproutcore/themes/ace/src/toolbars/normal/toolbar.css +0 -8
  548. data/lib/frameworks/sproutcore/themes/ace/src/toolbars/normal/toolbar.png +0 -0
  549. data/lib/frameworks/sproutcore/themes/ace/src/toolbars/normal/toolbar.psd +0 -0
  550. data/lib/frameworks/sproutcore/themes/ace/src/toolbars/panel_header/panel_header.png +0 -0
  551. data/lib/frameworks/sproutcore/themes/ace/src/toolbars/panel_header/panel_header.psd +0 -0
  552. data/lib/frameworks/sproutcore/themes/empty_theme/theme.js +0 -16
@@ -16,14 +16,6 @@ SC.MODE_APPEND = 'append';
16
16
  /** set update mode on context to prepend content */
17
17
  SC.MODE_PREPEND = 'prepend';
18
18
 
19
- /** list of numeric properties that should not have 'px' appended */
20
- SC.NON_PIXEL_PROPERTIES = 'zIndex font-weight opacity'.w();
21
-
22
- /** a list of styles that get expanded into multiple properties, add more as you discover them */
23
- SC.COMBO_STYLES = {
24
- WebkitTransition: 'WebkitTransitionProperty WebkitTransitionDuration WebkitTransitionDelay WebkitTransitionTimingFunction'.w()
25
- };
26
-
27
19
  /**
28
20
  @namespace
29
21
 
@@ -396,8 +388,7 @@ SC.RenderContext = SC.Builder.create(/** SC.RenderContext.fn */ {
396
388
  if (!styles.hasOwnProperty(key)) continue ;
397
389
  value = styles[key];
398
390
  if (value === null) continue; // skip empty styles
399
-
400
- if (!isNaN(value) && !SC.NON_PIXEL_PROPERTIES.contains(key)) value += "px";
391
+ if (typeof value === SC.T_NUMBER && key !== "zIndex") value += "px";
401
392
  pair[0] = this._dasherizeStyleName(key);
402
393
  pair[1] = value;
403
394
  joined.push(pair.join(': '));
@@ -460,7 +451,7 @@ SC.RenderContext = SC.Builder.create(/** SC.RenderContext.fn */ {
460
451
  if(!styles.hasOwnProperty(key)) continue ;
461
452
  value = styles[key];
462
453
  if (value === null) continue; // skip empty styles
463
- if (!isNaN(value) && !SC.NON_PIXEL_PROPERTIES.contains(key)) value += "px";
454
+ if (!isNaN(value) && key !== "zIndex") value += "px";
464
455
 
465
456
  pair[0] = this._dasherizeStyleName(key);
466
457
  pair[1] = value;
@@ -816,23 +807,7 @@ SC.RenderContext = SC.Builder.create(/** SC.RenderContext.fn */ {
816
807
  return this ;
817
808
  }
818
809
  },
819
-
820
- _deleteComboStyles: function(styles, key) {
821
- var comboStyles = SC.COMBO_STYLES[key],
822
- didChange = NO;
823
-
824
- if (comboStyles) {
825
- var idx;
826
- for (idx=0; idx < comboStyles.length; idx++) {
827
- if (styles[comboStyles[idx]]) {
828
- delete styles[comboStyles[idx]];
829
- didChange = YES;
830
- }
831
- }
832
- }
833
- return didChange;
834
- },
835
-
810
+
836
811
  /**
837
812
  Apply the passed styles to the tag. You can pass either a single key
838
813
  value pair or a hash of styles. Note that if you set a style on an
@@ -848,25 +823,22 @@ SC.RenderContext = SC.Builder.create(/** SC.RenderContext.fn */ {
848
823
  // clone them if needed. This will get the actual styles hash so we can
849
824
  // edit it directly.
850
825
  var key, didChange = NO, styles = this.styles();
851
-
826
+
852
827
  // simple form
853
828
  if (typeof nameOrStyles === SC.T_STRING) {
854
829
  if (value === undefined) { // reader
855
830
  return styles[nameOrStyles];
856
831
  } else { // writer
857
- didChange = this._deleteComboStyles(styles, nameOrStyles);
858
832
  if (styles[nameOrStyles] !== value) {
859
833
  styles[nameOrStyles] = value ;
860
- didChange = YES ;
834
+ this._stylesDidChange = YES ;
861
835
  }
862
- if (didChange) this._stylesDidChange = YES;
863
836
  }
864
837
 
865
838
  // bulk form
866
839
  } else {
867
840
  for(key in nameOrStyles) {
868
841
  if (!nameOrStyles.hasOwnProperty(key)) continue ;
869
- didChange = didChange || this._deleteComboStyles(styles, key);
870
842
  value = nameOrStyles[key];
871
843
  if (styles[key] !== value) {
872
844
  styles[key] = value;
@@ -256,26 +256,24 @@ SC.Response = SC.Object.extend(
256
256
  var req = this.get('request');
257
257
  var source = req ? req.get('source') : null;
258
258
 
259
- SC.RunLoop.begin();
260
-
261
- // invoke the source, giving a chance to fixup the reponse or (more
262
- // likely) cancel the request.
263
- if (source && source.willReceive) source.willReceive(req, this);
264
-
265
- // invoke the callback. note if the response was cancelled or not
266
- callback.call(context, !this.get('isCancelled'));
267
-
268
- // if we weren't cancelled, then give the source first crack at handling
269
- // the response. if the source doesn't want listeners to be notified,
270
- // it will cancel the response.
271
- if (!this.get('isCancelled') && source && source.didReceive) {
272
- source.didReceive(req, this);
273
- }
259
+ SC.run(function() {
260
+ // invoke the source, giving a chance to fixup the reponse or (more
261
+ // likely) cancel the request.
262
+ if (source && source.willReceive) source.willReceive(req, this);
274
263
 
275
- // notify listeners if we weren't cancelled.
276
- if (!this.get('isCancelled')) this.notify();
264
+ // invoke the callback. note if the response was cancelled or not
265
+ callback.call(context, !this.get('isCancelled'));
277
266
 
278
- SC.RunLoop.end();
267
+ // if we weren't cancelled, then give the source first crack at handling
268
+ // the response. if the source doesn't want listeners to be notified,
269
+ // it will cancel the response.
270
+ if (!this.get('isCancelled') && source && source.didReceive) {
271
+ source.didReceive(req, this);
272
+ }
273
+
274
+ // notify listeners if we weren't cancelled.
275
+ if (!this.get('isCancelled')) this.notify();
276
+ }, this);
279
277
  }
280
278
 
281
279
  // no matter what, remove from inflight queue
@@ -457,7 +455,7 @@ SC.XHRResponse = SC.Response.extend({
457
455
  // configure async callback - differs per browser...
458
456
  async = !!this.getPath('request.isAsynchronous') ;
459
457
  if (async) {
460
- if (!SC.browser.msie) {
458
+ if (!SC.browser.msie && !SC.browser.opera ) {
461
459
  SC.Event.add(rawRequest, 'readystatechange', this,
462
460
  this.finishRequest, rawRequest) ;
463
461
  } else {
@@ -258,28 +258,35 @@ SC.RootResponder = SC.Object.extend({
258
258
 
259
259
  @returns Rect
260
260
  */
261
- computeWindowSize: function() {
262
- var size ;
263
- if (window.innerHeight) {
264
- size = {
265
- width: window.innerWidth,
266
- height: window.innerHeight
267
- } ;
268
-
269
- } else if (document.documentElement && document.documentElement.clientHeight) {
270
- size = {
271
- width: document.documentElement.clientWidth,
272
- height: document.documentElement.clientHeight
273
- } ;
274
-
275
- } else if (document.body) {
276
- size = {
277
- width: document.body.clientWidth,
278
- height: document.body.clientHeight
279
- } ;
280
- }
281
- return size;
282
- },
261
+ computeWindowSize: function() {
262
+ var size, bod, docElement;
263
+ if(!this._bod || !this._docElement){
264
+ bod = document.body;
265
+ docElement = document.documentElement;
266
+ this._bod=bod;
267
+ this._docElement=docElement;
268
+ }else{
269
+ bod = this._bod;
270
+ docElement = this._docElement;
271
+ }
272
+ if (window.innerHeight) {
273
+ size = {
274
+ width: window.innerWidth,
275
+ height: window.innerHeight
276
+ } ;
277
+ } else if (docElement && docElement.clientHeight) {
278
+ size = {
279
+ width: docElement.clientWidth,
280
+ height: docElement.clientHeight
281
+ };
282
+ } else if (bod) {
283
+ size = {
284
+ width: bod.clientWidth,
285
+ height: bod.clientHeight
286
+ } ;
287
+ }
288
+ return size;
289
+ },
283
290
 
284
291
  /**
285
292
  On window resize, notifies panes of the change.
@@ -296,12 +303,12 @@ SC.RootResponder = SC.Object.extend({
296
303
  // calculate new window size...
297
304
  var newSize = this.computeWindowSize(), oldSize = this.get('currentWindowSize');
298
305
  this.set('currentWindowSize', newSize); // update size
299
-
306
+
300
307
  if (!SC.rectsEqual(newSize, oldSize)) {
301
308
  //Notify orientation change. This is faster than waiting for the orientation
302
309
  //change event.
303
310
  if(SC.platform.touch){
304
- var body = SC.$(document.body);
311
+ var body = SC.$(document.body);
305
312
  if(newSize.height>= newSize.width) {
306
313
  SC.device.set('orientation', 'portrait');
307
314
  }
@@ -311,9 +318,9 @@ SC.RootResponder = SC.Object.extend({
311
318
  }
312
319
  // notify panes
313
320
  if (this.panes) {
314
- SC.RunLoop.begin() ;
315
- this.panes.invoke('windowSizeDidChange', oldSize, newSize) ;
316
- SC.RunLoop.end() ;
321
+ SC.run(function() {
322
+ this.panes.invoke('windowSizeDidChange', oldSize, newSize) ;
323
+ }, this);
317
324
  }
318
325
  }
319
326
  },
@@ -336,9 +343,9 @@ SC.RootResponder = SC.Object.extend({
336
343
  if (!this.get('hasFocus')) {
337
344
  SC.$('body').addClass('sc-focus').removeClass('sc-blur');
338
345
 
339
- SC.RunLoop.begin();
340
- this.set('hasFocus', YES);
341
- SC.RunLoop.end();
346
+ SC.run(function() {
347
+ this.set('hasFocus', YES);
348
+ }, this);
342
349
  }
343
350
  return YES ; // allow default
344
351
  },
@@ -370,9 +377,9 @@ SC.RootResponder = SC.Object.extend({
370
377
  if (this.get('hasFocus')) {
371
378
  SC.$('body').addClass('sc-blur').removeClass('sc-focus');
372
379
 
373
- SC.RunLoop.begin();
374
- this.set('hasFocus', NO);
375
- SC.RunLoop.end();
380
+ SC.run(function() {
381
+ this.set('hasFocus', NO);
382
+ }, this);
376
383
  }
377
384
  return YES ; // allow default
378
385
  },
@@ -415,20 +422,20 @@ SC.RootResponder = SC.Object.extend({
415
422
  @returns {Boolean} YES if action was performed, NO otherwise
416
423
  @test in targetForAction
417
424
  */
418
- sendAction: function( action, target, sender, pane, context, firstResponder) {
419
- target = this.targetForAction(action, target, sender, pane, firstResponder) ;
425
+ sendAction: function( action, target, sender, pane, context) {
426
+ target = this.targetForAction(action, target, sender, pane) ;
420
427
 
421
428
  // HACK: If the target is a ResponderContext, forward the action.
422
429
  if (target && target.isResponderContext) {
423
- return !!target.sendAction(action, sender, context, firstResponder);
430
+ return !!target.sendAction(action, sender, context);
424
431
  } else return target && target.tryToPerform(action, sender);
425
432
  },
426
433
 
427
- _responderFor: function(target, methodName, firstResponder) {
434
+ _responderFor: function(target, methodName) {
428
435
  var defaultResponder = target ? target.get('defaultResponder') : null;
429
436
 
430
437
  if (target) {
431
- target = firstResponder || target.get('firstResponder') || target;
438
+ target = target.get('firstResponder') || target;
432
439
  do {
433
440
  if (target.respondsTo(methodName)) return target ;
434
441
  } while ((target = target.get('nextResponder'))) ;
@@ -465,10 +472,9 @@ SC.RootResponder = SC.Object.extend({
465
472
  @param {String} method name for target
466
473
  @param {Object} sender optional sender
467
474
  @param {SC.Pane} optional pane
468
- @param {firstResponder} a first responder to use
469
475
  @returns {Object} target object or null if none found
470
476
  */
471
- targetForAction: function(methodName, target, sender, pane, firstResponder) {
477
+ targetForAction: function(methodName, target, sender, pane) {
472
478
 
473
479
  // 1. no action, no target...
474
480
  if (!methodName || (SC.typeOf(methodName) !== SC.T_STRING)) {
@@ -482,7 +488,7 @@ SC.RootResponder = SC.Object.extend({
482
488
  SC.objectForPropertyPath(target, sender);
483
489
  }
484
490
 
485
- if (target) {
491
+ if (target && !target.isResponderContext) {
486
492
  if (target.respondsTo && !target.respondsTo(methodName)) {
487
493
  target = null ;
488
494
  } else if (SC.typeOf(target[methodName]) !== SC.T_FUNCTION) {
@@ -495,7 +501,7 @@ SC.RootResponder = SC.Object.extend({
495
501
 
496
502
  // 3. an explicit pane was passed...
497
503
  if (pane) {
498
- return this._responderFor(pane, methodName, firstResponder) ;
504
+ return this._responderFor(pane, methodName) ;
499
505
  }
500
506
 
501
507
  // 4. no target or pane passed... try to find target in the active panes
@@ -556,16 +562,14 @@ SC.RootResponder = SC.Object.extend({
556
562
  sendEvent: function(action, evt, target) {
557
563
  var pane, ret ;
558
564
 
559
- SC.RunLoop.begin() ;
560
-
561
- // get the target pane
562
- if (target) pane = target.get('pane') ;
563
- else pane = this.get('menuPane') || this.get('keyPane') || this.get('mainPane') ;
564
-
565
- // if we found a valid pane, send the event to it
566
- ret = (pane) ? pane.sendEvent(action, evt, target) : null ;
565
+ SC.run(function() {
566
+ // get the target pane
567
+ if (target) pane = target.get('pane') ;
568
+ else pane = this.get('menuPane') || this.get('keyPane') || this.get('mainPane') ;
567
569
 
568
- SC.RunLoop.end() ;
570
+ // if we found a valid pane, send the event to it
571
+ ret = (pane) ? pane.sendEvent(action, evt, target) : null ;
572
+ }, this);
569
573
 
570
574
  return ret ;
571
575
  },
@@ -658,6 +662,15 @@ SC.RootResponder = SC.Object.extend({
658
662
  var mousewheel = SC.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel';
659
663
  SC.Event.add(document, mousewheel, this, this.mousewheel);
660
664
 
665
+
666
+
667
+ // If the browser is identifying itself as a touch-enabled browser, but
668
+ // touch events are not present, assume this is a desktop browser doing
669
+ // user agent spoofing and simulate touch events automatically.
670
+ if (SC.browser && SC.platform && SC.browser.mobileSafari && !SC.platform.touch) {
671
+ SC.platform.simulateTouchEvents();
672
+ }
673
+
661
674
  // do some initial set
662
675
  this.set('currentWindowSize', this.computeWindowSize()) ;
663
676
  this.focus(); // assume the window is focused when you load.
@@ -741,8 +754,24 @@ SC.RootResponder = SC.Object.extend({
741
754
  };
742
755
  SC.RunLoop.prototype.endRunLoop = patch;
743
756
  }
757
+
758
+ // Orientation changes are not being reliably reported with iPhone 0S 3
759
+ // We do this initialization to double check the right orientation.
760
+ // This happens if the orientation has changed from the moment the app
761
+ // started loading until the app is set until isReady
762
+ if(SC.platform.touch){
763
+ var newSize = this.computeWindowSize(),
764
+ body = SC.$(document.body);
765
+
766
+ if(newSize.height>= newSize.width) {
767
+ SC.device.set('orientation', 'portrait');
768
+ }
769
+ else {
770
+ SC.device.set('orientation', 'landscape');
771
+ }
772
+ }
744
773
  },
745
-
774
+
746
775
  // ................................................................................
747
776
  // TOUCH SUPPORT
748
777
  //
@@ -773,7 +802,7 @@ SC.RootResponder = SC.Object.extend({
773
802
  _touches: {},
774
803
 
775
804
  /**
776
- Returns the touches that are registered to the specified view or responder; undefined if none.
805
+ Returns the touches that are registered to the specified view; undefined if none.
777
806
 
778
807
  When views receive a touch event, they have the option to subscribe to it.
779
808
  They are then mapped to touch events and vice-versa. This returns touches mapped to the view.
@@ -842,7 +871,7 @@ SC.RootResponder = SC.Object.extend({
842
871
 
843
872
  assignTouch: function(touch, view) {
844
873
  // sanity-check
845
- if (touch.hasEnded) throw "This touch is done for! Yet something tried to assign it.";
874
+ if (touch.hasEnded) throw "Attemt to assign a touch that is already finished.";
846
875
 
847
876
  // unassign from old view if necessary
848
877
  if (touch.view === view) return;
@@ -894,10 +923,9 @@ SC.RootResponder = SC.Object.extend({
894
923
  The touch responder for any given touch is the view which will receive touch events
895
924
  for that touch. Quite simple.
896
925
 
897
- By default, makeTouchResponder takes the supplied responder and just uses it. However, if upViewChain
898
- is supplied and is YES, makeTouchResponder takes a potential responder as an argument, and, by calling
899
- touchStart on each nextResponder, finds the actual responder. As a side-effect of how it does this, touchStart
900
- is called on the new responder before touchCancelled is called on the old one (touchStart has to accept the touch
926
+ makeTouchResponder takes a potential responder as an argument, and, by calling touchStart on each
927
+ nextResponder, finds the actual responder. As a side-effect of how it does this, touchStart is called
928
+ on the new responder before touchCancelled is called on the old one (touchStart has to accept the touch
901
929
  before it can be considered cancelled).
902
930
 
903
931
  You usually don't have to think about this at all. However, if you don't want your view to,
@@ -1065,8 +1093,6 @@ SC.RootResponder = SC.Object.extend({
1065
1093
  this.makeTouchResponder(touch, target, shouldStack, YES);
1066
1094
  },
1067
1095
 
1068
-
1069
-
1070
1096
  /** @private
1071
1097
  Artificially calls endTouch for any touch which is no longer present. This is necessary because
1072
1098
  _sometimes_, WebKit ends up not sending endtouch.
@@ -1115,7 +1141,11 @@ SC.RootResponder = SC.Object.extend({
1115
1141
  responder = responders[responderIdx];
1116
1142
  while (responder) {
1117
1143
  // tell it
1118
- if (responder[action]) responder[action](touchEntry, evt);
1144
+ try { // keep in mind that it might only _be_ here because it crashed...
1145
+ if (responder[action]) responder[action](touchEntry, evt);
1146
+ } catch(e) {
1147
+ console.error('crashed on endTouch');
1148
+ }
1119
1149
 
1120
1150
  // check to see if the responder changed, and stop immediately if so.
1121
1151
  if (touchEntry.touchResponder !== originalResponder) break;
@@ -1133,9 +1163,26 @@ SC.RootResponder = SC.Object.extend({
1133
1163
  "Finishes" a touch. That is, it eradicates it from our touch entries and removes all responder, etc. properties.
1134
1164
  */
1135
1165
  finishTouch: function(touch) {
1166
+ var elem;
1167
+
1136
1168
  // ensure the touch is indeed unassigned.
1137
1169
  this.unassignTouch(touch);
1138
1170
 
1171
+ // If we rescued this touch's initial element, we should remove it
1172
+ // from the DOM and garbage collect now. See setup() for an
1173
+ // explanation of this bug/workaround.
1174
+ if (elem = touch._rescuedElement) {
1175
+ if (elem.swapNode && elem.swapNode.parentNode) {
1176
+ elem.swapNode.parentNode.replaceChild(elem, elem.swapNode);
1177
+ } else if (elem.parentNode === SC.touchHoldingPen) {
1178
+ SC.touchHoldingPen.removeChild(elem);
1179
+ }
1180
+ delete touch._rescuedElement;
1181
+ elem.swapNode = null;
1182
+ elem = null;
1183
+ }
1184
+
1185
+
1139
1186
  // clear responders (just to be thorough)
1140
1187
  touch.touchResponders = null;
1141
1188
  touch.touchResponder = null;
@@ -1158,16 +1205,16 @@ SC.RootResponder = SC.Object.extend({
1158
1205
  @returns {Boolean}
1159
1206
  */
1160
1207
  touchstart: function(evt) {
1161
- SC.RunLoop.begin();
1162
-
1163
- // sometimes WebKit is a bit... iffy:
1164
- this.endMissingTouches(evt.touches);
1208
+ var hidingTouchIntercept = NO;
1165
1209
 
1166
- // as you were...
1167
- try {
1210
+ SC.run(function() {
1211
+ // sometimes WebKit is a bit... iffy:
1212
+ this.endMissingTouches(evt.touches);
1213
+
1214
+ // as you were...
1168
1215
  // loop through changed touches, calling touchStart, etc.
1169
- var idx, touches = evt.changedTouches, len = touches.length, target, view, touch, touchEntry,
1170
- hidingTouchIntercept = NO;
1216
+ var idx, touches = evt.changedTouches, len = touches.length,
1217
+ target, view, touch, touchEntry;
1171
1218
 
1172
1219
  // prepare event for touch mapping.
1173
1220
  evt.touchContext = this;
@@ -1178,10 +1225,13 @@ SC.RootResponder = SC.Object.extend({
1178
1225
 
1179
1226
  // Create an SC.Touch instance for every touch.
1180
1227
  touchEntry = SC.Touch.create(touch, this);
1181
-
1228
+
1229
+ // skip the touch if there was no target
1230
+ if (!touchEntry.targetView) continue;
1231
+
1182
1232
  // account for hidden touch intercept (passing through touches, etc.)
1183
1233
  if (touchEntry.hidesTouchIntercept) hidingTouchIntercept = YES;
1184
-
1234
+
1185
1235
  // set timestamp
1186
1236
  touchEntry.timeStamp = evt.timeStamp;
1187
1237
 
@@ -1191,7 +1241,7 @@ SC.RootResponder = SC.Object.extend({
1191
1241
  this._touches[touch.identifier] = touchEntry;
1192
1242
 
1193
1243
  // set the event (so default action, etc. can be stopped)
1194
- touch.event = evt; // will be unset momentarily
1244
+ touchEntry.event = evt; // will be unset momentarily
1195
1245
 
1196
1246
  // send out event thing: creates a chain, goes up it, then down it,
1197
1247
  // with startTouch and cancelTouch. in this case, only startTouch, as
@@ -1200,21 +1250,17 @@ SC.RootResponder = SC.Object.extend({
1200
1250
  this.captureTouch(touchEntry, this);
1201
1251
 
1202
1252
  // Unset the reference to the original event so we can garbage collect.
1203
- touch.event = null;
1253
+ touchEntry.event = null;
1204
1254
  }
1205
- } catch (e) {
1206
- SC.Logger.warn('Exception during touchStart: %@'.fmt(e)) ;
1207
- SC.RunLoop.end();
1208
- return NO ;
1209
- }
1255
+ }, this);
1210
1256
 
1211
- SC.RunLoop.end();
1212
1257
 
1258
+ // hack for text fields
1213
1259
  if (hidingTouchIntercept) {
1214
- evt.allowDefault();
1215
1260
  return YES;
1216
1261
  }
1217
- return NO;
1262
+
1263
+ return evt.hasCustomEventHandling;
1218
1264
  },
1219
1265
 
1220
1266
  /**
@@ -1222,9 +1268,7 @@ SC.RootResponder = SC.Object.extend({
1222
1268
  used to keep track of when a specific type of touch event was last handled, to see if it needs to be re-handled
1223
1269
  */
1224
1270
  touchmove: function(evt) {
1225
- SC.RunLoop.begin();
1226
-
1227
- try {
1271
+ SC.run(function() {
1228
1272
  // pretty much all we gotta do is update touches, and figure out which views need updating.
1229
1273
  var touches = evt.changedTouches, touch, touchEntry,
1230
1274
  idx, len = touches.length, view, changedTouches, viewTouches, firstTouch,
@@ -1241,14 +1285,14 @@ SC.RootResponder = SC.Object.extend({
1241
1285
 
1242
1286
  // get our touch
1243
1287
  touchEntry = this._touches[touch.identifier];
1244
- if (touchEntry.hidesTouchIntercept) hidingTouchIntercept = YES;
1245
1288
 
1246
- // sanity-check
1289
+ // we may have no touch entry; this can happen if somehow the touch came to a non-SC area.
1247
1290
  if (!touchEntry) {
1248
- SC.Logger.log("Received a touchmove for a touch we don't know about. This is bad.");
1249
1291
  continue;
1250
1292
  }
1251
1293
 
1294
+ if (touchEntry.hidesTouchIntercept) hidingTouchIntercept = YES;
1295
+
1252
1296
  // update touch
1253
1297
  touchEntry.pageX = touch.pageX;
1254
1298
  touchEntry.pageY = touch.pageY;
@@ -1258,7 +1302,7 @@ SC.RootResponder = SC.Object.extend({
1258
1302
  // if the touch entry has a view
1259
1303
  if (touchEntry.touchResponder) {
1260
1304
  view = touchEntry.touchResponder;
1261
-
1305
+
1262
1306
  guid = SC.guidFor(view);
1263
1307
  // create a view entry
1264
1308
  if (!changedViews[guid]) changedViews[guid] = { "view": view, "touches": [] };
@@ -1291,9 +1335,9 @@ SC.RootResponder = SC.Object.extend({
1291
1335
  evt.touchContext = this; // so it can call touchesForView
1292
1336
 
1293
1337
  // and go
1294
- if (view.touchesDragged) view.touchesDragged(evt, viewTouches);
1338
+ view.tryToPerform("touchesDragged", evt, viewTouches);
1295
1339
  }
1296
-
1340
+
1297
1341
  // clear references to event
1298
1342
  touches = evt.changedTouches;
1299
1343
  len = touches.length;
@@ -1302,59 +1346,61 @@ SC.RootResponder = SC.Object.extend({
1302
1346
  touchEntry = this._touches[touch.identifier];
1303
1347
  touchEntry.event = null;
1304
1348
  }
1305
- } catch (e) {
1306
- SC.Logger.warn('Exception during touchMove: %@'.fmt(e)) ;
1307
- }
1308
- SC.RunLoop.end();
1309
-
1310
- return NO;
1349
+ }, this);
1350
+
1351
+ return evt.hasCustomEventHandling;
1311
1352
  },
1312
-
1353
+
1313
1354
  touchend: function(evt) {
1314
- SC.RunLoop.begin();
1315
- try {
1355
+ var hidesTouchIntercept = NO;
1356
+
1357
+ SC.run(function() {
1316
1358
  var touches = evt.changedTouches, touch, touchEntry,
1317
1359
  idx, len = touches.length,
1318
1360
  view, elem,
1319
1361
  action = evt.isCancel ? "touchCancelled" : "touchEnd", a,
1320
- responderIdx, responders, responder, hidesTouchIntercept = NO;
1362
+ responderIdx, responders, responder;
1321
1363
 
1322
1364
  for (idx = 0; idx < len; idx++) {
1323
1365
  //get touch+entry
1324
1366
  touch = touches[idx];
1325
1367
  touch.type = 'touchend';
1326
1368
  touchEntry = this._touches[touch.identifier];
1369
+
1370
+ // check if there is an entry
1371
+ if (!touchEntry) continue;
1372
+
1373
+ // continue work
1327
1374
  touchEntry.timeStamp = evt.timeStamp;
1328
1375
  touchEntry.pageX = touch.pageX;
1329
1376
  touchEntry.pageY = touch.pageY;
1330
1377
  touchEntry.type = 'touchend';
1331
-
1378
+ touchEntry.event = evt;
1379
+
1380
+ if (SC.LOG_TOUCH_EVENTS) SC.Logger.info('-- Received touch end');
1332
1381
  if (touchEntry.hidesTouchIntercept) {
1333
1382
  touchEntry.unhideTouchIntercept();
1334
1383
  hidesTouchIntercept = YES;
1335
1384
  }
1336
-
1385
+
1337
1386
  if (this._drag) {
1338
1387
  this._drag.tryToPerform('mouseUp', touch) ;
1339
1388
  this._drag = null ;
1340
1389
  }
1341
1390
 
1391
+ // unassign
1342
1392
  this.endTouch(touchEntry, action, evt);
1343
1393
  this.finishTouch(touchEntry);
1344
1394
  }
1345
- } catch (e) {
1346
- SC.Logger.warn('Exception during touchEnd: %@'.fmt(e)) ;
1347
- SC.RunLoop.end();
1348
- return NO ;
1349
- }
1395
+ }, this);
1350
1396
 
1351
- SC.RunLoop.end();
1352
1397
 
1398
+ // for text fields
1353
1399
  if (hidesTouchIntercept) {
1354
- evt.allowDefault();
1355
1400
  return YES;
1356
1401
  }
1357
- return NO;
1402
+
1403
+ return evt.hasCustomEventHandling;
1358
1404
  },
1359
1405
 
1360
1406
  /** @private
@@ -1463,14 +1509,25 @@ SC.RootResponder = SC.Object.extend({
1463
1509
  keydown: function(evt) {
1464
1510
  if (SC.none(evt)) return YES;
1465
1511
 
1512
+ var keyCode = evt.keyCode;
1513
+
1466
1514
  // Fix for IME input (japanese, mandarin).
1467
1515
  // If the KeyCode is 229 wait for the keyup and
1468
1516
  // trigger a keyDown if it is is enter onKeyup.
1469
- if (evt.keyCode===229){
1517
+ if (keyCode===229){
1470
1518
  this._IMEInputON = YES;
1471
1519
  return this.sendEvent('keyDown', evt);
1472
1520
  }
1473
1521
 
1522
+ // If user presses the escape key while we are in the middle of a
1523
+ // drag operation, cancel the drag operation and handle the event.
1524
+ if (keyCode === 27 && this._drag) {
1525
+ this._drag.cancelDrag();
1526
+ this._drag = null;
1527
+ this._mouseDownView = null;
1528
+ return YES;
1529
+ }
1530
+
1474
1531
  // Firefox does NOT handle delete here...
1475
1532
  if (SC.browser.mozilla && (evt.which === 8)) return true ;
1476
1533
 
@@ -1493,7 +1550,7 @@ SC.RootResponder = SC.Object.extend({
1493
1550
  // processing.
1494
1551
 
1495
1552
  // Arrow keys are handled in keypress for firefox
1496
- if (evt.keyCode>=37 && evt.keyCode<=40 && SC.browser.mozilla) return YES;
1553
+ if (keyCode>=37 && keyCode<=40 && SC.browser.mozilla) return YES;
1497
1554
 
1498
1555
 
1499
1556
  ret = this.sendEvent('keyDown', evt) ;
@@ -1584,49 +1641,47 @@ SC.RootResponder = SC.Object.extend({
1584
1641
  //
1585
1642
 
1586
1643
  mousedown: function(evt) {
1587
- try {
1588
- if(!SC.browser.msie) window.focus();
1589
-
1590
- // First, save the click count. The click count resets if the mouse down
1591
- // event occurs more than 200 ms later than the mouse up event or more
1592
- // than 8 pixels away from the mouse down event.
1593
- this._clickCount += 1 ;
1594
- if (!this._lastMouseUpAt || ((Date.now()-this._lastMouseUpAt) > 200)) {
1595
- this._clickCount = 1 ;
1596
- } else {
1597
- var deltaX = this._lastMouseDownX - evt.clientX,
1598
- deltaY = this._lastMouseDownY - evt.clientY,
1599
- distance = Math.sqrt(deltaX*deltaX + deltaY*deltaY) ;
1600
- if (distance > 8.0) this._clickCount = 1 ;
1601
- }
1602
- evt.clickCount = this._clickCount ;
1603
-
1604
- this._lastMouseDownX = evt.clientX ;
1605
- this._lastMouseDownY = evt.clientY ;
1606
-
1607
- var fr, view = this.targetViewForEvent(evt) ;
1644
+ if (SC.platform.touch) {
1645
+ evt.allowDefault();
1646
+ return YES;
1647
+ }
1648
+
1649
+ if(!SC.browser.msie) window.focus();
1650
+
1651
+ // First, save the click count. The click count resets if the mouse down
1652
+ // event occurs more than 200 ms later than the mouse up event or more
1653
+ // than 8 pixels away from the mouse down event.
1654
+ this._clickCount += 1 ;
1655
+ if (!this._lastMouseUpAt || ((Date.now()-this._lastMouseUpAt) > 200)) {
1656
+ this._clickCount = 1 ;
1657
+ } else {
1658
+ var deltaX = this._lastMouseDownX - evt.clientX,
1659
+ deltaY = this._lastMouseDownY - evt.clientY,
1660
+ distance = Math.sqrt(deltaX*deltaX + deltaY*deltaY) ;
1661
+ if (distance > 8.0) this._clickCount = 1 ;
1662
+ }
1663
+ evt.clickCount = this._clickCount ;
1608
1664
 
1609
- // InlineTextField needs to loose firstResponder whenever you click outside
1610
- // the view. This is a special case as textfields are not supposed to loose
1611
- // focus unless you click on a list, another textfield or an special
1612
- // view/control.
1665
+ this._lastMouseDownX = evt.clientX ;
1666
+ this._lastMouseDownY = evt.clientY ;
1613
1667
 
1614
- if(view) fr=view.getPath('pane.firstResponder');
1668
+ var fr, view = this.targetViewForEvent(evt) ;
1615
1669
 
1616
- if(fr && fr.kindOf(SC.InlineTextFieldView) && fr!==view){
1617
- fr.resignFirstResponder();
1618
- }
1670
+ // InlineTextField needs to loose firstResponder whenever you click outside
1671
+ // the view. This is a special case as textfields are not supposed to loose
1672
+ // focus unless you click on a list, another textfield or an special
1673
+ // view/control.
1619
1674
 
1620
- view = this._mouseDownView = this.sendEvent('mouseDown', evt, view) ;
1621
- if (view && view.respondsTo('mouseDragged')) this._mouseCanDrag = YES ;
1622
- } catch (e) {
1675
+ if(view) fr=view.getPath('pane.firstResponder');
1623
1676
 
1624
- SC.Logger.warn('Exception during mousedown: %@'.fmt(e)) ;
1625
- this._mouseDownView = null ;
1626
- this._mouseCanDrag = NO ;
1627
- throw e;
1677
+ if(fr && fr.kindOf(SC.InlineTextFieldView) && fr!==view){
1678
+ fr.resignFirstResponder();
1628
1679
  }
1629
1680
 
1681
+ view = this._mouseDownView = this.sendEvent('mouseDown', evt, view) ;
1682
+ if (view && view.respondsTo('mouseDragged')) this._mouseCanDrag = YES ;
1683
+
1684
+
1630
1685
  return view ? evt.hasCustomEventHandling : YES;
1631
1686
  },
1632
1687
 
@@ -1638,56 +1693,58 @@ SC.RootResponder = SC.Object.extend({
1638
1693
  sent.
1639
1694
  */
1640
1695
  mouseup: function(evt) {
1696
+ if (SC.platform.touch) {
1697
+ evt.allowDefault();
1698
+ return YES;
1699
+ }
1700
+
1641
1701
  this.targetViewForEvent(evt);
1642
- try {
1643
- if (this._drag) {
1644
- this._drag.tryToPerform('mouseUp', evt) ;
1645
- this._drag = null ;
1646
- }
1647
-
1648
- var handler = null, view = this._mouseDownView,
1649
- targetView = this.targetViewForEvent(evt);
1650
- this._lastMouseUpAt = Date.now() ;
1702
+
1703
+ if (this._drag) {
1704
+ this._drag.tryToPerform('mouseUp', evt) ;
1705
+ this._drag = null ;
1706
+ }
1651
1707
 
1652
- // record click count.
1653
- evt.clickCount = this._clickCount ;
1708
+ var handler = null, view = this._mouseDownView,
1709
+ targetView = this.targetViewForEvent(evt);
1710
+ this._lastMouseUpAt = Date.now() ;
1654
1711
 
1655
- // attempt the mouseup call only if there's a target.
1656
- // don't want a mouseup going to anyone unless they handled the mousedown...
1657
- if (view) {
1658
- handler = this.sendEvent('mouseUp', evt, view) ;
1712
+ // record click count.
1713
+ evt.clickCount = this._clickCount ;
1659
1714
 
1660
- // try doubleClick
1661
- if (!handler && (this._clickCount === 2)) {
1662
- handler = this.sendEvent('doubleClick', evt, view) ;
1663
- }
1715
+ // attempt the mouseup call only if there's a target.
1716
+ // don't want a mouseup going to anyone unless they handled the mousedown...
1717
+ if (view) {
1718
+ handler = this.sendEvent('mouseUp', evt, view) ;
1664
1719
 
1665
- // try single click
1666
- if (!handler) {
1667
- handler = this.sendEvent('click', evt, view) ;
1668
- }
1720
+ // try doubleClick
1721
+ if (!handler && (this._clickCount === 2)) {
1722
+ handler = this.sendEvent('doubleClick', evt, view) ;
1669
1723
  }
1670
1724
 
1671
- // try whoever's under the mouse if we haven't handle the mouse up yet
1725
+ // try single click
1672
1726
  if (!handler) {
1727
+ handler = this.sendEvent('click', evt, view) ;
1728
+ }
1729
+ }
1673
1730
 
1674
- // try doubleClick
1675
- if (this._clickCount === 2) {
1676
- handler = this.sendEvent('doubleClick', evt, targetView);
1677
- }
1731
+ // try whoever's under the mouse if we haven't handle the mouse up yet
1732
+ if (!handler) {
1678
1733
 
1679
- // try singleClick
1680
- if (!handler) {
1681
- handler = this.sendEvent('click', evt, targetView) ;
1682
- }
1734
+ // try doubleClick
1735
+ if (this._clickCount === 2) {
1736
+ handler = this.sendEvent('doubleClick', evt, targetView);
1683
1737
  }
1684
1738
 
1685
- // cleanup
1686
- this._mouseCanDrag = NO; this._mouseDownView = null ;
1687
- } catch (e) {
1688
- this._drag = null; this._mouseCanDrag = NO; this._mouseDownView = null ;
1689
- throw e;
1739
+ // try singleClick
1740
+ if (!handler) {
1741
+ handler = this.sendEvent('click', evt, targetView) ;
1742
+ }
1690
1743
  }
1744
+
1745
+ // cleanup
1746
+ this._mouseCanDrag = NO; this._mouseDownView = null ;
1747
+
1691
1748
  return (handler) ? evt.hasCustomEventHandling : YES ;
1692
1749
  },
1693
1750
 
@@ -1700,12 +1757,9 @@ SC.RootResponder = SC.Object.extend({
1700
1757
  },
1701
1758
 
1702
1759
  mousewheel: function(evt) {
1703
- try {
1704
- var view = this.targetViewForEvent(evt) ,
1705
- handler = this.sendEvent('mouseWheel', evt, view) ;
1706
- } catch (e) {
1707
- throw e;
1708
- }
1760
+ var view = this.targetViewForEvent(evt) ,
1761
+ handler = this.sendEvent('mouseWheel', evt, view) ;
1762
+
1709
1763
  return (handler) ? evt.hasCustomEventHandling : YES ;
1710
1764
  },
1711
1765
 
@@ -1721,6 +1775,11 @@ SC.RootResponder = SC.Object.extend({
1721
1775
  trigger calls to mouseDragged.
1722
1776
  */
1723
1777
  mousemove: function(evt) {
1778
+ if (SC.platform.touch) {
1779
+ evt.allowDefault();
1780
+ return YES;
1781
+ }
1782
+
1724
1783
  if (SC.browser.msie) {
1725
1784
  if (this._lastMoveX === evt.clientX && this._lastMoveY === evt.clientY) return;
1726
1785
  }
@@ -1730,68 +1789,64 @@ SC.RootResponder = SC.Object.extend({
1730
1789
  this._lastMoveX = evt.clientX;
1731
1790
  this._lastMoveY = evt.clientY;
1732
1791
 
1733
- SC.RunLoop.begin();
1734
- try {
1735
- // make sure the view gets focus no matter what. FF is inconsistant
1736
- // about this.
1737
- // this.focus();
1738
- // only do mouse[Moved|Entered|Exited|Dragged] if not in a drag session
1739
- // drags send their own events, e.g. drag[Moved|Entered|Exited]
1740
- if (this._drag) {
1741
- //IE triggers mousemove at the same time as mousedown
1742
- if(SC.browser.msie){
1743
- if (this._lastMouseDownX !== evt.clientX || this._lastMouseDownY !== evt.clientY) {
1744
- this._drag.tryToPerform('mouseDragged', evt);
1745
- }
1746
- }
1747
- else {
1748
- this._drag.tryToPerform('mouseDragged', evt);
1749
- }
1750
- } else {
1751
- var lh = this._lastHovered || [] , nh = [] , exited, loc, len,
1752
- view = this.targetViewForEvent(evt) ;
1753
-
1754
- // work up the view chain. Notify of mouse entered and
1755
- // mouseMoved if implemented.
1756
- while(view && (view !== this)) {
1757
- if (lh.indexOf(view) !== -1) {
1758
- view.tryToPerform('mouseMoved', evt);
1759
- nh.push(view) ;
1760
- } else {
1761
- view.tryToPerform('mouseEntered', evt);
1762
- nh.push(view) ;
1763
- }
1764
-
1765
- view = view.get('nextResponder');
1766
- }
1767
- // now find those views last hovered over that were no longer found
1768
- // in this chain and notify of mouseExited.
1769
- for(loc=0, len=lh.length; loc < len; loc++) {
1770
- view = lh[loc] ;
1771
- exited = view.respondsTo('mouseExited') ;
1772
- if (exited && !(nh.indexOf(view) !== -1)) {
1773
- view.tryToPerform('mouseExited',evt);
1774
- }
1775
- }
1776
- this._lastHovered = nh;
1777
-
1778
- // also, if a mouseDownView exists, call the mouseDragged action, if
1779
- // it exists.
1780
- if (this._mouseDownView) {
1781
- if(SC.browser.msie){
1782
- if (this._lastMouseDownX !== evt.clientX && this._lastMouseDownY !== evt.clientY) {
1783
- this._mouseDownView.tryToPerform('mouseDragged', evt);
1784
- }
1785
- }
1786
- else {
1787
- this._mouseDownView.tryToPerform('mouseDragged', evt);
1788
- }
1789
- }
1790
- }
1791
- } catch (e) {
1792
- throw e;
1793
- }
1794
- SC.RunLoop.end();
1792
+ SC.run(function() {
1793
+ // make sure the view gets focus no matter what. FF is inconsistant
1794
+ // about this.
1795
+ // this.focus();
1796
+ // only do mouse[Moved|Entered|Exited|Dragged] if not in a drag session
1797
+ // drags send their own events, e.g. drag[Moved|Entered|Exited]
1798
+ if (this._drag) {
1799
+ //IE triggers mousemove at the same time as mousedown
1800
+ if(SC.browser.msie){
1801
+ if (this._lastMouseDownX !== evt.clientX || this._lastMouseDownY !== evt.clientY) {
1802
+ this._drag.tryToPerform('mouseDragged', evt);
1803
+ }
1804
+ }
1805
+ else {
1806
+ this._drag.tryToPerform('mouseDragged', evt);
1807
+ }
1808
+ } else {
1809
+ var lh = this._lastHovered || [] , nh = [] , exited, loc, len,
1810
+ view = this.targetViewForEvent(evt) ;
1811
+
1812
+ // work up the view chain. Notify of mouse entered and
1813
+ // mouseMoved if implemented.
1814
+ while(view && (view !== this)) {
1815
+ if (lh.indexOf(view) !== -1) {
1816
+ view.tryToPerform('mouseMoved', evt);
1817
+ nh.push(view) ;
1818
+ } else {
1819
+ view.tryToPerform('mouseEntered', evt);
1820
+ nh.push(view) ;
1821
+ }
1822
+
1823
+ view = view.get('nextResponder');
1824
+ }
1825
+ // now find those views last hovered over that were no longer found
1826
+ // in this chain and notify of mouseExited.
1827
+ for(loc=0, len=lh.length; loc < len; loc++) {
1828
+ view = lh[loc] ;
1829
+ exited = view.respondsTo('mouseExited') ;
1830
+ if (exited && !(nh.indexOf(view) !== -1)) {
1831
+ view.tryToPerform('mouseExited',evt);
1832
+ }
1833
+ }
1834
+ this._lastHovered = nh;
1835
+
1836
+ // also, if a mouseDownView exists, call the mouseDragged action, if
1837
+ // it exists.
1838
+ if (this._mouseDownView) {
1839
+ if(SC.browser.msie){
1840
+ if (this._lastMouseDownX !== evt.clientX && this._lastMouseDownY !== evt.clientY) {
1841
+ this._mouseDownView.tryToPerform('mouseDragged', evt);
1842
+ }
1843
+ }
1844
+ else {
1845
+ this._mouseDownView.tryToPerform('mouseDragged', evt);
1846
+ }
1847
+ }
1848
+ }
1849
+ }, this);
1795
1850
  },
1796
1851
 
1797
1852
  // these methods are used to prevent unnecessary text-selection in IE,
@@ -1918,7 +1973,7 @@ SC.Touch.prototype = {
1918
1973
  the hasCustomEventHandling property to YES but does not cancel the event.
1919
1974
  */
1920
1975
  allowDefault: function() {
1921
- this.hasCustomEventHandling = YES ;
1976
+ this.event.hasCustomEventHandling = YES ;
1922
1977
  },
1923
1978
 
1924
1979
  /**
@@ -1935,7 +1990,7 @@ SC.Touch.prototype = {
1935
1990
  stop: function() {
1936
1991
  if (this.event) this.event.stop();
1937
1992
  },
1938
-
1993
+
1939
1994
  /**
1940
1995
  Removes from and calls touchEnd on the touch responder.
1941
1996
  */
@@ -1952,6 +2007,7 @@ SC.Touch.prototype = {
1952
2007
  this.touchContext.makeTouchResponder(this, responder, shouldStack, upViewChain);
1953
2008
  },
1954
2009
 
2010
+
1955
2011
  /**
1956
2012
  Captures, or recaptures, the touch. This works from the touch's raw target view
1957
2013
  up to the startingPoint, and finds either a view that returns YES to captureTouch() or