diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 791eed2bc2..7777b4e687 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,23 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-05-05 09:45 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbide/idedocks.prg + * contrib/hbide/ideeditor.prg + * contrib/hbide/ideshortcuts.prg + * contrib/hbqt/hbqt_hbqplaintextedit.cpp + * contrib/hbqt/hbqt_hbqplaintextedit.h + * contrib/hbqt/qtgui/HBQPlainTextEdit.cpp + * contrib/hbqt/qtgui/THBQPlainTextEdit.prg + * contrib/hbqt/qth/HBQPlainTextEdit.qth + ! Removed: close button on "Stats" panel. + + + Implemented: line selection mode. Designated key is F11. + It is still a work in progress but a working prototype is there and + currently selection is available and paste behaves the standard way. + + Mindagaus, please explore as the artifacts are OK. + 2010-05-05 10:39 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * config/os2/gcc.mk * utils/hbmk2/hbmk2.prg diff --git a/harbour/contrib/hbide/idedocks.prg b/harbour/contrib/hbide/idedocks.prg index aa3c807e55..b35d3c54ef 100644 --- a/harbour/contrib/hbide/idedocks.prg +++ b/harbour/contrib/hbide/idedocks.prg @@ -441,15 +441,15 @@ METHOD IdeDocks:buildViewWidget( cObjectName ) oFrame:oTabWidget := XbpTabWidget():new():create( oFrame, , {0,0}, {200,200}, , .t. ) - IF empty( qTBtnClose ) + IF !( cObjectName == "Stats" ) qTBtnClose := QToolButton():new() qTBtnClose:setTooltip( "Close Tab" ) qTBtnClose:setAutoRaise( .t. ) qTBtnClose:setIcon( hbide_image( "closetab" ) ) ::connect( qTBtnClose, "clicked()", {|| ::oSM:closeSource() } ) + oFrame:oTabWidget:qCornerWidget := qTBtnClose + oFrame:oTabWidget:oWidget:setCornerWidget( qTBtnClose, Qt_TopRightCorner ) ENDIF - oFrame:oTabWidget:qCornerWidget := qTBtnClose - oFrame:oTabWidget:oWidget:setCornerWidget( qTBtnClose, Qt_TopRightCorner ) oFrame:oTabWidget:oWidget:setUsesScrollButtons( .f. ) oFrame:oTabWidget:oWidget:setMovable( .t. ) diff --git a/harbour/contrib/hbide/ideeditor.prg b/harbour/contrib/hbide/ideeditor.prg index b46a6044b3..4124ad13e1 100644 --- a/harbour/contrib/hbide/ideeditor.prg +++ b/harbour/contrib/hbide/ideeditor.prg @@ -149,6 +149,7 @@ CLASS IdeEditsManager INHERIT IdeObject METHOD convertDQuotes() METHOD toggleSelectionMode() METHOD toggleLineNumbers() + METHOD toggleLineSelectionMode() METHOD getText() METHOD getWord( lSelect ) @@ -546,6 +547,15 @@ METHOD IdeEditsManager:selectAll() /*----------------------------------------------------------------------*/ +METHOD IdeEditsManager:toggleLineSelectionMode() + LOCAL oEdit + IF !empty( oEdit := ::getEditObjectCurrent() ) + oEdit:toggleLineSelectionMode() + ENDIF + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD IdeEditsManager:toggleSelectionMode() LOCAL oEdit IF !empty( oEdit := ::getEditObjectCurrent() ) @@ -1415,6 +1425,7 @@ CLASS IdeEdit INHERIT IdeObject DATA currentPointSize INIT 10 DATA qFont DATA aBlockCopyContents INIT {} + DATA isLineSelectionMode INIT .f. METHOD new( oEditor, nMode ) METHOD create( oEditor, nMode ) @@ -1455,6 +1466,7 @@ CLASS IdeEdit INHERIT IdeObject METHOD goto( nLine ) METHOD gotoFunction() METHOD toggleLineNumbers() + METHOD toggleLineSelectionMode() METHOD getWord( lSelect ) METHOD getLine( nLine, lSelect ) @@ -1483,7 +1495,7 @@ CLASS IdeEdit INHERIT IdeObject METHOD setFont() METHOD markCurrentFunction() METHOD copyBlockContents( aCord ) - METHOD pasteBlockContents() + METHOD pasteBlockContents( nMode ) METHOD insertBlockContents( aCord ) METHOD deleteBlockContents( aCord ) METHOD zoom( nKey ) @@ -1935,7 +1947,7 @@ METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1 ) ::copyBlockContents( p1 ) ELSEIF p == 21012 - ::pasteBlockContents() + ::pasteBlockContents( p1 ) ELSEIF p == 21013 ::insertBlockContents( p1 ) @@ -1956,34 +1968,44 @@ METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1 ) /*----------------------------------------------------------------------*/ METHOD IdeEdit:copyBlockContents( aCord ) - LOCAL nT, nL, nB, nR, nW, i, cLine, cClip := "" + LOCAL nT, nL, nB, nR, nW, i, cLine, cClip := "", nMode nT := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 3 ], aCord[ 1 ] ) nB := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 1 ], aCord[ 3 ] ) nL := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 4 ], aCord[ 2 ] ) nR := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 2 ], aCord[ 4 ] ) + nMode := aCord[ 5 ] nW := nR - nL - ::aBlockCopyContents := {} FOR i := nT TO nB cLine := ::getLine( i + 1 ) - cLine := pad( substr( cLine, nL + 1, nW ), nW ) - aadd( ::aBlockCopyContents, cLine ) + IF nMode == 2 /* Column */ + cLine := pad( substr( cLine, nL + 1, nW ), nW ) + ELSEIF nMode == 3 /* Line */ + // Nothing to do, complete line is already pulled + ELSEIF nMode == 1 /* Stream */ + IF i == 1 + cLine := substr( cLine, nL + 1 ) + ELSEIF i == nB + cLine := substr( cLine, 1, nR + 1 ) + ENDIF + ENDIF cClip += cLine + hb_osNewLine() NEXT - +HB_TRACE( HB_TR_ALWAYS, cClip ) QClipboard():new():setText( cClip ) RETURN Self /*----------------------------------------------------------------------*/ -METHOD IdeEdit:pasteBlockContents() +METHOD IdeEdit:pasteBlockContents( nMode ) LOCAL i, nRow, nCol, qCursor, nMaxCol + HB_SYMBOL_UNUSED( nMode ) + ::aBlockCopyContents := hbide_memoToArray( QClipboard():new():text() ) -hb_trace( HB_TR_ALWAYS, "MMMMMMMM", LEN( ::aBlockCopyContents ) ) IF empty( ::aBlockCopyContents ) RETURN Self ENDIF @@ -2169,6 +2191,13 @@ METHOD IdeEdit:toggleSelectionMode() /*----------------------------------------------------------------------*/ +METHOD IdeEdit:toggleLineSelectionMode() + ::isLineSelectionMode := ! ::isLineSelectionMode + ::qEdit:hbSetSelectionMode( 3, ::isLineSelectionMode ) + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD IdeEdit:redo() ::qEdit:redo() RETURN Self diff --git a/harbour/contrib/hbide/ideshortcuts.prg b/harbour/contrib/hbide/ideshortcuts.prg index 0cbf078cef..0a02ad4787 100644 --- a/harbour/contrib/hbide/ideshortcuts.prg +++ b/harbour/contrib/hbide/ideshortcuts.prg @@ -198,6 +198,7 @@ CLASS IdeShortcuts INHERIT IdeObject METHOD toggleLineNumbersDisplay() METHOD toggleSelectionMode() METHOD toggleStatusBar() + METHOD toggleLineSelectionMode() ENDCLASS @@ -1112,6 +1113,10 @@ METHOD IdeShortcuts:toggleStatusBar() ::lStatusBarVisible := ! ::lStatusBarVisible RETURN Self /*----------------------------------------------------------------------*/ +METHOD IdeShortcuts:toggleLineSelectionMode() + RETURN ::oEM:toggleLineSelectionMode() +/*----------------------------------------------------------------------*/ + METHOD IdeShortcuts:loadMethods() @@ -1281,6 +1286,9 @@ METHOD IdeShortcuts:loadMethods() aadd( ::aMethods, { 'toggleStatusBar()', ; 'toggleStatusBar()', ; 'Toggles display of statusbar. The action is not saved for next run.' } ) + aadd( ::aMethods, { 'toggleLineSelectionMode()', ; + 'toggleLineSelectionMode()', ; + 'Toggles line selection mode.' } ) RETURN Self @@ -1335,6 +1343,8 @@ METHOD IdeShortcuts:loadDftSCuts() aadd( b_, { "Insert Text" , "F7" , "NO", "YES", "NO" , "", '::insert( "" )' , "insert-external-file", "", "" } ) aadd( b_, { "Insert Separator", "F7" , "NO", "NO" , "NO" , "", '::separator( "" )' , "insert-separator", "", "" } ) + aadd( b_, { "Toggle Line Selection Mode", "F11", "NO", "NO" , "NO" , "", '::toggleLineSelectionMode()', "" , "", "" } ) + ::aDftSCuts := b_ ENDIF diff --git a/harbour/contrib/hbqt/doc/en/class_hbqplaintextedit.txt b/harbour/contrib/hbqt/doc/en/class_hbqplaintextedit.txt index 0e5d6904f1..9fb97c42c1 100644 --- a/harbour/contrib/hbqt/doc/en/class_hbqplaintextedit.txt +++ b/harbour/contrib/hbqt/doc/en/class_hbqplaintextedit.txt @@ -69,7 +69,7 @@ :hbCut() -> NIL :hbCopy() -> NIL :hbPaste() -> NIL - :hbSetSelectionMode( nMode ) -> NIL + :hbSetSelectionMode( nMode, lOn ) -> NIL $DESCRIPTION$ diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp index e96756b26b..f89b33d414 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp @@ -75,6 +75,18 @@ #include "hbqt_hbqplaintextedit.h" +#define selectionState_off 0 +#define selectionState_on 1 + +#define selectionMode_none 0 +#define selectionMode_stream 1 +#define selectionMode_column 2 +#define selectionMode_line 3 + +#define selectionDisplay_none 0 +#define selectionDisplay_qt 1 +#define selectionDisplay_ide 2 + /*----------------------------------------------------------------------*/ HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent ) @@ -91,9 +103,11 @@ HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent isTipActive = false; columnBegins = -1; columnEnds = -1; - selectionState = 0; - selectionMode = 0; + selectionState = selectionState_off; + selectionMode = selectionMode_none; + selectionDisplay = selectionDisplay_none; isColumnSelectionEnabled = false; + isLineSelectionON = false; horzRuler = new HorzRuler( this ); connect( this, SIGNAL( blockCountChanged( int ) ) , this, SLOT( hbUpdateLineNumberAreaWidth( int ) ) ); @@ -240,7 +254,7 @@ void HBQPlainTextEdit::hbHighlightSelectedColumns( bool yes ) { if( yes ) { - selectionMode = 2; + selectionMode = selectionMode_column; isColumnSelectionEnabled = true; QTextCursor c = textCursor(); @@ -258,7 +272,7 @@ void HBQPlainTextEdit::hbHighlightSelectedColumns( bool yes ) } else { - selectionMode = 1; + selectionMode = selectionMode_stream; if( columnBegins >= 0 ) { @@ -285,13 +299,13 @@ void HBQPlainTextEdit::hbHighlightSelectedColumns( bool yes ) /*----------------------------------------------------------------------*/ -void HBQPlainTextEdit::hbSetSelectionMode( int mode ) +void HBQPlainTextEdit::hbSetSelectionMode( int mode, bool on ) { switch( mode ) { case 1: /* Stream Selection */ { - selectionMode = 1; + selectionMode = selectionMode_stream; if( columnBegins >= 0 ) { int cb = columnBegins <= columnEnds ? columnBegins : columnEnds; @@ -315,7 +329,7 @@ void HBQPlainTextEdit::hbSetSelectionMode( int mode ) } case 2: /* Columns Selection */ { - selectionMode = 2; + selectionMode = selectionMode_column; QTextCursor c = textCursor(); if( columnBegins == -1 && c.hasSelection() ) @@ -332,14 +346,28 @@ void HBQPlainTextEdit::hbSetSelectionMode( int mode ) isColumnSelectionEnabled = true; break; } - case 3: /* Line Selection */ + case 3: /* Line Selection : activated through keyboard */ { - selectionMode = 3; + isColumnSelectionEnabled = false; + + if( on ) + { + isLineSelectionON = true; + hbClearColumnSelection(); + QTextCursor c = textCursor(); + rowBegins = c.blockNumber(); + rowEnds = c.blockNumber(); + } + else + { + isLineSelectionON = false; + } + selectionMode = selectionMode_line; break; } default: { - selectionMode = 0; + selectionMode = selectionMode_none; } } update(); @@ -376,15 +404,16 @@ void HBQPlainTextEdit::hbCut() void HBQPlainTextEdit::hbCopy() { - if( isColumnSelectionEnabled ) + if( isColumnSelectionEnabled || selectionMode == selectionMode_line ) { PHB_ITEM p1 = hb_itemPutNI( NULL, 21011 ); PHB_ITEM p2 = hb_itemNew( NULL ); - hb_arrayNew( p2, 4 ); - hb_arraySetNI( p2, 1, rowBegins ); - hb_arraySetNI( p2, 2, columnBegins ); - hb_arraySetNI( p2, 3, rowEnds ); - hb_arraySetNI( p2, 4, columnEnds ); + hb_arrayNew( p2, 5 ); + hb_arraySetNI( p2, 1, rowBegins ); + hb_arraySetNI( p2, 2, columnBegins ); + hb_arraySetNI( p2, 3, rowEnds ); + hb_arraySetNI( p2, 4, columnEnds ); + hb_arraySetNI( p2, 5, selectionMode ); hb_vmEvalBlockV( block, 2, p1, p2 ); hb_itemRelease( p1 ); @@ -400,11 +429,13 @@ void HBQPlainTextEdit::hbCopy() void HBQPlainTextEdit::hbPaste() { - if( isColumnSelectionEnabled ) + if( isColumnSelectionEnabled || selectionMode == selectionMode_line ) { PHB_ITEM p1 = hb_itemPutNI( NULL, 21012 ); - hb_vmEvalBlockV( block, 1, p1 ); + PHB_ITEM p2 = hb_itemPutNI( NULL, selectionMode ); + hb_vmEvalBlockV( block, 1, p1, p2 ); hb_itemRelease( p1 ); + hb_itemRelease( p2 ); } else { @@ -440,7 +471,7 @@ void HBQPlainTextEdit::mouseReleaseEvent( QMouseEvent *event ) { setCursorWidth( 1 ); selectionState = 0; - if( selectionMode == 1 ) + if( selectionMode == selectionMode_stream ) { QTextCursor c( textCursor() ); rowEnds = c.blockNumber(); @@ -454,10 +485,15 @@ void HBQPlainTextEdit::mouseReleaseEvent( QMouseEvent *event ) void HBQPlainTextEdit::mouseMoveEvent( QMouseEvent *event ) { if( isColumnSelectionEnabled ) - selectionMode = 2; + selectionMode = selectionMode_column; else { - selectionMode = 1; + selectionMode = selectionMode_stream; + if( selectionState == 1 ) + { + selectionState = 0; + hbClearColumnSelection(); + } QPlainTextEdit::mouseMoveEvent( event ); return; } @@ -522,7 +558,7 @@ bool HBQPlainTextEdit::hbKeyPressColumnSelection( QKeyEvent * event ) if( isColumnSelectionEnabled ) { - selectionMode = 2; + selectionMode = selectionMode_column; QTextCursor c( textCursor() ); int col = c.columnNumber(); @@ -544,8 +580,8 @@ bool HBQPlainTextEdit::hbKeyPressColumnSelection( QKeyEvent * event ) { QTextBlock b = c.document()->findBlock( c.selectionStart() ); columnBegins = c.selectionStart() - b.position(); - columnEnds = c.columnNumber(); rowBegins = b.blockNumber(); + columnEnds = c.columnNumber(); b = c.document()->findBlock( c.selectionEnd() ); rowEnds = b.blockNumber(); update(); @@ -676,14 +712,50 @@ bool HBQPlainTextEdit::hbKeyPressColumnSelection( QKeyEvent * event ) } } } - else + else if( selectionMode == selectionMode_stream ) { - selectionMode = 1; + selectionMode = selectionMode_stream; if( shift && isNavableKey( k ) ) + { + if( selectionState == 0 ) + { + hbClearColumnSelection(); + selectionState == 1; + } + } + else { selectionState = 0; - hbClearColumnSelection(); + QTextCursor c( textCursor() ); + if( c.hasSelection() ) + { + QTextBlock b = c.document()->findBlock( c.selectionStart() ); + columnBegins = c.selectionStart() - b.position(); + rowBegins = b.blockNumber(); + columnEnds = c.columnNumber(); + b = c.document()->findBlock( c.selectionEnd() ); + rowEnds = b.blockNumber(); + } + QPlainTextEdit::keyPressEvent( event ); + event->ignore(); + return true; + } + } + else if( selectionMode == selectionMode_line ) + { + if( isLineSelectionON && ( k == Qt::Key_Up || k == Qt::Key_Down ) ) + { + QPlainTextEdit::keyPressEvent( event ); + QTextCursor c( textCursor() ); + if( ( k == Qt::Key_Down && c.blockNumber() == rowEnds + 1 ) || + ( k == Qt::Key_Up && c.blockNumber() == rowBegins - 1 ) ) + { + rowEnds = c.blockNumber(); + } + event->ignore(); + update(); + return true; } } return false; @@ -1015,26 +1087,45 @@ void HBQPlainTextEdit::hbPaintColumnSelection( QPaintEvent * event ) int rb = rowBegins <= rowEnds ? rowBegins : rowEnds; int re = rowBegins <= rowEnds ? rowEnds : rowBegins; - QPainter p( viewport() ); - int t = cursorForPosition( QPoint( 1,1 ) ).blockNumber(); if( re >= t ) { + QPainter p( viewport() ); + int c = cursorForPosition( QPoint( 1,1 ) ).columnNumber(); - int y = ( ( rb <= t ) ? 0 : ( ( rb - t ) * fontMetrics().height() ) ); + int top = ( ( rb <= t ) ? 0 : ( ( rb - t ) * fontMetrics().height() ) ); + int btm = ( ( re - t + 1 ) * fontMetrics().height() ) - top; int fontWidth = fontMetrics().averageCharWidth(); int x = ( ( cb - c ) * fontWidth ) + ( c > 0 ? 0 : contentsRect().left() ); int w = ( ce - cb ) * fontWidth; - QRect r( x, y, ( w == 0 ? 1 : w ), ( ( re - t + 1 ) * fontMetrics().height() ) - y ); + QRect r( x, top, ( w == 0 ? 1 : w ), btm ); p.fillRect( r, QBrush( QColor( 175, 255, 175 ) ) ); } } } + else if( selectionMode == selectionMode_line ) + { + int rb = rowBegins <= rowEnds ? rowBegins : rowEnds; + int re = rowBegins <= rowEnds ? rowEnds : rowBegins; + + int t = cursorForPosition( QPoint( 1,1 ) ).blockNumber(); + if( re >= t ) + { + QPainter p( viewport() ); + + int top = ( ( rb <= t ) ? 0 : ( ( rb - t ) * fontMetrics().height() ) ); + int btm = ( ( re - t + 1 ) * fontMetrics().height() ) - top ; + + QRect r( 0, top, viewport()->width(), btm ); + + p.fillRect( r, QBrush( QColor( 175, 255, 175 ) ) ); + } + } } /*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h index e2cbefe45f..e73e6a2511 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h @@ -136,6 +136,8 @@ private: int columnEnds; int selectionState; int selectionMode; + int selectionDisplay; + bool isLineSelectionON; bool isColumnSelectionEnabled; bool isTipActive; QCompleter * c; @@ -183,7 +185,7 @@ public slots: void hbCut(); void hbCopy(); void hbPaste(); - void hbSetSelectionMode( int mode ); + void hbSetSelectionMode( int mode, bool on ); private slots: void hbSlotCursorPositionChanged(); diff --git a/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp b/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp index c004e533a2..66cd26645d 100644 --- a/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp +++ b/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp @@ -735,16 +735,16 @@ HB_FUNC( QT_HBQPLAINTEXTEDIT_HBPASTE ) } /* - * void hbSetSelectionMode( int mode ) + * void hbSetSelectionMode( int mode, bool on ) */ HB_FUNC( QT_HBQPLAINTEXTEDIT_HBSETSELECTIONMODE ) { HBQPlainTextEdit * p = hbqt_par_HBQPlainTextEdit( 1 ); if( p ) - ( p )->hbSetSelectionMode( hb_parni( 2 ) ); + ( p )->hbSetSelectionMode( hb_parni( 2 ), hb_parl( 3 ) ); else { - HB_TRACE( HB_TR_DEBUG, ( "............................... F=QT_HBQPLAINTEXTEDIT_HBSETSELECTIONMODE FP=( p )->hbSetSelectionMode( hb_parni( 2 ) ); p is NULL" ) ); + HB_TRACE( HB_TR_DEBUG, ( "............................... F=QT_HBQPLAINTEXTEDIT_HBSETSELECTIONMODE FP=( p )->hbSetSelectionMode( hb_parni( 2 ), hb_parl( 3 ) ); p is NULL" ) ); } } diff --git a/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg b/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg index 963f4a6361..17ceb38865 100644 --- a/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg +++ b/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg @@ -108,7 +108,7 @@ CREATE CLASS HBQPlainTextEdit INHERIT HbQtObjectHandler, QPlainTextEdit METHOD hbCut() METHOD hbCopy() METHOD hbPaste() - METHOD hbSetSelectionMode( nMode ) + METHOD hbSetSelectionMode( nMode, lOn ) ENDCLASS @@ -286,6 +286,6 @@ METHOD HBQPlainTextEdit:hbPaste() RETURN Qt_HBQPlainTextEdit_hbPaste( ::pPtr ) -METHOD HBQPlainTextEdit:hbSetSelectionMode( nMode ) - RETURN Qt_HBQPlainTextEdit_hbSetSelectionMode( ::pPtr, nMode ) +METHOD HBQPlainTextEdit:hbSetSelectionMode( nMode, lOn ) + RETURN Qt_HBQPlainTextEdit_hbSetSelectionMode( ::pPtr, nMode, lOn ) diff --git a/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth b/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth index 9130880af3..b5b3589ca0 100644 --- a/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth +++ b/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth @@ -139,7 +139,7 @@ HB_FUNC( QT_HBQPLAINTEXTEDIT ) void hbCut() void hbCopy() void hbPaste() - void hbSetSelectionMode( int mode ) + void hbSetSelectionMode( int mode, bool on )