<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p>Hi Marcel,</p>
<p><br>
</p>
<p>thanks for these fixes! :-)</p>
<p><br>
</p>
<p>A few additional notes about DialogWindows in general:</p>
<p><br>
</p>
<p></p>
<ul style="margin-bottom: 0px; margin-top: 0px;">
<li>We should (finally) move the grips to the window border itself to make it consistent with regular windows.</li><li>Grips & scrollbars are not hi-dpi-aware.</li><li>The minimum extent of the DialogWindow title itself is neither, I think:<br>
<img size="6873" contenttype="image/png" id="img525692" style="max-width: 99.9%; user-select: none;" contextid="img405821" tabindex="0" src="cid:35e5cd17-a387-44d6-a6b7-467475958932"><br>
:-)</li></ul>
<p></p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div>
<div class="_rp_T4" id="Item.MessagePartBody">
<div class="_rp_U4 ms-font-weight-regular ms-font-color-neutralDark rpHighlightAllClass rpHighlightBodyClass" id="Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="divtagdefaultwrapper"><font face="Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="Signature">
<div style="margin:0px"><font style="font-family:Calibri,Arial,Helvetica,sans-serif,serif,EmojiFont">
<div><font size="3" color="black"><span style="font-size:12pt"><a href="http://www.hpi.de/" target="_blank" rel="noopener noreferrer" id="LPNoLP"><font size="2"><span id="LPlnk909538"><font color="#757B80"></font></span></font></a></span></font></div>
</font></div>
</div>
</font></div>
</div>
</div>
</div>
</div>
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<br>
</div>
Best,</div>
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
Christoph<br>
<br>
<div style="color: rgb(0, 0, 0);">
<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> Dienstag, 12. Januar 2021 14:52 Uhr<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org; packages@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Trunk: Morphic-mt.1716.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.1716.mcz">http://source.squeak.org/trunk/Morphic-mt.1716.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-mt.1716<br>
Author: mt<br>
Time: 12 January 2021, 2:52:47.977356 pm<br>
UUID: 93f95f53-4457-5e4c-a157-5cbf89aa7328<br>
Ancestors: Morphic-mt.1715<br>
<br>
Fixes a bug in resize grips (having #rigid targets) that are placed within layouted (usually #shrinkWrap) owners.<br>
<br>
This makes all grips in resizable dialogs finally work as expected. I still consider this a #workaround to be improved.<br>
<br>
=============== Diff against Morphic-mt.1715 ===============<br>
<br>
Item was changed:<br>
  ----- Method: BorderedMorph>>doFastWindowReframe: (in category 'resize handling') -----<br>
  doFastWindowReframe: ptName<br>
  <br>
+        | newBounds delta |<br>
-        | newBounds |<br>
         "For fast display, only higlight the rectangle during loop"<br>
         newBounds := self bounds newRectButtonPressedDo: [:f | <br>
                 f <br>
                         withSideOrCorner: ptName<br>
                         setToPoint: (self pointFromWorld: Sensor cursorPoint)<br>
                         minExtent: self minimumExtent].<br>
+        delta := newBounds origin - self bounds origin.<br>
         self bounds: newBounds.<br>
+        self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."<br>
+        self allOwnersDo: [:owner |<br>
+                owner layoutPolicy ifNotNil: [owner topLeft: owner topLeft + delta]].<br>
         ^newBounds.!<br>
<br>
Item was changed:<br>
  ----- Method: BottomLeftGripMorph>>apply: (in category 'target resize') -----<br>
  apply: delta <br>
         | oldBounds |<br>
         oldBounds := self target bounds.<br>
         self target<br>
+                bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner + (0 @ delta y)).<br>
+        self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."<br>
+        self target allOwnersDo: [:owner |<br>
+                owner layoutPolicy ifNotNil: [owner left: owner left + delta x]].!<br>
-                bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner + (0 @ delta y))!<br>
<br>
Item was changed:<br>
  ----- Method: LeftGripMorph>>apply: (in category 'target resize') -----<br>
  apply: delta <br>
         | oldBounds |<br>
         oldBounds := self target bounds.<br>
         self target<br>
+                bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner).<br>
+        self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."<br>
+        self target allOwnersDo: [:owner |<br>
+                owner layoutPolicy ifNotNil: [owner left: owner left + delta x]].!<br>
-                bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner)!<br>
<br>
Item was changed:<br>
  ----- Method: TopGripMorph>>apply: (in category 'target resize') -----<br>
  apply: delta <br>
         | oldBounds |<br>
         oldBounds := self target bounds.<br>
         self target<br>
+                bounds: (oldBounds origin + (0 @ delta y) corner: oldBounds corner).<br>
+        self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."<br>
+        self target allOwnersDo: [:owner |<br>
+                owner layoutPolicy ifNotNil: [owner top: owner top + delta y]].!<br>
-                bounds: (oldBounds origin + (0 @ delta y) corner: oldBounds corner)!<br>
<br>
Item was changed:<br>
  ----- Method: TopLeftGripMorph>>apply: (in category 'target resize') -----<br>
  apply: delta <br>
         | oldBounds |<br>
         oldBounds := self target bounds.<br>
         self target<br>
+                bounds: (oldBounds origin + delta corner: oldBounds corner).<br>
+        self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."<br>
+        self target allOwnersDo: [:owner |<br>
+                owner layoutPolicy ifNotNil: [owner topLeft: owner topLeft + delta]].!<br>
-                bounds: (oldBounds origin + delta corner: oldBounds corner)!<br>
<br>
Item was changed:<br>
  ----- Method: TopRightGripMorph>>apply: (in category 'target resize') -----<br>
  apply: delta <br>
         | oldBounds |<br>
         oldBounds := self target bounds.<br>
         self target<br>
+                bounds: (oldBounds origin + (0@delta y) corner: oldBounds corner + (delta x @ 0)).<br>
+        self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."<br>
+        self target allOwnersDo: [:owner |<br>
+                owner layoutPolicy ifNotNil: [owner top: owner top + delta y]].!<br>
-                bounds: (oldBounds origin + (0@delta y) corner: oldBounds corner + (delta x @ 0))!<br>
<br>
<br>
</div>
</span></font></div>
</div>
</div>
</body>
</html>