[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kdevelop-devel
Subject:    COutputWidget revisited
From:       Harald Fernengel <harry () kdevelop ! org>
Date:       2002-06-19 12:17:29
[Download RAW message or body]

Hi,

in Qt 3.0.5 the behaviour of QTextEdit changed again a little bit. BlockMode 
now uses paragraph linespacing, so each output line has too much space above 
and below.

The attached patch fixes this, I tested it on an unchanged SuSE 8.0 and a self 
compiled CVS HEAD.

Since KDevelop 2.1.2 gets delayed for one week, I'd really get that patch in.

Falk, Roland, Kuba and the other 2.x users, can you please test and review it?

Best regards,
Harry
["coutputwidget.patch" (text/x-diff)]

Index: coutputwidget.cpp
===================================================================
RCS file: /home/kde/kdevelop/kdevelop/coutputwidget.cpp,v
retrieving revision 1.3.2.4.2.10.2.25
diff -u -3 -p -r1.3.2.4.2.10.2.25 coutputwidget.cpp
--- coutputwidget.cpp	2002/06/13 23:13:58	1.3.2.4.2.10.2.25
+++ coutputwidget.cpp	2002/06/19 11:27:02
@@ -25,6 +25,10 @@
 #include <qfont.h>
 #include <qstylesheet.h>
 
+#if QT_VERSION >= 300
+#include <qregexp.h>
+#endif
+
 COutputWidget::COutputWidget(QWidget* parent, const char* name) :
 //  KEdit(parent,name)
   QMultiLineEdit(parent, name)
@@ -71,6 +75,32 @@ void COutputWidget::insertAtEnd(const QS
 // I'm sure it is possible but I gave in...
 // ---------------------------------------------------------------------------
 
+#if QT_VERSION >= 300
+bool CMakeOutputWidget::isAboveQt303()
+{
+  static int result = -1;
+
+  if ( result == -1 ) {
+    int qMajor = -1;
+    int qMinor = -1;
+    int qVer = -1;
+    QRegExp verRegExp("(\\d+)\\.(\\d+)\\.(\\d+)");
+    verRegExp.search( QString(qVersion()) );
+    qVer = verRegExp.cap(1).toInt();
+    qMajor = verRegExp.cap(2).toInt();
+    qMinor = verRegExp.cap(3).toInt();
+    //qDebug( "Qt version: %d.%d.%d", qVer, qMajor, qMinor );
+    if (qVer > 2 && qMajor >= 0 && qMinor > 3) {
+      result = 1;
+    } else {
+      result = 0;
+    }
+  }
+  
+  return (result > 0); 
+}
+#endif
+
 CMakeOutputWidget::CMakeOutputWidget(QWidget* parent, const char* name) :
   QMultiLineEdit(parent, name),
   m_buf(),
@@ -85,7 +115,9 @@ CMakeOutputWidget::CMakeOutputWidget(QWi
   setTextFormat(Qt::RichText);
 
   // This is necessary in order to work around a bug in Qt's RichText widget. (Marcus Gruendler)
-  styleSheet()->item( "font" )->setDisplayMode( QStyleSheetItem::DisplayBlock );
+  if ( !isAboveQt303() ) {
+    styleSheet()->item( "font" )->setDisplayMode( QStyleSheetItem::DisplayBlock );
+  }
 #endif
 }
 
@@ -123,13 +155,8 @@ void CMakeOutputWidget::insertAtEnd(cons
     int index;
     getCursorPosition(&currentPara, &index);
 
-    bool isQt304 = false;
-    if (QString(qVersion()) == "3.0.4") {
-      isQt304 = true;
-    }
-
     int paraCount;
-    if (!isQt304) {
+    if (isAboveQt303()) {
       paraCount = paragraphs()-1;
     }
     else {
@@ -151,7 +178,7 @@ void CMakeOutputWidget::insertAtEnd(cons
         break;
       default:
         // Runtime check for broken Qt version. Don't add empty new lines.
-        if (line[0]=='\n' && !isQt304) {
+        if (line[0]=='\n' && !isAboveQt303()) {
           break;
         }
           
@@ -298,7 +325,7 @@ void CMakeOutputWidget::processLine(cons
   {
     // add the error keyed on the line number in the make output widget
     ErrorDetails errorDetails(fileInErr, lineInErr, type);
-    if (QString(qVersion()) == "3.0.4") {
+    if (isAboveQt303()) {
       m_errorMap.insert(numLines(), errorDetails);
     }
     else {
Index: coutputwidget.h
===================================================================
RCS file: /home/kde/kdevelop/kdevelop/coutputwidget.h,v
retrieving revision 1.2.2.3.2.6.2.3
diff -u -3 -p -r1.2.2.3.2.6.2.3 coutputwidget.h
--- coutputwidget.h	2002/04/10 14:48:20	1.2.2.3.2.6.2.3
+++ coutputwidget.h	2002/06/19 11:27:02
@@ -93,6 +93,8 @@ private:
 #if (QT_VERSION < 300)
   void paintCell(QPainter* p, int row, int col);
   int mapToView( int xIndex, int line );
+#else
+  static bool isAboveQt303();
 #endif
 
   QString m_buf;

_______________________________________________
Kdevelop-devel mailing list
Kdevelop-devel@barney.cs.uni-potsdam.de
http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic