[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