* source/debug/debugger.prg
* little changes, like adding K_LEFT and K_RIGHT to CodeWindowProcessKey (but they don't work)
* source/debug/tbrwtext.prg
+ Added support for break points (coloring of text)
* source/rtl/teditor.prg
+ Changed ::RefreshXXX() methods to allow line coloring outside of TEditor logic
* source/debug/debugger.prg
- removed calls to oBrwText:ForceStable() method which is no more available
! SetsUp() and SetsDown() functions where calling ::RefreshAll() and movement methods
without any reason causing a noticeable delay during Sets scrolling.
* source/debug/tbrwtext.prg
- removed empty ::ForceStable() method
* source/rtl/tbrowse.prg
! when a movement happens inside available on screen rows (like a ::Down() from row 1 to
row 2) I have to force repainting of target row or else this sequence (for example)
fails: ::RefreshCurrent():Down():ForceStable() because to paint the row where I issued a
::RefreshCurrent() I have to move one back from ::nNewRowPos, but there I stay since
::nNewRowPos is not to redraw. I'm sure nobody uderstands what I'm clearly unable to
explain :-)
* source/rtl/teditor.prg
- removed a TODO: comment which is no more needed.
* source/rtl/memoedit.prg
+ Added all missing functionalities. Should be 100% compatible (tested very little)
* source/rtl/teditor.prg
* little changes to make it work better with memoedit.prg. Removed cUdF parameter from
::New() method.
* source/rtl/tbrowse.prg
- removed hidden: clause inside class definition (it doesn't work right now)
* source/rtl/tclass.prg
- commented out line 255 (gives infinite loop)
* utils/hbmake/*.prg
+ hbdocdef.ch needs relative path ("..\hbdoc\") to be compiled by gcc system
* source/rtl/tbrowse.prg
! I've fixed all known (to me) issues with latest TBrowse code.
::HitTop/Bottom were set back to .F. if a ::RefreshAll() was issued. This is wrong since only
movement keys can reset them.
Issuing a long sequence of K_UP/K_DN (or CTRL_...) resulted on wrong movement of datasource (you could
even go backward using K_DN :-O)
You could get an out of bounds moving around inside tbrowse.
* Note that original Clipper TBrowse caches displayed rows, so moving left or right does not require
calling ::Skipblock to refresh screen. Present implementation of TBrowse has not such a cache so
a lot more of skipping around is needed.
* source/rtl/tbrowse.prg
* I've rewritten from scratch stabilization and movement keys handling.
They were simply broken in previous TBrowse. They are now nearly 100% clipper compatible.
DBU now works correctly when lastrec() + 1 is reached and leaved.
::stable state and ::HitTop or ::HitBottom were wrongly set _before_ stabilization and not
during as it should. ::GoBottom() was not calling ::goBottomBlock.
Movement handling methods were calling ::skipBlock and they should not, this was
causing unneeded skipping being requested to data source.
I hope these last changes have fixed TBrowse class. Please test it extensively.
* source/compiler/harbour.sly
! Optimized __GETA() support, and changed it to be implementated identical to Clipper.
/* Clipper passed a bGet Block which refrences the Base Array Variable and not the Variable itself.
Clipper passes NIL instead of bGet block if the Base Array is MACROVAR or MACROTEXT.
Clipper does not optimize "&Macro" to Macro, but Harbour does! */
* source/rtl/tgetint.prg
* __GETA() Changed 1st parameter aVar to bGetArray and logic to get the Base Array if bGetArray is NIL
/* Optimized to not use macro if possible (most cases) even if the GetArray is a macro. */
* tests/testget.prg
+ Added additional test.
* include/hbmacro.h
* source/macro/macro.y
* source/vm/macro.c
! Renamed hb_compParse() to hb_macroYYParse(). We already have hb_macroParse() and hcompparse()
* source/compiler/harbour.y
* Added token GET (not used) just so that harboury.h is compatible with harbour.sly
* source/rtl/tgetint.prg
* Reverted to use _1 and == NIL to not break Clipper compatibility.
/* Ryszard, if you want to re-introduce PCount() and HB_PVALUE(), I'll ask (since I wrote this original code)
that you protect it with #ifdef FLEX etc. If you do I would suggest you further protect it with #ifdef STRICT...
becuase this will defintly break strict compatability. */
* source/compiler/harbour.c
* Exported: hb_compFieldGetPos() and hb_compMemvarGetPos()
* source/compiler/harbour.sly
! Changed __GET() support to be parameter compatible with Clipper
* include/hberrors.h
* source/compiler/hbgenerr.c
+ Added Error: "GET contains complex macro"
* source/pp/pptable.c
- Removed bSetGet from rule of GET, PP output now Clipper compatible.
* source/vm/memvars.c
+ Added HB_FUNC( __ISMV ) // Return .T. if passed string as a Memory Variable.
* source/rtl/tgetint.prg
! Fixed __GET() to be 100% parameter compatible with Clipper.
! When 1st parameter (bSetGet) is NIL the bSetGet will be built internaly,
not using macro in most cases, even if the Get Variable itslef is a macro :-)
/* Ryszard, this will further break Flex support for GET, but makes __GET() 100% Clipper compatible as you suggested.
Please note, that Clipper does *NOT* pass a bSetGet *only* when the Get Var is a *simple* *non* declared Variable.
Declared Variables in this context are: MEMVAR, FIELD, LOCAL, and STATIC. For all of those, bSetGet *is* generated!
Clipper also generates bSetGet for "Complex Variables", i.e. Aliased Variables, Object Data, etc.! */
* include/hbset.h
* include/set.ch
* source/pp/pptable.c
+ Added _SET_IDLEREPEAT = 101
* source/rtl/set.c
+ Added suport for SET( _SET_IDLEREPEAT ) - Default is .T.
* source/rtl/idle.c
- Removed HB_IDLE_RESET()
* Changed handling of Idle Process to default to REPEAT.
* tests/onidle.prg
- Removed call to HB_IDLE_RESET()
+ tests/testidle.prg
+ New test of Idle Blocks in default (REPEAT) mode and optional NON REPEAT mode.
* source/rtl/idle.c
+ Added HB_IDLE_RESET() and logic to reset Idle Processing upon such explicit request.
! If reoccuring processing of Idle Blocks is requested, hb_releaseCPU() is execusted upon completion of each cycle.
* tests/onidle.prg
+ Added HB_IDLE_RESET() to demonstrate explicit request for reoccuring processing of Idle Blocks.
* source/rtl/idle.c
* source/rtl/inkey.c
! Improved granularity of Idle Processing:
- GC is called only once per Wait Session.
- Single Idle Task is performed for each itteration of hb_idleState() but never more than once per Wait Session.
- ReleaseCPU() is guaranteed to be the only code executing for the remainder of every Wait Session.
/* Maurilio, Ryszard, Victor, could you please review and comment... */
* source/pp/ppcomp.c
* Corrected 1 compiler warning.
* source/pp/ppcore.c
+ Added s_bArray support logic to WorkDefine()
* source/rtl/idle.c
* Revered order of hb_gcCollectAll() and hb_releaseCPU();