NiceGrid: Attempt to fix editing cells in non-Windows widgetsets.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8876 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-07-08 21:54:41 +00:00
parent 36f9fff540
commit 0720be79d7
2 changed files with 175 additions and 80 deletions

View File

@ -22,6 +22,9 @@
</i18n>
<BuildModes Count="1">
<Item1 Name="default" Default="True"/>
<SessionMatrixOptions Count="1">
<Item1 ID="424392800469" Modes="default" Value="-gw3"/>
</SessionMatrixOptions>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
@ -37,12 +40,12 @@
<PackageName Value="NiceGridLaz"/>
</Item1>
</RequiredPackages>
<Units Count="14">
<Units Count="24">
<Unit0>
<Filename Value="basic_demo.lpr"/>
<IsPartOfProject Value="True"/>
<CursorPos X="47" Y="15"/>
<UsageCount Value="35"/>
<UsageCount Value="46"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -54,22 +57,22 @@
<EditorIndex Value="-1"/>
<TopLine Value="92"/>
<CursorPos X="53" Y="110"/>
<UsageCount Value="22"/>
<UsageCount Value="21"/>
</Unit1>
<Unit2>
<Filename Value="..\..\NiceGrid.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="500"/>
<CursorPos Y="502"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit2>
<Unit3>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\controls.pp"/>
<UnitName Value="Controls"/>
<EditorIndex Value="5"/>
<TopLine Value="2446"/>
<CursorPos X="15" Y="2463"/>
<UsageCount Value="14"/>
<EditorIndex Value="10"/>
<TopLine Value="2210"/>
<CursorPos X="25" Y="2239"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
@ -78,20 +81,20 @@
<EditorIndex Value="-1"/>
<TopLine Value="40"/>
<CursorPos X="6" Y="43"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit4>
<Unit5>
<Filename Value="..\..\Packages\NiceGridLaz.pas"/>
<EditorIndex Value="-1"/>
<CursorPos X="3" Y="11"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit5>
<Unit6>
<Filename Value="..\..\NiceGridReg.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="52"/>
<CursorPos X="73" Y="56"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit6>
<Unit7>
<Filename Value="..\common\main.pas"/>
@ -103,7 +106,7 @@
<EditorIndex Value="1"/>
<TopLine Value="121"/>
<CursorPos X="3" Y="126"/>
<UsageCount Value="33"/>
<UsageCount Value="44"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit7>
@ -112,9 +115,9 @@
<UnitName Value="NiceGrid"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="3"/>
<TopLine Value="551"/>
<CursorPos X="14" Y="573"/>
<UsageCount Value="14"/>
<TopLine Value="386"/>
<CursorPos X="32" Y="413"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@ -122,24 +125,24 @@
<EditorIndex Value="2"/>
<TopLine Value="740"/>
<CursorPos Y="771"/>
<UsageCount Value="14"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\include\winapih.inc"/>
<EditorIndex Value="7"/>
<EditorIndex Value="15"/>
<TopLine Value="287"/>
<CursorPos X="10" Y="305"/>
<UsageCount Value="12"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\lcltype.pp"/>
<UnitName Value="LCLType"/>
<EditorIndex Value="6"/>
<EditorIndex Value="12"/>
<TopLine Value="1202"/>
<CursorPos X="3" Y="1220"/>
<UsageCount Value="12"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -148,139 +151,221 @@
<EditorIndex Value="4"/>
<TopLine Value="46"/>
<CursorPos X="14" Y="64"/>
<UsageCount Value="12"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
<Filename Value="C:\Lazarus\fpc-3.2.2\source\rtl\objpas\types.pp"/>
<UnitName Value="Types"/>
<EditorIndex Value="8"/>
<EditorIndex Value="18"/>
<TopLine Value="317"/>
<CursorPos X="10" Y="335"/>
<UsageCount Value="12"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\include\wincontrol.inc"/>
<EditorIndex Value="16"/>
<TopLine Value="5413"/>
<CursorPos Y="5432"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\include\sizeconstraints.inc"/>
<EditorIndex Value="14"/>
<TopLine Value="23"/>
<CursorPos Y="44"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit15>
<Unit16>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\widgetset\wscontrols.pp"/>
<UnitName Value="WSControls"/>
<EditorIndex Value="17"/>
<TopLine Value="208"/>
<CursorPos Y="228"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit16>
<Unit17>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32lclintf.inc"/>
<EditorIndex Value="7"/>
<TopLine Value="635"/>
<CursorPos Y="652"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit17>
<Unit18>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\include\control.inc"/>
<EditorIndex Value="9"/>
<TopLine Value="2273"/>
<CursorPos Y="2299"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit18>
<Unit19>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\lclmessageglue.pas"/>
<UnitName Value="LCLMessageGlue"/>
<EditorIndex Value="11"/>
<TopLine Value="104"/>
<CursorPos Y="125"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit19>
<Unit20>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<EditorIndex Value="5"/>
<TopLine Value="2780"/>
<CursorPos X="25" Y="2799"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32object.inc"/>
<EditorIndex Value="8"/>
<TopLine Value="387"/>
<CursorPos Y="404"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit21>
<Unit22>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\lmessages.pp"/>
<UnitName Value="LMessages"/>
<EditorIndex Value="13"/>
<TopLine Value="180"/>
<CursorPos X="3" Y="216"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit22>
<Unit23>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32int.pp"/>
<UnitName Value="Win32Int"/>
<EditorIndex Value="6"/>
<TopLine Value="244"/>
<CursorPos X="10" Y="262"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit23>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="522" Column="35" TopLine="504"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\lclmessageglue.pas"/>
<Caret Line="124" TopLine="104"/>
</Position1>
<Position2>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="3698" Column="3" TopLine="3680"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\lclmessageglue.pas"/>
<Caret Line="125" TopLine="104"/>
</Position2>
<Position3>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="3708" Column="58" TopLine="3691"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2735" TopLine="2706"/>
</Position3>
<Position4>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="3681" Column="36" TopLine="3663"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2739" TopLine="2710"/>
</Position4>
<Position5>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="290" Column="30" TopLine="274"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2750" TopLine="2732"/>
</Position5>
<Position6>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="1300" Column="57" TopLine="1283"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2751" TopLine="2732"/>
</Position6>
<Position7>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="1251" Column="57" TopLine="1226"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2752" TopLine="2732"/>
</Position7>
<Position8>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="1232" Column="59" TopLine="1213"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2756" TopLine="2732"/>
</Position8>
<Position9>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="1212" Column="59" TopLine="1194"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2757" TopLine="2732"/>
</Position9>
<Position10>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="1156" Column="16" TopLine="1144"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2031" TopLine="2012"/>
</Position10>
<Position11>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="699" Column="11" TopLine="677"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2767" TopLine="2750"/>
</Position11>
<Position12>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="323" Column="52" TopLine="307"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2768" TopLine="2744"/>
</Position12>
<Position13>
<Filename Value="..\common\main.pas"/>
<Caret Line="35" Column="7" TopLine="17"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2030" TopLine="2011"/>
</Position13>
<Position14>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="415" Column="25" TopLine="396"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2769" TopLine="2752"/>
</Position14>
<Position15>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="643" Column="36" TopLine="625"/>
<Filename Value="C:\Lazarus\lazarus-main_fpc3.2.2\lcl\interfaces\win32\win32callback.inc"/>
<Caret Line="2799" Column="25" TopLine="2780"/>
</Position15>
<Position16>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="640" Column="8" TopLine="630"/>
<Caret Line="2294" Column="23" TopLine="2285"/>
</Position16>
<Position17>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="557" Column="88" TopLine="536"/>
<Caret Line="153" Column="15" TopLine="134"/>
</Position17>
<Position18>
<Filename Value="..\common\main.pas"/>
<Caret Line="35" Column="35" TopLine="18"/>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="4095" Column="3" TopLine="4095"/>
</Position18>
<Position19>
<Filename Value="..\common\main.pas"/>
<Caret Line="126" Column="3" TopLine="121"/>
<Filename Value="..\..\..\source\nicegrid.pas"/>
</Position19>
<Position20>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="290" Column="30" TopLine="274"/>
<Caret Line="2177" Column="23" TopLine="2151"/>
</Position20>
<Position21>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="3175" Column="15" TopLine="3171"/>
<Caret Line="292" Column="5" TopLine="270"/>
</Position21>
<Position22>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="522" Column="35" TopLine="504"/>
<Caret Line="2859" Column="3" TopLine="2859"/>
</Position22>
<Position23>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="4180" Column="16" TopLine="4178"/>
</Position23>
<Position24>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="523" Column="33" TopLine="505"/>
<Caret Line="290" Column="69" TopLine="262"/>
</Position24>
<Position25>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="4191" Column="36" TopLine="4188"/>
<Caret Line="301" Column="67" TopLine="273"/>
</Position25>
<Position26>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="575" Column="5" TopLine="551"/>
<Caret Line="2177" Column="28" TopLine="2148"/>
</Position26>
<Position27>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="523" Column="46" TopLine="505"/>
<Caret Line="2598" Column="10" TopLine="2569"/>
</Position27>
<Position28>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="519" Column="43" TopLine="501"/>
<Caret Line="3173" Column="13" TopLine="3151"/>
</Position28>
<Position29>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="4203" Column="16" TopLine="4201"/>
<Caret Line="387" Column="15" TopLine="387"/>
</Position29>
<Position30>
<Filename Value="..\..\..\source\nicegrid.pas"/>
<Caret Line="4195" Column="3" TopLine="4177"/>
<Caret Line="3159" Column="21" TopLine="3146"/>
</Position30>
</JumpHistory>
</ProjectOptions>

