<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hi Marcel,</p>
<p><br>
</p>
<p>Thanks!</p>
<p><br>
</p>
<p>> <span>I also bumped the label size from 128 to 512 characters.</span></p>
<p><span><br>
</span></p>
<p><span>Since we are using a dialog window now and this feature is Morphic-only, can't we remove this truncation completely? I do have many workspaces in some of my images with more than 1000s of characters. It would be helpful if I could search the entire
 string through the dialog.</span></p>
<p><span><br>
</span></p>
<p><span>Best,</span></p>
<p><span>Christoph</span></p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von commits@source.squeak.org <commits@source.squeak.org><br>
<b>Gesendet:</b> Freitag, 3. Juni 2022 15:57:23<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org; packages@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Trunk: Morphic-mt.1999.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Marcel Taeumel uploaded a new version of Morphic to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Morphic-mt.1999.mcz">http://source.squeak.org/trunk/Morphic-mt.1999.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-mt.1999<br>
Author: mt<br>
Time: 3 June 2022, 3:57:17.981722 pm<br>
UUID: fa65a07a-3d2b-8544-b5a9-9ad67f734549<br>
Ancestors: Morphic-mt.1998<br>
<br>
Somewhat fixes the UI issue with "Find Workspace..." sub-menu in the "Windows" menu by delegation the choice to an extra dialog window.<br>
<br>
(I proposed this alternative approach to Eliot (eem) a few weeks ago to which he agreed. I also bumped the label size from 128 to 512 characters.)<br>
<br>
=============== Diff against Morphic-mt.1998 ===============<br>
<br>
Item was added:<br>
+ ----- Method: TheWorldMainDockingBar>>findWorkspace (in category 'submenu - windows') -----<br>
+ findWorkspace<br>
+ <br>
+        | allWorkspaces labels values |<br>
+        allWorkspaces := Set new.<br>
+        Project allMorphicProjects do:<br>
+                [:project|<br>
+                (self allVisibleWindowsIn: project world) do:<br>
+                        [:window|<br>
+                        (window model isKindOf: Workspace) ifTrue:<br>
+                                [allWorkspaces add:<br>
+                                        {       window model.<br>
+                                                window.<br>
+                                                project.<br>
+                                                window model contents ifEmpty:<br>
+                                                        [(window model dependents detect: [:d| d isTextView] ifNone: nil) textMorph contents] }]]].<br>
+        allWorkspaces isEmpty ifTrue:<br>
+                [^ self inform: 'No workspaces found.' translated].<br>
+        "Sort workspaces with non-empty ones first..."<br>
+        labels := OrderedCollection new.<br>
+        values := OrderedCollection new.<br>
+        (allWorkspaces sorted:<br>
+                [:t1 :t2|<br>
+                t1 last isEmpty == t2 last isEmpty<br>
+                        ifTrue: [t1 second label <= t2 second label]<br>
+                        ifFalse: [t1 last notEmpty]]) do:<br>
+                [:tuple|<br>
+                labels add: tuple second label, ': ', ((tuple last asString contractTo: 512) ifEmpty: ['(empty)']).<br>
+                values add: (MessageSend receiver: self selector: #selectWorkspace:window:inProject:contents: arguments: tuple)].<br>
+        (Project uiManager<br>
+                chooseFrom: labels<br>
+                values: values<br>
+                title: 'Find Workspace' translated) value.!<br>
<br>
Item was changed:<br>
  ----- Method: TheWorldMainDockingBar>>listWindowsOn: (in category 'submenu - windows') -----<br>
  listWindowsOn: menu<br>
  <br>
         | windows |<br>
         menu<br>
                 addLine;<br>
                 add: 'Collapse all windows' target: (Project current world) selector: #collapseAllWindows;<br>
                 addItem: [:item | item <br>
                         contents: 'Find Workspace...';<br>
+                        target: self;<br>
+                        selector: #findWorkspace];<br>
-                        subMenuUpdater: self<br>
-                        selector: #workspacesMenuFor:<br>
-                        arguments: #()];<br>
                 addLine;<br>
                 add: 'Close all windows' target: self selector: #closeAllWindowsUnsafe;<br>
                 addItem: [:item | item<br>
                         contents: 'Close all windows without changes';<br>
                         target: self;<br>
                         icon: MenuIcons smallBroomIcon;<br>
                         selector: #closeAllWindows];<br>
                 add: 'Close all windows but workspaces' target: self selector: #closeAllWindowsButWorkspaces;<br>
                 addLine.<br>
                                         <br>
         windows := self allVisibleWindows sorted: [:winA :winB |<br>
                 ((winA model isNil or: [winB model isNil]) or: [winA model name = winB model name])<br>
                         ifTrue: [winA label < winB label]<br>
                         ifFalse: [winA model name < winB model name]].<br>
         windows ifEmpty: [ <br>
                 menu addItem: [ :item | <br>
                         item<br>
                                 contents: 'No Windows' translated;<br>
                                 isEnabled: false ] ].<br>
         windows do: [ :each |<br>
                 | windowColor |<br>
                 windowColor := (each model respondsTo: #windowColorToUse)<br>
                         ifTrue: [each model windowColorToUse]<br>
                         ifFalse: [UserInterfaceTheme current get: #uniformWindowColor for: Model].
<br>
                 menu addItem: [ :item |<br>
                         item <br>
                                 contents: (self windowMenuItemLabelFor: each);<br>
                                 icon: (self colorIcon: windowColor);<br>
                                 target: each;<br>
                                 selector: #comeToFront;<br>
                                 subMenuUpdater: self<br>
                                 selector: #windowMenuFor:on:<br>
                                 arguments: { each };<br>
                                 action: [ each beKeyWindow; expand ] ] ].!<br>
<br>
Item was removed:<br>
- ----- Method: TheWorldMainDockingBar>>workspacesMenuFor: (in category 'submenu - windows') -----<br>
- workspacesMenuFor: anUpdatingMenuMorph<br>
- <br>
-        | allWorkspaces |<br>
-        allWorkspaces := Set new.<br>
-        Project allMorphicProjects do:<br>
-                [:project|<br>
-                (self allVisibleWindowsIn: project world) do:<br>
-                        [:window|<br>
-                        (window model isKindOf: Workspace) ifTrue:<br>
-                                [allWorkspaces add:<br>
-                                        {       window model.<br>
-                                                window.<br>
-                                                project.<br>
-                                                window model contents ifEmpty:<br>
-                                                        [(window model dependents detect: [:d| d isTextView] ifNone: nil) textMorph contents] }]]].<br>
-        allWorkspaces isEmpty ifTrue:<br>
-                [^anUpdatingMenuMorph addItem:<br>
-                        [:item | item<br>
-                                contents: 'no workspaces found']].<br>
-        "Sort workspaces with non-empty ones first..."<br>
-        (allWorkspaces sorted:<br>
-                [:t1 :t2|<br>
-                t1 last isEmpty == t2 last isEmpty<br>
-                        ifTrue: [t1 second label <= t2 second label]<br>
-                        ifFalse: [t1 last notEmpty]]) do:<br>
-                [:tuple|<br>
-                anUpdatingMenuMorph addItem:<br>
-                        [:item | item<br>
-                                contents: tuple second label, ': ', ((tuple last asString contractTo: 128) ifEmpty: ['(empty)']);<br>
-                                target: self;<br>
-                                selector: #selectWorkspace:window:inProject:contents:;<br>
-                                arguments: tuple]]!<br>
<br>
Item was changed:<br>
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances. "Updates menu for Windows > Find Workspace ..."'!<br>
- (PackageInfo named: 'Morphic') postscript: 'Preferences maxBalloonHelpLineLength: 45.<br>
- <br>
- "See commentary in MorphicProject >> #startUpActions."<br>
- WorldState disableDeferredUpdates: Smalltalk platformName = ''Mac OS''.'!<br>
<br>
<br>
</div>
</span></font>
</body>
</html>