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

List:       kde-commits
Subject:    kdevelop/parts/qeditor
From:       Sascha Cunz <milo () ng-projekt ! org>
Date:       2003-01-21 19:48:17
[Download RAW message or body]

CVS commit by cunz: 

Added expanding of colapsed text, on goto-line or on jumping to a collapsed line from compiler-error


  M +2 -1      qeditor.cpp   1.37
  M +2 -1      qeditor.h   1.19
  M +46 -1     qeditor_view.cpp   1.29
  M +3 -1      qeditor_view.h   1.19


--- kdevelop/parts/qeditor/qeditor.cpp  #1.36:1.37
@@ -254,4 +254,5 @@ void QEditor::doGotoLine( int line )
         return;
     QTextCursor c( document() );
+    emit ensureTextIsVisible( p );
     c.setParagraph( p );
     c.setIndex( 0 );

--- kdevelop/parts/qeditor/qeditor.h  #1.18:1.19
@@ -119,4 +119,5 @@ public:
 signals:
     void parsed();
+    void ensureTextIsVisible( QTextParagraph* );
 
 public slots:

--- kdevelop/parts/qeditor/qeditor_view.cpp  #1.28:1.29
@@ -100,4 +100,7 @@ QEditorView::QEditorView( QEditorPart* d
              doc(), SIGNAL(selectionChanged()) );
     
+    connect( m_editor, SIGNAL(ensureTextIsVisible(QTextParagraph*)),
+             this, SLOT(ensureTextIsVisible(QTextParagraph*)) );
+    
     m_pCodeCompletion = new QEditorCodeCompletion( this );
     connect(m_pCodeCompletion,SIGNAL(completionAborted()),
@@ -221,4 +224,7 @@ bool QEditorView::setCursorPosition(unsi
     kdDebug(9032) << "TODO: implement QEditorView::setCursorPosition" << endl;
 
+    QTextParagraph* p = m_editor->document()->paragAt( line );
+    ensureTextIsVisible( p );
+
     m_editor->setCursorPosition( line, col );
     m_editor->ensureCursorVisible();
@@ -229,4 +235,8 @@ bool QEditorView::setCursorPosition(unsi
 bool QEditorView::setCursorPositionReal(unsigned int line, unsigned int col)
 {
+    QTextParagraph* p = m_editor->document()->paragAt( line );
+    if( p )
+        ensureTextIsVisible( p );
+
     m_editor->setCursorPosition( line, col );
     m_editor->ensureCursorVisible();
@@ -474,4 +484,39 @@ void QEditorView::replace( const QString
                         m_currentParag->paragId(),
                         matchingIndex );
+}
+
+void QEditorView::ensureTextIsVisible( QTextParagraph* p)
+{
+    internalEnsureVisibleBlock( p );
+
+    m_editor->refresh();
+    doRepaint();
+}
+
+void QEditorView::internalEnsureVisibleBlock( QTextParagraph* p )
+{
+    ParagData* data = (ParagData*) p->extraData();
+
+    if( !data ){
+        return;
+    }
+    int lev = data->level(), parentLevel;
+
+    while( lev > 0 ){
+        QTextParagraph* parent = p->prev();
+
+        parentLevel = ((ParagData*) parent->extraData())->level();
+
+        while( parentLevel > lev ){
+            parent = parent->prev();
+            parentLevel = ((ParagData*) parent->extraData())->level();
+        }
+        if( parentLevel < lev ){
+            internalExpandBlock(p);
+            lev = parentLevel;
+        }
+
+        p = parent;
+    }
 }
 

--- kdevelop/parts/qeditor/qeditor_view.h  #1.18:1.19
@@ -84,4 +84,5 @@ public slots:
     void doReplace();
     void indent();
+    void ensureTextIsVisible( QTextParagraph* );
     void expandBlock( QTextParagraph* );
     void collapseBlock( QTextParagraph* );
@@ -99,4 +100,5 @@ protected:
     bool process( const QString& );
     void doRepaint();
+    void internalEnsureVisibleBlock( QTextParagraph* );
     void internalExpandBlock( QTextParagraph* );
     void internalCollapseBlock( QTextParagraph* );


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

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