sproutcore 1.0.1003 → 1.0.1008
Sign up to get free protection for your applications and to get access to all the features.
- data/Buildfile +15 -3
- data/Rakefile +3 -7
- data/VERSION.yml +2 -2
- data/buildtasks/manifest.rake +2 -0
- data/frameworks/sproutcore/Buildfile +2 -0
- data/frameworks/sproutcore/HISTORY +218 -203
- data/frameworks/sproutcore/README +47 -6
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +4 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +2945 -4332
- data/frameworks/sproutcore/frameworks/bootstrap/README +9 -0
- data/frameworks/sproutcore/frameworks/bootstrap/core.js +7 -0
- data/frameworks/sproutcore/frameworks/bootstrap/setup_body_class_names.js +10 -0
- data/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +28 -0
- data/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +45 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +9 -8
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +49 -9
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +9 -0
- data/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +3 -2
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +81 -8
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +26 -5
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +47 -0
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +164 -32
- data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +32 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +56 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +15 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +16 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +22 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +32 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/core_methods.js +70 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +12 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +50 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +9 -9
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +8 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +79 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +24 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/error_methods.js +62 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +2 -0
- data/frameworks/sproutcore/frameworks/debug/core.js +10 -6
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +43 -18
- data/frameworks/sproutcore/frameworks/designer/core.js +10 -0
- data/frameworks/sproutcore/frameworks/designer/english.lproj/selection_handles.css +58 -0
- data/frameworks/sproutcore/frameworks/designer/{views/mixins → mixins}/button.js +0 -0
- data/frameworks/sproutcore/frameworks/designer/views/{controls/button.js → button.js} +6 -2
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +566 -136
- data/frameworks/sproutcore/frameworks/designer/views/selection_handles.js +77 -0
- data/frameworks/sproutcore/frameworks/desktop/core.js +12 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +1 -1
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +3 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -36
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +14 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +4 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +2 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +0 -4
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +8 -5
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +100 -111
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +51 -13
- data/frameworks/sproutcore/frameworks/desktop/panes/{drop_down.js → select_button.js} +70 -109
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +8 -0
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +69 -23
- data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +4 -4
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/{dropDown → select_button}/methods.js +15 -11
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/{dropDown → select_button}/ui.js +22 -22
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +19 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +53 -28
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +6 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +23 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +24 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +10 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +50 -28
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +6 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +8 -8
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +5 -3
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +4 -3
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +125 -96
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +68 -18
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +134 -56
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -11
- data/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +562 -2
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +13 -0
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +11 -8
- data/frameworks/sproutcore/frameworks/desktop/views/radio.js +7 -7
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +99 -33
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +3 -7
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +0 -7
- data/frameworks/sproutcore/frameworks/desktop/views/separator.js +2 -3
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +0 -8
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +27 -7
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +2 -6
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +15 -10
- data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +20 -1
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +3 -6
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +3 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +8 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/inline_editor.css +12 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +11 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +13 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +1 -2
- data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +70 -21
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +88 -54
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +0 -25
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +23 -2
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +34 -23
- data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +20 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +32 -23
- data/frameworks/sproutcore/frameworks/foundation/system/browser.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/system/bundle.js +77 -15
- data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +5 -4
- data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +22 -7
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +466 -309
- data/frameworks/sproutcore/frameworks/foundation/system/responder.js +2 -1
- data/frameworks/sproutcore/frameworks/foundation/system/response.js +457 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +66 -15
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +4 -4
- data/frameworks/sproutcore/frameworks/foundation/system/timer.js +6 -4
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +46 -8
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +17 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +18 -5
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +0 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +11 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +14 -14
- data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +15 -3
- data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +8 -7
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +3 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +51 -44
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +4 -4
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +2 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +9 -9
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +3 -3
- data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +10 -3
- data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +14 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +5 -5
- data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -11
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +2 -4
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +2 -4
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +0 -2
- data/frameworks/sproutcore/frameworks/foundation/validators/password.js +5 -5
- data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +4 -2
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +5 -8
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +21 -5
- data/frameworks/sproutcore/frameworks/foundation/views/text_field.js +112 -69
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +67 -6
- data/frameworks/sproutcore/frameworks/runtime/core.js +51 -2
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +4 -1
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +2 -1
- data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +5 -4
- data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +6 -1
- data/frameworks/sproutcore/frameworks/runtime/system/logger.js +408 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +15 -4
- data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +30 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +5 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +3 -3
- data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +2 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +2 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +2 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +1 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +11 -7
- data/frameworks/sproutcore/frameworks/runtime/tests/system/error.js +3 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +18 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +165 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +3 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +13 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +24 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +32 -13
- data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +2 -2
- data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +7 -2
- data/frameworks/sproutcore/lib/index.rhtml +6 -20
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +0 -1
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +5 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +4 -3
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +7 -7
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +38 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/menu.css +20 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +1 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +3 -1
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +1 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +1 -1
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +0 -15
- data/gen/data-source/Buildfile +18 -0
- data/gen/data-source/README +1 -0
- data/gen/data-source/USAGE +15 -0
- data/gen/data-source/templates/data_sources/@filename@.js +64 -0
- data/lib/sproutcore/builders/combine.rb +23 -0
- data/lib/sproutcore/builders/javascript.rb +27 -2
- data/lib/sproutcore/buildfile/task.rb +1 -1
- data/lib/sproutcore/helpers/entry_sorter.rb +2 -2
- data/lib/sproutcore/helpers/static_helper.rb +79 -0
- data/lib/sproutcore/models/manifest.rb +2 -2
- data/lib/sproutcore/models/target.rb +1 -1
- data/lib/sproutcore/tools/build.rb +1 -1
- data/lib/sproutcore/tools/docs.rb +3 -3
- data/lib/sproutcore/tools/gen.rb +17 -15
- data/lib/sproutcore/tools/manifest.rb +9 -9
- data/lib/sproutcore/tools/server.rb +3 -3
- data/lib/sproutcore/tools.rb +259 -250
- data/lib/sproutcore.rb +9 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +2 -2
- data/spec/fixtures/entry_for_project/frameworks/unrelated/PLACEHOLDER +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/{lproj → english.lproj}/strings.js +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/main.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/resources/main_page.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/t.js +1 -0
- data/spec/lib/models/manifest/find_entry.rb +12 -0
- data/spec/lib/tools/gen_spec.rb +1 -0
- data/spec/lib/tools/tools_spec.rb +1 -0
- data/sproutcore-abbot.gemspec +36 -44
- metadata +43 -44
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -594
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
- data/lib/thor/CHANGELOG.rdoc +0 -52
- data/lib/thor/LICENSE +0 -20
- data/lib/thor/README.markdown +0 -76
- data/lib/thor/Rakefile +0 -6
- data/lib/thor/Thorfile +0 -45
- data/lib/thor/bin/rake2thor +0 -83
- data/lib/thor/bin/thor +0 -7
- data/lib/thor/lib/thor/error.rb +0 -3
- data/lib/thor/lib/thor/options.rb +0 -267
- data/lib/thor/lib/thor/ordered_hash.rb +0 -64
- data/lib/thor/lib/thor/runner.rb +0 -305
- data/lib/thor/lib/thor/task.rb +0 -83
- data/lib/thor/lib/thor/task_hash.rb +0 -22
- data/lib/thor/lib/thor/tasks/package.rb +0 -18
- data/lib/thor/lib/thor/tasks.rb +0 -77
- data/lib/thor/lib/thor/util.rb +0 -75
- data/lib/thor/lib/thor.rb +0 -170
- data/lib/thor/script/destroy +0 -14
- data/lib/thor/script/generate +0 -14
- data/lib/thor/spec/fixtures/task.thor +0 -10
- data/lib/thor/spec/options_spec.rb +0 -271
- data/lib/thor/spec/ordered_hash_spec.rb +0 -84
- data/lib/thor/spec/spec.opts +0 -1
- data/lib/thor/spec/spec_helper.rb +0 -30
- data/lib/thor/spec/task_spec.rb +0 -11
- data/lib/thor/spec/tasks_spec.rb +0 -28
- data/lib/thor/spec/thor_runner_spec.rb +0 -194
- data/lib/thor/spec/thor_spec.rb +0 -206
- data/lib/thor/spec/util_spec.rb +0 -99
- data/lib/thor/task.thor +0 -15
- data/lib/thor/thor.gemspec +0 -29
@@ -59,6 +59,12 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
59
59
|
if (!this.get('canScrollHorizontal')) return 0 ;
|
60
60
|
var view = this.get('contentView') ;
|
61
61
|
var contentWidth = view ? view.get('frame').width : 0 ;
|
62
|
+
|
63
|
+
// The following code checks if there is a calculatedWidth (collections)
|
64
|
+
// to avoid looking at the incorrect value calculated by frame.
|
65
|
+
if(view.calculatedWidth && view.calculatedWidth!==0){
|
66
|
+
contentWidth = view.calculatedWidth;
|
67
|
+
}
|
62
68
|
var containerWidth = this.get('containerView').get('frame').width ;
|
63
69
|
return Math.max(0, contentWidth-containerWidth) ;
|
64
70
|
}.property(),
|
@@ -73,7 +79,13 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
73
79
|
maximumVerticalScrollOffset: function() {
|
74
80
|
if (!this.get('canScrollVertical')) return 0 ;
|
75
81
|
var view = this.get('contentView') ;
|
76
|
-
var contentHeight = view ? view.get('frame').height : 0 ;
|
82
|
+
var contentHeight = (view && view.get('frame')) ? view.get('frame').height : 0 ;
|
83
|
+
|
84
|
+
// The following code checks if there is a calculatedWidth (collections)
|
85
|
+
// to avoid looking at the incorrect value calculated by frame.
|
86
|
+
if(view.calculatedHeight && view.calculatedHeight!==0){
|
87
|
+
contentHeight = view.calculatedHeight;
|
88
|
+
}
|
77
89
|
var containerHeight = this.get('containerView').get('frame').height ;
|
78
90
|
return Math.max(0, contentHeight-containerHeight) ;
|
79
91
|
}.property(),
|
@@ -302,28 +314,33 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
302
314
|
the view should be a subview of the contentView. Otherwise the results
|
303
315
|
will be undefined.
|
304
316
|
|
305
|
-
@param {SC.
|
317
|
+
@param {SC.View} view view to scroll or null to scroll receiver visible
|
318
|
+
@returns {Boolean} YES if scroll position was changed
|
306
319
|
*/
|
307
320
|
scrollToVisible: function(view) {
|
308
|
-
var contentView = this.get('contentView') ;
|
309
|
-
if (!contentView) return this; // nothing to do if no contentView.
|
310
321
|
|
311
|
-
//
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
322
|
+
// if no view is passed, do default
|
323
|
+
if (arguments.length === 0) return sc_super();
|
324
|
+
|
325
|
+
var contentView = this.get('contentView') ;
|
326
|
+
if (!contentView) return NO; // nothing to do if no contentView.
|
327
|
+
|
328
|
+
// get the frame for the view - should work even for views with static
|
329
|
+
// layout, assuming it has been added to the screen.
|
330
|
+
var vf = view.get('frame');
|
331
|
+
if (!vf) return NO; // nothing to do
|
318
332
|
|
319
333
|
// convert view's frame to an offset from the contentView origin. This
|
320
334
|
// will become the new scroll offset after some adjustment.
|
321
|
-
vf = contentView.convertFrameFromView(vf,
|
335
|
+
vf = contentView.convertFrameFromView(vf, view.get('parentView')) ;
|
322
336
|
|
323
337
|
// find current visible frame.
|
324
338
|
var vo = SC.cloneRect(this.get('containerView').get('frame')) ;
|
339
|
+
|
325
340
|
vo.x = this.get('horizontalScrollOffset') ;
|
326
341
|
vo.y = this.get('verticalScrollOffset') ;
|
342
|
+
|
343
|
+
var origX = vo.x, origY = vo.y;
|
327
344
|
|
328
345
|
// if top edge is not visible, shift origin
|
329
346
|
vo.y -= Math.max(0, SC.minY(vo) - SC.minY(vf)) ;
|
@@ -334,7 +351,10 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
334
351
|
vo.x += Math.max(0, SC.maxX(vf) - SC.maxX(vo)) ;
|
335
352
|
|
336
353
|
// scroll to that origin.
|
337
|
-
|
354
|
+
if ((origX !== vo.x) || (origY !== vo.y)) {
|
355
|
+
this.scrollTo(vo.x, vo.y);
|
356
|
+
return YES ;
|
357
|
+
} else return NO;
|
338
358
|
},
|
339
359
|
|
340
360
|
/**
|
@@ -525,10 +545,8 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
525
545
|
in the regular properties.
|
526
546
|
*/
|
527
547
|
createChildViews: function() {
|
528
|
-
|
529
|
-
|
530
|
-
var view ;
|
531
|
-
|
548
|
+
var childViews = [] , view;
|
549
|
+
|
532
550
|
// create the containerView. We must always have a container view.
|
533
551
|
// also, setup the contentView as the child of the containerView...
|
534
552
|
if (SC.none(view = this.containerView)) view = SC.ContainerView;
|
@@ -544,7 +562,8 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
544
562
|
if (view=this.horizontalScrollerView) {
|
545
563
|
if (this.get('hasHorizontalScroller')) {
|
546
564
|
view = this.horizontalScrollerView = this.createChildView(view, {
|
547
|
-
layoutDirection: SC.LAYOUT_HORIZONTAL
|
565
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL,
|
566
|
+
valueBinding: '*owner.horizontalScrollOffset'
|
548
567
|
}) ;
|
549
568
|
childViews.push(view);
|
550
569
|
} else this.horizontalScrollerView = null ;
|
@@ -554,7 +573,8 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
554
573
|
if (view=this.verticalScrollerView) {
|
555
574
|
if (this.get('hasVerticalScroller')) {
|
556
575
|
view = this.verticalScrollerView = this.createChildView(view, {
|
557
|
-
layoutDirection: SC.LAYOUT_VERTICAL
|
576
|
+
layoutDirection: SC.LAYOUT_VERTICAL,
|
577
|
+
valueBinding: '*owner.verticalScrollOffset'
|
558
578
|
}) ;
|
559
579
|
childViews.push(view);
|
560
580
|
} else this.verticalScrollerView = null ;
|
@@ -563,7 +583,7 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
563
583
|
// set childViews array.
|
564
584
|
this.childViews = childViews ;
|
565
585
|
|
566
|
-
this.
|
586
|
+
this.contentViewDidChange() ; // setup initial display...
|
567
587
|
this.tile() ; // set up initial tiling
|
568
588
|
},
|
569
589
|
|
@@ -606,7 +626,7 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
606
626
|
if (newView) newView.addObserver('frame', this, f);
|
607
627
|
|
608
628
|
// replace container
|
609
|
-
this.containerView.set('
|
629
|
+
this.containerView.set('contentView', newView);
|
610
630
|
|
611
631
|
this.contentViewFrameDidChange();
|
612
632
|
}
|
@@ -618,7 +638,12 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
618
638
|
size of the contentView changes. We don't care about the origin since
|
619
639
|
that is tracked separately from the offset values.
|
620
640
|
*/
|
641
|
+
|
642
|
+
oldMaxHOffset: 0,
|
643
|
+
oldMaxVOffset: 0,
|
644
|
+
|
621
645
|
contentViewFrameDidChange: function() {
|
646
|
+
|
622
647
|
var view = this.get('contentView'),
|
623
648
|
f = (view) ? view.get('frame') : null,
|
624
649
|
width = (f) ? f.width : 0,
|
@@ -626,7 +651,7 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
626
651
|
dim = this.get('frame') ;
|
627
652
|
|
628
653
|
// cache out scroll settings...
|
629
|
-
if ((width === this._scroll_contentWidth) && (height === this._scroll_contentHeight)) return ;
|
654
|
+
//if ((width === this._scroll_contentWidth) && (height === this._scroll_contentHeight)) return ;
|
630
655
|
this._scroll_contentWidth = width;
|
631
656
|
this._scroll_contentHeight = height ;
|
632
657
|
|
@@ -648,6 +673,33 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
648
673
|
height -= this.get('verticalScrollerBottom') ;
|
649
674
|
view.setIfChanged('maximum', height) ;
|
650
675
|
}
|
676
|
+
|
677
|
+
// If there is no vertical scroller and auto hiding is on, make
|
678
|
+
// sure we are at the top if not already there
|
679
|
+
if (!this.get('isVerticalScrollerVisible') && (this.get('verticalScrollOffset') !== 0) &&
|
680
|
+
this.get('autohidesVerticalScroller')) {
|
681
|
+
this.set('verticalScrollOffset', 0);
|
682
|
+
}
|
683
|
+
|
684
|
+
// Same thing for horizontal scrolling.
|
685
|
+
if (!this.get('isHorizontalScrollerVisible') && (this.get('horizontalScrollOffset') !== 0) &&
|
686
|
+
this.get('autohidesHorizontalScroller')) {
|
687
|
+
this.set('horizontalScrollOffset', 0);
|
688
|
+
}
|
689
|
+
|
690
|
+
// This forces to recalculate the height of the frame when is at the bottom
|
691
|
+
// of the scroll and the content dimension are smaller that the previous one
|
692
|
+
|
693
|
+
|
694
|
+
var mxVOffSet = this.get('maximumVerticalScrollOffset'),
|
695
|
+
vOffSet = this.get('verticalScrollOffset'),
|
696
|
+
mxHOffSet = this.get('maximumHorizontalScrollOffset'),
|
697
|
+
hOffSet = this.get('horizontalScrollOffset');
|
698
|
+
var forceHeight = mxVOffSet && this.get('hasVerticalScroller') && mxVOffSet<vOffSet;
|
699
|
+
var forceWidth = mxHOffSet && this.get('hasHorizontalScroller') && mxHOffSet<hOffSet;
|
700
|
+
if(forceHeight || forceWidth){
|
701
|
+
this.forceDimensionsRecalculation(forceWidth, forceHeight, vOffSet, hOffSet);
|
702
|
+
}
|
651
703
|
},
|
652
704
|
|
653
705
|
/** @private
|
@@ -657,15 +709,12 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
657
709
|
_scroll_horizontalScrollOffsetDidChange: function() {
|
658
710
|
var offset = this.get('horizontalScrollOffset');
|
659
711
|
|
712
|
+
offset = Math.max(0,Math.min(this.get('maximumHorizontalScrollOffset'), offset)) ;
|
713
|
+
|
660
714
|
// update the offset for the contentView...
|
661
715
|
var contentView = this.get('contentView');
|
662
716
|
if (contentView) contentView.adjust('left', 0-offset);
|
663
|
-
|
664
|
-
// update the value of the horizontal scroller...
|
665
|
-
var scroller ;
|
666
|
-
if (this.get('hasHorizontalScroller') && (scroller=this.get('horizontalScrollerView'))) {
|
667
|
-
scroller.set('value', offset);
|
668
|
-
}
|
717
|
+
|
669
718
|
}.observes('horizontalScrollOffset'),
|
670
719
|
|
671
720
|
/** @private
|
@@ -675,15 +724,32 @@ SC.ScrollView = SC.View.extend(SC.Border, {
|
|
675
724
|
_scroll_verticalScrollOffsetDidChange: function() {
|
676
725
|
var offset = this.get('verticalScrollOffset') ;
|
677
726
|
|
727
|
+
offset = Math.max(0,Math.min(this.get('maximumVerticalScrollOffset'), offset)) ;
|
728
|
+
|
678
729
|
// update the offset for the contentView...
|
679
730
|
var contentView = this.get('contentView');
|
731
|
+
var containerView = this.get('containerView');
|
732
|
+
|
733
|
+
// Optimization when not using collections. We need to reimplement clippingFrame
|
734
|
+
// and scrolling to be able to scroll using scrolltop. For now I just
|
735
|
+
// detect if the content to scroll is a class of collectionView.
|
680
736
|
if (contentView) contentView.adjust('top', 0-offset) ;
|
681
737
|
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
738
|
+
}.observes('verticalScrollOffset'),
|
739
|
+
|
740
|
+
forceDimensionsRecalculation: function (forceWidth, forceHeight, vOffSet, hOffSet) {
|
741
|
+
var oldScrollHOffset = hOffSet;
|
742
|
+
var oldScrollVOffset = vOffSet;
|
743
|
+
this.scrollTo(0,0);
|
744
|
+
if(forceWidth && forceHeight){
|
745
|
+
this.scrollTo(this.get('maximumHorizontalScrollOffset'), this.get('maximumVerticalScrollOffset'));
|
746
|
+
}
|
747
|
+
if(forceWidth && !forceHeight){
|
748
|
+
this.scrollTo(this.get('maximumHorizontalScrollOffset'), oldScrollVOffset);
|
749
|
+
}
|
750
|
+
if(!forceWidth && forceHeight){
|
751
|
+
this.scrollTo(oldScrollHOffset ,this.get('maximumVerticalScrollOffset'));
|
686
752
|
}
|
687
|
-
}
|
753
|
+
}
|
688
754
|
|
689
755
|
});
|
@@ -40,7 +40,9 @@ SC.ScrollerView = SC.View.extend({
|
|
40
40
|
if (val !== undefined) {
|
41
41
|
// Don't enforce the maximum now, because the scroll view could change
|
42
42
|
// height and we want our content to stay put when it does.
|
43
|
-
|
43
|
+
if (val >= 0) {
|
44
|
+
this._value = val ;
|
45
|
+
}
|
44
46
|
} else {
|
45
47
|
var value = this._value || 0 ; // default value is at top/left
|
46
48
|
return Math.min(value, this.get('maximum')) ;
|
@@ -216,12 +218,6 @@ SC.ScrollerView = SC.View.extend({
|
|
216
218
|
}
|
217
219
|
}
|
218
220
|
}
|
219
|
-
|
220
|
-
// notify owner if it has a different scroll value
|
221
|
-
var key = this.get('ownerScrollValueKey') ;
|
222
|
-
if (key && this.owner && (this.owner[key] !== undefined)) {
|
223
|
-
this.owner.setIfChanged(key, v) ;
|
224
|
-
}
|
225
221
|
}.observes('value')
|
226
222
|
|
227
223
|
});
|
@@ -430,13 +430,6 @@ SC.SegmentedView = SC.View.extend(SC.Control,
|
|
430
430
|
this._isMouseDown = YES ;
|
431
431
|
this.set('activeIndex', idx);
|
432
432
|
}
|
433
|
-
if (!this._isFocused) {
|
434
|
-
this._isFocused = YES ;
|
435
|
-
this.becomeFirstResponder();
|
436
|
-
if (this.get('isVisibleInWindow')) {
|
437
|
-
this.$()[0].focus();
|
438
|
-
}
|
439
|
-
}
|
440
433
|
|
441
434
|
return YES ;
|
442
435
|
},
|
@@ -27,9 +27,8 @@ SC.SeparatorView = SC.View.extend(
|
|
27
27
|
layoutDirection: SC.LAYOUT_HORIZONTAL,
|
28
28
|
|
29
29
|
render: function(context, firstTime) {
|
30
|
-
|
31
|
-
|
32
|
-
context.addClass(this.get('layoutDirection'));
|
30
|
+
if(firstTime) context.push('<span></span>');
|
31
|
+
context.addClass(this.get('layoutDirection'));
|
33
32
|
}
|
34
33
|
|
35
34
|
|
@@ -120,16 +120,8 @@ SC.SliderView = SC.View.extend(SC.Control,
|
|
120
120
|
|
121
121
|
mouseDown: function(evt) {
|
122
122
|
if (!this.get('isEnabled')) return YES; // nothing to do...
|
123
|
-
|
124
123
|
this.set('isActive', YES);
|
125
124
|
this._isMouseDown = YES ;
|
126
|
-
if (!this._isFocused) {
|
127
|
-
this._isFocused = YES ;
|
128
|
-
this.becomeFirstResponder();
|
129
|
-
if (this.get('isVisibleInWindow')) {
|
130
|
-
this.$()[0].focus();
|
131
|
-
}
|
132
|
-
}
|
133
125
|
return this._triggerHandle(evt);
|
134
126
|
},
|
135
127
|
|
@@ -89,7 +89,7 @@ SC.SourceListGroupView = SC.View.extend(SC.Control, SC.CollectionGroup,
|
|
89
89
|
var labelView = this.outlet('labelView') ;
|
90
90
|
|
91
91
|
// hide labelView if content is null.
|
92
|
-
if (content
|
92
|
+
if (content === null) {
|
93
93
|
labelView.setIfChanged('isVisible', NO) ;
|
94
94
|
this.setIfChanged('hasGroupTitle', NO) ;
|
95
95
|
return ;
|
@@ -65,8 +65,7 @@ SC.RESIZE_BOTTOM_RIGHT = 'resize-bottom-right' ;
|
|
65
65
|
viewhelper.
|
66
66
|
|
67
67
|
@property {Boolean} canCollapseViews Set to NO when you don't want any of
|
68
|
-
the child views to collapse. Defaults to YES.
|
69
|
-
option with the split_view viewhelper.
|
68
|
+
the child views to collapse. Defaults to YES.
|
70
69
|
|
71
70
|
In addition, the top/left and bottom/right child views can have these
|
72
71
|
properties:
|
@@ -383,24 +382,40 @@ SC.SplitView = SC.View.extend(
|
|
383
382
|
renderLayout: function(context, firstTime) {
|
384
383
|
// console.log('%@.renderLayout(%@, %@)'.fmt(this, context, firstTime));
|
385
384
|
// console.log('%@.frame = %@'.fmt(this, SC.inspect(this.get('frame'))));
|
386
|
-
if (firstTime) {
|
385
|
+
if (firstTime || this._recalculateDivider) {
|
387
386
|
if (!this.get('thumbViewCursor')) {
|
388
387
|
this.set('thumbViewCursor', SC.Cursor.create()) ;
|
389
388
|
}
|
390
389
|
|
391
390
|
var layoutDirection = this.get('layoutDirection') ;
|
392
|
-
var
|
391
|
+
var fr = this.get('frame');
|
392
|
+
var splitViewThickness, elemRendered = this.$();
|
393
|
+
var dividerThickness = this.get('dividerThickness') || 7 ;
|
393
394
|
var desiredThickness = this.get('defaultThickness') ;
|
394
395
|
var autoResizeBehavior = this.get('autoresizeBehavior') ;
|
396
|
+
// Turn a flag on to recalculate the spliting if the desired thickness
|
397
|
+
// is a percentage
|
398
|
+
// debugger;
|
399
|
+
if(this._recalculateDivider===undefined && desiredThickness<1) {
|
400
|
+
this._recalculateDivider=YES;
|
401
|
+
}
|
402
|
+
else if(this._recalculateDivider) this._recalculateDivider=NO;
|
403
|
+
|
395
404
|
|
405
|
+
if(elemRendered[0]) {
|
406
|
+
splitViewThickness = (layoutDirection == SC.LAYOUT_HORIZONTAL) ?
|
407
|
+
elemRendered[0].offsetWidth : elemRendered[0].offsetHeight ;
|
408
|
+
}else{
|
409
|
+
splitViewThickness = (layoutDirection == SC.LAYOUT_HORIZONTAL) ?
|
410
|
+
fr.width : fr.height ;
|
411
|
+
}
|
396
412
|
// if default thickness is < 1, convert from percentage to absolute
|
397
413
|
if (SC.none(desiredThickness) || (desiredThickness > 0 && desiredThickness < 1)) {
|
398
|
-
desiredThickness = Math.floor(splitViewThickness * (desiredThickness || 0.5)) ;
|
414
|
+
desiredThickness = Math.floor((splitViewThickness - (dividerThickness))* (desiredThickness || 0.5)) ;
|
399
415
|
}
|
400
416
|
if (autoResizeBehavior === SC.RESIZE_BOTTOM_RIGHT) {
|
401
417
|
this._desiredTopLeftThickness = desiredThickness ;
|
402
418
|
} else { // (autoResizeBehavior === SC.RESIZE_TOP_LEFT)
|
403
|
-
var dividerThickness = this.get('dividerThickness') || 7 ;
|
404
419
|
this._desiredTopLeftThickness = splitViewThickness - dividerThickness - desiredThickness ;
|
405
420
|
}
|
406
421
|
|
@@ -679,6 +694,11 @@ SC.SplitView = SC.View.extend(
|
|
679
694
|
splitViewConstrainThickness: function(splitView, view, proposedThickness) {
|
680
695
|
// console.log('%@.splitViewConstrainThickness(%@, %@, %@)'.fmt(this, splitView, view, proposedThickness));
|
681
696
|
return proposedThickness;
|
682
|
-
}
|
697
|
+
},
|
698
|
+
|
699
|
+
/* Force to rendering once the pane is attached */
|
700
|
+
_forceSplitCalculation: function(){
|
701
|
+
this.updateLayout();
|
702
|
+
}.observes('*pane.isPaneAttached')
|
683
703
|
|
684
704
|
});
|
@@ -111,14 +111,10 @@ SC.TabView = SC.View.extend(
|
|
111
111
|
});
|
112
112
|
}
|
113
113
|
|
114
|
-
view = this.containerView = this.createChildView(ContainerView
|
115
|
-
rootElementPath: [0]
|
116
|
-
}) ;
|
114
|
+
view = this.containerView = this.createChildView(ContainerView) ;
|
117
115
|
childViews.push(view);
|
118
116
|
|
119
|
-
view = this.segmentedView = this.createChildView(this.segmentedView
|
120
|
-
rootElementPath: [1]
|
121
|
-
}) ;
|
117
|
+
view = this.segmentedView = this.createChildView(this.segmentedView) ;
|
122
118
|
childViews.push(view);
|
123
119
|
|
124
120
|
this.set('childViews', childViews);
|
@@ -284,7 +284,7 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
284
284
|
// if we can do this, then just forward the change. This should fire
|
285
285
|
// updates back up the stack, updating rangeObservers, etc.
|
286
286
|
var content = this.get('content'); // note: use content, not observable
|
287
|
-
var objsToDestroy = [], i;
|
287
|
+
var objsToDestroy = [], i, objsLen;
|
288
288
|
if (this.get('destroyOnRemoval')){
|
289
289
|
for(i=0; i<amt; i++){
|
290
290
|
objsToDestroy.push(content.objectAt(i+start));
|
@@ -292,7 +292,7 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
292
292
|
}
|
293
293
|
|
294
294
|
if (content) content.replace(start, amt, objects);
|
295
|
-
for(i=0
|
295
|
+
for(i=0, objsLen = objsToDestroy.length; i<objsLen; i++){
|
296
296
|
|
297
297
|
objsToDestroy[i].destroy();
|
298
298
|
}
|
@@ -300,7 +300,12 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
300
300
|
|
301
301
|
return this;
|
302
302
|
},
|
303
|
-
|
303
|
+
|
304
|
+
indexOf: function(object, startAt) {
|
305
|
+
var content = this._scac_observableContent();
|
306
|
+
return content ? content.indexOf(object, startAt) : -1;
|
307
|
+
},
|
308
|
+
|
304
309
|
// ..........................................................
|
305
310
|
// INTERNAL SUPPORT
|
306
311
|
//
|
@@ -366,11 +371,10 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
366
371
|
default:
|
367
372
|
throw "%@.orderBy must be Array, String, or Function".fmt(this);
|
368
373
|
}
|
369
|
-
|
370
|
-
len = orderBy.get('length');
|
371
|
-
|
374
|
+
|
372
375
|
// generate comparison function if needed - use orderBy
|
373
|
-
if (!func) {
|
376
|
+
if (!func) {
|
377
|
+
len = orderBy.get('length');
|
374
378
|
func = function(a,b) {
|
375
379
|
var idx=0, status=0, key, aValue, bValue;
|
376
380
|
for(idx=0;(idx<len)&&(status===0);idx++) {
|
@@ -456,11 +460,12 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
456
460
|
Whenever enumerable content changes, need to regenerate the
|
457
461
|
observableContent and notify that the range has changed.
|
458
462
|
|
459
|
-
|
463
|
+
This is called whenever the content enumerable changes or whenever orderBy
|
464
|
+
changes.
|
460
465
|
*/
|
461
466
|
_scac_enumerableDidChange: function() {
|
462
467
|
var content = this.get('content'), // use content directly
|
463
|
-
newlen = content.get('length'),
|
468
|
+
newlen = content ? content.get('length') : 0,
|
464
469
|
oldlen = this._scac_length;
|
465
470
|
|
466
471
|
this._scac_length = newlen;
|
@@ -469,7 +474,7 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
469
474
|
this.enumerableContentDidChange(0, newlen, newlen-oldlen);
|
470
475
|
this.endPropertyChanges();
|
471
476
|
this.updateSelectionAfterContentChange();
|
472
|
-
},
|
477
|
+
}.observes('orderBy'),
|
473
478
|
|
474
479
|
/** @private
|
475
480
|
Whenever array content changes, need to simply forward notification.
|
@@ -99,7 +99,26 @@ SC.TreeController = SC.ObjectController.extend(SC.SelectionSupport,
|
|
99
99
|
|
100
100
|
_sctc_arrangedObjectsContentDidChange: function() {
|
101
101
|
this.updateSelectionAfterContentChange();
|
102
|
-
}.observes('*arrangedObjects.[]')
|
102
|
+
}.observes('*arrangedObjects.[]'),
|
103
|
+
|
104
|
+
/**
|
105
|
+
@private
|
106
|
+
|
107
|
+
Returns the first item in arrangeObjects that is not a group. This uses
|
108
|
+
a brute force approach right now; we assume you probably don't have a lot
|
109
|
+
of groups up front.
|
110
|
+
*/
|
111
|
+
firstSelectableObject: function() {
|
112
|
+
var objects = this.get('arrangedObjects'),
|
113
|
+
indexes, len, idx = 0;
|
114
|
+
|
115
|
+
if (!objects) return null; // fast track
|
116
|
+
|
117
|
+
indexes = objects.contentGroupIndexes(null, objects);
|
118
|
+
len = objects.get('length');
|
119
|
+
while(indexes.contains(idx) && (idx<len)) idx++;
|
120
|
+
return idx>=len ? null : objects.objectAt(idx);
|
121
|
+
}.property()
|
103
122
|
|
104
123
|
});
|
105
124
|
|
@@ -43,7 +43,7 @@ SC.ControlTestPane = SC.Pane.extend(
|
|
43
43
|
/** @scope SC.ControlTestPane.prototype */ {
|
44
44
|
|
45
45
|
classNames: ['sc-control-test-pane'],
|
46
|
-
layout: { right:
|
46
|
+
layout: { right: 20, width: 350, top: 65, bottom: 5 },
|
47
47
|
|
48
48
|
/**
|
49
49
|
The starting top location for the first row. This will increment as
|
@@ -6,15 +6,12 @@
|
|
6
6
|
# License: Licened under MIT license (see license.js)
|
7
7
|
# ==========================================================================
|
8
8
|
#
|
9
|
-
# This
|
10
|
-
#
|
11
|
-
# a class name to the 'body' tag. You can use this class name to customize
|
12
|
-
# the CSS rules to be applied to your page based on browser. The class name
|
13
|
-
# contains the name webkit|mozilla|ie + the major version number
|
9
|
+
# IMPORTANT: This bootstrap code is DEPRECATED. Instead see the bootstrap
|
10
|
+
# framework in sproutcore for all new apps.
|
14
11
|
#
|
15
12
|
-%>
|
16
13
|
<% content_for('bootstrap') do %>
|
17
|
-
var SC = SC || { BUNDLE_INFO: {} };
|
14
|
+
var SC = SC || { BUNDLE_INFO: {}, LAZY_INSTANTIATION: {} };
|
18
15
|
SC.browser = (function() {
|
19
16
|
var userAgent = navigator.userAgent.toLowerCase();
|
20
17
|
var version = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1] ;
|
@@ -382,6 +382,10 @@ input[type="submit"] {
|
|
382
382
|
top: 25px;
|
383
383
|
background-color: #ccc;
|
384
384
|
opacity: 0.4;
|
385
|
+
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
|
386
|
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
387
|
+
-moz-opacity:0.4;
|
388
|
+
|
385
389
|
position: relative;
|
386
390
|
border-top: 1px solid #aaa;
|
387
391
|
border-bottom: 1px solid #aaa;
|
@@ -431,6 +435,10 @@ input[type="submit"] {
|
|
431
435
|
.sc-benchmark-row.even
|
432
436
|
{
|
433
437
|
opacity: 0.4;
|
438
|
+
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
|
439
|
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
440
|
+
-moz-opacity:0.4;
|
441
|
+
|
434
442
|
background-color: #ddd;
|
435
443
|
}
|
436
444
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
.mozilla .sc-view .sc-text-field-view.inline-editor .border,
|
2
|
+
.webkit .sc-view .sc-text-field-view.inline-editor .border,
|
3
|
+
.msie .sc-view .sc-text-field-view.inline-editor .border,
|
4
|
+
.sc-view .sc-text-field-view.inline-editor .border {
|
5
|
+
-webkit-appearance: none;
|
6
|
+
-moz-appearance: none;
|
7
|
+
border: none;
|
8
|
+
}
|
9
|
+
|
10
|
+
.mozilla .sc-view .sc-text-field-view.inline-editor.focus {
|
11
|
+
outline-offset: 0px;
|
12
|
+
}
|
@@ -28,4 +28,15 @@
|
|
28
28
|
.sc-label-view img.icon {
|
29
29
|
position: relative;
|
30
30
|
vertical-align: middle;
|
31
|
+
}
|
32
|
+
|
33
|
+
.sc-label-view .sc-hint {
|
34
|
+
position: absolute;
|
35
|
+
top: 3px;
|
36
|
+
left: 1px;
|
37
|
+
right: 1px;
|
38
|
+
bottom: 3px;
|
39
|
+
padding: 0px;
|
40
|
+
color: #aaa ;
|
41
|
+
font-size: 12px;
|
31
42
|
}
|
@@ -12,6 +12,7 @@
|
|
12
12
|
outline: auto 7px -webkit-focus-ring-color;
|
13
13
|
outline-offset: -2px;
|
14
14
|
}
|
15
|
+
|
15
16
|
.mozilla .sc-view .sc-text-field-view.focus {
|
16
17
|
outline-color:-moz-mac-focusring;
|
17
18
|
outline-offset:-5px;
|
@@ -86,6 +87,18 @@
|
|
86
87
|
top: 3px;
|
87
88
|
}
|
88
89
|
|
90
|
+
|
91
|
+
.sc-text-field-view input {
|
92
|
+
border: none;
|
93
|
+
outline: none;
|
94
|
+
}
|
95
|
+
|
96
|
+
.sc-text-field-view textarea {
|
97
|
+
border: none;
|
98
|
+
outline: none;
|
99
|
+
}
|
100
|
+
|
101
|
+
|
89
102
|
.sc-text-field-view textarea {
|
90
103
|
position: absolute;
|
91
104
|
top: 0px;
|
@@ -104,8 +104,7 @@ SC.Button = {
|
|
104
104
|
|
105
105
|
/**
|
106
106
|
The button icon. Set this to either a URL or a CSS class name (for
|
107
|
-
spriting).
|
108
|
-
button is created. Note that if you pass a URL, it must contain at
|
107
|
+
spriting). Note that if you pass a URL, it must contain at
|
109
108
|
least one slash to be detected as such.
|
110
109
|
|
111
110
|
@property {String}
|