Jean-Marc Lasgouttes wrote:
Abdelrazak Younes <you...@lyx.org> writes:
I just tried without it and it still is slow. So the real bottleneck
seems to be QTextDocument indeed. But as I said, we do a full reload
at each keystroke...
What about QPlainTextEdit instead (qt >= 4.4)?
I just tried, the performance boost is very sensible but not quite enough.
Abdel.
Index: frontends/qt4/GuiViewSource.cpp
===================================================================
--- frontends/qt4/GuiViewSource.cpp (revision 32476)
+++ frontends/qt4/GuiViewSource.cpp (working copy)
@@ -58,6 +58,8 @@
// setting a document at this point trigger an assertion in Qt
// so we disable the signals here:
document_->blockSignals(true);
+ QPlainTextDocumentLayout * layout = new QPlainTextDocumentLayout(document_);
+ document_->setDocumentLayout(layout);
viewSourceTV->setDocument(document_);
document_->blockSignals(false);
viewSourceTV->setReadOnly(true);
Index: frontends/qt4/ui/ViewSourceUi.ui
===================================================================
--- frontends/qt4/ui/ViewSourceUi.ui (revision 32476)
+++ frontends/qt4/ui/ViewSourceUi.ui (working copy)
@@ -1,7 +1,8 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>ViewSourceUi</class>
- <widget class="QWidget" name="ViewSourceUi" >
- <property name="geometry" >
+ <widget class="QWidget" name="ViewSourceUi">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
@@ -9,60 +10,60 @@
<height>94</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string/>
</property>
- <layout class="QGridLayout" >
- <property name="margin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>0</number>
</property>
- <property name="spacing" >
+ <property name="spacing">
<number>6</number>
</property>
- <item row="0" column="1" >
- <layout class="QVBoxLayout" >
- <property name="spacing" >
+ <item row="0" column="1">
+ <layout class="QVBoxLayout">
+ <property name="spacing">
<number>6</number>
</property>
- <property name="margin" >
+ <property name="margin">
<number>0</number>
</property>
<item>
- <widget class="QCheckBox" name="viewFullSourceCB" >
- <property name="cursor" >
+ <widget class="QCheckBox" name="viewFullSourceCB">
+ <property name="cursor">
<cursorShape>ArrowCursor</cursorShape>
</property>
- <property name="text" >
+ <property name="text">
<string>Complete source</string>
</property>
</widget>
</item>
<item>
- <widget class="QCheckBox" name="autoUpdateCB" >
- <property name="text" >
+ <widget class="QCheckBox" name="autoUpdateCB">
+ <property name="text">
<string>Automatic update</string>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="updatePB" >
- <property name="enabled" >
+ <widget class="QPushButton" name="updatePB">
+ <property name="enabled">
<bool>false</bool>
</property>
- <property name="text" >
+ <property name="text">
<string>&Update</string>
</property>
</widget>
</item>
<item>
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
@@ -72,17 +73,15 @@
</item>
</layout>
</item>
- <item row="0" column="0" >
- <widget class="QTextEdit" name="viewSourceTV" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>13</vsizetype>
+ <item row="0" column="0">
+ <widget class="QPlainTextEdit" name="viewSourceTV">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="whatsThis" >
+ <property name="whatsThis">
<string/>
</property>
</widget>
@@ -96,7 +95,7 @@
<tabstop>updatePB</tabstop>
</tabstops>
<includes>
- <include location="local" >qt_i18n.h</include>
+ <include location="local">qt_i18n.h</include>
</includes>
<resources/>
<connections/>