<div dir="ltr"><div dir="ltr">I'm a -1 only because "Close all windows but workspaces" is out of place from a UI sense, and should be removed entirely.  The organization of the menu is that the functions on the cascades are already the way to isolate specific <u>types</u> of windows, whereas the bottom three menu entries are for the "All" group, not specific types.</div><div dir="ltr"><br></div><div dir="ltr">It would be just as easy to make the UI more powerful and consistent by adding additional items to this cascade menu, perhaps arranged in a progressively less-restrictive (e.g., close more windows) sequence.</div><div><br></div><div>(proposal for enhanced cascade menu)</div><div>   Close</div><div>   Close unchanged like this  (<-- new)<br></div><div>   Close all like this</div><div>   Close unchanged unlike this  (<-- new)</div><div>   Close all unlike this   (<-- new)</div><div>   Close all but this</div><div>   Expand or Contract</div><div dir="ltr"><br></div><div>This would also allow them all to be direct-action, instead of interactive, which would streamline the usage.</div><div dir="ltr"><br></div><div dir="ltr"><div>Best,</div><div>  Chris</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 10, 2022 at 12:49 PM <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">A new version of Morphic was added to project The Inbox:<br><a href="http://source.squeak.org/inbox/Morphic-ct.2008.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/inbox/Morphic-ct.2008.mcz</a><br><br>==================== Summary ====================<br><br>Name: Morphic-ct.2008<br>Author: ct<br>Time: 10 June 2022, 7:48:51.419586 pm<br>UUID: 1f127f92-d0a1-cd48-bae1-1395a7d681a9<br>Ancestors: Morphic-ct.2006<br><br>Proposal: When closing all windows (unsafely), only ask the user about unsaved changes if there are actually any. Also provide an option from that dialog to only close windows without changes.<br><br>Improves multilingual support as well.<br><br>=============== Diff against Morphic-ct.2006 ===============<br><br>Item was changed:<br>  ----- Method: TheWorldMainDockingBar>>closeAllWindowsButWorkspaces (in category 'submenu - windows') -----<br>  closeAllWindowsButWorkspaces<br><br>        (UserDialogBoxMorph<br>+               confirm: 'There might be unsaved changes.\Do you really want to close all windows\that are no workspaces?' withCRs translated<br>+               title: 'Only keep workspaces' translated) ifTrue: [<br>-               confirm: 'There might be unsaved changes.\Do you really want to close all windows\that are no workspaces?' withCRs<br>-               title: 'Only keep workspaces') ifTrue: [<br>                        self allVisibleWindows<br>                                reject: [:each | each model isKindOf: Workspace]<br>                                thenDo: [:each | [each delete] valueSupplyingAnswer: true]].!<br><br>Item was changed:<br>  ----- Method: TheWorldMainDockingBar>>closeAllWindowsUnsafe (in category 'submenu - windows') -----<br>  closeAllWindowsUnsafe<br><br>+       (self allVisibleWindows allSatisfy: [:each |<br>+               each model canDiscardEdits])<br>+                       ifFalse:<br>+                               [(Project uiManager<br>+                                       chooseOptionFromLabeledValues:<br>+                                               (OrderedDictionary new<br>+                                                       at: 'Yes, close all windows' translated put: [#proceed];<br>+                                                       at: 'Only windows without changes' translated put: [^ self closeAllWindows];<br>+                                                       at: 'Cancel' put: [^ self];<br>+                                                       yourself)<br>+                                       title: 'There might be unsaved changes.\Do you really want to close all windows?' withCRs translated)<br>+                                               value<br>+                                                       ifNil: [^ self]].<br>+       <br>+       self allVisibleWindows do: [:each | [each delete] valueSupplyingAnswer: true].!<br>-       (UserDialogBoxMorph<br>-               confirm: 'There might be unsaved changes.\Do you really want to close all windows?' withCRs<br>-               title: 'Close All Windows') ifTrue: [<br>-                       self allVisibleWindows do: [:each | [each delete] valueSupplyingAnswer: true]].!<br><br></blockquote></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 10, 2022 at 12:53 PM Thiede, Christoph <<a href="mailto:Christoph.Thiede@student.hpi.uni-potsdam.de" target="_blank">Christoph.Thiede@student.hpi.uni-potsdam.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div>


