2012-08-23 18:57 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* Optimizations: pair-matching of Harbour control structures
shifted to C++ level and made in-line, no need to click
on the keywords. Pairs are highlighted while navigaing the
source. This is spontaneous.
! Tab key to behave differently while in column-selection mode.
Before tab spaces were inserted at the last column selected,
now it is first column selected, which is the normal behavor.
% While in selection mode, pair-matching is disabled, giving
us speed advantage.
- Removed: PRG block call on QEvent_MouseButtonPress.
This commit is contained in:
@@ -16,6 +16,22 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-08-23 18:57 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
|
||||
* Optimizations: pair-matching of Harbour control structures
|
||||
shifted to C++ level and made in-line, no need to click
|
||||
on the keywords. Pairs are highlighted while navigaing the
|
||||
source. This is spontaneous.
|
||||
|
||||
! Tab key to behave differently while in column-selection mode.
|
||||
Before tab spaces were inserted at the last column selected,
|
||||
now it is first column selected, which is the normal behavor.
|
||||
|
||||
% While in selection mode, pair-matching is disabled, giving
|
||||
us speed advantage.
|
||||
|
||||
- Removed: PRG block call on QEvent_MouseButtonPress.
|
||||
|
||||
2012-08-23 10:56 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbide/edit.prg
|
||||
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
|
||||
|
||||
@@ -851,7 +851,7 @@ void HBQPlainTextEdit::mouseReleaseEvent( QMouseEvent *event )
|
||||
{
|
||||
QPlainTextEdit::mouseReleaseEvent( event );
|
||||
}
|
||||
|
||||
#if 0
|
||||
if( block )
|
||||
{
|
||||
PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::MouseButtonRelease );
|
||||
@@ -862,6 +862,7 @@ void HBQPlainTextEdit::mouseReleaseEvent( QMouseEvent *event )
|
||||
hb_itemRelease( p2 );
|
||||
hb_itemRelease( p3 );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
@@ -926,7 +927,7 @@ void HBQPlainTextEdit::mousePressEvent( QMouseEvent *event )
|
||||
else
|
||||
{
|
||||
QPlainTextEdit::mousePressEvent( event );
|
||||
|
||||
#if 0
|
||||
if( block )
|
||||
{
|
||||
PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::MouseButtonPress );
|
||||
@@ -937,7 +938,7 @@ void HBQPlainTextEdit::mousePressEvent( QMouseEvent *event )
|
||||
hb_itemRelease( p2 );
|
||||
hb_itemRelease( p3 );
|
||||
}
|
||||
|
||||
#endif
|
||||
dragStartPosition = event->pos();
|
||||
if( mouseMode == mouseMode_select && isCursorInSelection() )
|
||||
{
|
||||
@@ -2280,6 +2281,11 @@ int HBQPlainTextEdit::hbGetLine( const QTextCursor &crQTextCursor )
|
||||
|
||||
void HBQPlainTextEdit::hbSlotCursorPositionChanged()
|
||||
{
|
||||
if( columnBegins >= 0 ) /* Under selection mode; do nothing */
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if( m_currentBlockNumber != textCursor().blockNumber() )
|
||||
{
|
||||
m_currentBlockNumber = textCursor().blockNumber();
|
||||
@@ -2290,7 +2296,9 @@ void HBQPlainTextEdit::hbSlotCursorPositionChanged()
|
||||
}
|
||||
|
||||
if( styleHightlighter != "none" )
|
||||
{
|
||||
hbBraceHighlight();
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
@@ -2735,17 +2743,17 @@ void HBQPlainTextEdit::hbBraceHighlight()
|
||||
openBrace = "{";
|
||||
closeBrace = "}";
|
||||
}
|
||||
if( ( brace == "[" ) || ( brace == "]" ) )
|
||||
else if( ( brace == "[" ) || ( brace == "]" ) )
|
||||
{
|
||||
openBrace = "[";
|
||||
closeBrace = "]";
|
||||
}
|
||||
if( ( brace == "(" ) || ( brace == ")" ) )
|
||||
else if( ( brace == "(" ) || ( brace == ")" ) )
|
||||
{
|
||||
openBrace = "(";
|
||||
closeBrace = ")";
|
||||
}
|
||||
if( ( brace == "<" ) || ( brace == ">" ) )
|
||||
else if( ( brace == "<" ) || ( brace == ">" ) )
|
||||
{
|
||||
openBrace = "<";
|
||||
closeBrace = ">";
|
||||
@@ -2757,18 +2765,47 @@ void HBQPlainTextEdit::hbBraceHighlight()
|
||||
cursor = textCursor();
|
||||
cursor.select( QTextCursor::WordUnderCursor );
|
||||
QString brace = cursor.selectedText();
|
||||
//cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::MoveAnchor );
|
||||
|
||||
if( brace == "IF" || brace == "ENDIF" )
|
||||
if( brace == "IF" || brace == "ENDIF" ||
|
||||
brace == "FOR" || brace == "NEXT" ||
|
||||
brace == "SWITCH" || brace == "ENDSWITCH" ||
|
||||
brace == "DO" || brace == "ENDCASE" ||
|
||||
brace == "CLASS" || brace == "ENDCLASS" ||
|
||||
brace == "FUNCTION" || brace == "RETURN" )
|
||||
{
|
||||
QString openBrace;
|
||||
QString closeBrace;
|
||||
|
||||
if( ( brace == "IF" ) || ( brace == "ENDIF" ) )
|
||||
{
|
||||
openBrace = "IF";
|
||||
openBrace = "IF";
|
||||
closeBrace = "ENDIF";
|
||||
}
|
||||
else if( ( brace == "FOR" ) || ( brace == "NEXT" ) )
|
||||
{
|
||||
openBrace = "FOR";
|
||||
closeBrace = "NEXT";
|
||||
}
|
||||
else if( ( brace == "SWITCH" ) || ( brace == "ENDSWITCH" ) )
|
||||
{
|
||||
openBrace = "SWITCH";
|
||||
closeBrace = "ENDSWITCH";
|
||||
}
|
||||
else if( ( brace == "DO" ) || ( brace == "ENDCASE" ) )
|
||||
{
|
||||
openBrace = "DO";
|
||||
closeBrace = "ENDCASE";
|
||||
}
|
||||
else if( ( brace == "FUNCTION" ) || ( brace == "RETURN" ) )
|
||||
{
|
||||
openBrace = "FUNCTION";
|
||||
closeBrace = "RETURN";
|
||||
}
|
||||
else if( ( brace == "CLASS" ) || ( brace == "ENDCLASS" ) )
|
||||
{
|
||||
openBrace = "CLASS";
|
||||
closeBrace = "ENDCLASS";
|
||||
}
|
||||
matchPair( cursor, brace, openBrace, closeBrace, true, QTextDocument::FindWholeWords );
|
||||
}
|
||||
}
|
||||
@@ -2779,51 +2816,48 @@ void HBQPlainTextEdit::hbBraceHighlight()
|
||||
void HBQPlainTextEdit::matchPair( QTextCursor cursor, QString brace, QString openBrace, QString closeBrace, bool bBraceAll, QTextDocument::FindFlags flags )
|
||||
{
|
||||
QTextDocument *doc = document();
|
||||
QTextCursor cursor1;
|
||||
QTextCursor cursor2;
|
||||
QTextCursor cursorC;
|
||||
QTextCursor cursorO;
|
||||
QTextCursor matches;
|
||||
|
||||
if( brace == openBrace )
|
||||
{
|
||||
cursor1 = doc->find( closeBrace, cursor );
|
||||
cursor2 = doc->find( openBrace, cursor );
|
||||
if( cursor2.isNull() )
|
||||
cursorC = doc->find( closeBrace, cursor, flags );
|
||||
cursorO = doc->find( openBrace, cursor, flags );
|
||||
if( cursorO.isNull() )
|
||||
{
|
||||
matches = cursor1;
|
||||
matches = cursorC;
|
||||
}
|
||||
else
|
||||
{
|
||||
while( cursor1.position() > cursor2.position() )
|
||||
while( cursorC.position() > cursorO.position() )
|
||||
{
|
||||
cursor1 = doc->find( closeBrace, cursor1, flags );
|
||||
cursor2 = doc->find( openBrace, cursor2, flags );
|
||||
if( cursor2.isNull() )
|
||||
cursorC = doc->find( closeBrace, cursorC, flags );
|
||||
cursorO = doc->find( openBrace, cursorO, flags );
|
||||
if( cursorO.isNull() )
|
||||
break;
|
||||
}
|
||||
matches = cursor1;
|
||||
matches = cursorC;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if( brace == closeBrace )
|
||||
{
|
||||
if( brace == closeBrace )
|
||||
cursorO = doc->find( openBrace, cursor, QTextDocument::FindBackward | flags );
|
||||
cursorC = doc->find( closeBrace, cursor, QTextDocument::FindBackward | flags );
|
||||
if( cursorC.isNull() )
|
||||
{
|
||||
cursor1 = doc->find( openBrace, cursor, QTextDocument::FindBackward | flags );
|
||||
cursor2 = doc->find( closeBrace, cursor, QTextDocument::FindBackward | flags );
|
||||
if( cursor2.isNull() )
|
||||
matches = cursorO;
|
||||
}
|
||||
else
|
||||
{
|
||||
while( cursorO.position() < cursorC.position() )
|
||||
{
|
||||
matches = cursor1;
|
||||
}
|
||||
else
|
||||
{
|
||||
while( cursor1.position() < cursor2.position() )
|
||||
{
|
||||
cursor1 = doc->find( openBrace, cursor1, QTextDocument::FindBackward | flags );
|
||||
cursor2 = doc->find( closeBrace, cursor2, QTextDocument::FindBackward | flags );
|
||||
if( cursor2.isNull() )
|
||||
break;
|
||||
}
|
||||
matches = cursor1;
|
||||
cursorO = doc->find( openBrace, cursorO, QTextDocument::FindBackward | flags );
|
||||
cursorC = doc->find( closeBrace, cursorC, QTextDocument::FindBackward | flags );
|
||||
if( cursorC.isNull() )
|
||||
break;
|
||||
}
|
||||
matches = cursorO;
|
||||
}
|
||||
}
|
||||
if( ! matches.isNull() )
|
||||
@@ -2833,7 +2867,7 @@ void HBQPlainTextEdit::matchPair( QTextCursor cursor, QString brace, QString ope
|
||||
selection.cursor = cursor;
|
||||
extraSelections.append( selection );
|
||||
}
|
||||
selection.cursor = cursor1;
|
||||
selection.cursor = matches;
|
||||
extraSelections.append( selection );
|
||||
setExtraSelections( extraSelections );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user