@@ -1315,9 +1315,7 @@ TMainForm = class(TExtForm)
13151315 FCommandStatsServerUptime: Integer;
13161316 FVariableNames, FSessionVars, FGlobalVars: TStringList;
13171317 FProposalItems: TProposalItemList;
1318- FProposalCol1Width: Integer;
1319- FProposalCol2Width: Integer;
1320- FProposalCol3Width: Integer;
1318+ FProposalLeftWidth: Integer;
13211319 FProposalTriggeredByDot: Boolean;
13221320
13231321 procedure SetDelimiter(Value: String);
@@ -1802,8 +1800,7 @@ procedure TMainForm.FormDestroy(Sender: TObject);
18021800 AppSettings.WriteString(asDelimiter, FDelimiter);
18031801 AppSettings.WriteInt(asQuerymemoheight, ScaleFormToDesign(pnlQueryMemo.Height));
18041802 AppSettings.WriteInt(asQueryhelperswidth, ScaleFormToDesign(pnlQueryHelpers.Width));
1805- // This saves a too small width (mostly 15), probably because the proposal is not visible now:
1806- AppSettings.WriteInt(asCompletionProposalWidth, ScaleFormToDesign(SynCompletionProposal.Width));
1803+ AppSettings.WriteInt(asCompletionProposalWidth, ScaleFormToDesign(SynCompletionProposal.TheForm.Width));
18071804 AppSettings.WriteInt(asCompletionProposalNbLinesInWindow, SynCompletionProposal.LinesInWindow);
18081805 AppSettings.WriteInt(asDbtreewidth, ScaleFormToDesign(pnlLeft.width));
18091806 AppSettings.WriteBool(asGroupTreeObjects, actGroupObjects.Checked);
@@ -2080,7 +2077,7 @@ procedure TMainForm.FormCreate(Sender: TObject);
20802077 // We already store and restore the dimensions DPI aware.
20812078 {SynCompletionProposal.Form.Scaled := False;
20822079 SynCompletionProposal.TimerInterval := AppSettings.ReadInt(asCompletionProposalInterval);}
2083- // SynCompletionProposal.Width := AppSettings.ReadInt(asCompletionProposalWidth);
2080+ SynCompletionProposal.TheForm. Width := Max( AppSettings.ReadInt(asCompletionProposalWidth), 50 );
20842081 SynCompletionProposal.LinesInWindow := AppSettings.ReadInt(asCompletionProposalNbLinesInWindow);
20852082 FProposalItems := TProposalItemList.Create;
20862083 FProposalTriggeredByDot := False;
@@ -3599,37 +3596,23 @@ function TMainForm.SynCompletionProposalMeasureItem(const AKey: string;
35993596 ACanvas: TCanvas; Selected: boolean; Index: integer): TPoint;
36003597var
36013598 i, X, Y: Integer;
3602- It : TProposalItem;
3599+ Item : TProposalItem;
36033600begin
3604- FProposalCol1Width := 0;
3605- FProposalCol2Width := 0;
3606-
3607- ACanvas.Font.Style := [fsBold];
3608- for i := 0 to SynCompletionProposal.ItemList.Count - 1 do
3609- begin
3610- It := FProposalItems[SynCompletionProposal.IndexFromVisibleIndex(i)];
3611- FProposalCol1Width := Max(FProposalCol1Width, ACanvas.TextWidth(It.LeftText));
3612- end;
3601+ // Calculate how much vertical and horizontal space the control reserves for this row
3602+ FProposalLeftWidth := 0;
36133603
3614- ACanvas.Font.Style := [fsItalic];
3615- for i := 0 to SynCompletionProposal.ItemList.Count - 1 do
3616- begin
3617- It := FProposalItems[SynCompletionProposal.IndexFromVisibleIndex(i)];
3618- FProposalCol2Width := Max(FProposalCol2Width, ACanvas.TextWidth(It.CenterText));
3604+ ACanvas.Font.Style := [];
3605+ for i := 0 to SynCompletionProposal.ItemList.Count - 1 do begin
3606+ Item := FProposalItems[SynCompletionProposal.IndexFromVisibleIndex(i)];
3607+ FProposalLeftWidth := Max(FProposalLeftWidth, ACanvas.TextWidth(Item.LeftText));
36193608 end;
36203609
3621- //if SynCompletionProposal.Width < 100 then begin
3622- // SynCompletionProposal.Width := ImageListMain.Width + FProposalCol1Width + FProposalCol2Width + 100;
3623- //end;
3624-
3625- ACanvas.Font.Style := [];
3626- It := FProposalItems[SynCompletionProposal.IndexFromVisibleIndex(Index)];
3627- X := ImageListMain.Width + 5 + FProposalCol1Width + 10;
3628- if It.RightText.IsEmpty then
3629- Inc(X, ACanvas.TextWidth(It.CenterText))
3630- else
3631- Inc(X, FProposalCol2Width + 10 + ACanvas.TextWidth(It.RightText));
3632- Y := Max(ImageListMain.Height, ACanvas.TextHeight('Wy')) + 4;
3610+ Item := FProposalItems[SynCompletionProposal.IndexFromVisibleIndex(Index)];
3611+ X := Space + ImageListMain.WidthForPPI[16, PixelsPerInch]
3612+ + Space + FProposalLeftWidth
3613+ + Space(2) + ACanvas.TextWidth(Item.CenterText)
3614+ + IfThen(Item.RightText.IsEmpty, 0, Space(2) + ACanvas.TextWidth(Item.RightText));
3615+ Y := Max(ImageListMain.HeightForPPI[16, PixelsPerInch] + 2, ACanvas.TextHeight('Wy')) + Space;
36333616 Result := Point(X, Y);
36343617end;
36353618
@@ -3642,34 +3625,25 @@ function TMainForm.SynCompletionProposalPaintItem(const AKey: string;
36423625 It := FProposalItems[SynCompletionProposal.IndexFromVisibleIndex(Index)];
36433626
36443627 if (It.ImageIndex >= 0) and (It.ImageIndex < ImageListMain.Count) then
3645- ImageListMain.Draw(ACanvas, X + 4, Y + 2, It.ImageIndex, True);
3646-
3647- X1 := X + ImageListMain.Width + 5;
3648- X2 := X1 + FProposalCol1Width + 10;
3649- X3 := X2 + FProposalCol2Width + 10;
3628+ ImageListMain.Draw(ACanvas, X + Space, Y + 1, It.ImageIndex, True);
36503629
36513630 ACanvas.Brush.Style := bsClear;
36523631
3632+ X1 := X + Space + ImageListMain.WidthForPPI[16, PixelsPerInch] + Space;
36533633 ACanvas.Font.Style := [];
3654- if Selected then
3655- ACanvas.Font.Color := clWhite
3656- else
3657- ACanvas.Font.Color := It.LeftColor;
3634+ ACanvas.Font.Color := IfThen(Selected, clWhite, It.LeftColor);
36583635 ACanvas.TextOut(X1, Y + 1, It.LeftText);
36593636
3660- ACanvas.Font.Style := [];
3661- if Selected then
3662- ACanvas.Font.Color := clWhite
3663- else
3664- ACanvas.Font.Color := It.CenterColor;
3637+ X2 := X1 + FProposalLeftWidth + Space(2);
3638+ ACanvas.Font.Color := IfThen(Selected, clWhite, It.CenterColor);
36653639 ACanvas.TextOut(X2, Y + 1, It.CenterText);
36663640
3667- ACanvas.Font.Style := [fsItalic];
3668- if Selected then
3669- ACanvas.Font.Color := clWhite
3670- else
3671- ACanvas.Font.Color := It.RightColor ;
3672- ACanvas.TextOut(X3, Y + 1, It.RightText) ;
3641+ if not It.CenterText.IsEmpty then begin
3642+ X3 := X2 + ACanvas.TextWidth(It.CenterText) + Space(2);
3643+ ACanvas.Font.Style := [fsItalic];
3644+ ACanvas.Font.Color := IfThen(Selected, clWhite, It.RightColor);
3645+ ACanvas.TextOut(X3, Y + 1, It.RightText) ;
3646+ end ;
36733647
36743648 Result := True;
36753649end;
@@ -12750,7 +12724,7 @@ procedure TMainForm.actResetPanelDimensionsExecute(Sender: TObject);
1275012724 end;
1275112725 AppSettings.DeleteValue(asCompletionProposalWidth);
1275212726 AppSettings.DeleteValue(asCompletionProposalNbLinesInWindow);
12753- SynCompletionProposal.Width := AppSettings.ReadInt(asCompletionProposalWidth);
12727+ SynCompletionProposal.TheForm. Width := Max( AppSettings.ReadInt(asCompletionProposalWidth), 50 );
1275412728 SynCompletionProposal.LinesInWindow := AppSettings.ReadInt(asCompletionProposalNbLinesInWindow);
1275512729end;
1275612730
0 commit comments