From 3b454a34f1271091d0d762c6f6c299d78c987dc0 Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 17 Aug 2002 23:41:15 +0000 Subject: [PATCH] improved configure build lazarus dialog git-svn-id: trunk@2320 - --- lcl/interfaces/gtk/gtkobject.inc | 82 +++++++++++++++++++------------- 1 file changed, 50 insertions(+), 32 deletions(-) diff --git a/lcl/interfaces/gtk/gtkobject.inc b/lcl/interfaces/gtk/gtkobject.inc index 0cd3cc5d44..285c6c2138 100644 --- a/lcl/interfaces/gtk/gtkobject.inc +++ b/lcl/interfaces/gtk/gtkobject.inc @@ -1615,39 +1615,10 @@ end; ------------------------------------------------------------------------------} function TgtkObject.GetTopIndex(Sender: TObject): integer; var - ScrolledWindow: PGtkScrolledWindow; - VertAdj: PGTKAdjustment; - AdjValue: integer; - ListWidget: PGtkList; - AWidget: PGtkWidget; - GListItem: PGList; - ListItemWidget: PGtkWidget; + y: Integer; begin - Result:=-1; - if not (Sender is TWinControl) then exit; - case TWinControl(Sender).fCompStyle of - - csListBox: - begin - AWidget:=PGtkWidget(TWinControl(Sender).Handle); - ListWidget:=PGtkList(GetWidgetInfo(AWidget, True)^.ImplementationWidget); - ScrolledWindow:=PGtkScrolledWindow(AWidget); - VertAdj:=gtk_scrolled_window_get_vadjustment(ScrolledWindow); - if VertAdj=nil then - AdjValue:=0 - else - AdjValue:=round(VertAdj^.value); - GListItem:=ListWidget^.children; - while GListItem<>nil do begin - inc(Result); - ListItemWidget:=PGtkWidget(GListItem^.data); - dec(AdjValue,ListItemWidget^.Allocation.Height); - if AdjValue<0 then break; - GListItem:=GListItem^.next; - end; - end; - - end; + y:=0; + Result:=GetIndexAtY(Sender,@y); end; {------------------------------------------------------------------------------ @@ -1694,6 +1665,49 @@ begin end; end; +{------------------------------------------------------------------------------ + function TgtkObject.GetIndexAtY(Sender: TObject; PointerToY: Pointer): integer; +------------------------------------------------------------------------------} +function TgtkObject.GetIndexAtY(Sender: TObject; PointerToY: Pointer): integer; +var + ScrolledWindow: PGtkScrolledWindow; + VertAdj: PGTKAdjustment; + AdjValue: integer; + ListWidget: PGtkList; + AWidget: PGtkWidget; + GListItem: PGList; + ListItemWidget: PGtkWidget; + Y: integer; +begin + Result:=-1; + if not (Sender is TWinControl) then exit; + Y:=PInteger(PointerToY)^; + case TWinControl(Sender).fCompStyle of + + csListBox: + begin + AWidget:=PGtkWidget(TWinControl(Sender).Handle); + ListWidget:=PGtkList(GetWidgetInfo(AWidget, True)^.ImplementationWidget); + ScrolledWindow:=PGtkScrolledWindow(AWidget); + VertAdj:=gtk_scrolled_window_get_vadjustment(ScrolledWindow); + if VertAdj=nil then + AdjValue:=y + else + AdjValue:=round(VertAdj^.value)+y; + GListItem:=ListWidget^.children; + while GListItem<>nil do begin + inc(Result); + ListItemWidget:=PGtkWidget(GListItem^.data); + dec(AdjValue,ListItemWidget^.Allocation.Height); + if AdjValue<0 then exit; + GListItem:=GListItem^.next; + end; + Result:=-1; + end; + + end; +end; + {------------------------------------------------------------------------------ procedure TgtkObject.BringFormToFront(Sender: TObject); ------------------------------------------------------------------------------} @@ -1795,6 +1809,7 @@ begin LM_LB_GETTOPINDEX: Result:=GetTopIndex(Sender); LM_LB_SETTOPINDEX: Result:=SetTopIndex(Sender,integer(Data)); + LM_LB_GETINDEXAT: Result:=GetIndexAtY(Sender,Data); else begin handle := hwnd(ObjectToGtkObject(Sender)); @@ -7244,6 +7259,9 @@ end; { ============================================================================= $Log$ + Revision 1.359 2003/04/29 13:35:39 mattias + improved configure build lazarus dialog + Revision 1.358 2003/04/26 10:45:34 mattias fixed right control release