2004-02-21 07:39 UTC+0100 Viktor Szakats <viktor.szakats@syenar.hu>

* source/rtl/memoread.c
     * Previous change reverted. hb_retc( NULL ) was intentional
       and is an optimized version of hb_retc( "" ). Both will return
       an empty string.
     % hb_fsClose() calls reduced.

   * src/rtl/tbcolumn.prg
   * src/rtl/tbrowse.prg
     ! :SetColumn() retval made compatible.
     ! :ColWidth() retval made compatible.
     % Using array functions to speed up a few things.
     % Got rid of the predefined 4096 long array in every
       columns plus the browse object.
     ; More and more incompatibilities are popping up, some
       of them quite strange, and only coming up in a large
       app's sophisticated browse stressing environment.
       - Removing rightmost column while active will do RTE,
       - If headsep is initialized after the columns and cargo,
         browse will sometimes behave strangely (headsep value
         disappears??)
       - Moving columns off the visible area will screw up
         internals.
       - Modifying columns is slow because of the unconditional
         :configure() calls.
This commit is contained in:
Viktor Szakats
2004-02-21 06:38:03 +00:00
parent 17a63cd226
commit 0fb3715ffa
4 changed files with 64 additions and 44 deletions

View File

@@ -8,6 +8,33 @@
2002-12-01 23:12 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2004-02-21 07:39 UTC+0100 Viktor Szakats <viktor.szakats@syenar.hu>
* source/rtl/memoread.c
* Previous change reverted. hb_retc( NULL ) was intentional
and is an optimized version of hb_retc( "" ). Both will return
an empty string.
% hb_fsClose() calls reduced.
* src/rtl/tbcolumn.prg
* src/rtl/tbrowse.prg
! :SetColumn() retval made compatible.
! :ColWidth() retval made compatible.
% Using array functions to speed up a few things.
% Got rid of the predefined 4096 long array in every
columns plus the browse object.
; More and more incompatibilities are popping up, some
of them quite strange, and only coming up in a large
app's sophisticated browse stressing environment.
- Removing rightmost column while active will do RTE,
- If headsep is initialized after the columns and cargo,
browse will sometimes behave strangely (headsep value
disappears??)
- Moving columns off the visible area will screw up
internals.
- Modifying columns is slow because of the unconditional
:configure() calls.
2004-02-20 8:55 UTC-0800 Luis Krause Mantilla <lkrausem /*at*/ shaw /*dot*/ ca>
* contrib/mysql/mysql.c
! Fixed declaration for filelength() from int to long to match io.h

View File

@@ -93,21 +93,18 @@ HB_FUNC( MEMOREAD )
hb_fsSeek( fhnd, 0, FS_SET );
hb_fsReadLarge( fhnd, pbyBuffer, ulSize );
hb_fsClose( fhnd );
hb_retclen_buffer( ( char * ) pbyBuffer, ulSize );
}
else
{
hb_fsClose( fhnd );
hb_retc( "" );
}
hb_retc( NULL );
hb_fsClose( fhnd );
}
else
hb_retc( "" );
hb_retc( NULL );
}
else
hb_retc( "" );
hb_retc( NULL );
}
HB_FUNC( MEMOWRIT )

View File

@@ -84,7 +84,7 @@ CLASS TBColumn
HIDDEN: /* H I D D E N */
DATA nWidth
METHOD SetWidth(n)
METHOD SetWidth( n )
#ifdef HB_COMPAT_C53
DATA aSetStyle
@@ -111,13 +111,15 @@ METHOD New( cHeading, bBlock ) CLASS TBColumn
::Footing := ""
::block := bBlock
#ifdef HB_COMPAT_C53
::aSetStyle := ARRAY( 4096 )
#ifdef HB_COMPAT_C53
::aSetStyle[ TBC_READWRITE ] := .f.
::aSetStyle[ TBC_MOVE ] := .f.
::aSetStyle[ TBC_SIZE ] := .f.
#endif
::aSetStyle := Array( TBC_CUSTOM - 1 )
::aSetStyle[ TBC_READWRITE ] := .f.
::aSetStyle[ TBC_MOVE ] := .f.
::aSetStyle[ TBC_SIZE ] := .f.
#endif
return Self
@@ -134,11 +136,13 @@ return n
#ifdef HB_COMPAT_C53
METHOD SetStyle( nMode, lSetting ) CLASS TBColumn
LOCAL lRet := .F.
IF nMode > LEN( ::aSetStyle )
RETURN .F.
ASize( ::aSetStyle, nMode )
::aSetStyle[ nMode ] := .F.
ENDIF
lRet := ::aSetStyle[ nMode ]
@@ -148,6 +152,7 @@ METHOD SetStyle( nMode, lSetting ) CLASS TBColumn
ENDIF
RETURN lRet
#endif