<div dir="ltr">
<div id="gmail-m_-9054527281581483156gmail-m_-3803507927633233478x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif">
<p><img size="50305" id="gmail-m_-9054527281581483156gmail-m_-3803507927633233478x_img987065" style="max-width: 99.9%;" src="cid:18174eefb5af456b1e52"><br>
</p>
<p><img size="10887" id="gmail-m_-9054527281581483156gmail-m_-3803507927633233478x_img851467" style="max-width: 99.9%;" src="cid:18174eefb5af456b1e51"><br>
</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
</div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_-9054527281581483156gmail-m_-3803507927633233478x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <<a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank">squeak-dev-bounces@lists.squeakfoundation.org</a>> im Auftrag von <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>><br>
<b>Gesendet:</b> Freitag, 10. Juni 2022 19:52:36<br>
<b>An:</b> <a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a><br>
<b>Betreff:</b> [squeak-dev] The Inbox: Morphic-ct.2009.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt">
<div>A new version of Morphic was added to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Morphic-ct.2009.mcz" target="_blank">http://source.squeak.org/inbox/Morphic-ct.2009.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-ct.2009<br>
Author: ct<br>
Time: 10 June 2022, 7:52:30.248586 pm<br>
UUID: 00155f55-d7b7-1d4c-9965-d1a8ff872513<br>
Ancestors: Morphic-ct.2006<br>
<br>
Proposal: When closing all windows (unsafely), only ask the user about unsaved changes if there are actually any. Also provide an option from that dialog to only close windows without changes.<br>
<br>
Improves multilingual support as well.<br>
<br>
Revision: Improve user strings. Sorry for the noise.<br>
<br>
=============== Diff against Morphic-ct.2006 ===============<br>
<br>
Item was changed:<br>
  ----- Method: TheWorldMainDockingBar>>closeAllWindowsButWorkspaces (in category 'submenu - windows') -----<br>
  closeAllWindowsButWorkspaces<br>
  <br>
         (UserDialogBoxMorph<br>
+                confirm: 'There might be unsaved changes.\Do you really want to close all windows\that are no workspaces?' withCRs translated<br>
+                title: 'Only keep workspaces' translated) ifTrue: [<br>
-                confirm: 'There might be unsaved changes.\Do you really want to close all windows\that are no workspaces?' withCRs<br>
-                title: 'Only keep workspaces') ifTrue: [<br>
                         self allVisibleWindows<br>
                                 reject: [:each | each model isKindOf: Workspace]<br>
                                 thenDo: [:each | [each delete] valueSupplyingAnswer: true]].!<br>
<br>
Item was changed:<br>
  ----- Method: TheWorldMainDockingBar>>closeAllWindowsUnsafe (in category 'submenu - windows') -----<br>
  closeAllWindowsUnsafe<br>
  <br>
+        (self allVisibleWindows allSatisfy: [:each |<br>
+                each model canDiscardEdits])<br>
+                        ifFalse:<br>
+                                [(Project uiManager<br>
+                                        chooseOptionFromLabeledValues:<br>
+                                                (OrderedDictionary new<br>
+                                                        at: 'Yes, close all windows' translated put: [#proceed];<br>
+                                                        at: 'Close only windows without changes' translated put: [^ self closeAllWindows];<br>
+                                                        at: 'Cancel' put: [^ self];<br>
+                                                        yourself)<br>
+                                        title: 'There are unsaved changes.\Do you really want to close all windows?' withCRs translated)<br>
+                                                value<br>
+                                                        ifNil: [^ self]].<br>
+        <br>
+        self allVisibleWindows do: [:each | [each delete] valueSupplyingAnswer: true].!<br>
-        (UserDialogBoxMorph<br>
-                confirm: 'There might be unsaved changes.\Do you really want to close all windows?' withCRs<br>
-                title: 'Close All Windows') ifTrue: [<br>
-                        self allVisibleWindows do: [:each | [each delete] valueSupplyingAnswer: true]].!<br>
<br>
<br>
</div>
</span></font>
</div>

<br>
</blockquote></div>