ide: don't eat up and down keys when current object inspector editor is dropped down (issue #0011031)

git-svn-id: trunk@14708 -
This commit is contained in:
paul 2008-04-01 07:02:34 +00:00
parent eb654610cb
commit 54763caf2c

View File

@ -1903,6 +1903,13 @@ end;
procedure TOICustomPropertyGrid.HandleStandardKeys(var Key: Word; procedure TOICustomPropertyGrid.HandleStandardKeys(var Key: Word;
Shift: TShiftState); Shift: TShiftState);
function IsCurrentEditDroppedDown: Boolean;
begin
Result := (FCurrentEdit is TCustomCombobox) and
TCustomCombobox(FCurrentEdit).DroppedDown;
end;
var var
Handled: Boolean; Handled: Boolean;
begin begin
@ -1911,39 +1918,46 @@ begin
begin begin
Handled:=true; Handled:=true;
case Key of case Key of
VK_UP:
if IsCurrentEditDroppedDown then
Handled := False
else
if (ItemIndex > 0) then
SetItemIndexAndFocus(ItemIndex - 1);
VK_UP: VK_DOWN:
if (ItemIndex>0) then SetItemIndexAndFocus(ItemIndex-1); if IsCurrentEditDroppedDown then
Handled := False
else
if (ItemIndex < FRows.Count - 1) then
SetItemIndexAndFocus(ItemIndex + 1);
VK_DOWN: VK_TAB:
if (ItemIndex<FRows.Count-1) then SetItemIndexAndFocus(ItemIndex+1); DoTabKey;
VK_TAB: VK_LEFT:
DoTabKey; if (FCurrentEdit=nil)
and (ItemIndex>=0) and (Rows[ItemIndex].Expanded) then
ShrinkRow(ItemIndex)
else
Handled:=false;
VK_LEFT: VK_RIGHT:
if (FCurrentEdit=nil) if (FCurrentEdit=nil)
and (ItemIndex>=0) and (Rows[ItemIndex].Expanded) then and (ItemIndex>=0) and (not Rows[ItemIndex].Expanded)
ShrinkRow(ItemIndex) and (paSubProperties in Rows[ItemIndex].Editor.GetAttributes) then
ExpandRow(ItemIndex)
else
Handled:=false;
VK_RETURN:
begin
SetRowValue;
if (FCurrentEdit is TCustomEdit) then
TCustomEdit(FCurrentEdit).SelectAll;
end;
else else
Handled:=false; Handled := false;
VK_RIGHT:
if (FCurrentEdit=nil)
and (ItemIndex>=0) and (not Rows[ItemIndex].Expanded)
and (paSubProperties in Rows[ItemIndex].Editor.GetAttributes) then
ExpandRow(ItemIndex)
else
Handled:=false;
VK_RETURN:
begin
SetRowValue;
if (FCurrentEdit is TCustomEdit) then
TCustomEdit(FCurrentEdit).SelectAll;
end;
else
Handled := false;
end; end;
end end
else else