From 040d3f3286f92c2cb62b330d67186dac99cd177d Mon Sep 17 00:00:00 2001 From: Luiz Rafael Culik Date: Mon, 18 Mar 2002 16:00:33 +0000 Subject: [PATCH] See changelog 2002-03-18 12:56 UTC-0300 --- harbour/source/rtl/menuto.prg | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/harbour/source/rtl/menuto.prg b/harbour/source/rtl/menuto.prg index 611e8322b7..b44ff1d7ff 100644 --- a/harbour/source/rtl/menuto.prg +++ b/harbour/source/rtl/menuto.prg @@ -58,6 +58,7 @@ function __MenuTo( bBlock, cVariable ) local lDeclared local bAction + local nMouseClik // Detect if a memvar was passed @@ -175,6 +176,15 @@ function __MenuTo( bBlock, cVariable ) // check for keystrokes do case + case nKey == 1001 + case nKey == 1002 .OR. nKey == 1006 + if ( ( nMouseClik := hittest(s_aLevel, mrow(), mcol()) ) > 0 ) + n := nMouseClik + endif + if ( nKey == 1006 ) + lExit := .T. + endif + case nKey == K_DOWN .or. nKey == K_RIGHT if ++n > nArrLen n := iif( Set( _SET_WRAP ), 1, nArrLen ) @@ -228,3 +238,14 @@ function __MenuTo( bBlock, cVariable ) return n +static function HITTEST( aMenu, nMouseRow, nMouseCol ) + + local nPos, nLen := Len(aMenu) + for nPos := 1 to nLen + if ( nMouseRow != aMenu[ nPos ][ 1 ] ) + elseif ( nMouseCol < aMenu[ nPos ][ 2 ] ) + elseif ( nMouseCol < aMenu[ nPos ][ 2 ] + Len(aMenu[ nPos ][ 3 ]) ) + return nPos + endif + next + return 0