Cocoa: Fix #19169, TCustomListView.OnChanging()

This commit is contained in:
rich2014 2024-01-14 22:04:04 +08:00
parent ba509cfde3
commit e8132d722a
3 changed files with 30 additions and 2 deletions

View File

@ -46,6 +46,7 @@ type
procedure SetItemTextAt(ARow, ACol: Integer; const Text: String); procedure SetItemTextAt(ARow, ACol: Integer; const Text: String);
procedure SetItemCheckedAt(ARow, ACol: Integer; CheckState: Integer); procedure SetItemCheckedAt(ARow, ACol: Integer; CheckState: Integer);
procedure tableSelectionChange(ARow: Integer; Added, Removed: NSIndexSet); procedure tableSelectionChange(ARow: Integer; Added, Removed: NSIndexSet);
function shouldTableSelectionChange(NewSel: Integer): Boolean;
procedure ColumnClicked(ACol: Integer); procedure ColumnClicked(ACol: Integer);
procedure DrawRow(rowidx: Integer; ctx: TCocoaContext; const r: TRect; state: TOwnerDrawState); procedure DrawRow(rowidx: Integer; ctx: TCocoaContext; const r: TRect; state: TOwnerDrawState);
procedure GetRowHeight(rowidx: Integer; var height: Integer); procedure GetRowHeight(rowidx: Integer; var height: Integer);
@ -139,8 +140,8 @@ type
//procedure tableView_willDisplayCell_forTableColumn_row(tableView: NSTableView; cell: id; tableColumn: NSTableColumn; row: NSInteger); message 'tableView:willDisplayCell:forTableColumn:row:'; //procedure tableView_willDisplayCell_forTableColumn_row(tableView: NSTableView; cell: id; tableColumn: NSTableColumn; row: NSInteger); message 'tableView:willDisplayCell:forTableColumn:row:';
function tableView_shouldEditTableColumn_row(tableView: NSTableView; tableColumn: NSTableColumn; row: NSInteger): Boolean; message 'tableView:shouldEditTableColumn:row:'; function tableView_shouldEditTableColumn_row(tableView: NSTableView; tableColumn: NSTableColumn; row: NSInteger): Boolean; message 'tableView:shouldEditTableColumn:row:';
function selectionShouldChangeInTableView(tableView: NSTableView): Boolean; message 'selectionShouldChangeInTableView:'; function selectionShouldChangeInTableView(tableView: NSTableView): Boolean; message 'selectionShouldChangeInTableView:';
{function tableView_shouldSelectRow(tableView: NSTableView; row: NSInteger): Boolean; message 'tableView:shouldSelectRow:'; function tableView_shouldSelectRow(tableView: NSTableView; row: NSInteger): Boolean; message 'tableView:shouldSelectRow:';
function tableView_selectionIndexesForProposedSelection(tableView: NSTableView; proposedSelectionIndexes: NSIndexSet): NSIndexSet; message 'tableView:selectionIndexesForProposedSelection:'; {function tableView_selectionIndexesForProposedSelection(tableView: NSTableView; proposedSelectionIndexes: NSIndexSet): NSIndexSet; message 'tableView:selectionIndexesForProposedSelection:';
function tableView_shouldSelectTableColumn(tableView: NSTableView; tableColumn: NSTableColumn): Boolean; message 'tableView:shouldSelectTableColumn:'; function tableView_shouldSelectTableColumn(tableView: NSTableView; tableColumn: NSTableColumn): Boolean; message 'tableView:shouldSelectTableColumn:';
procedure tableView_mouseDownInHeaderOfTableColumn(tableView: NSTableView; tableColumn: NSTableColumn); message 'tableView:mouseDownInHeaderOfTableColumn:';} procedure tableView_mouseDownInHeaderOfTableColumn(tableView: NSTableView; tableColumn: NSTableColumn); message 'tableView:mouseDownInHeaderOfTableColumn:';}
procedure tableView_didClickTableColumn(tableView: NSTableView; tableColumn: NSTableColumn); message 'tableView:didClickTableColumn:'; procedure tableView_didClickTableColumn(tableView: NSTableView; tableColumn: NSTableColumn); message 'tableView:didClickTableColumn:';
@ -644,6 +645,12 @@ begin
Result := true; Result := true;
end; end;
function TCocoaTableListView.tableView_shouldSelectRow(tableView: NSTableView;
row: NSInteger): Boolean;
begin
Result:= callback.shouldTableSelectionChange( row );
end;
procedure TCocoaTableListView.tableView_didClickTableColumn( procedure TCocoaTableListView.tableView_didClickTableColumn(
tableView: NSTableView; tableColumn: NSTableColumn); tableView: NSTableView; tableColumn: NSTableColumn);
begin begin