View File

@ -287,8 +287,8 @@ type
procedure WMMouseWheel(var Msg: TLMessage{TWMMouseWheel}); message LM_MOUSEWHEEL;
procedure WMSize(var Msg: TLMessage); message LM_SIZE;
procedure WMEraseBkgnd(var Msg: TLMEraseBkGnd); message LM_ERASEBKGND;
procedure WMSetFocus(var Msg: TLMSetFocus); message LM_SETFOCUS;
procedure WMKillFocus(var Msg: TLMKillFocus); message LM_KILLFOCUS;
// procedure WMSetFocus(var Msg: TLMSetFocus); message LM_SETFOCUS;
// procedure WMKillFocus(var Msg: TLMKillFocus); message LM_KILLFOCUS;
procedure CMWantSpecialKey(var Message: TLMKey); message CM_WANTSPECIALKEY;
procedure CMFontChanged(var Msg: TLMessage); message CM_FONTCHANGED;
{$ELSE}
@ -409,6 +409,8 @@ type
function TextExtent(const s: String): TSize;
{$IFDEF FPC}
procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy; const AXProportion, AYProportion: Double); override;
procedure DoEnter; override;
procedure DoExit; override;
{$ENDIF}
public
@ -1967,7 +1969,6 @@ var
end;
begin
if not FEnabled
then Exit;
@ -2175,7 +2176,7 @@ begin
begin
IsEditing := True;
FEdit.ShowEdit(FCol, FRow);
FEdit.SelectAll;
FEdit.SetFocus;
end;
//end;
end;
@ -2287,7 +2288,6 @@ begin
UpdateColRow;
end;
end;
end;
end;
@ -3161,12 +3161,18 @@ begin
CaretVisible := True;
end;
procedure TNiceGrid.WMKillFocus(var Msg: {$IFDEF FPC}TLMKillFocus{$ELSE}TWMKillFocus{$ENDIF});
{$IFDEF FPC}
procedure TNiceGrid.DoExit;
{$ELSE}
procedure TNiceGrid.WMKillFocus(var Msg: TWMKillFocus);
{$ENDIF}
begin
if FEdit.HandleAllocated then
begin
if (Msg.FocusedWnd <> FEdit.Handle)
then ForceHideCaret;
{$IFNDEF FPC}
if (Msg.FocusedWnd <> FEdit.Handle) then
{$ENDIF}
ForceHideCaret;
DestroyCaret{$IFDEF FPC}(FEdit.Handle){$ENDIF};
end;
CaretVisible := False;
@ -3174,9 +3180,12 @@ begin
then InvalidateCells;
end;
procedure TNiceGrid.WMSetFocus(var Msg: {$IFDEF FPC}TLMSetFocus{$ELSE}TWMSetFocus{$ENDIF});
{$IFDEF FPC}
procedure TNiceGrid.DoEnter;
{$ELSE}
procedure TNiceGrid.WMSetFocus(var Msg: TWMSetFocus);
{$ENDIF}
begin
Unused(Msg);
CreateCaret(Handle, 0, 1, FDefRowHeight - 2);
CaretVisible := False;
InvalidateCells;
@ -4110,6 +4119,7 @@ begin
SetBounds(l, t, w, h);
Show;
SetFocus;
end;