<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 Eliot,</p>
<p><br>
</p>
<p>see <span>Tools-eem.992 for my question about caching the translation.</span></p>
<p><span><br>
</span></p>
<p><span>Allow me another basic question: Did you make sure the delay of "clicking the button frequently" is not (partially) caused by the underlying Morphic code? I'm asking because I believe there are a small number of other situations in plain Squeak where
 you can press a button without anything being opened so you wouldn't notice the inherent delay of the button.</span></p>
<p><span>For example, I noticed a small bug in the PluggableButtonMorph that leads to drawing the button as non-hovered after a click, even if it is being hovered; but at the beginning, I assumed the UI not yet being responsive again. You could also try out
 your debugging example in MVC (probably you already did this) to see whether the delay is the same.</span></p>
<p><span>If you should find any potential for optimization in the <span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">PluggableButtonMorph
 hierarchy, it would be nice if you could report them on the list first before fixing because I am preparing a larger changeset that renews event handling in these classes, so this would probably result in merge conflicts.</span></span></p>
<p><span><span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"><br>
</span></span></p>
<p><span><span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">Best,</span></span></p>
<p><span><span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">Christoph</span></span></p>
<div id="x_Signature">
<div id="x_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="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div>
<div class="x__rp_T4" id="x_Item.MessagePartBody">
<div class="x__rp_U4 x_ms-font-weight-regular x_ms-font-color-neutralDark x_rpHighlightAllClass x_rpHighlightBodyClass" id="x_Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="x_divtagdefaultwrapper"><font face="Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="x_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>
<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, 2. Oktober 2020 21:36:06<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org; packages@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Trunk: Tools-eem.993.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Eliot Miranda uploaded a new version of Tools to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Tools-eem.993.mcz">http://source.squeak.org/trunk/Tools-eem.993.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Tools-eem.993<br>
Author: eem<br>
Time: 2 October 2020, 12:35:57.69654 pm<br>
UUID: 0d492fb7-b306-4024-9a98-e18603f5d338<br>
Ancestors: Tools-eem.992<br>
<br>
Go a little further in speeding up stepping in the debugger. Cache the translation of 'all inst vars' in In szpector.  Consequently move CurrentLocale up to Inspector form ContextInspector.  Now stepping is pretty good, but even on my 2.9 GHz Core i9 MPB I
 can click faster than it can keep up, but it doesn't get further than a couple fo sends behind.  That's still  too slow; it *must* keep up for the debugger to feel comfortable.  But we are hopefully only one more source of slow down away now.<br>
<br>
=============== Diff against Tools-eem.992 ===============<br>
<br>
Item was changed:<br>
  Inspector subclass: #ContextInspector<br>
         instanceVariableNames: ''<br>
+        classVariableNames: 'CachedStackTopLabel CachedTempVarsLabel'<br>
-        classVariableNames: 'CachedStackTopLabel CachedTempVarsLabel CurrentLocale'<br>
         poolDictionaries: ''<br>
         category: 'Tools-Inspector'!<br>
  <br>
  !ContextInspector commentStamp: 'ct 1/12/2020 15:26' prior: 0!<br>
  I am an Inspector that is specialized for inspecting Contexts.!<br>
<br>
Item was changed:<br>
  StringHolder subclass: #Inspector<br>
         instanceVariableNames: 'object context fields customFields selectionIndex expression contentsTyped fieldListStyler shouldStyleValuePane selectionUpdateTime'<br>
+        classVariableNames: 'CachedAllInstVarsLabel CurrentLocale'<br>
-        classVariableNames: ''<br>
         poolDictionaries: ''<br>
         category: 'Tools-Inspector'!<br>
  <br>
  !Inspector commentStamp: 'mt 4/6/2020 15:16' prior: 0!<br>
  I am a tool that allows to inspect and modify the internal representation of an object. As a StringHolder, the string I represent is the value of the currently selected inspector field, which may be an instance variable, of the observed object.<br>
  <br>
  Beside the #contents in my value pane, I have an extra code pane that holds an #expression to be evaluated on the inspected object -- not the currently selected inspector field.<br>
  <br>
  Take a look at my "fields ..." protocols as well as InspectorField.<br>
  <br>
  (Note that the idea of "elements" from the CollectionInspector bleeds a little bit down into this interface to simplify the implementation of field truncation as well as #inspectOne. Sorry for that. Usually, the inspected object will only produce "fields"
 to display, and maybe "items" in a pop-up menu. Only collections have "elements".)!<br>
<br>
Item was added:<br>
+ ----- Method: Inspector>>allInstVarsTranslated (in category 'private') -----<br>
+ allInstVarsTranslated<br>
+        "Alas translation is slow enough that we notice the slow down in trying to step in the debugger..."<br>
+        (CurrentLocale ~= Locale current<br>
+         or: [CachedAllInstVarsLabel isNil]) ifTrue:<br>
+                [CurrentLocale := Locale current.<br>
+                 CachedAllInstVarsLabel :=  'all inst vars' translated].<br>
+        ^CachedAllInstVarsLabel!<br>
<br>
Item was changed:<br>
  ----- Method: Inspector>>fieldAllInstVars (in category 'fields') -----<br>
  fieldAllInstVars<br>
  <br>
         ^ (self newFieldForType: #all key: #allInstVars)<br>
+                name: self allInstVarsTranslated; emphasizeName;<br>
-                name: 'all inst vars' translated; emphasizeName;<br>
                 valueGetter: [:object | object longPrintString]; printValueAsIs;<br>
                 yourself!<br>
<br>
<br>
</div>
</span></font>
</body>
</html>