This commit is contained in:
Aleksander Czajczynski
2025-01-10 10:02:01 +01:00
2 changed files with 22 additions and 17 deletions

View File

@@ -7,6 +7,12 @@
Entries may not always be in chronological/commit order.
See license at the end of file. */
2025-01-09 12:00 UTC+0100 Kamil Przybylski (kprzybylski quay.pl)
* src/rtl/listbox.prg
! fixed nTop not being incremented in ListBox:hitTest() for no-box dropdown
* replaced inconsistent references to ::nTop with nTop
* renamed variables to better reflect their role
2025-01-08 13:14 UTC+0100 Kamil Przybylski (kprzybylski quay.pl)
* src/rtl/listbox.prg
! fixed nTop variable not being assigned properly in ListBox:hitTest()

View File

@@ -396,8 +396,8 @@ METHOD getText( nPos ) CLASS ListBox
METHOD hitTest( nMRow, nMCol ) CLASS ListBox
LOCAL nRet
LOCAL nTop := ::nTop
LOCAL nOffset := 0
LOCAL nHit := 0
/* Check hit on the scrollbar */
@@ -408,13 +408,13 @@ METHOD hitTest( nMRow, nMCol ) CLASS ListBox
RETURN nHit
ENDIF
IF ! ::lIsOpen .OR. Empty( ::cHotBox + ::cColdBox )
nRet := 0
ELSE
IF ::lDropDown
nTop++
ENDIF
IF ::lIsOpen .AND. ::lDropDown
nTop++
ENDIF
IF ::lIsOpen .AND. .NOT. Empty( ::cHotBox + ::cColdBox )
nOffset := 1
DO CASE
CASE nMRow == nTop
DO CASE
@@ -435,35 +435,34 @@ METHOD hitTest( nMRow, nMCol ) CLASS ListBox
RETURN HTBOTTOM
ENDCASE
CASE nMCol == ::nLeft
IF nMRow >= ::nTop .AND. ;
IF nMRow >= nTop .AND. ;
nMRow <= ::nBottom
RETURN HTLEFT
ELSE
RETURN HTNOWHERE
ENDIF
CASE nMCol == ::nRight
IF nMRow >= ::nTop .AND. ;
IF nMRow >= nTop .AND. ;
nMRow <= ::nBottom
RETURN HTRIGHT
ELSE
RETURN HTNOWHERE
ENDIF
ENDCASE
nRet := 1
ENDIF
DO CASE
CASE ! ::lIsOpen
CASE nMRow < nTop + nRet
CASE nMRow > ::nBottom - nRet
CASE nMCol < ::nLeft + nRet
CASE nMCol <= ::nRight - nRet
RETURN ::nTopItem + nMRow - ( nTop + nRet )
CASE nMRow < nTop + nOffset
CASE nMRow > ::nBottom - nOffset
CASE nMCol < ::nLeft + nOffset
CASE nMCol <= ::nRight - nOffset
RETURN ::nTopItem + nMRow - ( nTop + nOffset )
ENDCASE
DO CASE
CASE ! ::lDropDown
CASE nMRow != ::nTop
CASE nMRow != nTop
CASE nMCol < ::nLeft
CASE nMCol < ::nRight
RETURN HTCLIENT
@@ -479,7 +478,7 @@ METHOD hitTest( nMRow, nMCol ) CLASS ListBox
RETURN HTCAPTION
ENDCASE
RETURN 0
RETURN HTNOWHERE
METHOD insItem( nPos, cText, xData ) CLASS ListBox