From 3af97c4e3872e53de6950b301a1b596f3b02ab25 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki & Nathan Sobo Date: Thu, 10 Jan 2013 11:34:17 -0800 Subject: [PATCH] Add Event.currentTargetView() and Event.targetView() --- spec/stdlib/jquery-extensions-spec.coffee | 32 ++++++++++++++++++++++- src/stdlib/jquery-extensions.coffee | 2 ++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/spec/stdlib/jquery-extensions-spec.coffee b/spec/stdlib/jquery-extensions-spec.coffee index 21e8862a7..6b781370b 100644 --- a/spec/stdlib/jquery-extensions-spec.coffee +++ b/spec/stdlib/jquery-extensions-spec.coffee @@ -1,5 +1,5 @@ $ = require 'jquery' -{$$} = require 'space-pen' +{View, $$} = require 'space-pen' describe 'jQuery extensions', -> describe '$.fn.preempt(eventName, handler)', -> @@ -75,3 +75,33 @@ describe 'jQuery extensions', -> 'b2': "B2: Looks evil. Kinda is." 'a1': "A1: Waste perfectly-good steak" 'a2': null + + describe "Event.prototype", -> + class GrandchildView extends View + @content: -> @div class: 'grandchild' + + class ChildView extends View + @content: -> + @div class: 'child', => + @subview 'grandchild', new GrandchildView + + class ParentView extends View + @content: -> + @div class: 'parent', => + @subview 'child', new ChildView + + [parentView, event] = [] + beforeEach -> + parentView = new ParentView + eventHandler = jasmine.createSpy('eventHandler') + parentView.on 'foo', '.child', eventHandler + parentView.child.grandchild.trigger 'foo' + event = eventHandler.argsForCall[0][0] + + describe ".currentTargetView()", -> + it "returns the current target's space pen view", -> + expect(event.currentTargetView()).toBe parentView.child + + describe ".targetView()", -> + it "returns the target's space pen view", -> + expect(event.targetView()).toBe parentView.child.grandchild diff --git a/src/stdlib/jquery-extensions.coffee b/src/stdlib/jquery-extensions.coffee index 53a851e28..c90fa6763 100644 --- a/src/stdlib/jquery-extensions.coffee +++ b/src/stdlib/jquery-extensions.coffee @@ -74,3 +74,5 @@ $.fn.command = (args...) -> @on(args...) $.Event.prototype.abortKeyBinding = -> +$.Event.prototype.currentTargetView = -> $(this.currentTarget).view() +$.Event.prototype.targetView = -> $(this.target).view()