<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">I will try it in a few hours <br><br><div id="AppleMailSignature" dir="ltr"><br><div>-----</div><div><br></div><div>Please excuse the shortness of this mail which was sent from my mobile phone. If necessary, I will send more information later.</div><div><br></div><div>Cheers,</div><div>Tobias Giesen</div></div><div dir="ltr"><br>Am 11.06.2019 um 16:19 schrieb Dmitry Boyarintsev via lazarus <<a href="mailto:lazarus@lists.lazarus-ide.org">lazarus@lists.lazarus-ide.org</a>>:<br><br></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr">On Tue, Jun 11, 2019 at 10:06 AM David Jenkins via lazarus <<a href="mailto:lazarus@lists.lazarus-ide.org">lazarus@lists.lazarus-ide.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF">I looked at the assembly for NSApplication.run, there are a lot of
    things being called and set before the call to
    nextEventMatching...   The .isRunning variable being one of them -
    which is read only and can't be set.  It can be overridden (and is
    one of the suggested overrides) but unfortunately there are times,
    in other parts of the code, that they look directly at the ._running
    variable where the value of .isRunning is stored instead of calling
    .isRunning (look at NSApplication._setMainWindow).  Which sets up a
    mismatch between what an overridden .isRunning method would return
    and what ._running is set to.<br></div></blockquote><div><br></div><div>Let's back-up a little bit.</div><div><br></div><div>Can we actually try to set the value for the instance variable?</div><div>1) it's absolutely legal in Objective-C terms (object_getInstanceVariable, object_setInstanceVariable).</div><div>2) its' absolutely legal in KVC term. (I can presume that KVC is pretty much based on top of objc-run time. And this is how the entire Swift<->ObjC binding works)</div><div><br></div><div>Can anyone try and modify TCocoaApplication.run to look like this. (If you're using trunk, you'll need to have {$define COCOALOOPOVERRIDE} defines in cocoadefines.inc}</div><div><br></div><div>procedure TCocoaApplication.run;<br>begin<br>  self.setValue_forKey(NSNumber.numberWithBool(true),NSSTR('_running')); // setting instance variable through KVC<br>  isrun:=true;<br>  aloop();<br>end;  <br></div></div></div>
</div></blockquote><blockquote type="cite"><div dir="ltr"><span>-- </span><br><span>_______________________________________________</span><br><span>lazarus mailing list</span><br><span><a href="mailto:lazarus@lists.lazarus-ide.org">lazarus@lists.lazarus-ide.org</a></span><br><span><a href="https://lists.lazarus-ide.org/listinfo/lazarus">https://lists.lazarus-ide.org/listinfo/lazarus</a></span><br></div></blockquote></body></html>