From 2540853f0b80eb6c2f4fb25e8a58a53ca46d1c96 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Fri, 14 May 2010 21:36:07 +0000 Subject: [PATCH] 2010-15:14 14:31 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * contrib/hbide/ideprojmanager.prg ! Synchronized to open "Project Tree" if "Open Project..." is selected from . * contrib/hbqt/hbqt_hbqplaintextedit.cpp * contrib/hbqt/hbqt_hbqplaintextedit.h % Many artifacts belonging to horizontal scroll while text is selected. Also few aspects are optimized. To me it appears as if selection protocol in hbIDE is OK. Please post your experiences if something is not upto the expectations. --- harbour/ChangeLog | 14 +++ harbour/contrib/hbide/ideprojmanager.prg | 2 + .../contrib/hbqt/hbqt_hbqplaintextedit.cpp | 100 +++++++++--------- harbour/contrib/hbqt/hbqt_hbqplaintextedit.h | 2 +- 4 files changed, 65 insertions(+), 53 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5a699ef40a..ee19d2492c 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,20 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-15:14 14:31 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbide/ideprojmanager.prg + ! Synchronized to open "Project Tree" if "Open Project..." + is selected from . + + * contrib/hbqt/hbqt_hbqplaintextedit.cpp + * contrib/hbqt/hbqt_hbqplaintextedit.h + % Many artifacts belonging to horizontal scroll while + text is selected. Also few aspects are optimized. + + To me it appears as if selection protocol in hbIDE is OK. + Please post your experiences if something is not upto the + expectations. + 2010-05-14 18:33 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/include/hbapi.h * harbour/src/vm/dynsym.c diff --git a/harbour/contrib/hbide/ideprojmanager.prg b/harbour/contrib/hbide/ideprojmanager.prg index 64786df57a..473b151ccb 100644 --- a/harbour/contrib/hbide/ideprojmanager.prg +++ b/harbour/contrib/hbide/ideprojmanager.prg @@ -347,6 +347,8 @@ METHOD IdeProjManager:loadProperties( cProjFileName, lNew, lFetch, lUpdateTree ) cProjFileName := hbide_fetchAFile( ::oDlg, "Open Project...", { { "Harbour Projects", "*.hbp" } , ; { "xMate Projects" , "*.xhp" } } ) cProjFileName := ::synchronizeAlienProject( cProjFileName ) + + ::oDockPT:show() ENDIF IF empty( cProjFileName ) RETURN Self diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp index 9fba5c7d58..e178707be1 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp @@ -119,7 +119,7 @@ HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent hbUpdateLineNumberAreaWidth( 0 ); connect( this, SIGNAL( cursorPositionChanged() ) , this, SLOT( hbSlotCursorPositionChanged() ) ); - connect( this, SIGNAL( cursorPositionChanged() ) , this, SLOT( hbUpdateHorzRuler() ) ); + connect( this, SIGNAL( updateRequest( const QRect &, int ) ), this, SLOT( hbUpdateHorzRuler( const QRect &, int ) ) ); horzRuler->setFrameShape( QFrame::Panel ); horzRuler->setFrameShadow( QFrame::Sunken ); @@ -127,6 +127,7 @@ HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent QPalette pl( QPlainTextEdit::palette() ); m_selectionColor = pl.color( QPalette::Highlight ); + setContentsMargins( 0,0,0,0 ); } /*----------------------------------------------------------------------*/ @@ -619,7 +620,9 @@ bool HBQPlainTextEdit::hbKeyPressColumnSelection( QKeyEvent * event ) return true; } break; + case Qt::Key_Right: + int pos = c.position(); c.movePosition( QTextCursor::EndOfLine, QTextCursor::MoveAnchor ); if( c.columnNumber() <= columnEnds ) { @@ -641,6 +644,7 @@ bool HBQPlainTextEdit::hbKeyPressColumnSelection( QKeyEvent * event ) event->ignore(); return true; } + c.setPosition( pos ); break; } } @@ -763,12 +767,12 @@ bool HBQPlainTextEdit::hbKeyPressColumnSelection( QKeyEvent * event ) if( selectionState > 0 ) { emit selectionChanged(); - } - setCursorWidth( 1 ); - selectionState = 0; - if( columnEnds == columnBegins ) - { - hbClearColumnSelection(); + setCursorWidth( 1 ); + selectionState = 0; + if( columnEnds == columnBegins ) + { + hbClearColumnSelection(); + } } } } @@ -1116,13 +1120,7 @@ void HBQPlainTextEdit::lineNumberAreaPaintEvent( QPaintEvent *event ) void HBQPlainTextEdit::hbPaintSelection( QPaintEvent * event ) { - HB_SYMBOL_UNUSED( event ); //HB_TRACE( HB_TR_ALWAYS, ( " 1 " ) ); -#if 0 -HB_TRACE( HB_TR_ALWAYS, ( "%i %i %i %i %i %i %i %i", - event->rect().x(), event->rect().y(), event->rect().width(), event->rect().height(), - cursorRect().x() , cursorRect().y() , cursorRect().width() , cursorRect().height() ) ); -#endif if( rowBegins >= 0 && rowEnds >= 0 ) { int cb = columnBegins <= columnEnds ? columnBegins : columnEnds; @@ -1151,58 +1149,53 @@ HB_TRACE( HB_TR_ALWAYS, ( "%i %i %i %i %i %i %i %i", if( selectionMode == selectionMode_column ) { - #if 0 int x = ( ( cb - c ) * fontWidth ) + marginX; - int w = ( ce - cb ) * fontWidth; + int w = ( cb == ce ? 1 : ( ( ce - cb ) * fontWidth ) ); - QRect r( x, top, ( w == 0 ? 1 : w ), btm ); + QRect r( x, top, w, btm ); - p.fillRect( r, QBrush( m_selectionColor ) ); - #endif - int x = cb < c ? 0 : ( ( cb - c ) * fontWidth ) + marginX; - int w = ce < c ? 0 : ( ( ce - cb - c ) * fontWidth ); - - QRect r( x, top, ( w == 0 ? 1 : w ), btm ); - - p.fillRect( r, QBrush( m_selectionColor ) ); + //if( event->rect().intersects( r ) ) + { + p.fillRect( r, QBrush( m_selectionColor ) ); + } } else if( selectionMode == selectionMode_stream ) { - int i; - int width = viewport()->width(); + int i; + int width = viewport()->width(); + QRect r; - for( i = rb; i <= re; i++ ) + for( i = ( rb >= t ? rb : t ); i <= re; i++ ) { - if( i >= t ) + if( i == rb ) { - QRect r; - - if( i == rb ) + if( rb == re ) { - if( rb == re ) - { - int x = ( ( columnBegins - c ) * fontWidth ) + marginX; - int w = ( columnEnds - columnBegins - c ) * fontWidth; - r = QRect( x, top, ( w == 0 ? 1 : w ), fontHeight ); - } - else - { - int x = ( ( columnBegins - c ) * fontWidth ) + marginX; - r = QRect( x, top, width, fontHeight ); - } - } - else if( i == re ) - { - int x = ( ( columnEnds - c ) * fontWidth ) + marginX; - r = QRect( 0, top, x, fontHeight ); + int x = ( ( columnBegins - c ) * fontWidth ) + marginX; + int w = ( ce - cb ) * fontWidth; + r = QRect( x, top, w, fontHeight ); } else { - r = QRect( 0, top, width, fontHeight ); + int x = ( ( columnBegins - c ) * fontWidth ) + marginX; + r = QRect( x, top, width + abs( x ), fontHeight ); } - p.fillRect( r, QBrush( m_selectionColor ) ); - top += fontHeight; } + else if( i == re ) + { + int x = ( ( columnEnds - c ) * fontWidth ) + marginX; + r = QRect( 0, top, x, fontHeight ); + } + else + { + r = QRect( 0, top, width, fontHeight ); + } + + //if( event->rect().intersects( r ) ) + { + p.fillRect( r, QBrush( m_selectionColor ) ); + } + top += fontHeight; } } else if( selectionMode == selectionMode_line ) @@ -1374,9 +1367,12 @@ void HBQPlainTextEdit::hbUpdateLineNumberAreaWidth( int ) /*----------------------------------------------------------------------*/ -void HBQPlainTextEdit::hbUpdateHorzRuler() +void HBQPlainTextEdit::hbUpdateHorzRuler( const QRect & rect, int dy ) { - horzRuler->update(); + HB_SYMBOL_UNUSED( rect ); + + if( dy == 0 ) + horzRuler->update(); } /*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h index feb0352c80..4a866b47e2 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h @@ -198,7 +198,7 @@ public slots: private slots: void hbSlotCursorPositionChanged(); void hbUpdateLineNumberArea( const QRect &, int ); - void hbUpdateHorzRuler(); + void hbUpdateHorzRuler( const QRect &, int ); void hbPaintSelection( QPaintEvent * ); bool hbKeyPressColumnSelection( QKeyEvent * ); void hbClearColumnSelection();