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>&amp;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/>

Reply via email to