<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Hi again all.</span></div>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">I have a</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">QPlainTextEdit</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">widget. I place the cursor in the middle of a line, type a few characters and then hit [Enter]. Now if I want to undo that edit, it takes two</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.undo()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">calls -- the first removes the newline, the second the typed text.</span></div>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">I'd like to consider the entire edit one group, which a single</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.undo()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">undoes.</span></div>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">My ostensible solution was to call</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.beginEditBlock()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">prior to the edit, then</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.endEditBlock()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">after the edit. And that does in fact work -- a single</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.undo()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">call then undoes the entire edit. Unfortunately, after the</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.beginEditBlock()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">call, while the edit is occurring, the widget doesn't update.</span></div>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">------</span></div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Sample code attached. To demonstrate:</span></div>
<div> </div>
<ol type="1">
<li><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Place cursor somewhere in the middle of the line. Type a few characters and hit [Enter].</span><br />
<span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Type [ctrl+U] to manually call</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.undo()</span><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">. First time removes the newline, second time removes the typed characters.</span><br />
</li>
<li><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Place cursor somewhere (else) on the line.</span><br />
<span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Type [alt+B] to call</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.beginEditBlock()</span><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">.</span><br />
<span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Type a few characters and hit [Enter]. The characters overtype, and the widget doesn't update.</span><br />
<span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Type [alt+E] to call</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.endEditBlock()</span><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">. Now the widget updates.</span><br />
<span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">A single [ctrl+U] undoes the entire edit.</span></li>
</ol>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">------</span></div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Are</span> <span style="font-family:'Courier New', Courier, monospace;font-size:16px;">.beginEditBlock()/.endEditBlock()</span> <span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">only really intended to be used for programmatic editing of the text and not user interaction?</span></div>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">Thanks!</span></div>
<div> </div>
<div><span style="font-family:'Trebuchet MS', Helvetica, sans-serif;font-size:16px;">/John</span></div>
</div>
</body>
</html>