teacup 2.1.4 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,2 +1,3 @@
1
1
  language: objective-c
2
2
  before_install: rvm use ruby-1.9.3-p392
3
+ before_script: sudo chown -R travis ~/Library/RubyMotion
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- teacup (2.1.4)
4
+ teacup (2.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -74,7 +74,9 @@ require 'teacup'
74
74
 
75
75
  #### 10 second primer, OS X
76
76
 
77
- Pretty much the same!
77
+ Pretty much the same! Note that on OS X, view coordinates are based on having
78
+ the origin in the bottom-left corner, not the upper-left like it is *on every
79
+ other GUI system ever*. :-|
78
80
 
79
81
  **You should use the `TeacupWindowController` parent class instead of `NSWindowController`**
80
82
 
@@ -0,0 +1,28 @@
1
+ class MemoryLeakController < UIViewController
2
+ DidDeallocNotification = 'DidDeallocNotification'
3
+
4
+ stylesheet :memory_leak
5
+
6
+ layout do
7
+ puts("=============== memory_leak_controller.rb line #{__LINE__} ===============")
8
+ subview(UIView, :view) do
9
+ puts("=============== memory_leak_controller.rb line #{__LINE__} ===============")
10
+ subview(UIView)
11
+ end
12
+ end
13
+
14
+ def dealloc
15
+ NSNotificationCenter.defaultCenter.postNotificationName(DidDeallocNotification, object:self)
16
+ super
17
+ end
18
+
19
+ end
20
+
21
+
22
+ Teacup::Stylesheet.new :memory_leak do
23
+
24
+ style :view,
25
+ frame: [[10, 10], [100, 100]],
26
+ backgroundColor: UIColor.whiteColor
27
+
28
+ end
data/lib/teacup.rb CHANGED
@@ -22,4 +22,32 @@ Motion::Project::App.setup do |app|
22
22
  Dir.glob(File.join(teacup_lib, '**/*.rb')).reverse.each do |file|
23
23
  app.files.insert(insert_point, file)
24
24
  end
25
+
26
+ if platform == :ios
27
+ app.files_dependencies File.join(teacup_platform_lib, 'core_extensions/ui_view.rb') => [
28
+ File.join(teacup_lib, 'layout.rb'),
29
+ File.join(teacup_lib, 'teacup_view.rb'),
30
+ ]
31
+ app.files_dependencies File.join(teacup_platform_lib, 'core_extensions/ui_view_controller.rb') => [
32
+ File.join(teacup_lib, 'layout.rb'),
33
+ File.join(teacup_lib, 'teacup_controller.rb'),
34
+ ]
35
+ else
36
+ app.files_dependencies File.join(teacup_platform_lib, 'core_extensions/ns_view.rb') => [
37
+ File.join(teacup_lib, 'layout.rb'),
38
+ File.join(teacup_lib, 'teacup_view.rb'),
39
+ ]
40
+ app.files_dependencies File.join(teacup_platform_lib, 'core_extensions/ns_window.rb') => [
41
+ File.join(teacup_lib, 'layout.rb'),
42
+ File.join(teacup_lib, 'teacup_view.rb'),
43
+ ]
44
+ app.files_dependencies File.join(teacup_platform_lib, 'core_extensions/ns_view_controller.rb') => [
45
+ File.join(teacup_lib, 'layout.rb'),
46
+ File.join(teacup_lib, 'teacup_controller.rb'),
47
+ ]
48
+ app.files_dependencies File.join(teacup_platform_lib, 'core_extensions/ns_window_controller.rb') => [
49
+ File.join(teacup_lib, 'layout.rb'),
50
+ File.join(teacup_lib, 'teacup_controller.rb'),
51
+ ]
52
+ end
25
53
  end
data/lib/teacup/layout.rb CHANGED
@@ -164,8 +164,8 @@ module Teacup
164
164
  # assign the 'teacup_next_responder', which is queried for a stylesheet if
165
165
  # one is not explicitly assigned to the view
166
166
  if view.is_a? Layout
167
- puts("=============== layout.rb line #{__LINE__} ===============")
168
- view.teacup_next_responder = self
167
+ view.teacup_next_responder = WeakRef.new(self)
168
+ # view.teacup_next_responder = self
169
169
  end
170
170
 
171
171
  if block_given?
@@ -1,5 +1,5 @@
1
1
  module Teacup
2
2
 
3
- VERSION = '2.1.4'
3
+ VERSION = '2.1.5'
4
4
 
5
5
  end
@@ -0,0 +1,53 @@
1
+ class LeakDetector
2
+
3
+ def initialize
4
+ @did_dealloc = false
5
+ end
6
+
7
+ def did_dealloc(notification)
8
+ @did_dealloc = true
9
+ end
10
+
11
+ def did_dealloc?
12
+ @did_dealloc
13
+ end
14
+
15
+ end
16
+
17
+ describe "Memory leaks" do
18
+ tests MemoryLeakController
19
+
20
+ def controller
21
+ unless @controller
22
+ puts("=============== memory_leak_spec.rb line #{__LINE__} ===============")
23
+ root = UIViewController.new
24
+ @controller = UINavigationController.alloc.initWithRootViewController(root)
25
+ end
26
+
27
+ @controller
28
+ end
29
+
30
+ it "should dealloc after being popped from UINavigationController" do
31
+ detector = LeakDetector.new
32
+
33
+ memory_leak = MemoryLeakController.new
34
+ p memory_leak.view
35
+
36
+ NSNotificationCenter.defaultCenter.addObserver(detector,
37
+ selector: :'did_dealloc:',
38
+ name: MemoryLeakController::DidDeallocNotification,
39
+ object: memory_leak)
40
+
41
+ self.controller.pushViewController(memory_leak, animated: false)
42
+ memory_leak = nil
43
+
44
+ wait 1 do
45
+ self.controller.popViewControllerAnimated(false)
46
+
47
+ wait 1 do
48
+ detector.did_dealloc?.should == true
49
+ end
50
+ end
51
+ end
52
+
53
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teacup
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -42,6 +42,7 @@ files:
42
42
  - app/controllers/gradient_controller.rb
43
43
  - app/controllers/landscape_only_controller.rb
44
44
  - app/controllers/main_controller.rb
45
+ - app/controllers/memory_leak_controller.rb
45
46
  - app/controllers/motion_layout_controller.rb
46
47
  - app/controllers/present_modal_controller.rb
47
48
  - app/controllers/table_view_controller.rb
@@ -140,6 +141,7 @@ files:
140
141
  - spec/ios/layout_module_spec.rb
141
142
  - spec/ios/layout_spec.rb
142
143
  - spec/ios/main_spec.rb
144
+ - spec/ios/memory_leak_spec.rb
143
145
  - spec/ios/motion_layout_spec.rb
144
146
  - spec/ios/present_modal_spec.rb
145
147
  - spec/ios/style_spec.rb
@@ -186,6 +188,7 @@ test_files:
186
188
  - spec/ios/layout_module_spec.rb
187
189
  - spec/ios/layout_spec.rb
188
190
  - spec/ios/main_spec.rb
191
+ - spec/ios/memory_leak_spec.rb
189
192
  - spec/ios/motion_layout_spec.rb
190
193
  - spec/ios/present_modal_spec.rb
191
194
  - spec/ios/style_spec.rb