From e85b004b32cea3f36e26c8093856c38442ab3cee Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 27 Jun 2004 09:34:24 +0000 Subject: [PATCH] fixed TStringGrid goEditing from Jesus git-svn-id: trunk@5601 - --- lcl/grids.pas | 6 +++++- lcl/include/customlistbox.inc | 27 ++++++++++++++------------- lcl/interfaces/gtk/gtklistsl.inc | 22 +++++++++++++++------- lcl/stdctrls.pp | 8 ++++++-- 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/lcl/grids.pas b/lcl/grids.pas index 940df03528..9f2cda3892 100644 --- a/lcl/grids.pas +++ b/lcl/grids.pas @@ -3484,7 +3484,9 @@ begin EditorSelectAll; //DebugLn('Posting editor LM_CHAR, ch=',ch, ' ', InttoStr(Ord(ch))); - //PostMessage(FEditor.Handle, LM_CHAR, Word(Ch), 0); + {$ifdef WIN32} + PostMessage(FEditor.Handle, LM_CHAR, Word(Ch), 0); + {$else} /// // Note. this is a workaround because the call above doesn't work /// @@ -3495,6 +3497,8 @@ begin if Ch=^H then Msg.Value:='' else Msg.Value:=ch; FEditor.Dispatch(Msg); + {$endif} + end; end; diff --git a/lcl/include/customlistbox.inc b/lcl/include/customlistbox.inc index f54d768a14..37acafe8b7 100644 --- a/lcl/include/customlistbox.inc +++ b/lcl/include/customlistbox.inc @@ -26,20 +26,21 @@ type end; PCustomListBoxItemRecord = ^TCustomListBoxItemRecord; -{------------------------------------------------------------------------------} -{ procedure TCustomListBox.AssignCacheToItemData } -{------------------------------------------------------------------------------} -procedure TCustomListBox.AssignCacheToItemData(const AIndex: Integer; const AData: Pointer); +{------------------------------------------------------------------------------ + procedure TCustomListBox.AssignCacheToItemData +------------------------------------------------------------------------------} +procedure TCustomListBox.AssignCacheToItemData(const AIndex: Integer; + const AData: Pointer); begin - if PCustomListBoxItemRecord(AData)^.Selected - or (FItemIndex = AIndex) - then SendItemSelected(AIndex, True); + if PCustomListBoxItemRecord(AData)^.Selected or (FItemIndex = AIndex) then + SendItemSelected(AIndex, True); end; -{------------------------------------------------------------------------------} -{ procedure TCustomListBox.AssignItemDataToCache } -{------------------------------------------------------------------------------} -procedure TCustomListBox.AssignItemDataToCache(const AIndex: Integer; const AData: Pointer); +{------------------------------------------------------------------------------ + procedure TCustomListBox.AssignItemDataToCache +------------------------------------------------------------------------------} +procedure TCustomListBox.AssignItemDataToCache(const AIndex: Integer; + const AData: Pointer); begin PCustomListBoxItemRecord(AData)^.Selected := Selected[AIndex]; end; @@ -369,9 +370,9 @@ end; {------------------------------------------------------------------------------} { function TCustomListBox.Create } {------------------------------------------------------------------------------} -constructor TCustomListBox.Create(AOwner : TComponent); +constructor TCustomListBox.Create(TheOwner : TComponent); begin - inherited Create(AOwner); + inherited Create(TheOwner); fCompStyle := csListBox; BorderStyle:= bsSingle; FItems := TExtendedStringList.Create(GetCachedDataSize); diff --git a/lcl/interfaces/gtk/gtklistsl.inc b/lcl/interfaces/gtk/gtklistsl.inc index f5d6c7bba3..5ad0a59850 100644 --- a/lcl/interfaces/gtk/gtklistsl.inc +++ b/lcl/interfaces/gtk/gtklistsl.inc @@ -322,6 +322,7 @@ begin // Disadvantages: - worst case on sorted list // - not keeping order // ToDo: replace by mergesort and add customsort + // remember selected items Assign(sl); sl.Free; EndUpdate; @@ -357,14 +358,12 @@ end; procedure TGtkListStringList.BeginUpdate; begin - if FUpdateCount=0 then Include(FStates,glsItemCacheNeedsUpdate); inc(FUpdateCount); end; procedure TGtkListStringList.EndUpdate; begin dec(FUpdateCount); - if FUpdateCount=0 then Include(FStates,glsItemCacheNeedsUpdate); end; {------------------------------------------------------------------------------ @@ -537,12 +536,14 @@ var li, cb, box: PGtkWidget; l, m, r, cmp: integer; item_requisition: TGtkRequisition; + OldCount: LongInt; begin + OldCount:=Count; BeginUpdate; try if FSorted then begin l:=0; - r:=Count-1; + r:=OldCount-1; m:=l; while (l<=r) do begin m:=(l+r) shr 1; @@ -554,13 +555,13 @@ begin else break; end; - if (m0) then + if (m0) then inc(m); Index:=m; end; - if (Index < 0) or (Index > Count) then + if (Index < 0) or (Index > OldCount) then RaiseException('TGtkListStringList.Insert: Index '+IntToStr(Index) - +' out of bounds. Count='+IntToStr(Count)); + +' out of bounds. Count='+IntToStr(OldCount)); if Owner = nil then RaiseException( 'TGtkListStringList.Insert Unspecified owner'); @@ -581,7 +582,11 @@ begin li:=gtk_list_item_new_with_label(PChar(S)); end; ConnectItemCallbacks(PGtkListItem(li)); - Include(FStates,glsItemCacheNeedsUpdate); + ReAllocMem(FCachedItems,SizeOf(PGtkListItem)*(OldCount+1)); + if Index