your method would need to display it after building it -- look at #putUpWorldMenu:  for the missing bits


On 2/24/18 12:18 PM, H. Hirzel wrote:
On 2/24/18, Bob Arning <arning315@comcast.net> wrote:
Or you could...

World on: #mouseDown send: #putUpSomeOtherMenu: to: World
This would be a better solution since it does involve adding a method
but not changing a method of the base image.

I tested it with adding #buildWorldMenu4: to PasteUpMorph

    buildWorldMenu4: evt
    |project |

    project := self project ifNil: [Project current]  "mvc??".


    ^(TheWorldMenu4 new
		world: self
		project: project
		hand: evt hand) buildWorldMenu.


I executed
    World on: #mouseDown send: #putUpSomeOtherMenu: to: World

But the new world menu did not come up.

So far

    http://wiki.squeak.org/squeak/1047

is the working solution I found for customizing the red button [1] menu

--Hannes


[1] Red button -- http://wiki.squeak.org/squeak/1904 - usually the
left mouse button.

On 2/24/18 9:05 AM, H. Hirzel wrote:
Yes, implementation is easy but my question is how it should be done
in a way that conforms to the intention of the framework code.  A
"recommended good solution".

What about using a project preference?

It needs the method PasteUpMorph buildWorldMenu: evt from May 2000

     buildWorldMenu: evt
	^(TheWorldMenu new
		world: self
		project: (self project ifNil: [Project current])       "mvc??"
		hand: evt hand) buildWorldMenu.


to be replaced with


         buildWorldMenu: evt
         |project worldMenuClassSymbol|

         project := self project ifNil: [Project current]  "mvc??".

         worldMenuClassSymbol := project
projectPreferenceFlagDictionary at:
#worldMenuClassSymbol ifAbsent: [#TheWorldMenu].

     ^((Smalltalk at:  worldMenuClassSymbol) new
		world: self
		project: project
		hand: evt hand) buildWorldMenu.


Detailed description:     http://wiki.squeak.org/squeak/1047