View File

@@ -268,12 +268,12 @@ METHOD New(nTop, nLeft, nBottom, nRight) CLASS TBrowse
::mColPos := 0
::mRowPos := 0
::rect :={nTop,nLeft,nBottom,nRight}
::aVisibleCols :={}
::message :=''
::rect := {nTop,nLeft,nBottom,nRight}
::aVisibleCols := {}
::message := ''
::nRow := 0
::nCol := 0
::aSetStyle := ARRAY( 4096 )
::aSetStyle := Array( TBR_CUSTOM - 1 )
::aSetStyle[ TBR_APPEND ] := .f.
::aSetStyle[ TBR_APPENDING ] := .f.
@@ -363,12 +363,12 @@ METHOD Configure(nMode) CLASS TBrowse
// 20/nov/2000 - maurilio.longo@libero.it
// If I add (or remove) header or footer (separator) I have to change number
// of available rows
::RowCount := ::nBottom - ::nTop + 1 - iif( ::lHeaders, ::nHeaderHeight, 0 ) - ;
iif( ::lFooters, ::nFooterHeight, 0 ) - iif( Empty( ::HeadSep ) .OR. !::lHeaders, 0, 1 ) - ;
iif( Empty( ::FootSep ) .OR. !::lFooters, 0, 1 )
::RowCount := ::nBottom - ::nTop + 1 - ;
iif( ::lHeaders, ::nHeaderHeight + iif( Empty( ::HeadSep ), 0, 1 ), 0 ) - ;
iif( ::lFooters, ::nFooterHeight + iif( Empty( ::FootSep ), 0, 1 ), 0 )
if Len(::aRedraw) <> ::RowCount
::aRedraw := Array(::RowCount)
ASize(::aRedraw, ::RowCount)
endif
::Invalidate()
@@ -427,33 +427,29 @@ return iif( 0 < nColumn .AND. nColumn <= ::nColumns, ::aColumns[ nColumn ], NIL
// Replaces one TBColumn object with another
METHOD SetColumn( nColumn, oCol )
LOCAL oOldCol
if 0 < nColumn .AND. nColumn <= ::nColumns
oOldCol := ::aColumns[ nColumn ]
if 0 < nColumn .AND. nColumn <= ::nColumns
::aColumns[ nColumn ] := oCol
::aColsWidth[nColumn] := ::SetColumnWidth(oCol)
::aColsWidth[ nColumn ] := ::SetColumnWidth( oCol )
::Configure( 2 )
endif
return oOldCol
return oCol
// Returns the display width of a particular column
METHOD ColWidth( nColumn )
return iif( 0 < nColumn .AND. nColumn <= ::nColumns, ::aColsWidth[ nColumn ], NIL )
return iif( 0 < nColumn .AND. nColumn <= ::nColumns, ::aColsWidth[ nColumn ], 0 )
METHOD DelColumn( nPos ) CLASS TBrowse
local oCol := ::aColumns[ nPos ]
local n
ADel( ::aColumns, nPos )
ADel( ::aColsWidth, nPos)
ASize( ::aColumns, --::nColumns)
ASize( ::aColsWidth, ::nColumns)
ASize( ::aColumns, --::nColumns )
ADel( ::aColsWidth, nPos )
ASize( ::aColsWidth, ::nColumns )
::Configure( 2 )
@@ -1129,15 +1125,9 @@ METHOD Stabilize() CLASS TBrowse
// I've scrolled on screen rows, now I need to scroll ::aRedraw array as well!
if nRecsSkipped > 0
/*for nRow := 2 to Len(::aRedraw)
::aRedraw[nRow - 1] := ::aRedraw[nRow]
next*/
ACopy(::aRedraw, ::aRedraw, 2,, 1)
ADel(::aRedraw, 1)
else
// Cannot use ACopy() here
for nRow := ::RowCount - 1 to 1 step -1
::aRedraw[nRow + 1] := ::aRedraw[nRow]
next
AIns(::aRedraw, 1)
endif
::aRedraw[::nNewRowPos] := .T.
@@ -1607,7 +1597,8 @@ METHOD SetStyle( nMode, lSetting ) CLASS TBROWSE
LOCAL lRet := .F.
IF nMode > LEN( ::aSetStyle )
RETURN .F.
ASize( ::aSetStyle, nMode )
::aSetStyle[ nMode ] := .F.
ENDIF
lRet := ::aSetStyle[ nMode ]