How about using onDNU: instead of respondsTo:?

    windowColor := [each model windowColorToUse] onDNU: #windowColorToUse do:
        [UserInterfaceTheme current get: #uniformWindowColor for: Model].

I don't have a strong opinion, but it feels "cleaner".

- Bert -

On Tue, Jul 18, 2017 at 9:14 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
nice!

On Tue, Jul 18, 2017 at 1:12 AM, <commits@source.squeak.org> wrote:
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1347.mcz

==================== Summary ====================

Name: Morphic-mt.1347
Author: mt
Time: 18 July 2017, 10:11:56.69381 am
UUID: f95fc4b5-03e5-2f45-9a3f-087fb10cae98
Ancestors: Morphic-eem.1346

Regarding window colors and window listing, improve robustness for models that do not subclass Model and forget to provide #windowColorToUse.

Note that we could have added that message to Object but I do prefer not to clutter the interface any further.

=============== Diff against Morphic-eem.1346 ===============

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listWindowsOn: (in category 'submenu - windows') -----
  listWindowsOn: menu

        | windows |
        windows := self allVisibleWindows sorted: [:winA :winB |
                ((winA model isNil or: [winB model isNil]) or: [winA model name = winB model name])
                        ifTrue: [winA label < winB label]
                        ifFalse: [winA model name < winB model name]].
        windows ifEmpty: [
                menu addItem: [ :item |
                        item
                                contents: 'No Windows' translated;
                                isEnabled: false ] ].
        windows do: [ :each |
+               | windowColor |
+               windowColor := (each model respondsTo: #windowColorToUse)
+                       ifTrue: [each model windowColorToUse]
+                       ifFalse: [UserInterfaceTheme current get: #uniformWindowColor for: Model].
                menu addItem: [ :item |
                        item
                                contents: (self windowMenuItemLabelFor: each);
+                               icon: (self colorIcon: windowColor);
-                               icon: (each model ifNotNil: [self colorIcon: each model windowColorToUse]);
                                target: each;
                                selector: #comeToFront;
                                subMenuUpdater: self
                                selector: #windowMenuFor:on:
                                arguments: { each };
                                action: [ each beKeyWindow; expand ] ] ].
        menu
                addLine;
                add: 'Close all windows' target: self selector: #closeAllWindowsUnsafe;
                addItem: [:item | item
                        contents: 'Close all windows without changes';
                        target: self;
                        icon: MenuIcons smallBroomIcon;
                        selector: #closeAllWindows];
                add: 'Close all windows but workspaces' target: self selector: #closeAllWindowsButWorkspaces.!





--
_,,,^..^,,,_
best, Eliot