Now I think I solved the issue. At least, if you remove a class from the system that defined a keymapping, there is no reference to an obsolete class anymore. background: the keymap registration works in three steps: 1. collect methods with pragma <keymap> 2. build the registration items with one builder-instance (this builder collects the items too). 3. register all of the collected items. my change is at the third step, instead of working on the collection of the builder, I make a copy and remove all items from the builder. That way the builder does not hold a reference to the shortcut items after they went to the registry. nicolai 2015-06-01 22:16 GMT+02:00 Nicolai Hess <nicolaihess@web.de>:
2015-06-01 22:06 GMT+02:00 Eliot Miranda <eliot.miranda@gmail.com>:
On Sat, May 30, 2015 at 8:20 AM, Nicolai Hess <nicolaihess@web.de> wrote:
2015-05-30 16:01 GMT+02:00 Sean P. DeNigris <sean@clipperadams.com>:
Nicolai Hess wrote
I don't fully understand what to change.
If Spur will be ready for the next release, why don't we just wait...
I would like to better understand what is the problem and I am sure there is some kind of software pattern to prevent this circular reference situation.
Yes, they're called ephemerons. Read the Wikipedia page and the paper. They explain things well. http://en.wikipedia.org/wiki/Ephemeron
Yes now I understand why ephemerons can solve this issue. But what I was thinking of is, maybe we don't need this circular reference for our keymapping registry, it looks like some the references only there because we need this information during building the keymap but not afterwards.
----- Cheers, Sean -- View this message in context: http://forum.world.st/untypeable-key-combination-tp4794607p4829511.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
-- best, Eliot