View File

@ -136,6 +136,7 @@ type
procedure SetItemTextAt(ARow, ACol: Integer; const Text: String); procedure SetItemTextAt(ARow, ACol: Integer; const Text: String);
procedure SetItemCheckedAt(ARow, ACol: Integer; IsChecked: Integer); procedure SetItemCheckedAt(ARow, ACol: Integer; IsChecked: Integer);
procedure tableSelectionChange(NewSel: Integer; Added, Removed: NSIndexSet); procedure tableSelectionChange(NewSel: Integer; Added, Removed: NSIndexSet);
function shouldTableSelectionChange(NewSel: Integer): Boolean;
procedure ColumnClicked(ACol: Integer); procedure ColumnClicked(ACol: Integer);
procedure DrawRow(rowidx: Integer; ctx: TCocoaContext; const r: TRect; procedure DrawRow(rowidx: Integer; ctx: TCocoaContext; const r: TRect;
state: TOwnerDrawState); state: TOwnerDrawState);
@ -283,6 +284,9 @@ type
implementation implementation
type
TCustomListViewAccess = class(TCustomListView);
type type
{ TUpdownCommonCallback } { TUpdownCommonCallback }
@ -2036,6 +2040,16 @@ begin
LCLMessageGlue.DeliverMessage(ListView, Msg);} LCLMessageGlue.DeliverMessage(ListView, Msg);}
end; end;
function TLCLListViewCallback.shouldTableSelectionChange(NewSel: Integer
): Boolean;
var
item: TListItem = nil;
begin
if (NewSel>=0) and (NewSel<self.listView.Items.Count) then
item:= self.listView.Items[NewSel];
Result:= TCustomListViewAccess(self.listView).CanChange( item, LVIF_TEXT );
end;
procedure TLCLListViewCallback.ColumnClicked(ACol: Integer); procedure TLCLListViewCallback.ColumnClicked(ACol: Integer);
var var
Msg: TLMNotify; Msg: TLMNotify;

View File

@ -274,6 +274,7 @@ type
procedure SetItemTextAt(ARow, ACol: Integer; const Text: String); virtual; procedure SetItemTextAt(ARow, ACol: Integer; const Text: String); virtual;
procedure SetItemCheckedAt(ARow, ACol: Integer; isChecked: Integer); virtual; procedure SetItemCheckedAt(ARow, ACol: Integer; isChecked: Integer); virtual;
procedure tableSelectionChange(ARow: Integer; Added, Removed: NSIndexSet); virtual; procedure tableSelectionChange(ARow: Integer; Added, Removed: NSIndexSet); virtual;
function shouldTableSelectionChange(NewSel: Integer): Boolean; virtual;
procedure ColumnClicked(ACol: Integer); virtual; procedure ColumnClicked(ACol: Integer); virtual;
procedure DrawRow(rowidx: Integer; ctx: TCocoaContext; const r: TRect; state: TOwnerDrawState); virtual; procedure DrawRow(rowidx: Integer; ctx: TCocoaContext; const r: TRect; state: TOwnerDrawState); virtual;
procedure GetRowHeight(rowidx: integer; var h: Integer); virtual; procedure GetRowHeight(rowidx: integer; var h: Integer); virtual;
@ -682,6 +683,12 @@ begin
SendSimpleMessage(Target, LM_SELCHANGE); SendSimpleMessage(Target, LM_SELCHANGE);
end; end;
function TLCLListBoxCallback.shouldTableSelectionChange(NewSel: Integer
): Boolean;
begin
Result:= true;
end;
procedure TLCLListBoxCallback.ColumnClicked(ACol: Integer); procedure TLCLListBoxCallback.ColumnClicked(ACol: Integer);
begin begin
// not needed // not needed