[Newbies] How do you find which code runs when you click on something?

Matthew Fulmer tapplek at gmail.com
Wed Jun 27 00:26:41 UTC 2007

On Tue, Jun 26, 2007 at 09:47:29PM +0100, Ian Oversby wrote:
> Hi,
> I'm trying to find out which code is run when I click on something
> in Squeak.  I've tried selecting the menu from the middle button
> and then selecting debug -> explore morph.  Is this the best
> way?  Does it work for all morphs?  How can I add new menu
> items which run arbitrary code?

I tried exploring the morph, and also browsing the class
protocol (select the object in the inspector/explorer, and press
cmd-p). I limited the inheritance chain to StringMorph, and
examined the "event handlers" method category. I looked at the
mouseUp handler (mouse up is the usual place where actions are
invoked), and the last line looked promising: "self
invokeWithEvent: t1". I highlighted that and pressed cmd-m to
jump to that method. The last few lines looked like the real
work. So I put a "self halt." right above the Cursor normal
showWhile: [...] block and saved (cmd-s). Now, whenever I hit a
menu item, I get a debugger ready to execute the menu command.

Whenever you are done, hit any menu item, remove the "self
halt." in the debugger window, save, and proceed.

Hope that helps.

Matthew Fulmer -- http://mtfulmer.wordpress.com/
Help improve Squeak Documentation: http://wiki.squeak.org/squeak/808

More information about the Beginners mailing list