GDBEventSubscription.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 18 Sep 2014 09:32:30 +0100
changeset 41 fb48207b6104
child 78 c24e7d8bc881
permissions -rw-r--r--
Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.

"{ Package: 'jv:libgdbs' }"

StrongSubscription subclass:#GDBEventSubscription
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'GDB-Private'
!

!GDBEventSubscription class methodsFor:'private'!

blockFor: anObject withSelector: aSelector

    | args |
    args := aSelector numArgs.      

    anObject isView ifTrue:[ 
        args = 0 ifTrue: [ ^[ anObject sensor pushUserEvent: aSelector for: anObject ] ].
        args = 1 ifTrue: [ ^[ :anAnnouncement | anObject sensor pushUserEvent: aSelector for: anObject withArgument: anAnnouncement ] ].
        args = 2 ifTrue: [ ^[ :anAnnouncement :anAnnouncer | anObject sensor pushUserEvent: aSelector for: anObject withArguments: (Array with: anAnnouncement with: anAnnouncer) ] ].
        self error: 'Couldn''t create block'.        
    ].
    (anObject isKindOf: ApplicationModel) ifTrue:[ 
        args = 0 ifTrue: [ ^[ anObject window sensor pushUserEvent: aSelector for: anObject ] ].
        args = 1 ifTrue: [ ^[ :anAnnouncement | anObject window sensor pushUserEvent: aSelector for: anObject withArgument: anAnnouncement ] ].
        args = 2 ifTrue: [ ^[ :anAnnouncement :anAnnouncer | anObject window sensor pushUserEvent: aSelector for: anObject withArguments: (Array with: anAnnouncement with: anAnnouncer) ] ].
        self error: 'Couldn''t create block'.        
    ].
    ^ super blockFor: anObject withSelector: aSelector

    "Created: / 18-09-2014 / 00:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !