D28819: [KRichTextEdit] Always treat key press as single modification in undo stack
    Igor Poboiko 
    noreply at phabricator.kde.org
       
    Thu Apr 16 18:45:09 BST 2020
    
    
  
poboiko added a comment.
  @dfaure There seem to be a regression caused by this patch: if I reach the end of current view, and then press Enter so it has to scroll down, it scrolls to the very beginning of the document instead.
  
  This is the same issue as in ancient bug 195828 <https://bugs.kde.org/show_bug.cgi?id=195828>, and it seems like it is Qt issue.
  
  Here's the simplest MWE:
  
    #include <QApplication>
    #include <QMainWindow>
    #include <QTextEdit>
    #include <QPushButton>
    #include <QVBoxLayout>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        auto w = new QWidget();
        auto edit = new QTextEdit();
        auto button = new QPushButton(QStringLiteral("Insert new line"));
        button->connect(button, &QPushButton::clicked, [edit](){
            auto cursor = edit->textCursor();
            cursor.beginEditBlock();
            cursor.insertBlock();
            edit->setTextCursor(cursor);
            cursor.endEditBlock();
        });
        auto layout = new QVBoxLayout(w);
        layout->addWidget(edit);
        layout->addWidget(button);
        w->show();
        return a.exec();
    }
  
  Seems like the following code in `QTextCursorPrivate::setX` causes the trouble:
  
    if (priv->isInEditBlock() || priv->inContentsChange) {
        x = -1; // mark dirty
        return;
    }
  
  and seems like this "dirty" value is treated literally afterwards.
  
  For this example, switching `endEditBlock` and `setTextCursor` lines fixes the issue (and same with `Insert Rule`).
  I've also found a (dirty) workaround for the original patch: if I call `setTextCursor(textCursor())` right after `endEditBlock()`, it works like a charm. It seems like this line (although semantically is a NOOP) triggers the update of this "dirty" value.
  
  How should I proceed?
REPOSITORY
  R310 KTextWidgets
REVISION DETAIL
  https://phabricator.kde.org/D28819
To: poboiko, #frameworks, mlaurent, dfaure
Cc: ahmadsamir, kde-frameworks-devel, LeGast00n, cblack, michaelh, ngraham, bruns
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20200416/1a6bb1cb/attachment.html>
    
    
More information about the Kde-frameworks-devel
mailing list