From d0c8b8a3fc681f02464353ceba9a1c3c67d77859 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Thu, 16 Feb 2012 21:28:27 +0000 Subject: [PATCH] 2012-02-16 13:26 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp * contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h * Changed: dragging operation starting off mouse move event instead of mouse press event. --- harbour/ChangeLog | 6 +++ .../hbqt/qtgui/hbqt_hbqplaintextedit.cpp | 48 +++++++++++-------- .../hbqt/qtgui/hbqt_hbqplaintextedit.h | 1 + 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 719ed8e136..b6dd2913dd 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,12 @@ The license applies to all entries newer than 2009-04-28. */ +2012-02-16 13:26 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp + * contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h + * Changed: dragging operation starting off mouse move event + instead of mouse press event. + 2012-02-16 19:27 UTC+0100 Viktor Szakats (harbour syenar.net) * INSTALL * minor to prev diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp b/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp index 6d8825a15d..5f8081f30a 100644 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp +++ b/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp @@ -129,6 +129,7 @@ HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent isCodeCompletionActive = true; isCompletionTipsActive = true; isInDrag = false; + dragStartPosition = QPoint(); #if 0 QTextFrameFormat format( this->document()->rootFrame()->frameFormat() ); @@ -979,27 +980,9 @@ void HBQPlainTextEdit::mousePressEvent( QMouseEvent *event ) QTextCursor c( cursorForPosition( event->pos() ) ); int row = c.blockNumber(); - if( row >= rowBegins && row <= rowEnds ) { - event->ignore(); - - QDrag * qDrag = new QDrag( this ); - QMimeData * qMimeData = new QMimeData(); - hbCopy(); - qMimeData->setText( QApplication::clipboard()->text() ); - qDrag->setMimeData( qMimeData ); - - QPixmap pmap = QPixmap::grabWidget( this->viewport(), hbGetSelectionRect() ); - pmap.setMask( pmap.createMaskFromColor( m_selectionColor, Qt::MaskInColor ) ); - pmap.setMask( pmap.createMaskFromColor( palette().color( QPalette::Base ), Qt::MaskInColor ) ); - pmap.setMask( pmap.createMaskFromColor( m_currentLineColor, Qt::MaskInColor ) ); - qDrag->setPixmap( pmap ); - qDrag->setHotSpot( QPoint( 5,5 ) ); - - qDrag->exec( Qt::MoveAction | Qt::CopyAction ); - delete qDrag; - return; + dragStartPosition = event->pos(); } else { @@ -1065,6 +1048,33 @@ void HBQPlainTextEdit::mouseMoveEvent( QMouseEvent *event ) if( event->buttons() & Qt::LeftButton ) { + if( ( event->pos() - dragStartPosition ).manhattanLength() < QApplication::startDragDistance() ) + { + QTextCursor c( cursorForPosition( event->pos() ) ); + int row = c.blockNumber(); + if( row >= rowBegins && row <= rowEnds ) + { + event->ignore(); + + QDrag * qDrag = new QDrag( this ); + QMimeData * qMimeData = new QMimeData(); + hbCopy(); + qMimeData->setText( QApplication::clipboard()->text() ); + qDrag->setMimeData( qMimeData ); + + QPixmap pmap = QPixmap::grabWidget( this->viewport(), hbGetSelectionRect() ); + pmap.setMask( pmap.createMaskFromColor( m_selectionColor, Qt::MaskInColor ) ); + pmap.setMask( pmap.createMaskFromColor( palette().color( QPalette::Base ), Qt::MaskInColor ) ); + pmap.setMask( pmap.createMaskFromColor( m_currentLineColor, Qt::MaskInColor ) ); + qDrag->setPixmap( pmap ); + qDrag->setHotSpot( QPoint( 5,5 ) ); + + qDrag->exec( Qt::MoveAction | Qt::CopyAction ); + delete qDrag; + return; + } + } + if( selectionState == 1 ) { selectionState = 2; diff --git a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h b/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h index c1060591b9..ebab739975 100644 --- a/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h +++ b/harbour/contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h @@ -175,6 +175,7 @@ private: bool isCodeCompletionActive; bool isCompletionTipsActive; bool isInDrag; + QPoint dragStartPosition; protected: bool event( QEvent * event );