<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Eliminate cases handled by otherwise clause in installVirtualKeyTable. </span><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Okay. Yet, this was deliberate documentation that the VM knows about those window managers. Maybe it's not worth supporting it. :-)</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
<p style='color: #AAAAAA; margin-top: 10px;'>Am 09.07.2021 23:46:32 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style='font-family:Arial,Helvetica,sans-serif'>Eliot Miranda uploaded a new version of Kernel to project The Trunk:<br>http://source.squeak.org/trunk/Kernel-eem.1407.mcz<br><br>==================== Summary ====================<br><br>Name: Kernel-eem.1407<br>Author: eem<br>Time: 9 July 2021, 2:46:18.688883 pm<br>UUID: 48a520fa-d6a2-44fa-8508-3405e7e0b8b9<br>Ancestors: Kernel-mt.1406<br><br>Have scanForInstructionSequence: descend into full blocks. Eliminate cases handled by otherwise clause in installVirtualKeyTable. Add error code to resue primitive invocation.<br><br>=============== Diff against Kernel-mt.1406 ===============<br><br>Item was changed:<br> ----- Method: EventSensor class>>installVirtualKeyTable (in category 'class initialization') -----<br> installVirtualKeyTable<br> <br> VirtualKeyTable := Smalltalk windowSystemName<br> caseOf: {<br> ['Windows'] -> [self virtualKeysOnWindows].<br> ['Win32' "older VMs"] -> [self virtualKeysOnWindows].<br> ['Aqua'] -> [self virtualKeysOnMacOS].<br> ['X11'] -> [self virtualKeysOnX11].<br>- ['RiscOS'] -> [Dictionary new].<br>- ['Quartz'] -> [Dictionary new].<br> } otherwise: [Dictionary new].<br> <br> "Shift 8 bits to not overwrite virtual-key mappings from above."<br> self mapControlKeysToCommandKeys ifTrue: [ <br> VirtualKeyTable<br> at: (2r0010 "ctrl" bitShift: 8)<br> put: (2r1010 "cmd+ctrl").<br> VirtualKeyTable<br> at: (2r0011 "ctrl+shift" bitShift: 8)<br> put: (2r1011 "cmd+ctrl+shift")].<br> <br> self mapAltKeysToOptionKeys ifTrue: [<br> VirtualKeyTable<br> at: (2r1000 "cmd/alt" bitShift: 8)<br> put: (2r1100 "cmd/alt+opt").<br> VirtualKeyTable<br> at: (2r1001 "cmd/alt+shift" bitShift: 8)<br> put: (2r1101 "cmd/alt+opt+shift")].!<br><br>Item was changed:<br> ----- Method: InstructionStream>>scanForInstructionSequence: (in category 'scanning') -----<br> scanForInstructionSequence: naryBlock<br> "naryBlock is a block taking one or more arguments.<br> Evaluate it for each sequence of instructions of length<br> n in the receiver until naryBlock evaluates to true.<br> Answer if naryBlock evaluated to true."<br> | instructions |<br> instructions := OrderedCollection withAll: ((1 to: naryBlock numArgs) collect:<br> [:ign|<br>+ self atEnd ifFalse:<br>+ [self nextInstruction]]).<br>+ instructions last ifNil: "not enough instructions, so no match in this method, but must check for blocks"<br>+ [instructions do:<br>+ [:instOrNil|<br>+ instOrNil ifNil: [^false].<br>+ (instOrNil selector == #pushFullClosure:numCopied:<br>+ and: [(self class on: instOrNil argument) scanForInstructionSequence: naryBlock]) ifTrue:<br>+ [^true]]].<br>- self atEnd ifTrue: [^false].<br>- self nextInstruction]).<br> [(naryBlock valueWithArguments: instructions asArray) ifTrue:<br> [^true].<br>+ (instructions first selector == #pushFullClosure:numCopied:<br>+ and: [(self class on: instructions first argument) scanForInstructionSequence: naryBlock]) ifTrue:<br>+ [^true].<br> self atEnd] whileFalse:<br> [instructions removeFirst; addLast: self nextInstruction].<br> ^false!<br><br>Item was changed:<br> ----- Method: Process>>resume (in category 'changing process state') -----<br> resume<br> "Primitive. Allow the process that the receiver represents to continue. Put <br> the receiver in line to become the activeProcess. Fail if the receiver is <br> already waiting in a queue (in a Semaphore or ProcessScheduler). Fail if<br> the receiver's suspendedContext is not a context.<br> Essential. See Object documentation whatIsAPrimitive."<br> <br>+ <primitive: 87="" error:="" ec=""><br>- <primitive: 87=""><br> self primitiveFailed!<br><br><br></primitive:></primitive:></div></blockquote>
</div></body>