From c18b7e95b345fd787328e4f61776af92ebeb161d Mon Sep 17 00:00:00 2001 From: andrew Date: Tue, 24 Apr 2007 01:30:30 +0000 Subject: [PATCH] applied patch from Luiz Americo for bug #1427 git-svn-id: trunk@10993 - --- lcl/interfaces/gtk/gtkcallback.inc | 12 ++++++------ lcl/interfaces/gtk/gtkwsstdctrls.pp | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lcl/interfaces/gtk/gtkcallback.inc b/lcl/interfaces/gtk/gtkcallback.inc index e9d9662e0f..b3d1bbdfaf 100644 --- a/lcl/interfaces/gtk/gtkcallback.inc +++ b/lcl/interfaces/gtk/gtkcallback.inc @@ -3276,14 +3276,14 @@ begin {$IFDEF EventTrace} EventTrace('gtkListSelectionChangedAfter', data); {$ENDIF} + GtkList:=PGtkList(widget); + if (GtkList^.selection = nil) or (LockOnChange(PGtkObject(widget),0) > 0) then + Exit; FillChar(Mess,SizeOf(Mess),0); Mess.msg := LM_SelChange; - GtkList:=PGtkList(widget); - if (data=nil) or (GtkList^.selection<>nil) then begin - if gtkListGetSelectionMode(GtkList)=GTK_SELECTION_SINGLE then - gtk_list_set_selection_mode(GtkList,GTK_SELECTION_BROWSE); - DeliverMessage(Data, Mess); - end; + if gtkListGetSelectionMode(GtkList)=GTK_SELECTION_SINGLE then + gtk_list_set_selection_mode(GtkList,GTK_SELECTION_BROWSE); + DeliverMessage(Data, Mess); end; {$I gtkDragCallback.inc} diff --git a/lcl/interfaces/gtk/gtkwsstdctrls.pp b/lcl/interfaces/gtk/gtkwsstdctrls.pp index 518ded0df3..a376c07c46 100644 --- a/lcl/interfaces/gtk/gtkwsstdctrls.pp +++ b/lcl/interfaces/gtk/gtkwsstdctrls.pp @@ -520,6 +520,7 @@ begin Handle := ACustomListBox.Handle; if Handle<>0 then begin + LockOnChange(PGtkObject(Handle),+1); Widget:=GetWidgetInfo(Pointer(Handle),True)^.CoreWidget; if GtkWidgetIsA(Widget,gtk_list_get_type) then begin if AIndex >= 0 then @@ -531,6 +532,7 @@ begin gtk_clist_select_row(PGtkCList(Widget), AIndex, 1); // column end else raise Exception.Create(''); + LockOnChange(PGtkObject(Handle),-1); end; end;