The size of that patch looks very big that half of changes are in Makefiles which are auto-generated during the build, so not relevant. The other changes are reviewed and looks OK for me.
--
Cheers, Abou Al Montacir
diff -Nru lazarus-2.2.4+dfsg1/components/chmhelp/lhelp/Makefile.fpc lazarus-2.2.6+dfsg1/components/chmhelp/lhelp/Makefile.fpc --- lazarus-2.2.4+dfsg1/components/chmhelp/lhelp/Makefile.fpc 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/chmhelp/lhelp/Makefile.fpc 2023-03-04 14:24:23.000000000 +0100 @@ -15,7 +15,7 @@ packages=rtl [compiler] -options=-gs -gl -Sghi -O3 -dlcl$(LCL_PLATFORM) $(DBG_OPTIONS) +options=-gl -Sghi -O3 -dlcl$(LCL_PLATFORM) $(DBG_OPTIONS) unittargetdir=lib/$(CPU_TARGET)-$(OS_TARGET) unitdir=. $(LAZDIR)/components/lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) \ $(LAZDIR)/packager/units/$(CPU_TARGET)-$(OS_TARGET) \ diff -Nru lazarus-2.2.4+dfsg1/components/codetools/finddeclarationtool.pas lazarus-2.2.6+dfsg1/components/codetools/finddeclarationtool.pas --- lazarus-2.2.4+dfsg1/components/codetools/finddeclarationtool.pas 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/codetools/finddeclarationtool.pas 2023-03-04 14:24:23.000000000 +0100 @@ -10472,6 +10472,7 @@ var OldFlags: TFindDeclarationFlags; + MaybeFuncAtCursor: Boolean; begin Result:=CleanExpressionType; if AliasType<>nil then @@ -10485,9 +10486,9 @@ DebugLn('[TFindDeclarationTool.ReadOperandTypeAtCursor] A Atom=',GetAtom); debugln(['TFindDeclarationTool.ReadOperandTypeAtCursor StartContext=',Params.ContextNode.DescAsString,'="',dbgstr(Src,Params.ContextNode.StartPos,15),'"']); {$ENDIF} - if (AtomIsIdentifier) + MaybeFuncAtCursor := AtomIsIdentifier or UpAtomIs('INHERITED'); + if (MaybeFuncAtCursor) or (CurPos.Flag=cafRoundBracketOpen) - or UpAtomIs('INHERITED') or UpAtomIs('ARRAY') then begin // read variable @@ -10496,7 +10497,9 @@ if EndPos>MaxEndPos then EndPos:=MaxEndPos; OldFlags:=Params.Flags; - Params.Flags:=(Params.Flags*fdfGlobals)+[fdfFunctionResult]; + Params.Flags:=(Params.Flags*fdfGlobals); + if MaybeFuncAtCursor then + Params.Flags:=Params.Flags+[fdfFunctionResult]; Result:=FindExpressionTypeOfTerm(SubStartPos,EndPos,Params,true,AliasType); Params.Flags:=OldFlags; MoveCursorToCleanPos(EndPos); diff -Nru lazarus-2.2.4+dfsg1/components/codetools/tests/laztests/bug39897.pas lazarus-2.2.6+dfsg1/components/codetools/tests/laztests/bug39897.pas --- lazarus-2.2.4+dfsg1/components/codetools/tests/laztests/bug39897.pas 1970-01-01 01:00:00.000000000 +0100 +++ lazarus-2.2.6+dfsg1/components/codetools/tests/laztests/bug39897.pas 2023-03-04 14:24:23.000000000 +0100 @@ -0,0 +1,20 @@ +program bug39897; +{$mode objfpc}{$H+} +uses + Classes; + +const + b = $1; + a = ((b)+1); +procedure foo(x,y: byte); +begin +end; +procedure foo(x,y: word); +begin +end; + + +begin + foo{declaration:foo}(b, a); +end. + diff -Nru lazarus-2.2.4+dfsg1/components/fpdebug/fpdbgclasses.pp lazarus-2.2.6+dfsg1/components/fpdebug/fpdbgclasses.pp --- lazarus-2.2.4+dfsg1/components/fpdebug/fpdbgclasses.pp 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/fpdebug/fpdbgclasses.pp 2023-03-04 14:24:23.000000000 +0100 @@ -219,6 +219,7 @@ detect the int3 (false positive) *) procedure CheckAndResetInstructionPointerAfterBreakpoint; + function CheckForHardcodeBreakPoint(AnAddr: TDBGPtr): boolean; procedure BeforeContinue; virtual; procedure ApplyWatchPoints(AWatchPointData: TFpWatchPointData); virtual; function DetectHardwareWatchpoint: Pointer; virtual; @@ -2740,6 +2741,18 @@ end; end; +function TDbgThread.CheckForHardcodeBreakPoint(AnAddr: TDBGPtr): boolean; +var + OVal: Byte; +begin + Result := False; + if AnAddr = 0 then + exit; + if FProcess.ReadData(AnAddr, 1, OVal) then + FPausedAtHardcodeBreakPoint := OVal = TDbgProcess.Int3; + Result := FPausedAtHardcodeBreakPoint; +end; + procedure TDbgThread.BeforeContinue; begin // On Windows this is only called, if this was the signalled thread diff -Nru lazarus-2.2.4+dfsg1/components/fpdebug/fpdbgwinclasses.pas lazarus-2.2.6+dfsg1/components/fpdebug/fpdbgwinclasses.pas --- lazarus-2.2.4+dfsg1/components/fpdebug/fpdbgwinclasses.pas 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/fpdebug/fpdbgwinclasses.pas 2023-03-04 14:24:23.000000000 +0100 @@ -103,6 +103,8 @@ {$mode objfpc}{$H+} {off $DEFINE DebuglnWinDebugEvents} +{off $DEFINE FpDebugNewWinStepping} +{$ifdef FpDebugOldWinStepping} {$UNDEF FpDebugNewWinStepping} {$endif} interface @@ -130,10 +132,16 @@ { TDbgWinThread } TDbgWinThread = class(TDbgThread) + private type + TBreakPointState = (bsNone, bsInSingleStep); private FIsSuspended: Boolean; + {$ifdef FpDebugNewWinStepping} + FBreakPointState: TBreakPointState; + {$else} FIsSkippingBreakPoint: Boolean; FIsSkippingBreakPointAddress: TDBGPtr; + {$endif} protected FThreadContextChanged: boolean; FThreadContextChangeFlags: TFpContextChangeFlags; @@ -147,7 +155,9 @@ procedure Suspend; procedure SuspendForStepOverBreakPoint; procedure Resume; + {$ifNdef FpDebugNewWinStepping} procedure SetSingleStepOverBreakPoint; + {$endif} procedure EndSingleStepOverBreakPoint; procedure SetSingleStep; procedure ApplyWatchPoints(AWatchPointData: TFpWatchPointData); override; @@ -245,6 +255,11 @@ FLAG_TRACE_BIT = $100; {$endif} +function dbgs(ABrkPointState: TDbgWinThread.TBreakPointState): String; +begin + WriteStr(Result, ABrkPointState); +end; + function dbgs(AnDbgEvent: DEBUG_EVENT): String; overload; begin case AnDbgEvent.dwDebugEventCode of @@ -734,16 +749,28 @@ begin Result := False; for t in FThreadMap do - if TDbgWinThread(t).FIsSkippingBreakPoint then begin + {$ifdef FpDebugNewWinStepping} + if TDbgWinThread(t).FBreakPointState = bsInSingleStep + {$else} + if TDbgWinThread(t).FIsSkippingBreakPoint + {$endif} + then begin Result := True; break; end; +debugln(['HasThreadInSkippingBreak ',Result]); end; var EventThread, t: TDbgThread; + {$ifdef FpDebugNewWinStepping} + WinEventThread: TDbgWinThread absolute EventThread; + WinAThread: TDbgWinThread absolute AThread; + EventThreadNeedsTempBrkRemove: Boolean; + {$endif} begin -debugln(FPDBG_WINDOWS, ['TDbgWinProcess.Continue ',SingleStep]); +debugln(FPDBG_WINDOWS, ['TDbgWinProcess.Continue ',SingleStep, ' # ', ' # ',DbgSTime]); + if assigned(AThread) and not FThreadMap.HasId(AThread.ID) then begin AThread := nil; end; @@ -754,6 +781,54 @@ This may mean suspending the current thread. *) + (* AThread versus EventThread + + * AThread: + - AThread is ONLY passed for the "SingleStep" parameter. + + - If AThread is at breakpoint, and AThread is *not* the event-thread, then + AThread must still hit that breakpoint. + Only the event-thread has been checked for being at a breakpoint. + + * EventThread + - The event-thread will have been checked for being at a breakpoint. + It therefore must always step-over, if it is at a breakpoint + + - Except, if the event-thread is at a hardcoded breakpoint. + In that case: + ~ The controller has handled, the hardcoded breakpoint. + ~ The IP was *not* reset. + So the event-thread may already be at the *next* breakpoint. + *) + + {$ifdef FpDebugNewWinStepping} + EventThreadNeedsTempBrkRemove := False; + if AProcess.GetThread(MDebugEvent.dwThreadId, EventThread) then begin + EventThreadNeedsTempBrkRemove := + (not EventThread.PausedAtHardcodeBreakPoint) and + Process.HasInsertedBreakInstructionAtLocation(EventThread.GetInstructionPointerRegisterValue); + + if EventThreadNeedsTempBrkRemove then + WinEventThread.FBreakPointState := bsInSingleStep; + + if ( (EventThread = AThread) and SingleStep ) or + ( EventThreadNeedsTempBrkRemove ) + then + WinEventThread.SetSingleStep; + assert((WinEventThread.FBreakPointState=bsNone) or WinEventThread.NextIsSingleStep, 'TDbgWinProcess.Continue: (WinEventThread.FBreakPointState=bsNone) or WinEventThread.NextIsSingleStep'); + end; + + if (AThread <> nil) and (AThread <> EventThread) and SingleStep then + WinAThread.SetSingleStep; + + if EventThreadNeedsTempBrkRemove or HasThreadInSkippingBreak then begin + debugln(FPDBG_WINDOWS or DBG_VERBOSE, '## Skip BrkPoint: EvntThread Nil=%s ISS=%s TmpRmBreak=%s / Thread Nil=%s ISS=%s ', + [ dbgs(EventThread <> nil), dbgs((EventThread<>nil) and EventThread.NextIsSingleStep), dbgs(EventThreadNeedsTempBrkRemove), + dbgs(AThread <> nil), dbgs((AThread<>nil) and AThread.NextIsSingleStep) ]); + for t in FThreadMap do + TDbgWinThread(t).SuspendForStepOverBreakPoint; + end; + {$else} if AProcess.GetThread(MDebugEvent.dwThreadId, EventThread) then begin if EventThread = AThread then EventThread.NextIsSingleStep := SingleStep; @@ -807,8 +882,11 @@ if SingleStep then TDbgWinThread(AThread).SetSingleStep; end; + {$endif} + + AProcess.ThreadsBeforeContinue; -if AThread<>nil then debugln(FPDBG_WINDOWS, ['## ath.iss ',AThread.NextIsSingleStep]); + if AThread<>nil then debugln(FPDBG_WINDOWS, ['## ath.iss ',AThread.NextIsSingleStep]); if MDebugEvent.dwDebugEventCode = EXCEPTION_DEBUG_EVENT then case MDebugEvent.Exception.ExceptionRecord.ExceptionCode of @@ -930,10 +1008,16 @@ ProcessIdentifier:=MDebugEvent.dwProcessId; ThreadIdentifier:=MDebugEvent.dwThreadId; {$IFDEF DebuglnWinDebugEvents} - DebugLn(FPDBG_WINDOWS, [dbgs(MDebugEvent), ' ', Result]); + DebugLn(FPDBG_WINDOWS, [dbgs(MDebugEvent), ' ', Result, ' # ',DbgSTime]); for TDbgThread(t) in FThreadMap do begin if t.ReadThreadState then + {$ifdef FpDebugNewWinStepping} + DebugLn(FPDBG_WINDOWS, + 'Thr.Id:%d %x SSTep %s EF %s DR6:%x DR7:%x WP:%x RegAcc: %d, SStep: %d Task: %d, ExcBrk: %d Susp: %s, ISS: %s BS:%s', + [t.ID, t.GetInstructionPointerRegisterValue, dbgs(t.FCurrentContext^.def.EFlags and FLAG_TRACE_BIT), dbghex(t.FCurrentContext^.def.EFlags), t.FCurrentContext^.def.Dr6, t.FCurrentContext^.def.Dr7, t.FCurrentContext^.def.Dr6 and 15, t.FCurrentContext^.def.Dr6 and (1<< 13), t.FCurrentContext^.def.Dr6 and (1<< 14), t.FCurrentContext^.def.Dr6 and (1<< 15), t.FCurrentContext^.def.Dr6 and (1<< 16), dbgs(t.FIsSuspended), dbgs(t.NextIsSingleStep), dbgs(t.FBreakPointState) ]); + {$else} DebugLn(FPDBG_WINDOWS, 'Thr.Id:%d %x SSTep %s EF %s DR6:%x DR7:%x WP:%x RegAcc: %d, SStep: %d Task: %d, ExcBrk: %d', [t.ID, t.GetInstructionPointerRegisterValue, dbgs(t.FCurrentContext^.def.EFlags and FLAG_TRACE_BIT), dbghex(t.FCurrentContext^.def.EFlags), t.FCurrentContext^.def.Dr6, t.FCurrentContext^.def.Dr7, t.FCurrentContext^.def.Dr6 and 15, t.FCurrentContext^.def.Dr6 and (1<< 13), t.FCurrentContext^.def.Dr6 and (1<< 14), t.FCurrentContext^.def.Dr6 and (1<< 15), t.FCurrentContext^.def.Dr6 and (1<< 16)]); + {$endif} end; {$ENDIF} @@ -1230,10 +1314,15 @@ else begin result := deBreakpoint; if AThread <> nil then + {$ifdef FpDebugNewWinStepping} + TDbgWinThread(AThread).ResetInstructionPointerAfterBreakpoint; // This is always an int3 breakpoint + {$else} AThread.CheckAndResetInstructionPointerAfterBreakpoint; + {$endif} end; end; EXCEPTION_SINGLE_STEP, STATUS_WX86_SINGLE_STEP: begin + // includes WatchPoints result := deBreakpoint; end else begin @@ -1577,6 +1666,25 @@ debugln(DBG_WARNINGS and (r = DWORD(-1)), 'Failed to suspend Thread %d (handle: %d). Error: %s', [Id, Handle, GetLastErrorText]); end; +{$ifdef FpDebugNewWinStepping} +procedure TDbgWinThread.SuspendForStepOverBreakPoint; +var + t: TDBGPtr; +begin + t := GetInstructionPointerRegisterValue; + if (FBreakPointState = bsInSingleStep) +// or (NextIsSingleStep) + then begin + Process.TempRemoveBreakInstructionCode(t); + end + else + if NextIsSingleStep and (not Process.HasInsertedBreakInstructionAtLocation(t)) then begin + // nothing / do the single step + end + else + Suspend; +end; +{$else} procedure TDbgWinThread.SuspendForStepOverBreakPoint; begin if FIsSkippingBreakPoint then begin @@ -1587,6 +1695,7 @@ else Suspend; end; +{$endif} procedure TDbgWinThread.Resume; var @@ -1599,20 +1708,30 @@ debugln(DBG_WARNINGS and (r = DWORD(-1)), 'Failed to resume Thread %d (handle: %d). Error: %s', [Id, Handle, GetLastErrorText]); end; +{$ifNdef FpDebugNewWinStepping} procedure TDbgWinThread.SetSingleStepOverBreakPoint; begin SetSingleStep; FIsSkippingBreakPoint := True; FIsSkippingBreakPointAddress := GetInstructionPointerRegisterValue; end; +{$endif} procedure TDbgWinThread.EndSingleStepOverBreakPoint; begin + {$ifdef FpDebugNewWinStepping} + FBreakPointState := bsNone; + {$else} FIsSkippingBreakPoint := False; + {$endif} end; procedure TDbgWinThread.SetSingleStep; begin + {$ifdef FpDebugNewWinStepping} + NextIsSingleStep := True; + {$endif} + if FCurrentContext = nil then if not ReadThreadState then exit; @@ -1729,7 +1848,7 @@ begin {$IFDEF FPDEBUG_THREAD_CHECK}AssertFpDebugThreadId('TDbgWinThread.ResetInstructionPointerAfterBreakpoint');{$ENDIF} assert(MDebugEvent.dwProcessId <> 0, 'TDbgWinThread.ResetInstructionPointerAfterBreakpoint: MDebugEvent.dwProcessId <> 0'); - assert(MDebugEvent.Exception.ExceptionRecord.ExceptionCode <> EXCEPTION_SINGLE_STEP, 'dec(IP) EXCEPTION_SINGLE_STEP'); + //assert((MDebugEvent.Exception.ExceptionRecord.ExceptionCode = EXCEPTION_BREAKPOINT) or (MDebugEvent.Exception.ExceptionRecord.ExceptionCode = STATUS_WX86_BREAKPOINT), 'TDbgWinThread.ResetInstructionPointerAfterBreakpoint: (MDebugEvent.Exception.ExceptionRecord.ExceptionCode = EXCEPTION_BREAKPOINT) or (MDebugEvent.Exception.ExceptionRecord.ExceptionCode = STATUS_WX86_BREAKPOINT)'); Result := False; @@ -1737,13 +1856,22 @@ exit; {$ifdef cpui386} - dec(FCurrentContext^.def.Eip); + {$ifdef FpDebugNewWinStepping} + if not CheckForHardcodeBreakPoint(FCurrentContext^.def.Eip - 1) then + {$endif} + dec(FCurrentContext^.def.Eip); {$else} if (TDbgWinProcess(Process).FBitness = b32) then begin - dec(FCurrentContext^.WOW.Eip); + {$ifdef FpDebugNewWinStepping} + if not CheckForHardcodeBreakPoint(FCurrentContext^.WOW.Eip - 1) then + {$endif} + dec(FCurrentContext^.WOW.Eip); end else begin - dec(FCurrentContext^.def.Rip); + {$ifdef FpDebugNewWinStepping} + if not CheckForHardcodeBreakPoint(FCurrentContext^.def.Rip - 1) then + {$endif} + dec(FCurrentContext^.def.Rip); end; {$endif} diff -Nru lazarus-2.2.4+dfsg1/components/freetype/easylazfreetype.pas lazarus-2.2.6+dfsg1/components/freetype/easylazfreetype.pas --- lazarus-2.2.4+dfsg1/components/freetype/easylazfreetype.pas 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/freetype/easylazfreetype.pas 2023-03-04 14:24:24.000000000 +0100 @@ -2014,14 +2014,17 @@ (nrLanguageID=0)) then begin value := TT_Get_Name_String(FFace, i); - for j := 1 to length(value) div 2 do - pword(@value[j*2-1])^ := BEtoN(pword(@value[j*2-1])^); - setlength(value2, 3*(length(value) div 2) + 1); //maximum is 3-byte chars and NULL char at the end - len := system.UnicodeToUtf8(@value2[1],length(value2),PUnicodeChar( @value[1] ),length(value) div 2); - if len > 0 then + if value <> '' then begin - setlength(value2, len-1 ); - value := value2; + for j := 1 to length(value) div 2 do + pword(@value[j*2-1])^ := BEtoN(pword(@value[j*2-1])^); + setlength(value2, 3*(length(value) div 2) + 1); //maximum is 3-byte chars and NULL char at the end + len := system.UnicodeToUtf8(@value2[1],length(value2),PUnicodeChar( @value[1] ),length(value) div 2); + if len > 0 then + begin + setlength(value2, len-1 ); + value := value2; + end; end; FNamesArray[nrNameID] := value; end; diff -Nru lazarus-2.2.4+dfsg1/components/ideintf/graphpropedits.pas lazarus-2.2.6+dfsg1/components/ideintf/graphpropedits.pas --- lazarus-2.2.4+dfsg1/components/ideintf/graphpropedits.pas 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/ideintf/graphpropedits.pas 2023-03-04 14:24:24.000000000 +0100 @@ -753,11 +753,9 @@ var Images: TCustomImageList; R, RImg: TRect; - dh: Integer; + dh, ImageIndex: Integer; wimg, himg: Integer; begin - if GetDefaultOrdValue <> NoDefaultValue then - Dec(Index); Images := GetImageList; R := ARect; dh := R.Bottom - R.Top; @@ -782,7 +780,9 @@ ACanvas.Brush.Color := clWhite; ACanvas.FillRect(R); end; - Images.StretchDraw(ACanvas, Index, RImg, true); + // the dropdown Index doesn't have to correlate with the ImageIndex (see GetValues()) - use the text instead + if TryStrToInt(CurValue, ImageIndex) and (ImageIndex>=0) then + Images.StretchDraw(ACanvas, ImageIndex, RImg, true); R.Left := RImg.Right + 2; end; inherited ListDrawValue(CurValue, Index, ACanvas, R, AState); diff -Nru lazarus-2.2.4+dfsg1/components/ideintf/imagelisteditor.pp lazarus-2.2.6+dfsg1/components/ideintf/imagelisteditor.pp --- lazarus-2.2.4+dfsg1/components/ideintf/imagelisteditor.pp 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/ideintf/imagelisteditor.pp 2023-03-04 14:24:24.000000000 +0100 @@ -373,6 +373,7 @@ ImageListBox.Items.EndUpdate; ImageList.EndUpdate; end; + UpdatePreviewImage; ImageListBox.SetFocus; end; end; @@ -390,6 +391,7 @@ ImageListBox.Items.EndUpdate; ImageList.EndUpdate; end; + UpdatePreviewImage; ImageListBox.SetFocus; end; end; @@ -465,19 +467,58 @@ procedure TImageListEditorDlg.BtnReplaceClick(Sender: TObject); var - AT: TAddType; + i: Integer; + w: Integer = 0; + bigIdx: Integer = 0; + pic: TPicture; begin - if ImageListBox.ItemIndex>=0 then + if ImageListBox.ItemIndex >= 0 then begin OpenDialog.Title := sccsILEdtOpenDialogN; - OpenDialog.Options:=OpenDialog.Options-[ofAllowMultiSelect]; + if Sender = BtnReplaceAll then + OpenDialog.Options := OpenDialog.Options + [ofAllowMultiSelect] + else + OpenDialog.Options := OpenDialog.Options - [ofAllowMultiSelect]; + if OpenDialog.Execute then begin - if Sender=BtnReplaceAll then - AT := atReplaceAllResolutions - else - AT := atReplace; - AddImageToList(TrimRight(OpenDialog.FileName), AT); + try + ImageList.BeginUpdate; + ImageListBox.Items.BeginUpdate; + // Replace all icons + if Sender = BtnReplaceAll then + begin + // Find the largest icon + pic := TPicture.Create; + try + for i := 0 to OpenDialog.Files.Count - 1 do + begin + pic.LoadFromFile(TrimRight(OpenDialog.Files[i])); + if pic.Width > W then + begin + w := pic.Width; + bigIdx := i; + end; + end; + finally + pic.Free; + end; + // Create all icons from the largest icon. This makes sure that + // also non-selected icons will be replaced. + AddImageToList(TrimRight(OpenDialog.Files[bigIdx]), atReplaceAllResolutions); + // Replace other icons by their file versions when selected. + for i := 0 to OpenDialog.Files.Count - 1 do + if i <> bigIdx then + AddImageToList(TrimRight(OpenDialog.Files[i]), atReplace); + end + // Replace only a single icon + else + AddImageToList(TrimRight(OpenDialog.FileName), atReplace); + finally + ImageListBox.Items.EndUpdate; + ImageList.EndUpdate; + end; + UpdatePreviewImage; ImageListBox.SetFocus; end; end; @@ -612,7 +653,9 @@ ItemHeight, MaxHeight: Integer; begin ItemHeight := ImageListBox.Canvas.TextHeight('Hg'); - MaxHeight := Scale96ToFont(32); + if ImageList.ResolutionCount > 0 then // smallest image will not be truncated + ItemHeight := Max(ItemHeight, ImageList.ResolutionByIndex[0].Height); + MaxHeight := Scale96ToFont(32); // max height above with next sizes will be truncated for R in ImageList.Resolutions do begin if R.Height <= MaxHeight then diff -Nru lazarus-2.2.4+dfsg1/components/ideintf/languages/objinspstrconsts.sk.po lazarus-2.2.6+dfsg1/components/ideintf/languages/objinspstrconsts.sk.po --- lazarus-2.2.4+dfsg1/components/ideintf/languages/objinspstrconsts.sk.po 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/ideintf/languages/objinspstrconsts.sk.po 2023-03-04 14:24:24.000000000 +0100 @@ -2,7 +2,7 @@ msgstr "" "Project-Id-Version: objinspstrconsts\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-09-30 11:56+0200\n" +"PO-Revision-Date: 2022-12-09 12:37+0100\n" "Last-Translator: Slavko <slavino@slavino.sk>\n" "Language-Team: Slovenský <sk@li.org>\n" "MIME-Version: 1.0\n" @@ -140,7 +140,7 @@ #: objinspstrconsts.dcecolumneditor msgid "DBGrid Columns Editor" -msgstr "" +msgstr "Editor stĺpcov DBGrid" #: objinspstrconsts.dcedeleteall msgid "Delete All" @@ -152,7 +152,7 @@ #: objinspstrconsts.dceoktodelete msgid "This will delete all columns. Continue?" -msgstr "" +msgstr "Týmto sa zmažú všetky stĺpce. Pokračovať?" #: objinspstrconsts.dcewillreplacecontinue msgid "This will replace all captions from dataset. Continue?" @@ -172,10 +172,8 @@ msgstr "Zrušiť" #: objinspstrconsts.fescheckdset -#, fuzzy -#| msgid "Check dataset settings" msgid "Check dataset settings." -msgstr "Skontrolovať nastavenia dataset" +msgstr "Skontrolovať nastavenia Datasetu." #: objinspstrconsts.fesdata msgid "&Data" @@ -191,6 +189,8 @@ "Error message:\n" "%s" msgstr "" +"Chybová správa:\n" +"%s" #: objinspstrconsts.fesfetitle msgid "Edit Fields ..." @@ -239,16 +239,12 @@ msgstr "" #: objinspstrconsts.fesnofields -#, fuzzy -#| msgid "It was not possible to get the dataset field's list" msgid "It was not possible to get the dataset fields list." -msgstr "Nebolo možné získať zoznam poľa dataset" +msgstr "Nebolo možné získať zoznam polí Datasetu." #: objinspstrconsts.fesnofieldsnote -#, fuzzy -#| msgid "Field's list is not available, can't check for duplicates" msgid "Fields list is not available, can't check for duplicates." -msgstr "Zoznam polí nie je dostupný, nie je možné skontrolovať duplicity" +msgstr "Zoznam polí nie je dostupný, nie je možné skontrolovať duplicity." #: objinspstrconsts.fesokbtn msgctxt "objinspstrconsts.fesokbtn" @@ -318,19 +314,19 @@ #: objinspstrconsts.lrscopyfromdataset msgid "Copy data from other dataset" -msgstr "" +msgstr "Kopírovať dáta z iného Datasetu" #: objinspstrconsts.lrscreatedataset msgid "Create dataset" -msgstr "" +msgstr "Vytvoriť Dataset" #: objinspstrconsts.lrsdatasetactive msgid "Dataset is already active, close it first." -msgstr "" +msgstr "Dataset je aktívny, najskôr ho zatvorte." #: objinspstrconsts.lrsloadfromfile msgid "Load data from file" -msgstr "" +msgstr "Načítať údaje zo súboru" #: objinspstrconsts.lrsnodatasetsavailableforcopy msgid "No dataset available to copy data from." @@ -342,7 +338,7 @@ #: objinspstrconsts.lrssavetofile msgid "Save data to file" -msgstr "" +msgstr "Uložiť údaje do súboru" #: objinspstrconsts.lrsselectdatafilename msgid "Select a file with data to load into dataset" @@ -427,15 +423,15 @@ #: objinspstrconsts.oisaddcollectionitem msgid "&Add Item" -msgstr "" +msgstr "&Pridať položku" #: objinspstrconsts.oisaddfields msgid "&Add fields" -msgstr "" +msgstr "&Pridať polia" #: objinspstrconsts.oisaddfieldsfromfielddefs msgid "Add fields from FieldDefs" -msgstr "" +msgstr "Pridať polia z FieldDefs" #: objinspstrconsts.oisaddpage msgctxt "objinspstrconsts.oisaddpage" @@ -485,7 +481,7 @@ #: objinspstrconsts.oischangeparent msgid "Change Parent" -msgstr "" +msgstr "Zmeniť rodiča" #: objinspstrconsts.oischar msgid "Char" @@ -508,10 +504,9 @@ msgstr "Vyčistiť obrázok" #: objinspstrconsts.oiscomponentnameisnotavalididentifier -#, object-pascal-format, fuzzy, badformat -#| msgid "Component name %s%s%s is not a valid identifier" +#, object-pascal-format msgid "Component name \"%s\" is not a valid identifier" -msgstr "Názov komponentu %s%s%s nie je platný identifikátor" +msgstr "Názov komponentu \"%s\" nie je platný identifikátor" #: objinspstrconsts.oiscomponentrestrictions msgid "Component restrictions: " @@ -519,7 +514,7 @@ #: objinspstrconsts.oisconfirmdelete msgid "Confirm delete" -msgstr "Podtvrdiť zmazanie" +msgstr "Potvrdiť zmazanie" #: objinspstrconsts.oiscopycomponents #, fuzzy @@ -534,15 +529,15 @@ #: objinspstrconsts.oiscreatenewfieldandadditatcurrentposition msgid "Create new field and add it at current position" -msgstr "" +msgstr "Vytvoriť nové pole a pridať ho na aktuálnu pozíciu" #: objinspstrconsts.oiscurrentparent msgid "Current parent" -msgstr "" +msgstr "Aktuálny rodič" #: objinspstrconsts.oiscurrentparents msgid "Current parents" -msgstr "" +msgstr "Aktuálny rodičia" #: objinspstrconsts.oiscutcomponents #, fuzzy @@ -570,11 +565,11 @@ #: objinspstrconsts.oisdeletepagequestion msgid "Do you want to delete the page?" -msgstr "" +msgstr "Chcete zmazať stránku?" #: objinspstrconsts.oisdeleteselectedfields msgid "Delete selected field(s)" -msgstr "" +msgstr "Zmazať vybraté polia" #: objinspstrconsts.oisdlinesdchars #, object-pascal-format @@ -591,7 +586,7 @@ #: objinspstrconsts.oiserrordeletingaction msgid "Error deleting action" -msgstr "" +msgstr "Chyba pri mazaní akcie" #: objinspstrconsts.oiserrorloadingimage msgid "Error loading image" @@ -670,7 +665,7 @@ #: objinspstrconsts.oisisnotavalidmethodname #, object-pascal-format msgid "\"%s\" is not a valid method name." -msgstr "" +msgstr "\"%s\" nie je platné meno metódy." #: objinspstrconsts.oisitemsselected #, object-pascal-format @@ -680,7 +675,7 @@ #: objinspstrconsts.oisjumptodeclarationof #, object-pascal-format msgid "Jump to declaration of %s" -msgstr "" +msgstr "Skočiť na deklaráciu %s" #: objinspstrconsts.oisload msgid "&Load" @@ -749,7 +744,7 @@ #: objinspstrconsts.oisopenmaskfile msgid "Open masks file (*.dem)" -msgstr "Orvoriť súbor s maskami (*.dem)" +msgstr "Otvoriť súbor s maskami (*.dem)" #: objinspstrconsts.oisoptions msgid "Options" @@ -757,19 +752,19 @@ #: objinspstrconsts.oisorderbackone msgid "Back One" -msgstr "" +msgstr "O jednu späť" #: objinspstrconsts.oisorderforwardone msgid "Forward One" -msgstr "" +msgstr "O jednu dopredu" #: objinspstrconsts.oisordermovetoback msgid "Move to Back" -msgstr "" +msgstr "Posunúť dozadu" #: objinspstrconsts.oisordermovetofront msgid "Move to Front" -msgstr "" +msgstr "Posunúť dopredu" #: objinspstrconsts.oispages msgid "Pages" @@ -777,7 +772,7 @@ #: objinspstrconsts.oispageseditordialog msgid "Pages Editor" -msgstr "" +msgstr "Editor stránok" #: objinspstrconsts.oispastecomponents #, fuzzy @@ -800,7 +795,7 @@ #: objinspstrconsts.oispressakey msgid "Press a key ..." -msgstr "" +msgstr "Stlačte kláves ..." #: objinspstrconsts.oispressakeyegctrlp msgid "You can press e.g. Ctrl+P ..." @@ -861,7 +856,7 @@ #: objinspstrconsts.oisselectall msgid "&Select all" -msgstr "" +msgstr "Vybrať &všetky" #: objinspstrconsts.oisselectallhint msgid "Select All Fields" @@ -916,7 +911,7 @@ #: objinspstrconsts.oisshowclasses msgid "Show classes" -msgstr "" +msgstr "Zobraziť triedy" #: objinspstrconsts.oisshowcomponenttree msgid "Show Component Tree" @@ -924,15 +919,15 @@ #: objinspstrconsts.oisshowhints msgid "Show Hints" -msgstr "Zobariť rady" +msgstr "Zobraziť rady" #: objinspstrconsts.oisshowinfobox msgid "Show Information Box" -msgstr "" +msgstr "Zobraziť informačný rámček" #: objinspstrconsts.oisshowpropertyfilter msgid "Show Property Filter" -msgstr "" +msgstr "Zobraziť filter vlastností" #: objinspstrconsts.oisshowstatusbar msgid "Show Status Bar" @@ -1170,10 +1165,8 @@ msgstr "Uložiť ako" #: objinspstrconsts.oistdactfonteditheadline -#, fuzzy -#| msgid "Select &Font..." msgid "Select &Font ..." -msgstr "Vybrať &font..." +msgstr "Vybrať &font ..." #: objinspstrconsts.oistdactfontedithint msgid "Font Select" @@ -1244,14 +1237,12 @@ msgstr "Nahradiť" #: objinspstrconsts.oistestdialog -#, fuzzy -#| msgid "Test dialog..." msgid "Test dialog ..." msgstr "Testovať dialóg..." #: objinspstrconsts.oistestinput msgid "Test Input" -msgstr "Testvstupu" +msgstr "Testovať vstup" #: objinspstrconsts.oistheidentifierisnotamethodpresscanceltoundopressign #, object-pascal-format, fuzzy, badformat @@ -1288,11 +1279,11 @@ #: objinspstrconsts.oisunselectall msgid "&Unselect all" -msgstr "" +msgstr "&Odznačiť všetko" #: objinspstrconsts.oisunselectallhint msgid "Unselect All" -msgstr "" +msgstr "Odznačiť všetko" #: objinspstrconsts.oisvalue msgid "Value:" @@ -1391,11 +1382,11 @@ #: objinspstrconsts.sccsiledtaddmoreresolutions msgid "Add more resolutions ..." -msgstr "" +msgstr "Pridať ďalšie rozlíšenia ..." #: objinspstrconsts.sccsiledtaddnewresolution msgid "New resolution ..." -msgstr "" +msgstr "Nové rozlíšenie ..." #: objinspstrconsts.sccsiledtaddsliced msgid "Add sliced ..." @@ -1410,15 +1401,13 @@ msgstr "Doladenie" #: objinspstrconsts.sccsiledtapply -#, fuzzy -#| msgid "Apply" msgctxt "objinspstrconsts.sccsiledtapply" msgid "&Apply" -msgstr "Použiť" +msgstr "&Použiť" #: objinspstrconsts.sccsiledtcannotdeleteresolution msgid "Cannot delete default resolution." -msgstr "" +msgstr "Nie je možné zmazať predvolené rozlíšenie." #: objinspstrconsts.sccsiledtcannotslice msgid "Source image size must be an integer multiple of the ImageList's Width and Height." @@ -1433,11 +1422,9 @@ msgstr "Vystredniť" #: objinspstrconsts.sccsiledtclear -#, fuzzy -#| msgid "Clear" msgctxt "objinspstrconsts.sccsiledtclear" msgid "&Clear" -msgstr "Zmazať" +msgstr "Vyčistiť" #: objinspstrconsts.sccsiledtcrop msgid "Crop" @@ -1450,11 +1437,11 @@ #: objinspstrconsts.sccsiledtdeleteresolution msgid "Delete resolution ..." -msgstr "" +msgstr "Zmazať rozlíšenie ..." #: objinspstrconsts.sccsiledtdeleteresolutionconfirmation msgid "Select the resolution to delete." -msgstr "" +msgstr "Vyberte rozlíšenie, ktoré chcete zmazať." #: objinspstrconsts.sccsiledtgrplcaption msgid "Images" @@ -1500,7 +1487,7 @@ #: objinspstrconsts.sccsiledtreplaceallresolutions msgid "Replace all resolutions ..." -msgstr "" +msgstr "Nahradiť všetky rozlíšenia ..." #: objinspstrconsts.sccsiledtsave msgctxt "objinspstrconsts.sccsiledtsave" @@ -1526,7 +1513,7 @@ #: objinspstrconsts.sccslvedt msgctxt "objinspstrconsts.sccslvedt" msgid "Edit Items ..." -msgstr "Editovať položky ..." +msgstr "Upraviť položky ..." #: objinspstrconsts.sccslvedtapply msgctxt "objinspstrconsts.sccslvedtapply" @@ -1590,10 +1577,8 @@ msgstr "Editor panelov ..." #: objinspstrconsts.sccssgedt -#, fuzzy -#| msgid "Edit StringGrid..." msgid "Edit StringGrid ..." -msgstr "Editovať StringGrid..." +msgstr "Upraviť StringGrid ..." #: objinspstrconsts.sccssgedtapply msgctxt "objinspstrconsts.sccssgedtapply" @@ -1638,7 +1623,7 @@ #: objinspstrconsts.sccstredt msgctxt "objinspstrconsts.sccstredt" msgid "Edit Items ..." -msgstr "Editovať položky ..." +msgstr "Upraviť položky ..." #: objinspstrconsts.sccstredtapply msgctxt "objinspstrconsts.sccstredtapply" @@ -1738,7 +1723,7 @@ #: objinspstrconsts.tbcenewbutton msgid "New Button" -msgstr "" +msgstr "Nové tlačítko" #: objinspstrconsts.tbcenewcheckbutton msgid "New CheckButton" @@ -1750,7 +1735,7 @@ #: objinspstrconsts.tbcenewseparator msgid "New Separator" -msgstr "" +msgstr "Nový oddeľovač" #: objinspstrconsts.tccesaddtab msgid "Add tab" diff -Nru lazarus-2.2.4+dfsg1/components/lazcontrols/spinex.pp lazarus-2.2.6+dfsg1/components/lazcontrols/spinex.pp --- lazarus-2.2.4+dfsg1/components/lazcontrols/spinex.pp 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/lazcontrols/spinex.pp 2023-03-04 14:24:24.000000000 +0100 @@ -70,7 +70,7 @@ {$mode objfpc}{$H+} // Activates a workaround for issue #39490 -{$if FPC_FullVersion=30202}{$ifdef Win64} +{$if (FPC_FullVersion>=30202) and (FPC_FullVersion < 30300)}{$ifdef Win64} {$define fpc_math_samevalue_bug} {$endif}{$endif} diff -Nru lazarus-2.2.4+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testapps/BreakPointThreadPrg.pas lazarus-2.2.6+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testapps/BreakPointThreadPrg.pas --- lazarus-2.2.4+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testapps/BreakPointThreadPrg.pas 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testapps/BreakPointThreadPrg.pas 2023-03-04 14:24:24.000000000 +0100 @@ -17,6 +17,7 @@ var x, BreakDummy: Integer; + ThrCount: Integer = 0; {$asmMode intel} @@ -27,23 +28,24 @@ procedure TTestThread.Execute; begin + InterlockedIncrement(ThrCount); asm nop // TEST_BREAKPOINT=BrkThreadBegin xor eax, eax xor ebx, ebx - add eax, 10 + add eax, 1023 testasmlbl1: - sub eax, 10 - add eax, 1 // TEST_BREAKPOINT=BrkThread1 - add eax, 1 // TEST_BREAKPOINT=BrkThread2 - add eax, 1 // TEST_BREAKPOINT=BrkThread3 - add eax, 1 // TEST_BREAKPOINT=BrkThread4 - add eax, 1 // TEST_BREAKPOINT=BrkThread5 - add eax, 1 // TEST_BREAKPOINT=BrkThread6 - add eax, 1 // TEST_BREAKPOINT=BrkThread7 - add eax, 1 // TEST_BREAKPOINT=BrkThread8 - add eax, 1 // TEST_BREAKPOINT=BrkThread9 - add eax, 1 // TEST_BREAKPOINT=BrkThread10 + sub eax, 1023 + add eax, 1 // TEST_BREAKPOINT=BrkThread1 + add eax, 2 // TEST_BREAKPOINT=BrkThread2 + add eax, 4 // TEST_BREAKPOINT=BrkThread3 + add eax, 8 // TEST_BREAKPOINT=BrkThread4 + add eax, 16 // TEST_BREAKPOINT=BrkThread5 + add eax, 32 // TEST_BREAKPOINT=BrkThread6 + add eax, 64 // TEST_BREAKPOINT=BrkThread7 + add eax, 128 // TEST_BREAKPOINT=BrkThread8 + add eax, 256 // TEST_BREAKPOINT=BrkThread9 + add eax, 512 // TEST_BREAKPOINT=BrkThread10 add ebx, 1 // TEST_BREAKPOINT=BrkThreadIncLoop jmp testasmlbl1 // TEST_BREAKPOINT=BrkThread11 @@ -67,6 +69,7 @@ TTestThread.Create(False); TTestThread.Create(False); + while ThrCount < 10 do sleep(20); sleep(500); BreakDummy := 1; diff -Nru lazarus-2.2.4+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testbreakpoint.pas lazarus-2.2.6+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testbreakpoint.pas --- lazarus-2.2.4+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testbreakpoint.pas 2022-09-25 12:37:16.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/lazdebuggers/lazdebuggerfp/test/testbreakpoint.pas 2023-03-04 14:24:24.000000000 +0100 @@ -12,19 +12,20 @@ type // Info used by tests based on TestBreakPointThreadPrg + TBreakThreadPrgInfoEntry = record + ID: Integer; + Address: TDBGPtr; + Line, PreviousLine: Integer; + Val, LastVal: int64; // AX register + Loop, PreviousLoop: int64; // BX register + IsCurrent: Boolean; + LastBrkLine, LastBrkLoop: Integer; + PreviousLastBrkLine, PreviousLastBrkLoop: Integer; + end; TBreakThreadPrgInfo = record - ThrLoopFirst, ThrLoopLast, ThrLoopLine0, ThrLoopInc: Integer; + ThrLoopFirst, ThrLoopLast, ThrLoopLine0, ThrLoopInc: Integer; // Linenumbers of the breakpoints // -1 => Main thread - Threads: array[-1..10] of record - ID: Integer; - Address: TDBGPtr; - Line, LastLine: Integer; - Val, LastVal: int64; - Loop, LastLoop: int64; - IsCurrent: Boolean; - LastBrkLine, LastBrkLoop: Integer; - PrevLastBrkLine, PrevLastBrkLoop: Integer; - end; + Threads: array[-1..10] of TBreakThreadPrgInfoEntry; end; { TTestBreakPoint } @@ -35,7 +36,19 @@ FThrPrgInfo: TBreakThreadPrgInfo; procedure ThrPrgInitializeThreads(ATestName: String); procedure ThrPrgUpdateThreads(ATestName: String); + + (* ThrPrgCheckNoSkip + Check that AX is correct for the line. + Ensure the instruction restored from "int3" was executed + *) procedure ThrPrgCheckNoSkip(ATestName: String=''); + (* ThrPrgInfoHasGoneThroughLine + Has gone over the line WITHOUT stopping at the breakpoint + - If the thread was NOT on the line, it has gone over it at least once. + - if the thread was AT the line, + ~ and had NOT reorted yet for the line => it as gone away from the line anyway + ~ and had reported for the line => it has gone OVER the line in the NEXT loop already + *) function ThrPrgInfoHasGoneThroughLine(AIndex, ALine: Integer): boolean; protected Src: TCommonSource; @@ -330,7 +343,10 @@ end; FThrPrgInfo.Threads[j].ID := t.ThreadId; + FThrPrgInfo.Threads[j].Line := -1; + FThrPrgInfo.Threads[j].Loop := -5; FThrPrgInfo.Threads[j].LastBrkLine := -1; + FThrPrgInfo.Threads[j].PreviousLastBrkLine := -1; debugln(['++ ADDED tid ',t.ThreadId]); inc(j); if j >= 11 then @@ -372,9 +388,12 @@ if (lowercase(r.Entries[j].Name) = 'ebx') or (lowercase(r.Entries[j].Name) = 'rbx') then bx := r.Entries[j]; - FThrPrgInfo.Threads[i].LastLine := FThrPrgInfo.Threads[i].Line; + + FThrPrgInfo.Threads[i].IsCurrent := FThrPrgInfo.Threads[i].ID = dbg.Threads.CurrentThreads.CurrentThreadId; + + FThrPrgInfo.Threads[i].PreviousLine := FThrPrgInfo.Threads[i].Line; FThrPrgInfo.Threads[i].LastVal := FThrPrgInfo.Threads[i].Val; - FThrPrgInfo.Threads[i].LastLoop := FThrPrgInfo.Threads[i].Loop; + FThrPrgInfo.Threads[i].PreviousLoop := FThrPrgInfo.Threads[i].Loop; FThrPrgInfo.Threads[i].Address := t.TopFrame.Address; FThrPrgInfo.Threads[i].Line := t.TopFrame.Line; if ax <> nil then @@ -382,25 +401,23 @@ if bx <> nil then FThrPrgInfo.Threads[i].Loop := StrToInt64Def(bx.Value,-1) and $7FFFFFFF; - FThrPrgInfo.Threads[i].IsCurrent := False; if FThrPrgInfo.Threads[i].ID = dbg.Threads.CurrentThreads.CurrentThreadId then begin - FThrPrgInfo.Threads[i].IsCurrent := True; - - FThrPrgInfo.Threads[i].PrevLastBrkLine := FThrPrgInfo.Threads[i].LastBrkLine; - FThrPrgInfo.Threads[i].PrevLastBrkLoop := FThrPrgInfo.Threads[i].LastBrkLoop; + FThrPrgInfo.Threads[i].PreviousLastBrkLine := FThrPrgInfo.Threads[i].LastBrkLine; + FThrPrgInfo.Threads[i].PreviousLastBrkLoop := FThrPrgInfo.Threads[i].LastBrkLoop; FThrPrgInfo.Threads[i].LastBrkLine := FThrPrgInfo.Threads[i].Line; FThrPrgInfo.Threads[i].LastBrkLoop := FThrPrgInfo.Threads[i].Loop; end; - debugln('Thread %d %s (%x): Line: %d (%d) (was %d) Val: %d (was %d) LOOP: %d (was %d) Brk: %d %d (%d %d)', [ + debugln('Thread %d: ID=%d Cur=%s (%x): Line: %d (%d) (was %d) Val: %d (was %d) LOOP: %d (was %d) Brk: %d %d (%d %d)', [ + i, FThrPrgInfo.Threads[i].ID, dbgs(FThrPrgInfo.Threads[i].IsCurrent), FThrPrgInfo.Threads[i].Address, FThrPrgInfo.Threads[i].Line-FThrPrgInfo.ThrLoopLine0, FThrPrgInfo.Threads[i].Line, - FThrPrgInfo.Threads[i].LastLine-FThrPrgInfo.ThrLoopLine0, + FThrPrgInfo.Threads[i].PreviousLine-FThrPrgInfo.ThrLoopLine0, FThrPrgInfo.Threads[i].Val, FThrPrgInfo.Threads[i].LastVal, - FThrPrgInfo.Threads[i].Loop, FThrPrgInfo.Threads[i].LastLoop, + FThrPrgInfo.Threads[i].Loop, FThrPrgInfo.Threads[i].PreviousLoop, FThrPrgInfo.Threads[i].LastBrkLine, FThrPrgInfo.Threads[i].LastBrkLoop, - FThrPrgInfo.Threads[i].PrevLastBrkLine, FThrPrgInfo.Threads[i].PrevLastBrkLoop + FThrPrgInfo.Threads[i].PreviousLastBrkLine, FThrPrgInfo.Threads[i].PreviousLastBrkLoop ]); end; end; @@ -409,43 +426,68 @@ // Make sure no thread skipped any add. All EAX values must be correct var i, l: Integer; +const + ExpVal: array[0..10] of integer = ( + 0, 1, 3, 7, 15, + 31, 63, 127, 255, 511, + 1023 + ); begin for i := 0 to 9 do begin + if FThrPrgInfo.Threads[i].Line = -1 then + continue; l := FThrPrgInfo.Threads[i].Line - FThrPrgInfo.ThrLoopLine0; TestTrue(ATestName+' line in range tid: '+inttostr(FThrPrgInfo.Threads[i].ID), (l>=-1) and (l<FThrPrgInfo.ThrLoopLast-FThrPrgInfo.ThrLoopLine0)); if l > 9 then l := 10; if l < 0 then l := 10; - TestEquals(ATestName+' Reg val for '+inttostr(FThrPrgInfo.Threads[i].ID)+ ' / '+inttostr(FThrPrgInfo.Threads[i].Line - FThrPrgInfo.ThrLoopLine0), l, FThrPrgInfo.Threads[i].Val); + TestEquals(ATestName+' Reg val for '+inttostr(FThrPrgInfo.Threads[i].ID)+ ' / '+inttostr(FThrPrgInfo.Threads[i].Line - FThrPrgInfo.ThrLoopLine0), + ExpVal[l], + FThrPrgInfo.Threads[i].Val + ); end; end; function TTestBreakPoint.ThrPrgInfoHasGoneThroughLine(AIndex, ALine: Integer): boolean; var LoopAdjust, LastLoopAdjust: Integer; + LoopDiff: Integer; + Entry: TBreakThreadPrgInfoEntry; begin Result := True; LoopAdjust := 0; - if FThrPrgInfo.Threads[AIndex].Line > FThrPrgInfo.ThrLoopInc then LoopAdjust := 1; + Entry := FThrPrgInfo.Threads[AIndex]; + + if Entry.Line > FThrPrgInfo.ThrLoopInc then LoopAdjust := 1; LastLoopAdjust := 0; - if FThrPrgInfo.Threads[AIndex].LastLine > FThrPrgInfo.ThrLoopInc then LastLoopAdjust := 1; + if Entry.PreviousLine > FThrPrgInfo.ThrLoopInc then LastLoopAdjust := 1; + LoopDiff := + (Entry.Loop-LoopAdjust) + - (Entry.PreviousLoop-LastLoopAdjust); + // Was in front of line, and now after (or even in next loop)? - if (FThrPrgInfo.Threads[AIndex].LastLine < ALine) and - ( (FThrPrgInfo.Threads[AIndex].Line > ALine) or (FThrPrgInfo.Threads[AIndex].Loop-LoopAdjust <> FThrPrgInfo.Threads[AIndex].LastLoop-LastLoopAdjust) ) + if (Entry.PreviousLine < ALine) and + ( (Entry.Line > ALine) or + (LoopDiff > 0) + ) then exit; - // Was exactly at line, and now after AND in next loop-LoopAdjust? - if (FThrPrgInfo.Threads[AIndex].LastLine = ALine) and - (FThrPrgInfo.Threads[AIndex].Line > ALine) and (FThrPrgInfo.Threads[AIndex].Loop-LoopAdjust <> FThrPrgInfo.Threads[AIndex].LastLoop-LastLoopAdjust) + // Was after line, and now after AND in next loop-LoopAdjust? + if (Entry.PreviousLine > ALine) and + (Entry.Line > ALine) and + (LoopDiff > 0) then exit; - // Was after front of line, and now after AND in next loop-LoopAdjust? - if (FThrPrgInfo.Threads[AIndex].LastLine < ALine) and - (FThrPrgInfo.Threads[AIndex].Line > ALine) and (FThrPrgInfo.Threads[AIndex].Loop-LoopAdjust <> FThrPrgInfo.Threads[AIndex].LastLoop-LastLoopAdjust) + + // Was exactly at line, and now after AND in next loop-LoopAdjust? + if (Entry.PreviousLine = ALine) and + (Entry.Line > ALine) and + (LoopDiff > 1) then exit; + // More than one loop-LoopAdjust ... - if (FThrPrgInfo.Threads[AIndex].Loop-LoopAdjust > FThrPrgInfo.Threads[AIndex].LastLoop-LastLoopAdjust + 1) + if (LoopDiff > 1) then exit; Result := False; @@ -462,16 +504,17 @@ if FThrPrgInfo.Threads[i].Line = ALine then inc(AtLine) else - if FThrPrgInfo.Threads[i].LastLine = ALine then // Current line moved on, stepped over break + if FThrPrgInfo.Threads[i].PreviousLine = ALine then // Current line moved on, stepped over break inc(AfterLine); - if AtLine > 1 then Inc(AManyAt); - if AfterLine > 1 then Inc(AManyAfter); + if AtLine > 3 then Inc(AManyAt); + if AfterLine > 2 then Inc(AManyAfter); end; var ExeName: String; i, j: Integer; MainBrk, Brk1, Brk2, Brk3, Brk4, Brk5: TDBGBreakPoint; ManyAtBrk1, ManyAfterBrk1: Integer; + Entry: TBreakThreadPrgInfoEntry; begin if SkipTest then exit; if not TestControlCanTest(ControlTestThreadNoSkip) then exit; @@ -501,26 +544,37 @@ Brk1 := Debugger.SetBreakPoint(Src, 'BrkThread1'); + (* ManyAtBrk1 / ManyAfterBrk1 + Cumulative count accross all "j" loop iterations. + ManyAtBrk1: Count "j"-iterations with at least 3 threads have been at "Brk1" + ManyAfterBrk1: Count "j"-iterations with at least 3 threads just stepped/run away from "Brk1" + *) ManyAtBrk1 := 0; ManyAfterBrk1 := 0; - for j := 0 to 200 do begin + + (* Each iteration the test checks that all "add eax, n" have been executed. + *) + for j := 0 to 300 do begin AssertDebuggerNotInErrorState; Debugger.RunToNextPause(dcRun); AssertDebuggerState(dsPause); ThrPrgUpdateThreads('loop fixed brk '+IntToStr(j)); - ThrPrgCheckNoSkip('loop, fixed brk '+IntToStr(j)); + ThrPrgCheckNoSkip('loop, fixed brk '+IntToStr(j)); // Compare AX with line for i := 0 to 9 do begin + Entry := FThrPrgInfo.Threads[i]; + if Entry.PreviousLine < 0 then + continue; + TestTrue('THread not gone over break 1 at line '+IntToStr(Brk1.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk1.Line) ); - - HasManyAtLine(Brk1.Line, ManyAtBrk1, ManyAfterBrk1); end; - if (i > 50) and (ManyAtBrk1 > 5) and (ManyAfterBrk1 > 5) then begin - DebugLn('~~~~~~~~~~~~~ End loop early i=%d at=%d after=%d', [i, ManyAtBrk1, ManyAfterBrk1]); + HasManyAtLine(Brk1.Line, ManyAtBrk1, ManyAfterBrk1); + if (j > 50) and (ManyAtBrk1 > 20) and (ManyAfterBrk1 > 15) then begin + DebugLn('~~~~~~~~~~~~~ End loop early j=%d at=%d after=%d', [j, ManyAtBrk1, ManyAfterBrk1]); break; end; end; @@ -530,6 +584,11 @@ // Add more breaks Brk3 := Debugger.SetBreakPoint(Src, 'BrkThread5'); Brk5 := Debugger.SetBreakPoint(Src, 'BrkThread9'); + // clear values from last loop + for i := 0 to 9 do begin + FThrPrgInfo.Threads[i].LastBrkLine := -1; + FThrPrgInfo.Threads[i].PreviousLastBrkLine := -1; + end; for j := 0 to 100 do begin AssertDebuggerNotInErrorState; @@ -540,21 +599,47 @@ ThrPrgCheckNoSkip('loop, fixed brk '+IntToStr(j)); for i := 0 to 9 do begin - TestTrue('THread not gone over break 1 at line '+IntToStr(Brk1.Line)+' '+IntToStr(i), + Entry := FThrPrgInfo.Threads[i]; + if Entry.PreviousLine < 0 then + continue; + + TestTrue('THread not gone over break(n/3) 1 at line '+IntToStr(Brk1.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk1.Line) ); - TestTrue('THread not gone over break 3 at line '+IntToStr(Brk3.Line)+' '+IntToStr(i), + TestTrue('THread not gone over break(n/3) 3 at line '+IntToStr(Brk3.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk3.Line) ); - TestTrue('THread not gone over break 5 at line '+IntToStr(Brk5.Line)+' '+IntToStr(i), + TestTrue('THread not gone over break(n/3) 5 at line '+IntToStr(Brk5.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk5.Line) ); + + if Entry.PreviousLastBrkLine > 0 then begin + if Entry.LastBrkLine = Brk1.Line then begin + TestEquals('Previous break(n/3) before Brk1', Brk5.Line, Entry.PreviousLastBrkLine); + TestTrue ('Previous break-loop(n/3) before Brk1', Entry.LastBrkLoop = Entry.PreviousLastBrkLoop + 1); + end + else + if Entry.LastBrkLine = Brk3.Line then begin + TestEquals('Previous break(n/3) before Brk3', Brk1.Line, Entry.PreviousLastBrkLine); + TestTrue ('Previous break-loop(n/3) before Brk3', Entry.LastBrkLoop = Entry.PreviousLastBrkLoop); + end + else + if Entry.LastBrkLine = Brk5.Line then begin + TestEquals('Previous break(n/3) before Brk5', Brk3.Line, Entry.PreviousLastBrkLine); + TestTrue ('Previous break-loop(n/3) before Brk5', Entry.LastBrkLoop = Entry.PreviousLastBrkLoop); + end; + end; end; end; // Add more breaks Brk2 := Debugger.SetBreakPoint(Src, 'BrkThread3'); Brk4 := Debugger.SetBreakPoint(Src, 'BrkThread7'); + // clear values from last loop + for i := 0 to 9 do begin + FThrPrgInfo.Threads[i].LastBrkLine := -1; + FThrPrgInfo.Threads[i].PreviousLastBrkLine := -1; + end; for j := 0 to 100 do begin AssertDebuggerNotInErrorState; @@ -565,21 +650,26 @@ ThrPrgCheckNoSkip('loop, fixed brk '+IntToStr(j)); for i := 0 to 9 do begin - TestTrue('THread not gone over break 1 at line '+IntToStr(Brk1.Line)+' '+IntToStr(i), + Entry := FThrPrgInfo.Threads[i]; + if Entry.PreviousLine < 0 then + continue; + + TestTrue('THread not gone over break(n/5) 1 at line '+IntToStr(Brk1.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk1.Line) ); - TestTrue('THread not gone over break 2 at line '+IntToStr(Brk2.Line)+' '+IntToStr(i), + TestTrue('THread not gone over break(n/5) 2 at line '+IntToStr(Brk2.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk2.Line) ); - TestTrue('THread not gone over break 3 at line '+IntToStr(Brk3.Line)+' '+IntToStr(i), + TestTrue('THread not gone over break(n/5) 3 at line '+IntToStr(Brk3.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk3.Line) ); - TestTrue('THread not gone over break 4 at line '+IntToStr(Brk4.Line)+' '+IntToStr(i), + TestTrue('THread not gone over break(n/5) 4 at line '+IntToStr(Brk4.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk4.Line) ); - TestTrue('THread not gone over break 5 at line '+IntToStr(Brk5.Line)+' '+IntToStr(i), + TestTrue('THread not gone over break(n/5) 5 at line '+IntToStr(Brk5.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk5.Line) ); + end; end; @@ -598,6 +688,7 @@ ExeName: String; i, j: Integer; MainBrk, Brk1: TDBGBreakPoint; + Entry: TBreakThreadPrgInfoEntry; begin if SkipTest then exit; if not TestControlCanTest(ControlTestThreadMove1) then exit; @@ -633,6 +724,9 @@ ThrPrgCheckNoSkip('loop, one brk '+IntToStr(j)); for i := 0 to 9 do begin + Entry := FThrPrgInfo.Threads[i]; + if Entry.PreviousLine < 0 then + continue; TestTrue('THread not gone over break at line '+IntToStr(Brk1.Line)+' '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk1.Line) ); @@ -657,6 +751,7 @@ ExeName: String; i, j: Integer; MainBrk, Brk1, Brk2, Brk3, Brk4, Brk5: TDBGBreakPoint; + Entry: TBreakThreadPrgInfoEntry; begin if SkipTest then exit; if not TestControlCanTest(ControlTestThreadMove2) then exit; @@ -702,6 +797,9 @@ ThrPrgCheckNoSkip('loop, changing brk '+IntToStr(j)); for i := 0 to 9 do begin + Entry := FThrPrgInfo.Threads[i]; + if Entry.PreviousLine < 0 then + continue; TestTrue('THread not gone over break '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk1.Line) ); TestTrue('THread not gone over break '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk2.Line) ); TestTrue('THread not gone over break '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk3.Line) ); @@ -727,7 +825,7 @@ begin Result := True; // defaults to ok, if Line is not in this range. if FThrPrgInfo.Threads[AnIdx].LastBrkLine = -1 then exit; - if FThrPrgInfo.Threads[AnIdx].PrevLastBrkLine = -1 then exit; + if FThrPrgInfo.Threads[AnIdx].PreviousLastBrkLine = -1 then exit; if FThrPrgInfo.Threads[AnIdx].Line = BrkLine then begin if FThrPrgInfo.Threads[AnIdx].IsCurrent then @@ -738,8 +836,8 @@ if FThrPrgInfo.Threads[AnIdx].Line = NextBrkLine then begin if (FThrPrgInfo.Threads[AnIdx].LastBrkLine = NextBrkLine) then Result := (FThrPrgInfo.Threads[AnIdx].LastBrkLoop = FThrPrgInfo.Threads[AnIdx].Loop) and - (FThrPrgInfo.Threads[AnIdx].PrevLastBrkLine = BrkLine) - // PrevLastBrkLoop can be equal or 1 less + (FThrPrgInfo.Threads[AnIdx].PreviousLastBrkLine = BrkLine) + // PreviousLastBrkLoop can be equal or 1 less else Result := (FThrPrgInfo.Threads[AnIdx].LastBrkLine = BrkLine) ; @@ -768,6 +866,7 @@ ExeName: String; i, j: Integer; MainBrk, Brk1, Brk2, Brk3, Brk4, Brk5: TDBGBreakPoint; + Entry: TBreakThreadPrgInfoEntry; begin if SkipTest then exit; if not TestControlCanTest(ControlTestThreadHit) then exit; @@ -802,6 +901,9 @@ ThrPrgCheckNoSkip('loop, changing brk '+IntToStr(j)); for i := 0 to 9 do begin + Entry := FThrPrgInfo.Threads[i]; + if Entry.PreviousLine < 0 then + continue; TestTrue('THread not gone over break '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk1.Line) ); TestTrue('THread not gone over break '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk2.Line) ); TestTrue('THread not gone over break '+IntToStr(i), not ThrPrgInfoHasGoneThroughLine(i, Brk3.Line) ); diff -Nru lazarus-2.2.4+dfsg1/components/lazutils/lazutf8.pas lazarus-2.2.6+dfsg1/components/lazutils/lazutf8.pas --- lazarus-2.2.4+dfsg1/components/lazutils/lazutf8.pas 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/lazutils/lazutf8.pas 2023-03-04 14:24:24.000000000 +0100 @@ -4056,7 +4056,10 @@ function TStringListUTF8Fast.DoCompareText(const s1, s2: string): PtrInt; begin - Result:=UTF8CompareLatinTextFast(s1, s2); + if CaseSensitive then + Result := Utf8CompareStr(s1, s2) + else + Result:=UTF8CompareLatinTextFast(s1, s2); end; diff -Nru lazarus-2.2.4+dfsg1/components/lazutils/lazversion.pas lazarus-2.2.6+dfsg1/components/lazutils/lazversion.pas --- lazarus-2.2.4+dfsg1/components/lazutils/lazversion.pas 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/lazutils/lazversion.pas 2023-03-04 14:24:24.000000000 +0100 @@ -22,10 +22,10 @@ const laz_major = 2; laz_minor = 2; - laz_release = 4; + laz_release = 6; laz_patch = 0; laz_fullversion = ((laz_major * 100 + laz_minor) * 100 + laz_release) * 100 + laz_patch; - laz_version = '2.2.4.0'; + laz_version = '2.2.6.0'; implementation diff -Nru lazarus-2.2.4+dfsg1/components/lazutils/masks.pas lazarus-2.2.6+dfsg1/components/lazutils/masks.pas --- lazarus-2.2.4+dfsg1/components/lazutils/masks.pas 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/lazutils/masks.pas 2023-03-04 14:24:24.000000000 +0100 @@ -73,11 +73,11 @@ function GetCount: Integer; function GetItem(Index: Integer): TMask; public - constructor Create(const AValue: String; ASeparator: Char; const CaseSensitive: Boolean); - constructor Create(const AValue: String; ASeparator: Char = ';'; const AOptions: TMaskOptions = []); + constructor Create(const AValue: String; ASeparator: Char; const CaseSensitive: Boolean); virtual; + constructor Create(const AValue: String; ASeparator: Char = ';'; const AOptions: TMaskOptions = []); virtual; destructor Destroy; override; - function Matches(const AFileName: String): Boolean; + function Matches(const AFileName: String): Boolean; virtual; function MatchesWindowsMask(const AFileName: String): Boolean; property Count: Integer read GetCount; diff -Nru lazarus-2.2.4+dfsg1/components/sqldb/generatesqldlg.lfm lazarus-2.2.6+dfsg1/components/sqldb/generatesqldlg.lfm --- lazarus-2.2.4+dfsg1/components/sqldb/generatesqldlg.lfm 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/sqldb/generatesqldlg.lfm 2023-03-04 14:24:24.000000000 +0100 @@ -1,19 +1,21 @@ object GenerateSQLForm: TGenerateSQLForm Left = 364 - Height = 423 + Height = 419 Top = 295 - Width = 796 + Width = 797 ActiveControl = PCSQL Caption = 'Edit/Generate SQL statements' - ClientHeight = 423 - ClientWidth = 796 + ClientHeight = 419 + ClientWidth = 797 + OnActivate = FormActivate OnCreate = FormCreate - LCLVersion = '2.1.0.0' + Position = poScreenCenter + LCLVersion = '2.3.0.0' object PCSQL: TPageControl Left = 0 - Height = 372 + Height = 373 Top = 0 - Width = 796 + Width = 797 ActivePage = TSFields Align = alClient TabIndex = 0 @@ -25,151 +27,228 @@ ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.ControlsPerLine = 3 - ClientHeight = 341 - ClientWidth = 786 + ClientHeight = 345 + ClientWidth = 789 OnResize = TSResize object POptions: TPanel Left = 0 - Height = 341 + Height = 345 Top = 0 - Width = 254 + Width = 263 Align = alLeft BevelOuter = bvNone - ClientHeight = 341 - ClientWidth = 254 - Constraints.MinWidth = 180 + ClientHeight = 345 + ClientWidth = 263 TabOrder = 0 object LCBTables: TLabel + AnchorSideLeft.Control = CBTables + AnchorSideTop.Control = CBSystemTables + AnchorSideTop.Side = asrCenter Left = 8 - Height = 16 - Top = 8 - Width = 64 - Anchors = [akTop, akLeft, akRight] - AutoSize = False + Height = 15 + Top = 5 + Width = 27 Caption = 'Ta&ble' + Color = clDefault FocusControl = CBTables ParentColor = False end object LSEIndent: TLabel - Left = 30 - Height = 20 - Top = 202 - Width = 150 + AnchorSideTop.Control = seIndent + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = seIndent + Left = 169 + Height = 15 + Top = 214 + Width = 34 Alignment = taRightJustify - Anchors = [akTop, akLeft, akRight] - AutoSize = False + Anchors = [akTop, akRight] + BorderSpacing.Right = 4 Caption = 'I&ndent' + Color = clDefault Layout = tlCenter ParentColor = False end object LSELineLength: TLabel - Left = 22 - Height = 20 - Top = 231 - Width = 154 + AnchorSideTop.Control = seLineLength + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = seLineLength + Left = 141 + Height = 15 + Top = 245 + Width = 62 Alignment = taRightJustify - Anchors = [akTop, akLeft, akRight] - AutoSize = False + Anchors = [akTop, akRight] + BorderSpacing.Right = 4 Caption = 'Line Length' + Color = clDefault Layout = tlCenter ParentColor = False end object CBTables: TComboBox + AnchorSideLeft.Control = POptions + AnchorSideTop.Control = CBSystemTables + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = POptions + AnchorSideRight.Side = asrBottom Left = 8 - Height = 31 - Top = 32 - Width = 238 + Height = 23 + Top = 25 + Width = 247 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + BorderSpacing.Left = 8 + BorderSpacing.Top = 3 + BorderSpacing.Right = 8 + ItemHeight = 15 OnChange = CBTablesChange Sorted = True Style = csDropDownList - TabOrder = 0 + TabOrder = 1 end object BGenerate: TButton + AnchorSideLeft.Control = CBTables + AnchorSideRight.Control = CBTables + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = POptions + AnchorSideBottom.Side = asrBottom Left = 8 Height = 25 - Top = 305 - Width = 238 + Top = 314 + Width = 247 Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Top = 6 + BorderSpacing.Bottom = 6 BorderSpacing.InnerBorder = 4 Caption = '&Generate SQL' OnClick = BGenerateClick - TabOrder = 1 + TabOrder = 9 end object seIndent: TSpinEdit - Left = 196 - Height = 29 - Top = 197 - Width = 50 - TabOrder = 2 + AnchorSideTop.Control = cbFullyQualifiedFields + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = CBTables + AnchorSideRight.Side = asrBottom + Left = 207 + Height = 23 + Top = 210 + Width = 48 + Alignment = taRightJustify + Anchors = [akTop, akRight] + BorderSpacing.Top = 16 + TabOrder = 7 Value = 2 end object seLineLength: TSpinEdit - Left = 196 - Height = 29 - Top = 229 - Width = 50 - TabOrder = 3 + AnchorSideTop.Control = seIndent + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = CBTables + AnchorSideRight.Side = asrBottom + Left = 207 + Height = 23 + Top = 241 + Width = 48 + Alignment = taRightJustify + Anchors = [akTop, akRight] + BorderSpacing.Top = 8 + TabOrder = 8 Value = 72 end object CBQuoteFields: TCheckBox + AnchorSideLeft.Control = POptions + AnchorSideTop.Control = edtQuoteChar + AnchorSideTop.Side = asrCenter Left = 8 - Height = 23 - Top = 72 - Width = 95 + Height = 19 + Top = 70 + Width = 84 + BorderSpacing.Left = 8 Caption = 'Quote Fields' - TabOrder = 4 + TabOrder = 2 end object CBSystemTables: TCheckBox - Left = 88 - Height = 23 + AnchorSideTop.Control = POptions + AnchorSideRight.Control = CBTables + AnchorSideRight.Side = asrBottom + Left = 134 + Height = 19 Top = 3 - Width = 136 + Width = 121 + Anchors = [akTop, akRight] + BorderSpacing.Top = 3 Caption = 'Show system tables' OnChange = CBSystemTablesChange - TabOrder = 5 + TabOrder = 0 end object CBOneFieldPerLine: TCheckBox + AnchorSideLeft.Control = POptions + AnchorSideTop.Control = CBQuoteFields + AnchorSideTop.Side = asrBottom Left = 8 - Height = 23 - Top = 104 - Width = 121 + Height = 19 + Top = 105 + Width = 108 + BorderSpacing.Left = 8 + BorderSpacing.Top = 16 Caption = 'One field per line' - TabOrder = 6 + TabOrder = 4 end object cbUpperCaseKeywords: TCheckBox + AnchorSideLeft.Control = POptions + AnchorSideTop.Control = CBOneFieldPerLine + AnchorSideTop.Side = asrBottom Left = 8 - Height = 23 - Top = 136 - Width = 143 + Height = 19 + Top = 140 + Width = 126 + BorderSpacing.Left = 8 + BorderSpacing.Top = 16 Caption = 'Uppercase keywords' - TabOrder = 7 + TabOrder = 5 end object cbFullyQualifiedFields: TCheckBox + AnchorSideLeft.Control = POptions + AnchorSideTop.Control = cbUpperCaseKeywords + AnchorSideTop.Side = asrBottom Left = 8 - Height = 23 - Top = 168 - Width = 135 + Height = 19 + Top = 175 + Width = 123 + BorderSpacing.Left = 8 + BorderSpacing.Top = 16 Caption = 'Fully qualified fields' - TabOrder = 8 + TabOrder = 6 end object edtQuoteChar: TEdit - Left = 214 - Height = 29 - Top = 69 + AnchorSideTop.Control = CBTables + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = CBTables + AnchorSideRight.Side = asrBottom + Left = 223 + Height = 23 + Top = 68 Width = 32 + Alignment = taCenter + Anchors = [akTop, akRight] + BorderSpacing.Top = 20 MaxLength = 1 - TabOrder = 9 + TabOrder = 3 Text = '"' end object lblQuoteChar: TLabel - Left = 143 - Height = 17 - Top = 74 - Width = 62 + AnchorSideTop.Control = edtQuoteChar + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = edtQuoteChar + Left = 160 + Height = 15 + Top = 72 + Width = 59 Alignment = taRightJustify + Anchors = [akTop, akRight] + BorderSpacing.Left = 16 + BorderSpacing.Right = 4 Caption = 'Quote char' + Color = clDefault + Layout = tlCenter ParentColor = False end end @@ -177,90 +256,95 @@ AnchorSideLeft.Control = POptions AnchorSideLeft.Side = asrBottom AnchorSideRight.Control = PSelectFields - Left = 254 - Height = 341 + Left = 263 + Height = 345 Top = 0 - Width = 244 + Width = 263 Align = alClient BevelOuter = bvNone - ClientHeight = 341 - ClientWidth = 244 + ClientHeight = 345 + ClientWidth = 263 TabOrder = 1 object LLBKeyFields: TLabel Left = 0 - Height = 26 - Top = 0 - Width = 244 + Height = 15 + Top = 4 + Width = 263 Align = alTop Alignment = taCenter - AutoSize = False + BorderSpacing.Top = 4 Caption = '&Key fields' + Color = clDefault Layout = tlCenter ParentColor = False end object LBKeyFields: TListBox - Left = 2 - Height = 296 - Top = 34 - Width = 238 - Anchors = [akTop, akLeft, akRight, akBottom] + Left = 6 + Height = 314 + Top = 25 + Width = 247 + Align = alClient + BorderSpacing.Right = 4 + BorderSpacing.Around = 6 ItemHeight = 0 MultiSelect = True - ScrollWidth = 236 + ScrollWidth = 240 Sorted = True TabOrder = 0 - TopIndex = -1 end end object PSelectFields: TPanel - Left = 498 - Height = 341 + Left = 526 + Height = 345 Top = 0 - Width = 288 + Width = 263 Align = alRight BevelOuter = bvNone - ClientHeight = 341 - ClientWidth = 288 + ClientHeight = 345 + ClientWidth = 263 TabOrder = 2 object Label2: TLabel + AnchorSideRight.Side = asrBottom Left = 0 - Height = 26 - Top = 0 - Width = 288 + Height = 15 + Top = 4 + Width = 263 Align = alTop Alignment = taCenter - AutoSize = False + BorderSpacing.Top = 4 Caption = 'Select/Update/Insert fields' + Color = clDefault Layout = tlCenter ParentColor = False end object LBFields: TListBox - Left = 12 - Height = 296 - Top = 34 - Width = 266 - Anchors = [akTop, akLeft, akRight, akBottom] + Left = 6 + Height = 314 + Top = 25 + Width = 247 + Align = alClient + BorderSpacing.Right = 4 + BorderSpacing.Around = 6 ItemHeight = 0 MultiSelect = True - ScrollWidth = 264 + ScrollWidth = 240 Sorted = True TabOrder = 0 - TopIndex = -1 end end end object TSSelect: TTabSheet Caption = 'Select' - ClientHeight = 341 - ClientWidth = 786 + ClientHeight = 345 + ClientWidth = 789 inline MSelect: TSynEdit Left = 0 - Height = 328 + Height = 345 Top = 0 - Width = 802 + Width = 789 Align = alClient - Font.Height = 13 - Font.Name = 'DejaVu Sans Mono' + Font.Height = -13 + Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqNonAntialiased ParentColor = False @@ -756,16 +840,16 @@ end object TSInsert: TTabSheet Caption = '&Insert' - ClientHeight = 341 - ClientWidth = 786 + ClientHeight = 345 + ClientWidth = 789 inline MInsert: TSynEdit Left = 0 - Height = 328 + Height = 345 Top = 0 - Width = 802 + Width = 789 Align = alClient - Font.Height = 13 - Font.Name = 'DejaVu Sans Mono' + Font.Height = -13 + Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqNonAntialiased ParentColor = False @@ -1261,16 +1345,16 @@ end object TSUpdate: TTabSheet Caption = '&Update' - ClientHeight = 341 - ClientWidth = 786 + ClientHeight = 345 + ClientWidth = 789 inline MUpdate: TSynEdit Left = 0 - Height = 328 + Height = 345 Top = 0 - Width = 802 + Width = 789 Align = alClient - Font.Height = 13 - Font.Name = 'DejaVu Sans Mono' + Font.Height = -13 + Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqNonAntialiased ParentColor = False @@ -1766,16 +1850,16 @@ end object TSDelete: TTabSheet Caption = '&Delete' - ClientHeight = 341 - ClientWidth = 786 + ClientHeight = 345 + ClientWidth = 789 inline MDelete: TSynEdit Left = 0 - Height = 328 + Height = 345 Top = 0 - Width = 802 + Width = 789 Align = alClient - Font.Height = 13 - Font.Name = 'DejaVu Sans Mono' + Font.Height = -13 + Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqNonAntialiased ParentColor = False @@ -2271,16 +2355,16 @@ end object TSRefresh: TTabSheet Caption = 'Refresh' - ClientHeight = 341 - ClientWidth = 786 + ClientHeight = 345 + ClientWidth = 789 inline MRefresh: TSynEdit Left = 0 - Height = 328 + Height = 345 Top = 0 - Width = 802 + Width = 789 Align = alClient - Font.Height = 13 - Font.Name = 'DejaVu Sans Mono' + Font.Height = -13 + Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqNonAntialiased ParentColor = False @@ -2777,9 +2861,9 @@ end object BPGenSQL: TButtonPanel Left = 6 - Height = 39 - Top = 378 - Width = 784 + Height = 34 + Top = 379 + Width = 785 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' @@ -2795,7 +2879,7 @@ DefaultFilter = 'SQL Files (*.sql)|*.sql' Enabled = False SQLDialect = sqlFirebird40 - left = 392 - top = 64 + Left = 392 + Top = 64 end end diff -Nru lazarus-2.2.4+dfsg1/components/sqldb/generatesqldlg.pp lazarus-2.2.6+dfsg1/components/sqldb/generatesqldlg.pp --- lazarus-2.2.4+dfsg1/components/sqldb/generatesqldlg.pp 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/sqldb/generatesqldlg.pp 2023-03-04 14:24:24.000000000 +0100 @@ -73,12 +73,14 @@ procedure BGenerateClick(Sender: TObject); procedure CBSystemTablesChange(Sender: TObject); procedure CBTablesChange(Sender: TObject); + procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TSResize(Sender: TObject); private FConnection : TSQLConnection; FDataset: TSQLQuery; QuoteChar : Char; + FActivateCalled: Boolean; Function IndentString : string; Function SQLKeyWord(aKeyWord : TSQLKeyWord) : String; procedure GenDeleteSQL(const TableName : string; KeyFields, SQL: TStrings); @@ -124,7 +126,7 @@ try Dataset:=Q; Connection:=Q.SQLConnection; - SelectSQL.Text:=Q.SQL.text; + SelectSQL.Text:=Q.SQL.Text; UpdateSQL.Text:=Q.UpdateSQL.Text; DeleteSQL.Text:=Q.DeleteSQL.Text; InsertSQL.Text:=Q.insertSQL.Text; @@ -132,7 +134,7 @@ Result:=ShowModal=mrOK; if Result then begin - Q.SQL.text := SelectSQL.Text; + Q.SQL.Text := SelectSQL.Text; Q.UpdateSQL.Text := UpdateSQL.Text; Q.DeleteSQL.Text := DeleteSQL.Text; Q.insertSQL.Text := InsertSQL.Text; @@ -164,7 +166,7 @@ L:=L+' '+Format('(%s = :%s%s)', [FieldName,ParamPrefix,KeyFields[I]]); if I<KeyFields.Count - 1 then L:=L+' '+SQLKeyWord(skAnd); - if CBOneFieldPerLine.Checked or ((Length(L)>MaxLen) and IsNotLast) then + if CBOneFieldPerLine.Checked or (Length(L)>MaxLen) or (not IsNotLast) then begin SQL.Add(L); L:=IndentString; @@ -213,7 +215,7 @@ L:=L+FN; if IsNotLast then L:=L+', '; - if CBOneFieldPerLine.Checked or ((Length(L)>MaxLen) and IsNotLast) then + if CBOneFieldPerLine.Checked or (Length(L)>MaxLen) or (not IsNotLast) then begin SQL.Add(L); L:=IndentString; @@ -251,7 +253,7 @@ L:=L+FN; if IsNotLast then L:=L+', '; - if CBOneFieldPerLine.Checked or ((Length(L)>MaxLen) and IsNotLast) then + if CBOneFieldPerLine.Checked or (Length(L)>MaxLen) or (not IsNotLast) then begin SQL.Add(L); L:=IndentString; @@ -299,7 +301,7 @@ L:=L+FN; if IsNotLast then L:=L+', '; - if CBOneFieldPerLine.Checked or ((Length(L)>MaxLen) and IsNotLast) then + if CBOneFieldPerLine.Checked or (Length(L)>MaxLen) or (not IsNotLast) then begin SQL.Add(L); L:=IndentString; @@ -372,9 +374,9 @@ W : Integer; begin - W:=TSFields.CLientWidth div 3; - POPtions.Width:=W; - PSelectFIelds.Width:=W; + W:=TSFields.ClientWidth div 3; + POptions.Width:=W; + PSelectFields.Width:= (TSFields.ClientWidth - POptions.Width) div 2; end; function TGenerateSQLForm.IndentString: string; @@ -527,11 +529,36 @@ ClearSQL; end; +procedure TGenerateSQLForm.FormActivate(Sender: TObject); +begin + if FActivateCalled then + exit; + FActivateCalled := true; + Constraints.MinHeight := PCSQL.Height - PCSQL.ClientHeight + + seLineLength.Top + seLineLength.Height + + bGenerate.Height + bGenerate.BorderSpacing.Top + bGenerate.BorderSpacing.Bottom + + BPGenSQL.Height + BPGenSQL.BorderSpacing.Around*2; + Constraints.MinWidth := 3 * (PCSQL.Width - PCSQL.ClientWidth + + CBQuoteFields.Left + CBQuoteFields.Width + + lblQuoteChar.BorderSpacing.Left + lblQuoteChar.Width + lblQuoteChar.BorderSpacing.Right + + edtQuoteChar.Width + CBTables.BorderSpacing.Right); +end; + procedure TGenerateSQLForm.FormCreate(Sender: TObject); begin Caption:= lrsGeneratesqlstatements; EdtQuoteChar.Text:='"'; + MSelect.Font.Height := SynDefaultFontHeight; + MSelect.Font.Name := SynDefaultFontName; + MInsert.Font.Height := SynDefaultFontHeight; + MInsert.Font.Name := SynDefaultFontName; + MUpdate.Font.Height := SynDefaultFontHeight; + MUpdate.Font.Name := SynDefaultFontName; + MDelete.Font.Height := SynDefaultFontHeight; + MDelete.Font.Name := SynDefaultFontName; + MRefresh.Font.Height := SynDefaultFontHeight; + MRefresh.Font.Name := SynDefaultFontName; end; procedure TGenerateSQLForm.BGenerateClick(Sender: TObject); diff -Nru lazarus-2.2.4+dfsg1/components/synedit/synedit.pp lazarus-2.2.6+dfsg1/components/synedit/synedit.pp --- lazarus-2.2.4+dfsg1/components/synedit/synedit.pp 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/synedit/synedit.pp 2023-03-04 14:24:24.000000000 +0100 @@ -7998,7 +7998,7 @@ nFound: integer; bBackward, bFromCursor: boolean; bPrompt: boolean; - bReplace, bReplaceAll, SelIsColumn: boolean; + bReplace, bReplaceAll, SelIsColumn, ZeroLen: boolean; nAction: TSynReplaceAction; CurReplace: string; ptFoundStart, ptFoundEnd: TPoint; @@ -8091,10 +8091,16 @@ begin //DebugLn(['TCustomSynEdit.SearchReplace FOUND ptStart=',dbgs(ptStart),' ptEnd=',dbgs(ptEnd),' ptFoundStart=',dbgs(ptFoundStart),' ptFoundEnd=',dbgs(ptFoundEnd)]); // check if found place is entirely in range - if (not SelIsColumn) or - ( (ptFoundStart.Y=ptFoundEnd.Y) and - (ptFoundStart.X >= ReplaceBlockSelection.ColumnStartBytePos[ptFoundStart.Y]) and - (ptFoundEnd.X <= ReplaceBlockSelection.ColumnEndBytePos[ptFoundStart.Y]) + ZeroLen := ptFoundStart = ptFoundEnd; + if ( (not SelIsColumn) or + ( (ptFoundStart.Y=ptFoundEnd.Y) and + (ptFoundStart.X >= ReplaceBlockSelection.ColumnStartBytePos[ptFoundStart.Y]) and + (ptFoundEnd.X <= ReplaceBlockSelection.ColumnEndBytePos[ptFoundStart.Y]) + ) + ) and ( + not( ZeroLen and (ptStart = ptFoundStart) and + (ssoFindContinue in AOptions) and (not SelAvail) + ) ) then begin @@ -8149,6 +8155,8 @@ if not bReplaceAll then exit; end; + Exclude(AOptions, ssoFindContinue); // ZeroLen will now be handled below + // shrink search range for next search if ssoSearchInReplacement in AOptions then begin if bBackward then begin @@ -8163,6 +8171,21 @@ ptStart:=ptFoundEnd; end; end; + if ZeroLen then begin + FInternalCaret.LineBytePos := ptStart; + if bBackward then begin + if not FInternalCaret.MoveHoriz(-1) then + ptStart := Point(length(FTheLinesView[ptStart.Y - 1]), ptStart.Y - 1) + else + ptStart := FInternalCaret.LineBytePos; + end + else begin + if not FInternalCaret.MoveHoriz(1) then + ptStart := Point(1, ptStart.Y + 1) + else + ptStart := FInternalCaret.LineBytePos; + end; + end; //DebugLn(['TCustomSynEdit.SearchReplace FIND NEXT ptStart=',dbgs(ptStart),' ptEnd=',dbgs(ptEnd)]); end; finally diff -Nru lazarus-2.2.4+dfsg1/components/synedit/syneditsearch.pp lazarus-2.2.6+dfsg1/components/synedit/syneditsearch.pp --- lazarus-2.2.4+dfsg1/components/synedit/syneditsearch.pp 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/synedit/syneditsearch.pp 2023-03-04 14:24:24.000000000 +0100 @@ -757,7 +757,7 @@ exit; end; MinY:=Max(0,StartPos.Y-1); - MaxY:=Min(Lines.Count,EndPos.Y-1); + MaxY:=Min(Lines.Count,EndPos.Y)-1; if MinY>MaxY then exit; if Backwards then begin // backwards diff -Nru lazarus-2.2.4+dfsg1/components/synedit/test/testsearch.pas lazarus-2.2.6+dfsg1/components/synedit/test/testsearch.pas --- lazarus-2.2.4+dfsg1/components/synedit/test/testsearch.pas 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/synedit/test/testsearch.pas 2023-03-04 14:24:24.000000000 +0100 @@ -6,7 +6,7 @@ uses Classes, SysUtils, testregistry, TestBase, - SynEdit, SynEditSearch, SynHighlighterPas; + SynEdit, SynEditSearch, SynHighlighterPas, SynEditTypes; type @@ -17,6 +17,8 @@ protected fTSearch: TSynEditSearch; //procedure ReCreateEdit; reintroduce; + function TextLinesSimple: TStringArray; + function TextLinesSimple2: TStringArray; procedure ReCreateEditWithLinesSimple; procedure TestFindNext(AName, ASearchTxt: String; AStartX, AStartY, AEndX, AEndY: Integer; @@ -25,6 +27,7 @@ procedure TestSearchSimple; procedure TestSearchSimpleUtf8; procedure TestSearchSimpleRegEx; + procedure TestSearchZeroLengthRegEx; procedure FindMatchingBracket; procedure TestSearchMultiLine; // not regex end; @@ -33,24 +36,38 @@ { TTestSynSearch } +function TTestSynSearch.TextLinesSimple: TStringArray; +begin + SetLength(Result, 12); + Result[ 0] := 'Some text to search Text'; + Result[ 1] := 'Text and more Text, texting'; + Result[ 2] := 'text and more text, texting'; + Result[ 3] := 'Text'; + Result[ 4] := ''; + Result[ 5] := 'utf8: äöü äää äöü ÄÖÜ ÄÄÄ ÄÖÜ äÖü ÄäÄ äääää äöüäöüä ä Ä'; + Result[ 6] := ''; + Result[ 7] := ''; + Result[ 8] := ''; + Result[ 9] := 'Test or Dest or Destination. Test.'; + Result[10] := 'test or dest or destination. test.'; + Result[11] := ''; +end; + +function TTestSynSearch.TextLinesSimple2: TStringArray; +begin + SetLength(Result, 6); + Result[ 0] := 'foo bar some more'; + Result[ 1] := 'äöü äää äöü'; + Result[ 2] := 'abc def 123'; + Result[ 3] := 'mno xyz 789'; + Result[ 4] := 'Text'; + Result[ 5] := ''; +end; + procedure TTestSynSearch.ReCreateEditWithLinesSimple; begin ReCreateEdit; - SetLines - ([ 'Some text to search Text', - 'Text and more Text, texting', - 'text and more text, texting', - 'Text', - '', - 'utf8: äöü äää äöü ÄÖÜ ÄÄÄ ÄÖÜ äÖü ÄäÄ äääää äöüäöüä ä Ä', - '', - '', - '', - 'Test or Dest or Destination. Test.', - 'test or dest or destination. test.', - '' - ]); - + SetLines(TextLinesSimple); end; procedure TTestSynSearch.TestFindNext(AName, ASearchTxt: String; AStartX, AStartY, AEndX, @@ -179,6 +196,213 @@ TestFindNext('RegEx Case', '(t...),', 1,2, 25,3, true, 15,3, 20,3); AssertEquals('RegexRepl Case', 'atextB', fTSearch.RegExprReplace); + fTSearch.Free; +end; + +procedure TTestSynSearch.TestSearchZeroLengthRegEx; +var + aBackwards: Boolean; + + procedure DoTestSearch(AName: String; + AStartX, AStartY: Integer; ASearch: String; + AExpX, AExpY: Integer; + AOpts: TSynSearchOptions = [ssoRegExpr]); + begin + AName := AName + ' # Search: "' + ASearch + '" '; + if aBackwards then + AOpts := AOpts + [ssoBackwards]; + ReCreateEdit; + SetLines(TextLinesSimple2); + SetCaret(AStartX, AStartY); + SynEdit.SearchReplaceEx(ASearch, '', AOpts, SynEdit.CaretObj.LineBytePos); + + TestIsCaret(AName+' (Caret): ', AExpX, AExpY); + end; + + procedure DoTestRepl(AName: String; + AStartX, AStartY: Integer; ASearch, ARepl: String; + AExpX, AExpY: Integer; AExpTextRepl: Array of const; + AOpts: TSynSearchOptions = [ssoRegExpr, ssoReplaceAll]); + begin + AName := AName + ' # Replace "' + ASearch + '" => "' + ARepl + '"'; + if aBackwards then + AOpts := AOpts + [ssoBackwards]; + ReCreateEdit; + SetLines(TextLinesSimple2); + SetCaret(AStartX, AStartY); + SynEdit.SearchReplaceEx(ASearch, ARepl, AOpts, SynEdit.CaretObj.LineBytePos); + + TestIsCaret(AName+' (Caret): ', AExpX, AExpY); + TestIsText(AName+' (Text): ', TextLinesSimple2, AExpTextRepl); + end; + +begin + aBackwards := False; + + // Search ^ + DoTestSearch('Cont', 3, 3, '^', 1, 4, [ssoRegExpr, ssoFindContinue]); + DoTestSearch('', 3, 3, '^', 1, 4); + DoTestSearch('', 1, 4, '^', 1, 4); + DoTestSearch('Cont', 1, 4, '^', 1, 5, [ssoRegExpr, ssoFindContinue]); + + // Search $ + DoTestSearch('Cont', 3, 3, '$', 12, 3, [ssoRegExpr, ssoFindContinue]); + DoTestSearch('', 3, 3, '$', 12, 3); +// TODO: fTSearch.FindNextOne does not find the end in line 3 (when it is the start point) +// DoTestSearch('', 12, 3, '$', 12, 3); + DoTestSearch('Cont', 12, 3, '$', 12, 4, [ssoRegExpr, ssoFindContinue]); + + // Search ^|$ + DoTestSearch('', 3, 3, '^|$', 12, 3); +// DoTestSearch('', 12, 3, '^|$', 12, 3); + DoTestSearch('Cont', 12, 3, '^|$', 1, 4, [ssoRegExpr, ssoFindContinue]); + DoTestSearch('', 1, 4, '^|$', 1, 4); + DoTestSearch('Cont', 1, 4, '^|$', 12, 4, [ssoRegExpr, ssoFindContinue]); + + // Search () + DoTestSearch('', 3, 3, '()', 3, 3); + DoTestSearch('Cont', 3, 3, '()', 4, 3, [ssoRegExpr, ssoFindContinue]); + + DoTestSearch('UTF ', 3, 2, '()', 3, 2); + DoTestSearch('UTF Cont', 3, 2, '()', 5, 2, [ssoRegExpr, ssoFindContinue]); + + + // Replace ^ + DoTestRepl('', 3, 3, '^', 'X', 2, 4, [4, 'Xmno xyz 789'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1, 4, '^', 'X', 2, 4, [4, 'Xmno xyz 789'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1, 4, '^', 'X', 2, 5, [5, 'XText'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + DoTestRepl('', 3, 3, '^', '', 1, 5, []); + DoTestRepl('', 1, 4, '^', '', 1, 5, []); + DoTestRepl('', 1, 4, '^', '', 1, 5, [], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + // Replace-All ^ + DoTestRepl('', 3, 3, '^', 'X', 2, 5, [4, 'Xmno xyz 789', 5, 'XText']); + DoTestRepl('', 1, 4, '^', 'X', 2, 5, [4, 'Xmno xyz 789', 5, 'XText']); + DoTestRepl('', 1, 4, '^', 'X', 2, 5, [5, 'XText'], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + DoTestRepl('', 3, 3, '^', '', 1, 4, [], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1, 4, '^', '', 1, 4, [], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1, 4, '^', '', 1, 5, [], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + + // Replace $ + DoTestRepl('', 4, 4, '$', 'X', 13, 4, [4, 'mno xyz 789X'], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 12, 4, '$', 'X', 13, 4, [4, 'mno xyz 789X'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 12, 4, '$', 'X', 6, 5, [5, 'TextX'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + DoTestRepl('', 4, 4, '$', '', 12, 4, [], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 12, 4, '$', '', 12, 4, [], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 12, 4, '$', '', 5, 5, [], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + // Replace-All $ + DoTestRepl('', 4, 4, '$', 'X', 6, 5, [4, 'mno xyz 789X', 5, 'TextX']); +// DoTestRepl('', 12, 4, '$', 'X', 6, 5, [4, 'mno xyz 789X', 5, 'TextX']); + DoTestRepl('', 12, 4, '$', 'X', 6, 5, [5, 'TextX'], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + DoTestRepl('', 4, 4, '$', '', 5, 5, []); + DoTestRepl('', 12, 4, '$', '', 5, 5, []); + DoTestRepl('', 12, 4, '$', '', 5, 5, [], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + + // Replace ^|$ + DoTestRepl('', 1, 4, '^|$', 'X', 2, 4, [4, 'Xmno xyz 789'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1, 4, '^|$', 'X', 13, 4, [4, 'mno xyz 789X'], [ssoRegExpr, ssoReplace, ssoFindContinue]); +// DoTestRepl('', 12, 4, '^|$', 'X', 13, 4, [4, 'mno xyz 789X'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 12, 4, '^|$', 'X', 2, 5, [5, 'XText'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + // Replace-All ^|$ + DoTestRepl('', 1, 4, '^|$', 'X', 7, 5, [4, 'Xmno xyz 789X', 5, 'XTextX']); + DoTestRepl('', 4, 4, '^|$', 'X', 7, 5, [4, 'mno xyz 789X', 5, 'XTextX']); +// DoTestRepl('', 12, 4, '^|$', 'X', 7, 5, [4, 'mno xyz 789X', 5, 'XTextX']); + DoTestRepl('', 12, 4, '^|$', 'X', 7, 5, [5, 'XTextX'], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + + // Replace () + DoTestRepl('', 1,4, '()', 'X', 2, 4, [4, 'Xmno xyz 789'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1,4, '()', 'X', 3, 4, [4, 'mXno xyz 789'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + DoTestRepl('', 2,4, '()', 'X', 3, 4, [4, 'mXno xyz 789'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 2,4, '()', 'X', 4, 4, [4, 'mnXo xyz 789'], [ssoRegExpr, ssoReplace, ssoFindContinue]); +// DoTestRepl('', 12,4, '()', 'X', 13, 4, [4, 'mno xyz 789X'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 12,4, '()', 'X', 2, 5, [5, 'XText'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + // Replace-All () +// DoTestRepl('', 11,4, '()', 'X', 10, 5, [4, 'mno xyz 78X9X', 5, 'XTXeXxXtX']); +// DoTestRepl('', 11,4, '()', '', 5, 5, []); +// Incorrect results BELOW (expect wrong caret and text, but test that it does not hang +DoTestRepl('', 11,4, '()', 'X', 8, 5, [4, 'mno xyz 78X9', 5, 'XTXeXxXt']); +DoTestRepl('', 11,4, '()', '', 4, 5, []); +// << end incorrect result + + + // **************************** + aBackwards := True; +//exit; // backward reg-ex is not (fully?) implemented + + // Search ^ + DoTestSearch('Cont', 3, 4, '^', 1, 4, [ssoRegExpr, ssoFindContinue]); + DoTestSearch('', 3, 4, '^', 1, 4); + DoTestSearch('', 1, 4, '^', 1, 4); +// DoTestSearch('Cont', 1, 4, '^', 1, 3, [ssoRegExpr, ssoFindContinue]); + + // Search $ +// DoTestSearch('', 4, 4, '$', 12, 3); +// DoTestSearch('Cont', 1, 4, '$', 12, 3); +// DoTestSearch('Cont', 1, 4, '$', 12, 3, [ssoRegExpr, ssoFindContinue]); +// DoTestSearch('', 12, 4, '$', 12, 4); +// DoTestSearch('Cont', 12, 4, '$', 12, 3, [ssoRegExpr, ssoFindContinue]); + + // Search ^|$ +// DoTestSearch('', 4, 4, '^|$', 1, 4); +// DoTestSearch('', 1, 4, '^|$', 1, 4); +// DoTestSearch('Cont', 1, 4, '^|$', 12, 3, [ssoRegExpr, ssoFindContinue]); +// DoTestSearch('Cont', 12, 3, '^|$', 12, 3); +// DoTestSearch('Cont', 12, 3, '^|$', 1, 3, [ssoRegExpr, ssoFindContinue]); + + // Search () +// DoTestSearch('', 3, 3, '()', 3, 3); +// DoTestSearch('Cont', 3, 3, '()', 2, 3, [ssoRegExpr, ssoFindContinue]); + +// DoTestSearch('UTF ', 3, 2, '()', 3, 2); +// DoTestSearch('UTF Cont', 5, 2, '()', 3, 2, [ssoRegExpr, ssoFindContinue]); + + // Replace ^ // selection is backward on inserted text +// DoTestRepl('', 3, 4, '^', 'X', 1, 4, [4, 'Xmno xyz 789'], [ssoRegExpr, ssoReplace]); + DoTestRepl('', 1, 4, '^', 'X', 1, 4, [4, 'Xmno xyz 789'], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 1, 4, '^', 'X', 1, 3, [5, 'XText'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + +// DoTestRepl('', 3, 4, '^', '', 1, 4, []); +// DoTestRepl('', 1, 4, '^', '', 1, 4, []); +// DoTestRepl('', 1, 4, '^', '', 1, 3, [], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + // Replace-All ^ +// DoTestRepl('', 3, 2, '^', 'X', 1, 1, [1, 'Xfoo bar some more', 2, 'Xäöü äää äöü']); +// DoTestRepl('', 1, 2, '^', 'X', 1, 1, [1, 'Xfoo bar some more', 2, 'Xäöü äää äöü']); +// DoTestRepl('', 1, 2, '^', 'X', 1, 1, [1, 'Xfoo bar some more'], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + +// DoTestRepl('', 3, 2, '^', '', 1, 1, []); +// DoTestRepl('', 1, 2, '^', '', 1, 1, []); +// DoTestRepl('', 1, 2, '^', '', 1, 1, [], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + // Replace $ +// DoTestRepl('', 4, 5, '$', 'X', 12, 4, [4, 'mno xyz 789X'], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 12, 4, '$', 'X', 12, 4, [4, 'mno xyz 789X', 5, 'TextX'], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 12, 4, '$', 'X', 12, 3, [3, 'abc def 123X'], [ssoRegExpr, ssoReplace, ssoFindContinue]); + +// DoTestRepl('', 4, 5, '$', '', 12, 4, [], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 12, 4, '$', '', 12, 4, [], [ssoRegExpr, ssoReplace]); +// DoTestRepl('', 12, 4, '$', '', 12, 3, [], [ssoRegExpr, ssoReplace, ssoFindContinue]); + + // Replace-All $ +// DoTestRepl('', 3, 3, '$', 'X', 18, 1, [1, 'foo bar some moreX', 2, 'äöü äää äöüX']); +// DoTestRepl('', 21, 2, '$', 'X', 18, 1, [1, 'foo bar some moreX', 2, 'äöü äää äöüX']); +// DoTestRepl('', 21, 2, '$', 'X', 18, 1, [1, 'foo bar some moreX'], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + +// DoTestRepl('', 3, 3, '$', '', 18, 1, []); +// DoTestRepl('', 21, 2, '$', '', 18, 1, []); +// DoTestRepl('', 21, 2, '$', '', 18, 1, [], [ssoRegExpr, ssoReplaceAll, ssoFindContinue]); + + end; procedure TTestSynSearch.FindMatchingBracket; @@ -280,6 +504,7 @@ TestFindNext('3 lines middle empty', 'a'+LineEnding+LineEnding+'b', 1,1, 1,9, true, 1,2, 2,4); TestFindNext('3 lines middle empty - no match', 'a'+LineEnding+LineEnding+'b', 1,5, 1,9, False, 1,2, 2,4); + fTSearch.Free; end; //more ftsearch: diff -Nru lazarus-2.2.4+dfsg1/components/tachart/tachartlistbox.pas lazarus-2.2.6+dfsg1/components/tachart/tachartlistbox.pas --- lazarus-2.2.4+dfsg1/components/tachart/tachartlistbox.pas 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/components/tachart/tachartlistbox.pas 2023-03-04 14:24:24.000000000 +0100 @@ -526,7 +526,7 @@ procedure TChartListbox.MouseDown( AButton: TMouseButton; AShift: TShiftState; AX, AY: Integer); var - rcb, ricon: TRect; + R, rcb, ricon: TRect; index: Integer; p: TPoint; begin @@ -537,7 +537,17 @@ p := Point(AX, AY); index := GetIndexAtXY(AX, AY); if index < 0 then exit; - CalcRects(ItemRect(index), rcb, ricon); + R := ItemRect(index); + {$IFDEF DARWIN} + { Workaround for ItemRect returning something different than what is + passed to DrawItem in macOS Monterey. + See discussion in https://forum.lazarus.freepascal.org/index.php/topic,61074.0.html + The consequence of this workaround is that there can only be a single + column, but Columns > 1 does not work on cocoa anyway. } + R.Left := 0; + R.Right := ClientWidth; + {$ENDIF} + CalcRects(R, rcb, ricon); if (cloShowCheckboxes in Options) and IsPointInRect(p, rcb) then ClickedCheckbox(index) else if (cloShowIcons in Options) and IsPointInRect(p, ricon) then diff -Nru lazarus-2.2.4+dfsg1/debian/changelog lazarus-2.2.6+dfsg1/debian/changelog --- lazarus-2.2.4+dfsg1/debian/changelog 2023-03-25 12:11:51.000000000 +0100 +++ lazarus-2.2.6+dfsg1/debian/changelog 2023-03-31 19:51:15.000000000 +0200 @@ -1,3 +1,10 @@ +lazarus (2.2.6+dfsg1-1) unstable; urgency=medium + + * New upstream version 2.2.6+dfsg1 + * Updated patches list removing patch already integrated by upstream. + + -- Abou Al Montacir <abou.almontacir@sfr.fr> Fri, 31 Mar 2023 19:51:15 +0200 + lazarus (2.2.4+dfsg1-3) unstable; urgency=medium * Remove binary NMU number from revision.inc to avoid useless warning. diff -Nru lazarus-2.2.4+dfsg1/debian/patches/dwarf-debug-info-type-ppc64el.patch lazarus-2.2.6+dfsg1/debian/patches/dwarf-debug-info-type-ppc64el.patch --- lazarus-2.2.4+dfsg1/debian/patches/dwarf-debug-info-type-ppc64el.patch 2022-08-28 18:21:22.000000000 +0200 +++ lazarus-2.2.6+dfsg1/debian/patches/dwarf-debug-info-type-ppc64el.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -Description: Use dwarf debug info type (-gw) for components/chmhelp/lhelp - -Stab debug info (-gs) used only in components/chmhelp/lhelp/Makefile.fp -breaks ppc64el but not dwarf (-gw) also Dwarf is actually the -recommended setting : -https://wiki.freepascal.org/GDB_Debugger_Tips#Stabs_.28only_GDB.29 -Author: Frédéric Bonnard <frediz@debian.org> ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/components/chmhelp/lhelp/Makefile.fpc -+++ b/components/chmhelp/lhelp/Makefile.fpc -@@ -15,7 +15,7 @@ - packages=rtl - - [compiler] --options=-gs -gl -Sghi -O3 -dlcl$(LCL_PLATFORM) $(DBG_OPTIONS) -+options=-gw -gl -Sghi -O3 -dlcl$(LCL_PLATFORM) $(DBG_OPTIONS) - unittargetdir=lib/$(CPU_TARGET)-$(OS_TARGET) - unitdir=. $(LAZDIR)/components/lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) \ - $(LAZDIR)/packager/units/$(CPU_TARGET)-$(OS_TARGET) \ diff -Nru lazarus-2.2.4+dfsg1/debian/patches/series lazarus-2.2.6+dfsg1/debian/patches/series --- lazarus-2.2.4+dfsg1/debian/patches/series 2022-11-20 12:42:50.000000000 +0100 +++ lazarus-2.2.6+dfsg1/debian/patches/series 2023-03-31 19:51:08.000000000 +0200 @@ -5,7 +5,6 @@ fix-fpdoc-crashes-on-lazarus-documentation.patch fix-perl-shbang.patch Fix-compilation-of-PascalScript.diff -dwarf-debug-info-type-ppc64el.patch Fixed-end-of-line-for-resource-file.diff Fixed-allowing-arbitrary-FPPKG-path.patch Added-missing-source-file.patch Binary files /tmp/IdHZXXQ1G9/lazarus-2.2.4+dfsg1/docs/chm/lazutils.chm and /tmp/5arYyC9vuS/lazarus-2.2.6+dfsg1/docs/chm/lazutils.chm differ diff -Nru lazarus-2.2.4+dfsg1/docs/chm/lazutils.xct lazarus-2.2.6+dfsg1/docs/chm/lazutils.xct --- lazarus-2.2.4+dfsg1/docs/chm/lazutils.xct 2022-09-25 12:18:59.000000000 +0200 +++ lazarus-2.2.6+dfsg1/docs/chm/lazutils.xct 2023-03-04 14:25:27.000000000 +0100 @@ -191,6 +191,7 @@ ArrayCP437ToUTF8 codepagescommon/arraycp437toutf8.html ArrayCP850ToUTF8 codepagescommon/arraycp850toutf8.html ArrayCP852ToUTF8 codepagescommon/arraycp852toutf8.html + ArrayCP865ToUTF8 codepagescommon/arraycp865toutf8.html ArrayCP866ToUTF8 codepagescommon/arraycp866toutf8.html ArrayCP874ToUTF8 codepagescommon/arraycp874toutf8.html ArrayKOI8RToUTF8 codepagescommon/arraykoi8rtoutf8.html @@ -2350,7 +2351,6 @@ UTF16ToUTF8 lazutf8/utf16toutf8.html LazGetLanguageIDs lazutf8/lazgetlanguageids.html LazGetShortLanguageID lazutf8/lazgetshortlanguageid.html - ReplaceSubstring lazutf8/replacesubstring.html FPUpChars lazutf8/fpupchars.html LazUTF8Classes lazutf8classes/index.html TFileStreamUTF8 lazutf8classes/tfilestreamutf8.html @@ -2554,6 +2554,7 @@ EncodingCP437 lconvencoding/encodingcp437.html EncodingCP850 lconvencoding/encodingcp850.html EncodingCP852 lconvencoding/encodingcp852.html + EncodingCP865 lconvencoding/encodingcp865.html EncodingCP866 lconvencoding/encodingcp866.html EncodingCP874 lconvencoding/encodingcp874.html EncodingCP932 lconvencoding/encodingcp932.html @@ -2618,6 +2619,7 @@ CP437ToUTF8 lconvencoding/cp437toutf8.html CP850ToUTF8 lconvencoding/cp850toutf8.html CP852ToUTF8 lconvencoding/cp852toutf8.html + CP865ToUTF8 lconvencoding/cp865toutf8.html CP866ToUTF8 lconvencoding/cp866toutf8.html CP874ToUTF8 lconvencoding/cp874toutf8.html KOI8RToUTF8 lconvencoding/koi8rtoutf8.html @@ -2651,6 +2653,7 @@ UTF8ToCP437 lconvencoding/utf8tocp437.html UTF8ToCP850 lconvencoding/utf8tocp850.html UTF8ToCP852 lconvencoding/utf8tocp852.html + UTF8ToCP865 lconvencoding/utf8tocp865.html UTF8ToCP866 lconvencoding/utf8tocp866.html UTF8ToCP874 lconvencoding/utf8tocp874.html UTF8ToKOI8R lconvencoding/utf8tokoi8r.html @@ -2782,6 +2785,7 @@ TMaskOption masks/tmaskoption.html TMaskOptions masks/tmaskoptions.html TMaskClass masks/tmaskclass.html + TMaskListClass masks/tmasklistclass.html EMaskError masks/emaskerror.html TMaskExceptionCode masks/emaskerror.tmaskexceptioncode.html FCode masks/emaskerror.fcode.html @@ -2808,7 +2812,7 @@ fMatchMaximumLiteralBytes masks/tmaskbase.fmatchmaximumliteralbytes.html fMaskOpcodesAllowed masks/tmaskbase.fmaskopcodesallowed.html fMaskEscapeChar masks/tmaskbase.fmaskescapechar.html - Compile masks/tmaskbase.compile.html + PrepareCompile masks/tmaskbase.preparecompile.html Exception_InvalidCharMask masks/tmaskbase.exception_invalidcharmask.html Exception_MissingCloseChar masks/tmaskbase.exception_missingclosechar.html Exception_IncompleteMask masks/tmaskbase.exception_incompletemask.html @@ -2862,7 +2866,6 @@ GetMaskClass masks/twindowsmasklist.getmaskclass.html AddMasksToList masks/twindowsmasklist.addmaskstolist.html Create masks/twindowsmasklist.create.html - MatchesWindowsMask masks/twindowsmasklist.matcheswindowsmask.html Quirks masks/twindowsmasklist.quirks.html MatchesMask masks/matchesmask.html MatchesWindowsMask masks/matcheswindowsmask.html @@ -3730,7 +3733,7 @@ 2VfMatchMaximumLiteralBytes 2VfMaskOpcodesAllowed 2VfMaskEscapeChar -2MCompile +2MPrepareCompile 2MException_InvalidCharMask 2MException_MissingCloseChar 2MException_IncompleteMask @@ -3817,7 +3820,6 @@ 2MGetMaskClass 2MAddMasksToList 3MCreate -3MMatchesWindowsMask 3PQuirks rw #lazutils.GraphType.TRawImageDescription 0VFormat Binary files /tmp/IdHZXXQ1G9/lazarus-2.2.4+dfsg1/docs/chm/lcl.chm and /tmp/5arYyC9vuS/lazarus-2.2.6+dfsg1/docs/chm/lcl.chm differ diff -Nru lazarus-2.2.4+dfsg1/docs/chm/lcl.xct lazarus-2.2.6+dfsg1/docs/chm/lcl.xct --- lazarus-2.2.4+dfsg1/docs/chm/lcl.xct 2022-09-25 12:18:59.000000000 +0200 +++ lazarus-2.2.6+dfsg1/docs/chm/lcl.xct 2023-03-04 14:25:27.000000000 +0100 @@ -88,9 +88,9 @@ ShortCut actnlist/tcustomaction.shortcut.html Visible actnlist/tcustomaction.visible.html TAction actnlist/taction.html + Create actnlist/taction.create.html OnExecute actnlist/taction.onexecute.html OnUpdate actnlist/taction.onupdate.html - Create actnlist/tcustomaction.create.html AutoCheck actnlist/tcustomaction.autocheck.html Caption actnlist/tcustomaction.caption.html Checked actnlist/tcustomaction.checked.html @@ -286,6 +286,7 @@ BitBtnResNames buttons/bitbtnresnames.html TButtonLayout buttons/tbuttonlayout.html TButtonState buttons/tbuttonstate.html + TButtonImage buttons/tbuttonimage.html TNumGlyphs buttons/tnumglyphs.html TGlyphTransparencyMode buttons/tglyphtransparencymode.html TBitBtnKind buttons/tbitbtnkind.html @@ -339,6 +340,7 @@ LoadGlyphFromResourceName buttons/tcustombitbtn.loadglyphfromresourcename.html LoadGlyphFromLazarusResource buttons/tcustombitbtn.loadglyphfromlazarusresource.html LoadGlyphFromStock buttons/tcustombitbtn.loadglyphfromstock.html + LoadGlyphFromResource buttons/tcustombitbtn.loadglyphfromresource.html CanShowGlyph buttons/tcustombitbtn.canshowglyph.html Caption buttons/tcustombitbtn.caption.html DefaultCaption buttons/tcustombitbtn.defaultcaption.html @@ -551,9 +553,11 @@ LoadGlyphFromResourceName buttons/loadglyphfromresourcename.html LoadGlyphFromLazarusResource buttons/loadglyphfromlazarusresource.html LoadGlyphFromStock buttons/loadglyphfromstock.html + LoadGlyphFromResource buttons/loadglyphfromresource.html GetButtonCaption buttons/getbuttoncaption.html GetDefaultButtonIcon buttons/getdefaultbuttonicon.html GetButtonIcon buttons/getbuttonicon.html + GetButtonImageIndex buttons/getbuttonimageindex.html BidiAdjustButtonLayout buttons/bidiadjustbuttonlayout.html dbgs buttons/dbgs.html Register buttons/register.html @@ -701,7 +705,6 @@ FormClose calendarpopup/tcalendarpopupform.formclose.html FormCreate calendarpopup/tcalendarpopupform.formcreate.html FormDeactivate calendarpopup/tcalendarpopupform.formdeactivate.html - Paint calendarpopup/tcalendarpopupform.paint.html ShowCalendarPopup calendarpopup/showcalendarpopup.html CheckLst checklst/index.html TCheckListClicked checklst/tchecklistclicked.html @@ -1606,6 +1609,7 @@ CreateWnd comctrls/tcustomtabcontrol.createwnd.html Loaded comctrls/tcustomtabcontrol.loaded.html DoChange comctrls/tcustomtabcontrol.dochange.html + InitializeWnd comctrls/tcustomtabcontrol.initializewnd.html Change comctrls/tcustomtabcontrol.change.html KeyDown comctrls/tcustomtabcontrol.keydown.html DialogChar comctrls/tcustomtabcontrol.dialogchar.html @@ -1663,14 +1667,17 @@ TabWidth comctrls/tcustomtabcontrol.tabwidth.html TabStop comctrls/tcustomtabcontrol.tabstop.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - InitializeWnd controls/twincontrol.initializewnd.html ReadState controls/tcontrol.readstate.html TTabSheet comctrls/ttabsheet.html Create comctrls/ttabsheet.create.html Destroy comctrls/ttabsheet.destroy.html PageControl comctrls/ttabsheet.pagecontrol.html TabIndex comctrls/ttabsheet.tabindex.html + Height comctrls/ttabsheet.height.html + Left comctrls/ttabsheet.left.html TabVisible comctrls/ttabsheet.tabvisible.html + Top comctrls/ttabsheet.top.html + Width comctrls/ttabsheet.width.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html AutoSize controls/tcontrol.autosize.html BorderWidth controls/twincontrol.borderwidth.html @@ -1681,9 +1688,7 @@ ClientWidth controls/tcontrol.clientwidth.html Enabled controls/tcontrol.enabled.html Font controls/tcontrol.font.html - Height controls/tcontrol.height.html ImageIndex comctrls/tcustompage.imageindex.html - Left controls/tcontrol.left.html OnContextPopup controls/tcontrol.oncontextpopup.html OnDragDrop controls/tcontrol.ondragdrop.html OnDragOver controls/tcontrol.ondragover.html @@ -1708,12 +1713,12 @@ ParentShowHint controls/tcontrol.parentshowhint.html PopupMenu controls/tcontrol.popupmenu.html ShowHint controls/tcontrol.showhint.html - Top controls/tcontrol.top.html - Width controls/tcontrol.width.html TPageControl comctrls/tpagecontrol.html GetPageClass comctrls/tpagecontrol.getpageclass.html DoAddDockClient comctrls/tpagecontrol.doadddockclient.html + DockOver comctrls/tpagecontrol.dockover.html DoRemoveDockClient comctrls/tpagecontrol.doremovedockclient.html + ChildClassAllowed comctrls/tpagecontrol.childclassallowed.html Clear comctrls/tpagecontrol.clear.html FindNextPage comctrls/tpagecontrol.findnextpage.html SelectNextPage comctrls/tpagecontrol.selectnextpage.html @@ -1721,11 +1726,8 @@ ActivePageIndex comctrls/tpagecontrol.activepageindex.html Pages comctrls/tpagecontrol.pages.html ActivePage comctrls/tpagecontrol.activepage.html - OnChange comctrls/tpagecontrol.onchange.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DockOver controls/twincontrol.dockover.html DoUndockClientMsg controls/twincontrol.doundockclientmsg.html - ChildClassAllowed controls/twincontrol.childclassallowed.html IndexOfTabAt comctrls/tcustomtabcontrol.indexoftabat.html IndexOfPageAt comctrls/tcustomtabcontrol.indexofpageat.html OnGetDockCaption controls/twincontrol.ongetdockcaption.html @@ -1761,6 +1763,7 @@ TabStop controls/twincontrol.tabstop.html TabWidth comctrls/tcustomtabcontrol.tabwidth.html Visible controls/tcontrol.visible.html + OnChange comctrls/tcustomtabcontrol.onchange.html OnChanging comctrls/tcustomtabcontrol.onchanging.html OnCloseTabClicked comctrls/tcustomtabcontrol.onclosetabclicked.html OnContextPopup controls/tcontrol.oncontextpopup.html @@ -2827,6 +2830,7 @@ ShouldAutoAdjust comctrls/tcustomtrackbar.shouldautoadjust.html Create comctrls/tcustomtrackbar.create.html SetTick comctrls/tcustomtrackbar.settick.html + SetParams comctrls/tcustomtrackbar.setparams.html Frequency comctrls/tcustomtrackbar.frequency.html LineSize comctrls/tcustomtrackbar.linesize.html Max comctrls/tcustomtrackbar.max.html @@ -3072,8 +3076,11 @@ TopLvlItems comctrls/ttreenodes.toplvlitems.html DefineProperties TCustomTreeView comctrls/tcustomtreeview.html + TFindOption comctrls/tcustomtreeview.tfindoption.html + TFindOptions comctrls/tcustomtreeview.tfindoptions.html FChangeTimer comctrls/tcustomtreeview.fchangetimer.html FEditor comctrls/tcustomtreeview.feditor.html + FFindOptions comctrls/tcustomtreeview.ffindoptions.html GetControlClassDefaultSize comctrls/tcustomtreeview.getcontrolclassdefaultsize.html Added comctrls/tcustomtreeview.added.html EditorEditingDone comctrls/tcustomtreeview.editoreditingdone.html @@ -3136,6 +3143,7 @@ NodeChanged comctrls/tcustomtreeview.nodechanged.html NodeHasChildren comctrls/tcustomtreeview.nodehaschildren.html Notification comctrls/tcustomtreeview.notification.html + Paint comctrls/tcustomtreeview.paint.html ScrollView comctrls/tcustomtreeview.scrollview.html SetDragMode comctrls/tcustomtreeview.setdragmode.html SetOptions comctrls/tcustomtreeview.setoptions.html @@ -3184,6 +3192,7 @@ OnHasChildren comctrls/tcustomtreeview.onhaschildren.html OnNodeChanged comctrls/tcustomtreeview.onnodechanged.html OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html + PathDelimiter comctrls/tcustomtreeview.pathdelimiter.html ReadOnly comctrls/tcustomtreeview.readonly.html RightClickSelect comctrls/tcustomtreeview.rightclickselect.html RowSelect comctrls/tcustomtreeview.rowselect.html @@ -3273,7 +3282,6 @@ DoDragMsg DoEndDrag controls/tcontrol.doenddrag.html DoMouseWheel controls/tcontrol.domousewheel.html - Paint controls/tcustomcontrol.paint.html GetChildAccessibleObjectAtPos controls/tcontrol.getchildaccessibleobjectatpos.html TTreeView comctrls/ttreeview.html ParentColor comctrls/ttreeview.parentcolor.html @@ -3907,6 +3915,7 @@ SetReplacingControl controls/tdockmanager.setreplacingcontrol.html AutoFreeByControl controls/tdockmanager.autofreebycontrol.html IsEnabledControl controls/tdockmanager.isenabledcontrol.html + CanBeDoubleDocked controls/tdockmanager.canbedoubledocked.html TSizeConstraints controls/tsizeconstraints.html Change controls/tsizeconstraints.change.html AssignTo controls/tsizeconstraints.assignto.html @@ -4176,6 +4185,7 @@ UpdateMouseCursor controls/tcontrol.updatemousecursor.html Changed controls/tcontrol.changed.html GetPalette controls/tcontrol.getpalette.html + GetParentBackground controls/tcontrol.getparentbackground.html ChildClassAllowed controls/tcontrol.childclassallowed.html ReadState controls/tcontrol.readstate.html Loaded controls/tcontrol.loaded.html @@ -4197,6 +4207,7 @@ SetHint controls/tcontrol.sethint.html SetName controls/tcontrol.setname.html SetParent controls/tcontrol.setparent.html + SetParentBackground controls/tcontrol.setparentbackground.html SetParentComponent controls/tcontrol.setparentcomponent.html WndProc controls/tcontrol.wndproc.html ParentFormHandleInitialized controls/tcontrol.parentformhandleinitialized.html @@ -4238,6 +4249,7 @@ DragKind controls/tcontrol.dragkind.html DragMode controls/tcontrol.dragmode.html MouseCapture controls/tcontrol.mousecapture.html + ParentBackground controls/tcontrol.parentbackground.html ParentColor controls/tcontrol.parentcolor.html ParentFont controls/tcontrol.parentfont.html ParentShowHint controls/tcontrol.parentshowhint.html @@ -4378,6 +4390,7 @@ InitiateAction controls/tcontrol.initiateaction.html ShowHelp controls/tcontrol.showhelp.html HasHelp controls/tcontrol.hashelp.html + RemoveAllHandlersOfObject controls/tcontrol.removeallhandlersofobject.html AddHandlerOnResize controls/tcontrol.addhandleronresize.html RemoveHandlerOnResize controls/tcontrol.removehandleronresize.html AddHandlerOnChangeBounds controls/tcontrol.addhandleronchangebounds.html @@ -4386,8 +4399,10 @@ RemoveHandlerOnVisibleChanging controls/tcontrol.removehandleronvisiblechanging.html AddHandlerOnVisibleChanged controls/tcontrol.addhandleronvisiblechanged.html RemoveHandlerOnVisibleChanged controls/tcontrol.removehandleronvisiblechanged.html + AddHandlerOnEnabledChanging controls/tcontrol.addhandleronenabledchanging.html + RemoveHandlerOnEnabledChanging controls/tcontrol.removehandleronenabledchanging.html AddHandlerOnEnabledChanged controls/tcontrol.addhandleronenabledchanged.html - RemoveHandlerOnEnableChanging controls/tcontrol.removehandleronenablechanging.html + RemoveHandlerOnEnabledChanged controls/tcontrol.removehandleronenabledchanged.html AddHandlerOnKeyDown controls/tcontrol.addhandleronkeydown.html RemoveHandlerOnKeyDown controls/tcontrol.removehandleronkeydown.html AddHandlerOnBeforeDestruction controls/tcontrol.addhandleronbeforedestruction.html @@ -4459,7 +4474,6 @@ HelpKeyword controls/tcontrol.helpkeyword.html HelpContext controls/tcontrol.helpcontext.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html TControlChildSizing controls/tcontrolchildsizing.html Change controls/tcontrolchildsizing.change.html Create controls/tcontrolchildsizing.create.html @@ -4603,7 +4617,6 @@ GetClientRect controls/twincontrol.getclientrect.html GetControlOrigin controls/twincontrol.getcontrolorigin.html GetDeviceContext controls/twincontrol.getdevicecontext.html - GetParentBackground controls/twincontrol.getparentbackground.html IsControlMouseMsg controls/twincontrol.iscontrolmousemsg.html CreateHandle controls/twincontrol.createhandle.html CreateParams controls/twincontrol.createparams.html @@ -4627,7 +4640,6 @@ SetBorderStyle controls/twincontrol.setborderstyle.html SetColor controls/twincontrol.setcolor.html SetChildZPosition controls/twincontrol.setchildzposition.html - SetParentBackground controls/twincontrol.setparentbackground.html ShowControl controls/twincontrol.showcontrol.html UpdateControlState controls/twincontrol.updatecontrolstate.html UpdateShowing controls/twincontrol.updateshowing.html @@ -4637,7 +4649,6 @@ BorderStyle controls/twincontrol.borderstyle.html OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html OnGetDockCaption controls/twincontrol.ongetdockcaption.html - ParentBackground controls/twincontrol.parentbackground.html BorderWidth controls/twincontrol.borderwidth.html BoundsLockCount controls/twincontrol.boundslockcount.html Brush controls/twincontrol.brush.html @@ -4793,6 +4804,7 @@ SetHeight controls/tdockzone.setheight.html SetLeft controls/tdockzone.setleft.html SetTop controls/tdockzone.settop.html + SetWidth controls/tdockzone.setwidth.html Create controls/tdockzone.create.html FindZone controls/tdockzone.findzone.html FirstVisibleChild controls/tdockzone.firstvisiblechild.html @@ -4822,7 +4834,6 @@ Width controls/tdockzone.width.html NextSibling controls/tdockzone.nextsibling.html PrevSibling controls/tdockzone.prevsibling.html - SetWidth controls/tdockzone.width.html TDockTree controls/tdocktree.html HitTest controls/tdocktree.hittest.html PaintDockFrame controls/tdocktree.paintdockframe.html @@ -6921,6 +6932,9 @@ BorderSpacing controls/tcontrol.borderspacing.html CellHintPriority grids/tcustomgrid.cellhintpriority.html Color controls/tcontrol.color.html + ColRowDraggingCursor grids/tcustomgrid.colrowdraggingcursor.html + ColRowDragIndicatorColor grids/tcustomgrid.colrowdragindicatorcolor.html + ColSizingCursor grids/tcustomgrid.colsizingcursor.html Constraints controls/tcontrol.constraints.html DataSource dbgrids/tcustomdbgrid.datasource.html DefaultDrawing grids/tcustomgrid.defaultdrawing.html @@ -7001,6 +7015,13 @@ Create dblogdlg/tlogindialog.create.html LoginDialogEx dblogdlg/logindialogex.html DefaultTranslator defaulttranslator/index.html + DialogRes dialogres/index.html + DialogResName dialogres/dialogresname.html + TDialogImage dialogres/tdialogimage.html + TDialogImageList dialogres/tdialogimagelist.html + Create dialogres/tdialogimagelist.create.html + DialogIcon dialogres/tdialogimagelist.dialogicon.html + DialogGlyphs dialogres/dialogglyphs.html Dialogs dialogs/index.html mtWarning dialogs/mtwarning.html mtError dialogs/mterror.html @@ -7110,6 +7131,7 @@ CheckFile dialogs/topendialog.checkfile.html CheckFileMustExist dialogs/topendialog.checkfilemustexist.html CheckAllFiles dialogs/topendialog.checkallfiles.html + DoExecute dialogs/topendialog.doexecute.html DefaultTitle dialogs/topendialog.defaulttitle.html Create dialogs/topendialog.create.html DoCanClose dialogs/topendialog.docanclose.html @@ -7120,25 +7142,25 @@ OnFolderChange dialogs/topendialog.onfolderchange.html OnSelectionChange dialogs/topendialog.onselectionchange.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DoExecute dialogs/tcommondialog.doexecute.html TSaveDialog dialogs/tsavedialog.html + DefaultTitle dialogs/tsavedialog.defaulttitle.html Create dialogs/tsavedialog.create.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DefaultTitle dialogs/topendialog.defaulttitle.html TSelectDirectoryDialog dialogs/tselectdirectorydialog.html + CheckFileMustExist dialogs/tselectdirectorydialog.checkfilemustexist.html + DefaultTitle dialogs/tselectdirectorydialog.defaulttitle.html + Create dialogs/tselectdirectorydialog.create.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CheckFileMustExist dialogs/topendialog.checkfilemustexist.html - DefaultTitle dialogs/tcommondialog.defaulttitle.html - Create dialogs/topendialog.create.html TColorDialog dialogs/tcolordialog.html + DefaultTitle dialogs/tcolordialog.defaulttitle.html Create dialogs/tcolordialog.create.html Destroy dialogs/tcolordialog.destroy.html Title dialogs/tcolordialog.title.html Color dialogs/tcolordialog.color.html CustomColors dialogs/tcolordialog.customcolors.html WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DefaultTitle dialogs/tcommondialog.defaulttitle.html TColorButton dialogs/tcolorbutton.html + DoAutoAdjustLayout dialogs/tcolorbutton.doautoadjustlayout.html DrawGlyph dialogs/tcolorbutton.drawglyph.html GetDisabledPattern dialogs/tcolorbutton.getdisabledpattern.html GetGlyphSize dialogs/tcolorbutton.getglyphsize.html @@ -7244,14 +7266,15 @@ DefaultTitle dialogs/treplacedialog.defaulttitle.html ReplaceClick dialogs/treplacedialog.replaceclick.html ReplaceAllClick dialogs/treplacedialog.replaceallclick.html + CreateForm dialogs/treplacedialog.createform.html + SetFormValues dialogs/treplacedialog.setformvalues.html + GetFormValues dialogs/treplacedialog.getformvalues.html Create dialogs/treplacedialog.create.html - CreateForm dialogs/tfinddialog.createform.html - SetFormValues dialogs/tfinddialog.setformvalues.html - GetFormValues dialogs/tfinddialog.getformvalues.html ReplaceText dialogs/tfinddialog.replacetext.html OnReplace dialogs/tfinddialog.onreplace.html TCustomPrinterSetupDialog dialogs/tcustomprintersetupdialog.html TCustomPrintDialog dialogs/tcustomprintdialog.html + Create dialogs/tcustomprintdialog.create.html Collate dialogs/tcustomprintdialog.collate.html Copies dialogs/tcustomprintdialog.copies.html FromPage dialogs/tcustomprintdialog.frompage.html @@ -7261,7 +7284,6 @@ PrintToFile dialogs/tcustomprintdialog.printtofile.html PrintRange dialogs/tcustomprintdialog.printrange.html ToPage dialogs/tcustomprintdialog.topage.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html TTaskDialogBaseButtonItem dialogs/ttaskdialogbasebuttonitem.html Client dialogs/ttaskdialogbasebuttonitem.client.html GetDisplayName dialogs/ttaskdialogbasebuttonitem.getdisplayname.html @@ -7309,6 +7331,7 @@ Text dialogs/tcustomtaskdialog.text.html Title dialogs/tcustomtaskdialog.title.html VerificationText dialogs/tcustomtaskdialog.verificationtext.html + Width dialogs/tcustomtaskdialog.width.html OnButtonClicked dialogs/tcustomtaskdialog.onbuttonclicked.html TTaskDialog dialogs/ttaskdialog.html Buttons dialogs/tcustomtaskdialog.buttons.html @@ -7325,6 +7348,7 @@ Text dialogs/tcustomtaskdialog.text.html Title dialogs/tcustomtaskdialog.title.html VerificationText dialogs/tcustomtaskdialog.verificationtext.html + Width dialogs/tcustomtaskdialog.width.html OnButtonClicked dialogs/tcustomtaskdialog.onbuttonclicked.html TCustomCopyToClipboardDialog dialogs/tcustomcopytoclipboarddialog.html DoCreate dialogs/tcustomcopytoclipboarddialog.docreate.html @@ -7498,13 +7522,13 @@ fOnFilterItemEx editbtn/tcustomcontrolfilteredit.fonfilteritemex.html fOnCheckItem editbtn/tcustomcontrolfilteredit.foncheckitem.html DestroyWnd editbtn/tcustomcontrolfilteredit.destroywnd.html + ActivateFilter editbtn/tcustomcontrolfilteredit.activatefilter.html DoDefaultFilterItem editbtn/tcustomcontrolfilteredit.dodefaultfilteritem.html DoFilterItem editbtn/tcustomcontrolfilteredit.dofilteritem.html EditKeyDown editbtn/tcustomcontrolfilteredit.editkeydown.html EditChange editbtn/tcustomcontrolfilteredit.editchange.html BuddyClick editbtn/tcustomcontrolfilteredit.buddyclick.html SortAndFilter editbtn/tcustomcontrolfilteredit.sortandfilter.html - ApplyFilter editbtn/tcustomcontrolfilteredit.applyfilter.html ApplyFilterCore editbtn/tcustomcontrolfilteredit.applyfiltercore.html MoveNext editbtn/tcustomcontrolfilteredit.movenext.html MovePrev editbtn/tcustomcontrolfilteredit.moveprev.html @@ -8324,10 +8348,14 @@ Canvas extctrls/tcustomimage.canvas.html DestRect extctrls/tcustomimage.destrect.html Invalidate extctrls/tcustomimage.invalidate.html + HasGraphic extctrls/tcustomimage.hasgraphic.html AntialiasingMode extctrls/tcustomimage.antialiasingmode.html Center extctrls/tcustomimage.center.html KeepOriginXWhenClipped extctrls/tcustomimage.keeporiginxwhenclipped.html KeepOriginYWhenClipped extctrls/tcustomimage.keeporiginywhenclipped.html + ImageIndex extctrls/tcustomimage.imageindex.html + ImageWidth extctrls/tcustomimage.imagewidth.html + Images extctrls/tcustomimage.images.html Picture extctrls/tcustomimage.picture.html Stretch extctrls/tcustomimage.stretch.html StretchOutEnabled extctrls/tcustomimage.stretchoutenabled.html @@ -8350,6 +8378,9 @@ OnMouseWheelDown controls/tcontrol.onmousewheeldown.html OnMouseWheelUp controls/tcontrol.onmousewheelup.html TImage extctrls/timage.html + ImageIndex extctrls/timage.imageindex.html + ImageWidth extctrls/timage.imagewidth.html + Images extctrls/timage.images.html AntialiasingMode extctrls/tcustomimage.antialiasingmode.html Align controls/tcontrol.align.html Anchors controls/tcontrol.anchors.html @@ -8495,7 +8526,7 @@ OnSelectionChanged extctrls/tcustomradiogroup.onselectionchanged.html OnStartDrag controls/tcontrol.onstartdrag.html OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBackground controls/twincontrol.parentbackground.html + ParentBackground ParentBidiMode controls/tcontrol.parentbidimode.html ParentFont controls/tcontrol.parentfont.html ParentColor controls/tcontrol.parentcolor.html @@ -8572,7 +8603,7 @@ OnResize controls/tcontrol.onresize.html OnStartDrag controls/tcontrol.onstartdrag.html OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBackground controls/twincontrol.parentbackground.html + ParentBackground ParentBiDiMode controls/tcontrol.parentbidimode.html ParentFont controls/tcontrol.parentfont.html ParentColor controls/tcontrol.parentcolor.html @@ -8700,6 +8731,7 @@ Paint extctrls/tcustompanel.paint.html SetParentBackground extctrls/tcustompanel.setparentbackground.html UpdateParentColorChange extctrls/tcustompanel.updateparentcolorchange.html + ShowAccelChar extctrls/tcustompanel.showaccelchar.html VerticalAlignment extctrls/tcustompanel.verticalalignment.html WordWrap extctrls/tcustompanel.wordwrap.html Create extctrls/tcustompanel.create.html @@ -8718,6 +8750,7 @@ CMParentColorChanged controls/tcontrol.cmparentcolorchanged.html GetDefaultDockCaption controls/tcontrol.getdefaultdockcaption.html TPanel extctrls/tpanel.html + ShowAccelChar extctrls/tcustompanel.showaccelchar.html UseDockManager extctrls/tpanel.usedockmanager.html Align extctrls/tcustompanel.align.html Alignment extctrls/tcustompanel.alignment.html @@ -9523,6 +9556,10 @@ WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html TScrollBox forms/tscrollbox.html + SetParentBackground forms/tscrollbox.setparentbackground.html + CMParentColorChanged forms/tscrollbox.cmparentcolorchanged.html + Loaded forms/tscrollbox.loaded.html + UpdateParentColorChange forms/tscrollbox.updateparentcolorchange.html Create forms/tscrollbox.create.html AutoScroll forms/tscrollbox.autoscroll.html BorderStyle forms/tscrollbox.borderstyle.html @@ -9946,12 +9983,12 @@ TCustomDockForm forms/tcustomdockform.html DoAddDockClient forms/tcustomdockform.doadddockclient.html DoRemoveDockClient forms/tcustomdockform.doremovedockclient.html + GetSiteInfo forms/tcustomdockform.getsiteinfo.html Loaded forms/tcustomdockform.loaded.html Create forms/tcustomdockform.create.html AutoScroll forms/tcustomdockform.autoscroll.html BorderStyle forms/tcustomdockform.borderstyle.html FormStyle forms/tcustomdockform.formstyle.html - GetSiteInfo controls/twincontrol.getsiteinfo.html PixelsPerInch forms/tcustomdesigncontrol.pixelsperinch.html THintWindow forms/thintwindow.html WMNCHitTest forms/thintwindow.wmnchittest.html @@ -10192,6 +10229,10 @@ RemoveOnShowHintHandler forms/tapplication.removeonshowhinthandler.html AddOnGetMainFormHandleHandler forms/tapplication.addongetmainformhandlehandler.html RemoveOnGetMainFormHandleHandler forms/tapplication.removeongetmainformhandlehandler.html + AddOnActionExecuteHandler forms/tapplication.addonactionexecutehandler.html + RemoveOnActionExecuteHandler forms/tapplication.removeonactionexecutehandler.html + AddOnActionUpdateHandler forms/tapplication.addonactionupdatehandler.html + RemoveOnActionUpdateHandler forms/tapplication.removeonactionupdatehandler.html RemoveAllHandlersOfObject forms/tapplication.removeallhandlersofobject.html DoBeforeMouseMessage forms/tapplication.dobeforemousemessage.html IsShortcut forms/tapplication.isshortcut.html @@ -10299,6 +10340,8 @@ SetOnHint forms/tapplicationproperties.setonhint.html SetOnShowHint forms/tapplicationproperties.setonshowhint.html SetOnUserInput forms/tapplicationproperties.setonuserinput.html + SetOnActionExecute forms/tapplicationproperties.setonactionexecute.html + SetOnActionUpdate forms/tapplicationproperties.setonactionupdate.html Create forms/tapplicationproperties.create.html Destroy forms/tapplicationproperties.destroy.html ExceptionDialog forms/tapplicationproperties.exceptiondialog.html @@ -10332,6 +10375,8 @@ OnHint forms/tapplication.onhint.html OnShowHint forms/tapplication.onshowhint.html OnUserInput forms/tapplication.onuserinput.html + OnActionExecute forms/tapplication.onactionexecute.html + OnActionUpdate forms/tapplication.onactionupdate.html TIDesigner forms/tidesigner.html FLookupRoot forms/tidesigner.flookuproot.html FDefaultFormBoundsValid forms/tidesigner.fdefaultformboundsvalid.html @@ -11355,6 +11400,7 @@ DrawVerticalGradient graphutil/drawverticalgradient.html DrawGradientWindow graphutil/drawgradientwindow.html AntiAliasedStretchDrawBitmap graphutil/antialiasedstretchdrawbitmap.html + BitmapGrayscale graphutil/bitmapgrayscale.html DrawArrow graphutil/drawarrow.html FloodFill graphutil/floodfill.html ScaleImg graphutil/scaleimg.html @@ -11447,6 +11493,7 @@ TSizingRec grids/tsizingrec.html TGridDataCache grids/tgriddatacache.html TGridCursorState grids/tgridcursorstate.html + TGridScrollerDoScroll grids/tgridscrollerdoscroll.html TGetEditEvent grids/tgeteditevent.html TSetEditEvent grids/tseteditevent.html TGetCheckboxStateEvent grids/tgetcheckboxstateevent.html @@ -11632,6 +11679,10 @@ Items grids/tgridcolumns.items.html VisibleCount grids/tgridcolumns.visiblecount.html Enabled grids/tgridcolumns.enabled.html + TGridScroller grids/tgridscroller.html + Create grids/tgridscroller.create.html + Destroy grids/tgridscroller.destroy.html + Start grids/tgridscroller.start.html TCustomGrid grids/tcustomgrid.html fGridState grids/tcustomgrid.fgridstate.html RTLSign grids/tcustomgrid.rtlsign.html @@ -13057,6 +13108,7 @@ AppRemoveStayOnTopFlags interfacebase/twidgetset.appremovestayontopflags.html AppRestoreStayOnTopFlags interfacebase/twidgetset.apprestorestayontopflags.html AppSetMainFormOnTaskBar interfacebase/twidgetset.appsetmainformontaskbar.html + AppSetupMainForm interfacebase/twidgetset.appsetupmainform.html LCLPlatform interfacebase/twidgetset.lclplatform.html GetLCLCapability interfacebase/twidgetset.getlclcapability.html DCGetPixel interfacebase/twidgetset.dcgetpixel.html @@ -13711,6 +13763,7 @@ DoDrawImage lazcanvas/tlazcanvas.dodrawimage.html CanvasCopyRect lazcanvas/tlazcanvas.canvascopyrect.html FillColor lazcanvas/tlazcanvas.fillcolor.html + Polygon lazcanvas/tlazcanvas.polygon.html AssignPenData lazcanvas/tlazcanvas.assignpendata.html AssignBrushData lazcanvas/tlazcanvas.assignbrushdata.html AssignFontData lazcanvas/tlazcanvas.assignfontdata.html @@ -14574,6 +14627,8 @@ TLCLPlatform lclplatformdef/tlclplatform.html TLCLPlatforms lclplatformdef/tlclplatforms.html DirNameToLCLPlatform lclplatformdef/dirnametolclplatform.html + DirNameToDisplayName lclplatformdef/dirnametodisplayname.html + DisplayNameToDirName lclplatformdef/displaynametodirname.html GetBuildLCLWidgetType lclplatformdef/getbuildlclwidgettype.html BuildLCLWidgetType lclplatformdef/buildlclwidgettype.html LCLProc lclproc/index.html @@ -18389,8 +18444,15 @@ TObjectTypes shellctrls/tobjecttypes.html TFileSortType shellctrls/tfilesorttype.html TMaskCaseSensitivity shellctrls/tmaskcasesensitivity.html + TExpandCollapseMode shellctrls/texpandcollapsemode.html + TFileItemCompareEvent shellctrls/tfileitemcompareevent.html TAddItemEvent shellctrls/tadditemevent.html TCSLVFileAddedEvent shellctrls/tcslvfileaddedevent.html + TFileItem shellctrls/tfileitem.html + isFolder shellctrls/tfileitem.isfolder.html + Create shellctrls/tfileitem.create.html + BasePath shellctrls/tfileitem.basepath.html + FileInfo shellctrls/tfileitem.fileinfo.html TCustomShellTreeView shellctrls/tcustomshelltreeview.html WSRegisterClass DoCreateNodeClass shellctrls/tcustomshelltreeview.docreatenodeclass.html @@ -18400,9 +18462,11 @@ DoSelectionChanged shellctrls/tcustomshelltreeview.doselectionchanged.html DoAddItem shellctrls/tcustomshelltreeview.doadditem.html CanExpand shellctrls/tcustomshelltreeview.canexpand.html + Collapse shellctrls/tcustomshelltreeview.collapse.html DrawBuiltInIcon shellctrls/tcustomshelltreeview.drawbuiltinicon.html GetBuiltinIconSize shellctrls/tcustomshelltreeview.getbuiltiniconsize.html NodeHasChildren shellctrls/tcustomshelltreeview.nodehaschildren.html + ExpandCollapseMode shellctrls/tcustomshelltreeview.expandcollapsemode.html Create shellctrls/tcustomshelltreeview.create.html Destroy shellctrls/tcustomshelltreeview.destroy.html GetBasePath shellctrls/tcustomshelltreeview.getbasepath.html @@ -18417,8 +18481,10 @@ Root shellctrls/tcustomshelltreeview.root.html Path shellctrls/tcustomshelltreeview.path.html OnAddItem shellctrls/tcustomshelltreeview.onadditem.html + OnSortCompare shellctrls/tcustomshelltreeview.onsortcompare.html Items comctrls/tcustomtreeview.items.html TShellTreeView shellctrls/tshelltreeview.html + ExpandCollapseMode shellctrls/tshelltreeview.expandcollapsemode.html ParentColor shellctrls/tshelltreeview.parentcolor.html TabStop shellctrls/tshelltreeview.tabstop.html Tag shellctrls/tshelltreeview.tag.html @@ -18493,6 +18559,7 @@ OnMouseWheelRight controls/tcontrol.onmousewheelright.html OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html OnShowHint controls/tcontrol.onshowhint.html + OnSortCompare shellctrls/tcustomshelltreeview.onsortcompare.html OnUTF8KeyPress controls/twincontrol.onutf8keypress.html Options comctrls/tcustomtreeview.options.html TreeLineColor comctrls/tcustomtreeview.treelinecolor.html @@ -18597,6 +18664,7 @@ Root shellctrls/tcustomshelllistview.root.html ShellTreeView shellctrls/tcustomshelllistview.shelltreeview.html TShellTreeNode shellctrls/tshelltreenode.html + FFileInfo shellctrls/tshelltreenode.ffileinfo.html SetBasePath shellctrls/tshelltreenode.setbasepath.html ShortFilename shellctrls/tshelltreenode.shortfilename.html FullFilename shellctrls/tshelltreenode.fullfilename.html @@ -20175,6 +20243,8 @@ IsMixed themes/tthemeservices.ismixed.html GetElementDetails themes/tthemeservices.getelementdetails.html GetDetailSize themes/tthemeservices.getdetailsize.html + GetDetailSizeForWindow themes/tthemeservices.getdetailsizeforwindow.html + GetDetailSizeForPPI themes/tthemeservices.getdetailsizeforppi.html GetDetailRegion themes/tthemeservices.getdetailregion.html GetStockImage themes/tthemeservices.getstockimage.html GetOption themes/tthemeservices.getoption.html @@ -22361,6 +22431,7 @@ 3MAppRemoveStayOnTopFlags 3MAppRestoreStayOnTopFlags 3MAppSetMainFormOnTaskBar +3MAppSetupMainForm 3MLCLPlatform 3MGetLCLCapability 3MDCGetPixel @@ -22997,6 +23068,8 @@ 3MIsMixed 3MGetElementDetails 3MGetDetailSize +3MGetDetailSizeForWindow +3MGetDetailSizeForPPI 3MGetDetailRegion 3MGetStockImage 3MGetOption @@ -24738,6 +24811,7 @@ 3MSetReplacingControl 3MAutoFreeByControl 3MIsEnabledControl +3MCanBeDoubleDocked #lcl.Controls.TSizeConstraints #rtl.Classes.TPersistent 1VFControl 1VFMaxHeight @@ -25226,6 +25300,7 @@ 2MUpdateMouseCursor 2MChanged 2MGetPalette +2MGetParentBackground 2MChildClassAllowed 2MReadState 2MLoaded @@ -25247,6 +25322,7 @@ 2MSetHint 2MSetName 2MSetParent +2MSetParentBackground 2MSetParentComponent 2MWndProc 2MParentFormHandleInitialized @@ -25288,6 +25364,7 @@ 2PDragKind rw 2PDragMode rw 2PMouseCapture rw +2PParentBackground rw 2PParentColor rw 2PParentFont rw 2PParentShowHint rw @@ -25437,8 +25514,10 @@ 3MRemoveHandlerOnVisibleChanging 3MAddHandlerOnVisibleChanged 3MRemoveHandlerOnVisibleChanged +3MAddHandlerOnEnabledChanging +3MRemoveHandlerOnEnabledChanging 3MAddHandlerOnEnabledChanged -3MRemoveHandlerOnEnableChanging +3MRemoveHandlerOnEnabledChanged 3MAddHandlerOnKeyDown 3MRemoveHandlerOnKeyDown 3MAddHandlerOnBeforeDestruction @@ -25743,7 +25822,6 @@ 2MGetClientRect 2MGetControlOrigin 2MGetDeviceContext -2MGetParentBackground 2MIsControlMouseMsg 2MCreateHandle 2MCreateParams @@ -25767,7 +25845,6 @@ 2MSetBorderStyle 2MSetColor 2MSetChildZPosition -2MSetParentBackground 2MShowControl 2MUpdateControlState 2MUpdateShowing @@ -25777,7 +25854,6 @@ 2PBorderStyle rw 2POnGetSiteInfo rw 2POnGetDockCaption rw -2PParentBackground rw 3PBorderWidth rw 3PBoundsLockCount r 3PBrush r @@ -27889,6 +27965,10 @@ 4PVertScrollBar rw #lcl.Forms.TScrollBox #lcl.Forms.TScrollingWinControl 2MWSRegisterClass +2MSetParentBackground +2MCMParentColorChanged +2MLoaded +2MUpdateParentColorChange 3MCreate 4PAlign 4PAnchors @@ -28869,6 +28949,10 @@ 3MRemoveOnShowHintHandler 3MAddOnGetMainFormHandleHandler 3MRemoveOnGetMainFormHandleHandler +3MAddOnActionExecuteHandler +3MRemoveOnActionExecuteHandler +3MAddOnActionUpdateHandler +3MRemoveOnActionUpdateHandler 3MRemoveAllHandlersOfObject 3MDoBeforeMouseMessage 3MIsShortcut @@ -28976,6 +29060,8 @@ 1VFOnQueryEndSession 1VFOnMinimize 1VFOnRestore +1VFOnActionExecute +1VFOnActionUpdate 1MSetExceptionDialog 2MSetCaptureExceptions 2MSetHelpFile @@ -29007,6 +29093,8 @@ 2MSetOnHint 2MSetOnShowHint 2MSetOnUserInput +2MSetOnActionExecute +2MSetOnActionUpdate 3MCreate 3MDestroy 4PCaptureExceptions rw @@ -29040,6 +29128,8 @@ 4POnHint rw 4POnShowHint rw 4POnUserInput rw +4POnActionExecute rw +4POnActionUpdate rw #lcl.Forms.TIDesigner #rtl.System.TObject 2VFLookupRoot 2VFDefaultFormBoundsValid @@ -29541,6 +29631,7 @@ 1MSetButtonColorAutoSize 1MSetButtonColorSize 2MWSRegisterClass +2MDoAutoAdjustLayout 2MDrawGlyph 2MGetDisabledPattern 2MGetGlyphSize @@ -29746,6 +29837,7 @@ 1VFText 1VFTitle 1VFVerificationText +1VFWidth 1VFOnButtonClicked 1MDoOnButtonClickedHandler 1MSetButtons @@ -29773,6 +29865,7 @@ 3PText rw 3PTitle rw 3PVerificationText rw +3PWidth rw 3POnButtonClicked rw #lcl.Dialogs.TTaskDialog #lcl.Dialogs.TCustomTaskDialog 4PButtons @@ -29789,6 +29882,7 @@ 4PText 4PTitle 4PVerificationText +4PWidth 4POnButtonClicked #lcl.Dialogs.TCustomCopyToClipboardDialog #lcl.Forms.TForm 2MDoCreate @@ -29899,6 +29993,7 @@ 3MLoadGlyphFromResourceName 3MLoadGlyphFromLazarusResource 3MLoadGlyphFromStock +3MLoadGlyphFromResource 3MCanShowGlyph 3PCaption s 3PDefaultCaption rw @@ -30581,6 +30676,9 @@ 4POnStartDrag #lcl.ExtCtrls.TCustomImage #lcl.Controls.TGraphicControl 1VFAntialiasingMode +1VFImageIndex +1VFImages +1VFImageWidth 1VFOnPictureChanged 1VFOnPaintBackground 1VFPicture @@ -30595,7 +30693,11 @@ 1VFUseAncestorCanvas 1VFPainting 1MGetCanvas +1MGetHasGraphic 1MSetAntialiasingMode +1MSetImageIndex +1MSetImages +1MSetImageWidth 1MSetPicture 1MSetCenter 1MSetKeepOriginX @@ -30615,6 +30717,7 @@ 3PCanvas r 3MDestRect 3MInvalidate +3PHasGraphic r 3PAntialiasingMode rw 3PAlign 3PAutoSize @@ -30622,6 +30725,9 @@ 3PKeepOriginXWhenClipped rw 3PKeepOriginYWhenClipped rw 3PConstraints +3PImageIndex rw +3PImageWidth rw +3PImages rw 3PPicture rw 3PVisible 3POnClick @@ -30653,6 +30759,9 @@ 4PDragCursor 4PDragMode 4PEnabled +4PImageIndex +4PImageWidth +4PImages 4POnChangeBounds 4POnClick 4POnContextPopup @@ -31053,6 +31162,7 @@ 1VFAlignment 1VFVertAlignment 1VFFullRepaint +1VFShowAccelChar 1VFWordWrap 1MPaintBevel 1MSetAlignment @@ -31060,6 +31170,7 @@ 1MSetBevelInner 1MSetBevelOuter 1MSetBevelWidth +1MSetShowAccelChar 1MSetVertAlignment 1MSetWordwrap 2MWSRegisterClass @@ -31072,6 +31183,7 @@ 2MPaint 2MSetParentBackground 2MUpdateParentColorChange +2PShowAccelChar rw 2PVerticalAlignment rw 2PWordWrap rw 3MCreate @@ -31120,6 +31232,7 @@ 4PParentFont 4PParentShowHint 4PPopupMenu +4PShowAccelChar 4PShowHint 4PTabOrder 4PTabStop @@ -31609,6 +31722,12 @@ 3VCombo 3VEdit 3VVerif +#lcl.DialogRes.TDialogImageList #lcl.ImgList.TLCLGlyphs +1VfDialogIndexes +1MLoadImage +1MGetDialogIcon +3MCreate +3PDialogIcon r #lcl.ComCtrls.TStatusPanel #rtl.Classes.TCollectionItem 1VFBidiMode 1VFText @@ -33613,7 +33732,6 @@ 1MSetMin 1MSetOrientation 1MSetPageSize -1MSetParams 1MSetPosition 1MSetReversed 1MSetScalePos @@ -33634,6 +33752,7 @@ 2MShouldAutoAdjust 3MCreate 3MSetTick +3MSetParams 4PAutoSize 4PFrequency rw 4PLineSize rw @@ -34038,6 +34157,7 @@ 1VFOnNodeChanged 1VFOnSelectionChanged 1VFOptions +1VFPathDelimiter 1VFRClickNode 1VFSaveItems 1VFScrollBars @@ -34147,8 +34267,11 @@ 1MAllowMultiSelectWithShift 1MSetExpandSignSize 1MSetExpandSignWidth +2MTFindOption +2MTFindOptions 2VFChangeTimer 2VFEditor +2VFFindOptions 2MWSRegisterClass 2MGetControlClassDefaultSize 2MAdded @@ -34266,6 +34389,7 @@ 2POnHasChildren rw 2POnNodeChanged rw 2POnSelectionChanged rw +2PPathDelimiter rw 2PReadOnly rw 2PRightClickSelect rw 2PRowSelect rw @@ -35194,6 +35318,8 @@ 1MSetReadOnly 1MSetValueChecked 1MSetValueUnchecked +1MNonDefaultValueChecked +1MNonDefaultValueUnchecked 1MCMGetDataLink 2MGetFieldCheckState 2MDataChange @@ -35254,8 +35380,8 @@ 4PShowHint 4PTabOrder 4PTabStop -4PValueChecked rw -4PValueUnchecked rw +4PValueChecked rws +4PValueUnchecked rws 4PVisible #lcl.DBCtrls.TCustomDBComboBox #lcl.StdCtrls.TCustomComboBox 1VFDataLink @@ -36535,6 +36661,9 @@ 4PBorderStyle 4PCellHintPriority 4PColor +4PColRowDraggingCursor +4PColRowDragIndicatorColor +4PColSizingCursor 4PColumns 4PConstraints 4PDataSource @@ -36915,6 +37044,14 @@ 3PItems rw 3PVisibleCount r 3PEnabled r +#lcl.Grids.TGridScroller #rtl.System.TObject +1VDir +1VTimer +1VCallback +1MTimerTick +3MCreate +3MDestroy +3MStart #lcl.Grids.TCustomGrid #lcl.Controls.TCustomControl 1VFAlternateColor 1VFAutoAdvance @@ -37031,6 +37168,7 @@ 1VFSavedHint 1VFCellHintPriority 1VFOnGetCellHint +1VFScroller 1MAdjustCount 1MCacheVisibleGrid 1MCancelSelection @@ -37052,6 +37190,8 @@ 1MSetAltColorStartNormal 1MSetFlat 1MSetFocusRectVisible +1MScrollerDoScroll +1MSetScroller 1MSetTitleImageList 1MSetTitleImageListWidth 1MSetTitleFont @@ -38422,17 +38562,27 @@ 4POnStartDrag 4POnSelect 4POnUTF8KeyPress +#lcl.ShellCtrls.TFileItem #rtl.System.TObject +1VFFileInfo +1VFBasePath +3VisFolder +3MCreate +3PBasePath r +3PFileInfo rw #lcl.ShellCtrls.TCustomShellTreeView #lcl.ComCtrls.TCustomTreeView 1VFObjectTypes 1VFRoot 1VFShellListView +1VFExpandCollapseMode 1VFFileSortType 1VFInitialRoot 1VFUseBuiltinIcons 1VFOnAddItem +1VFOnSortCompare 1MGetPath 1MSetFileSortType 1MSetObjectTypes +1MSetOnSortCompare 1MSetPath 1MSetRoot 1MSetShellListView @@ -38445,9 +38595,11 @@ 2MDoSelectionChanged 2MDoAddItem 2MCanExpand +2MCollapse 2MDrawBuiltInIcon 2MGetBuiltinIconSize 2MNodeHasChildren +2PExpandCollapseMode rw 3MCreate 3MDestroy 3MGetBasePath @@ -38462,6 +38614,7 @@ 3PRoot rw 3PPath rw 3POnAddItem rw +3POnSortCompare rw 3PItems #lcl.ShellCtrls.TShellTreeView #lcl.ShellCtrls.TCustomShellTreeView 4PAlign @@ -38474,6 +38627,7 @@ 4PColor 4PConstraints 4PEnabled +4PExpandCollapseMode 4PExpandSignType 4PFont 4PFileSortType @@ -38538,6 +38692,7 @@ 4POnMouseWheelRight 4POnSelectionChanged 4POnShowHint +4POnSortCompare 4POnUTF8KeyPress 4POptions 4PTreeLineColor @@ -38656,8 +38811,8 @@ 4PRoot 4PShellTreeView #lcl.ShellCtrls.TShellTreeNode #lcl.ComCtrls.TTreeNode -1VFFileInfo 1VFBasePath +2VFFileInfo 2MSetBasePath 3MShortFilename 3MFullFilename @@ -40316,14 +40471,17 @@ 4PTextHint 4PVisible #lcl.EditBtn.TCustomControlFilterEdit #lcl.EditBtn.TCustomEditButton -1VfFilter 1VfFilterLowercase 1VfFilterOptions 1VfIdleConnected 1VfSortData 1VfIsFirstSetFormActivate 1VfOnAfterFilter +1MApplyFilter +1MGetFilter 1MSetFilter +1MSetFilterOptions +1MSetSortData 1MSetIdleConnected 1MOnIdle 1MIsTextHintStored @@ -40334,13 +40492,13 @@ 2VfOnFilterItemEx 2VfOnCheckItem 2MDestroyWnd +2MActivateFilter 2MDoDefaultFilterItem 2MDoFilterItem 2MEditKeyDown 2MEditChange 2MBuddyClick 2MSortAndFilter -2MApplyFilter 2MApplyFilterCore 2MMoveNext 2MMovePrev @@ -41246,7 +41404,6 @@ 1MInitialize 1MKeepInView 1MReturnDate -2MPaint #lcl.JSONPropStorage.TCustomJSONPropStorage #lcl.Forms.TFormPropertyStorage 1VFCount 1VFJSONFileName @@ -41816,6 +41973,7 @@ 1VFAssignedFont 1VFAssignedPen 1VFBaseWindowOrg +1VFPolygonWindingMode 1VFWindowOrg 1VGraphicStateList 1MGetAssignedBrush @@ -41848,6 +42006,7 @@ 3MDoDrawImage 3MCanvasCopyRect 3MFillColor +3MPolygon 3MAssignPenData 3MAssignBrushData 3MAssignFontData diff -Nru lazarus-2.2.4+dfsg1/ide/lazarus.lpi lazarus-2.2.6+dfsg1/ide/lazarus.lpi --- lazarus-2.2.4+dfsg1/ide/lazarus.lpi 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/ide/lazarus.lpi 2023-03-04 14:24:25.000000000 +0100 @@ -25,7 +25,7 @@ <UseVersionInfo Value="True"/> <MajorVersionNr Value="2"/> <MinorVersionNr Value="2"/> - <RevisionNr Value="4"/> + <RevisionNr Value="6"/> <CharSet Value="04B0"/> <StringTable ProductName="Lazarus IDE"/> </VersionInfo> Binary files /tmp/IdHZXXQ1G9/lazarus-2.2.4+dfsg1/ide/lazarus.res and /tmp/5arYyC9vuS/lazarus-2.2.6+dfsg1/ide/lazarus.res differ diff -Nru lazarus-2.2.4+dfsg1/ide/version.inc lazarus-2.2.6+dfsg1/ide/version.inc --- lazarus-2.2.4+dfsg1/ide/version.inc 2022-09-25 12:37:17.000000000 +0200 +++ lazarus-2.2.6+dfsg1/ide/version.inc 2023-03-04 14:24:25.000000000 +0100 @@ -1 +1 @@ -'2.2.4' +'2.2.6' diff -Nru lazarus-2.2.4+dfsg1/languages/lazaruside.sk.po lazarus-2.2.6+dfsg1/languages/lazaruside.sk.po --- lazarus-2.2.4+dfsg1/languages/lazaruside.sk.po 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/languages/lazaruside.sk.po 2023-03-04 14:24:25.000000000 +0100 @@ -3,7 +3,7 @@ "Project-Id-Version: lazaruside\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-26 15:21+0100\n" -"PO-Revision-Date: 2022-06-10 10:51+0200\n" +"PO-Revision-Date: 2022-12-09 10:55+0100\n" "Last-Translator: Slavko <slavino@slavino.sk>\n" "Language-Team: Slovenský <sk@li.org>\n" "MIME-Version: 1.0\n" @@ -682,7 +682,7 @@ #: lazarusidestrconsts.dlgaddnewmode msgid "Add new mode" -msgstr "" +msgstr "Pridať nový režim" #: lazarusidestrconsts.dlgaddsemicolon msgid "Add semicolon" @@ -757,7 +757,7 @@ #: lazarusidestrconsts.dlgautohidecursor msgid "Hide mouse pointer when typing" -msgstr "" +msgstr "Pri písaní skryť ukazovateľ myši" #: lazarusidestrconsts.dlgautoindent msgctxt "lazarusidestrconsts.dlgautoindent" @@ -1649,7 +1649,6 @@ msgstr "" #: lazarusidestrconsts.dlgedmisc -#, fuzzy msgctxt "lazarusidestrconsts.dlgedmisc" msgid "Miscellaneous" msgstr "Rôzne" @@ -2906,7 +2905,7 @@ #: lazarusidestrconsts.dlgmouseoptions msgctxt "lazarusidestrconsts.dlgmouseoptions" msgid "Mouse" -msgstr "" +msgstr "Myš" #: lazarusidestrconsts.dlgmouseoptionsadv msgid "Advanced" @@ -4720,11 +4719,11 @@ #: lazarusidestrconsts.lisaddanewseparatoraboveselecteditem msgid "Add a new separator above selected item" -msgstr "" +msgstr "Pridať nový oddeľovač nad vybratú položku" #: lazarusidestrconsts.lisaddanewseparatorbelowselecteditem msgid "Add a new separator below selected item" -msgstr "" +msgstr "Pridať nový oddeľovač pod vybratú položku" #: lazarusidestrconsts.lisadddelphidefine msgid "Add defines simulating Delphi7" @@ -4791,7 +4790,7 @@ #: lazarusidestrconsts.lisaddnewmacro msgid "Add new macro" -msgstr "" +msgstr "Pridať nové makro" #: lazarusidestrconsts.lisaddnewset msgid "Add new set" @@ -5150,7 +5149,7 @@ #: lazarusidestrconsts.lisautomatically msgid "Automatically" -msgstr "" +msgstr "Automaticky" #: lazarusidestrconsts.lisautomaticallyconvertlfmtolrs msgid "Automatically convert .lfm files to .lrs resource files" @@ -5214,7 +5213,7 @@ #: lazarusidestrconsts.lisavailableforinstallation msgid "Available for installation" -msgstr "" +msgstr "Dostupné na inštaláciu" #: lazarusidestrconsts.lisavailableprojectbuildmodes msgid "Available project build modes:" @@ -5372,7 +5371,7 @@ #: lazarusidestrconsts.lisbtndlgadd msgid "&Add ..." -msgstr "" +msgstr "Prid&ať ..." #: lazarusidestrconsts.lisbtndlgreplace msgctxt "lazarusidestrconsts.lisbtndlgreplace" @@ -6372,7 +6371,7 @@ #: lazarusidestrconsts.liscleancommonfiles msgid "Clean common files" -msgstr "" +msgstr "Vyčistiť bežné súbory" #: lazarusidestrconsts.liscleanlazarussource msgid "Clean Lazarus Source" @@ -6384,7 +6383,7 @@ #: lazarusidestrconsts.liscleanup msgid "Clean up" -msgstr "" +msgstr "Vyčistiť" #: lazarusidestrconsts.liscleanupandbuild msgctxt "lazarusidestrconsts.liscleanupandbuild" @@ -6398,7 +6397,7 @@ #: lazarusidestrconsts.liscleanuppackage #, object-pascal-format msgid "Clean up package \"%s\"." -msgstr "" +msgstr "Vyčistiť balíček \"%s\"." #: lazarusidestrconsts.liscleanupunitpath msgid "Clean up unit path?" @@ -6423,7 +6422,7 @@ #: lazarusidestrconsts.lisclicktoseethechoices msgid "Click to see the choices" -msgstr "" +msgstr "Kliknutím zobraziť možnosti" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -6431,7 +6430,7 @@ #: lazarusidestrconsts.lisclone msgid "Clone" -msgstr "" +msgstr "Klonovať" #: lazarusidestrconsts.lisclose msgctxt "lazarusidestrconsts.lisclose" @@ -6491,7 +6490,7 @@ #: lazarusidestrconsts.liscmppages msgid "Pages" -msgstr "" +msgstr "Stránky" #: lazarusidestrconsts.liscmppalettevisible msgid "Palette is &visible" @@ -7070,7 +7069,7 @@ #: lazarusidestrconsts.liscodetoolsoptsbracket msgid "Bracket" -msgstr "" +msgstr "Zátvorka" #: lazarusidestrconsts.liscodetoolsoptscaret msgid "Caret (^)" @@ -8141,7 +8140,7 @@ #: lazarusidestrconsts.liscreatefilter msgid "Create Filter" -msgstr "" +msgstr "Vytvoriť filter" #: lazarusidestrconsts.liscreatefppkgconfig msgid "Restore Fppkg configuration" @@ -8182,7 +8181,7 @@ #: lazarusidestrconsts.liscreateupdatepofilewhensavingalfmfile msgid "Create/update .po file when saving a lfm file" -msgstr "" +msgstr "Vytvoriť/aktualizovať súbor .po pri ukladaní súboru lfm" #: lazarusidestrconsts.liscreatingfileindexoffpcsources #, object-pascal-format @@ -8309,7 +8308,7 @@ #: lazarusidestrconsts.lisdadimagename msgid "Image Name" -msgstr "" +msgstr "Názov obrázka" #: lazarusidestrconsts.lisdadpid msgid "PID" @@ -8532,7 +8531,7 @@ #: lazarusidestrconsts.lisdebugoptionsfrmaddexception msgid "Add Exception" -msgstr "" +msgstr "Pridať výnimku" #: lazarusidestrconsts.lisdebugoptionsfrmadditionalsearchpath msgid "Additional search path" @@ -8632,14 +8631,13 @@ msgstr "Modul" #: lazarusidestrconsts.lisdebugoptionsfrmname -#, fuzzy msgctxt "lazarusidestrconsts.lisdebugoptionsfrmname" msgid "Name:" msgstr "Meno:" #: lazarusidestrconsts.lisdebugoptionsfrmnotifyonlazarusexceptions msgid "Notify on Exceptions" -msgstr "" +msgstr "Upozorniť pri výnimkách" #: lazarusidestrconsts.lisdebugoptionsfrmosexceptions msgid "OS Exceptions" @@ -8818,7 +8816,7 @@ #: lazarusidestrconsts.lisdeletemacro #, object-pascal-format msgid "Delete macro \"%s\"?" -msgstr "" +msgstr "Zmazať makro \"%s\"?" #: lazarusidestrconsts.lisdeletemode #, object-pascal-format @@ -8832,7 +8830,7 @@ #: lazarusidestrconsts.lisdeleteoldfile2 msgid "Delete old file?" -msgstr "Zmazať staré súbory?" +msgstr "Zmazať starý súbor?" #: lazarusidestrconsts.lisdeleteselectedmacro msgid "Delete selected macro?" @@ -8947,11 +8945,11 @@ #: lazarusidestrconsts.lisdirectories msgid "Directories" -msgstr "" +msgstr "Adresáre" #: lazarusidestrconsts.lisdirectory msgid "Directory: " -msgstr "" +msgstr "Adresár:" #: lazarusidestrconsts.lisdirectorynotfound #, object-pascal-format @@ -9047,7 +9045,7 @@ #: lazarusidestrconsts.lisdiscardchangescreatenewproject msgid "Discard changes, create new project" -msgstr "" +msgstr "Zahodiť zmeny, vytvoriť nový projekt" #: lazarusidestrconsts.lisdiskdiffclickononeoftheaboveitemstoseethediff msgid "Click on one of the above items to see the diff" @@ -9079,8 +9077,6 @@ msgstr "Rozoznávať veľké a malé písmená, napr. C a c" #: lazarusidestrconsts.lisdlgadd -#, fuzzy -#| msgid "Add..." msgctxt "lazarusidestrconsts.lisdlgadd" msgid "Add ..." msgstr "Pridať..." @@ -9112,7 +9108,7 @@ #: lazarusidestrconsts.lisdlgimport msgctxt "lazarusidestrconsts.lisdlgimport" msgid "Import ..." -msgstr "" +msgstr "Importovať ..." #: lazarusidestrconsts.lisdlgmore msgctxt "lazarusidestrconsts.lisdlgmore" @@ -9770,7 +9766,7 @@ #: lazarusidestrconsts.liserroropeningform msgid "Error opening form" -msgstr "" +msgstr "Chyba otvárania formulára" #: lazarusidestrconsts.liserrorparsinglfmcomponentstream msgid "Error parsing lfm component stream." @@ -9786,10 +9782,9 @@ msgstr "Chyba čítania XML" #: lazarusidestrconsts.liserrorreadingxmlfile -#, object-pascal-format, fuzzy, badformat -#| msgid "Error reading xml file %s%s%s%s%s" +#, object-pascal-format msgid "Error reading xml file \"%s\"%s%s" -msgstr "Chyba čítania XML súboru %s%s%s%s%s" +msgstr "Chyba čítania XML súboru \"%s\"%s%s" #: lazarusidestrconsts.liserrorrenamingfile msgid "Error renaming file" @@ -9803,7 +9798,7 @@ #: lazarusidestrconsts.liserrors2 #, object-pascal-format msgid ", Errors: %s" -msgstr "" +msgstr ", Chyby: %s" #: lazarusidestrconsts.liserrorsavingform msgid "Error saving form" @@ -9964,7 +9959,7 @@ #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" -msgstr "" +msgstr "Exportovať všetky položky do súboru" #: lazarusidestrconsts.lisexportenvironmentoptions msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" @@ -9989,7 +9984,7 @@ #: lazarusidestrconsts.lisexportselected msgid "Export selected" -msgstr "" +msgstr "Exportovať vybraté" #: lazarusidestrconsts.lisexportsub msgid "Export >>" @@ -10106,7 +10101,7 @@ #: lazarusidestrconsts.lisfilefilters msgid "File Filters" -msgstr "" +msgstr "Filtre súborov" #: lazarusidestrconsts.lisfilefiltersaddrow msgid "Add Row" @@ -10162,10 +10157,9 @@ msgstr "Súbor je symbolický odkaz" #: lazarusidestrconsts.lisfileisvirtual -#, object-pascal-format, fuzzy, badformat -#| msgid "File %s%s%s is virtual." +#, object-pascal-format msgid "File \"%s\" is virtual." -msgstr "Súbor %s%s%s je virtuálny." +msgstr "Súbor \"%s\" je virtuálny." #: lazarusidestrconsts.lisfilelinkerror msgid "File link error" @@ -10834,10 +10828,8 @@ msgstr "Šestnástkovo" #: lazarusidestrconsts.lishfmhelpforfreepascalcompilermessage -#, fuzzy -#| msgid "Help for FreePascal Compiler message" msgid "Help for Free Pascal Compiler message" -msgstr "Pomoc pre správu FreePascal Compiler" +msgstr "Pomoc pre správu FreePascal prekladača" #: lazarusidestrconsts.lishideallhintsandwarningsbyinsertingidedirectivesh msgid "Hide all hints and warnings by inserting IDE directives {%H-}" @@ -10989,7 +10981,7 @@ #: lazarusidestrconsts.lisidecompileandrestart msgid "The IDE will be recompiled and restarted during installation/uninstallation of packages." -msgstr "" +msgstr "IDE bude znova preložené a reštartované počas inštalácie/odinštalácie balíčkov." #: lazarusidestrconsts.lisideconficurationfoundmaybelongtootherlazarus #, object-pascal-format @@ -11139,7 +11131,7 @@ #: lazarusidestrconsts.lisignoreexceptiontype msgid "Ignore this exception type" -msgstr "" +msgstr "Ignorovať tento typ výnimky" #: lazarusidestrconsts.lisignoreuseasancestor #, object-pascal-format @@ -11179,7 +11171,7 @@ #: lazarusidestrconsts.lisimportlist msgid "Import list" -msgstr "Importný zoznam" +msgstr "Importovať zoznam" #: lazarusidestrconsts.lisimportpackagelistxml msgid "Import package list (*.xml)" @@ -11387,7 +11379,7 @@ #: lazarusidestrconsts.lisinsession msgid "In session" -msgstr "" +msgstr "V relácii" #: lazarusidestrconsts.lisinspect msgid "&Inspect" @@ -11516,7 +11508,7 @@ #: lazarusidestrconsts.lisinvalidfilename msgid "Invalid file name" -msgstr "" +msgstr "Neplatné meno súboru" #: lazarusidestrconsts.lisinvalidfilter msgid "Invalid filter" @@ -11596,7 +11588,7 @@ #: lazarusidestrconsts.lisinvalidversionin #, object-pascal-format msgid "invalid version in %s" -msgstr "" +msgstr "neplatná verzia v %s" #: lazarusidestrconsts.lisisalreadypartoftheproject #, object-pascal-format @@ -11616,7 +11608,7 @@ #: lazarusidestrconsts.lisisddirectorynotfound msgid "directory not found" -msgstr "" +msgstr "adresár nenájdený" #: lazarusidestrconsts.lisissues msgid "Issues" @@ -11985,15 +11977,15 @@ #: lazarusidestrconsts.liskmopenrecent msgctxt "lazarusidestrconsts.liskmopenrecent" msgid "Open Recent" -msgstr "" +msgstr "Otvoriť posledné" #: lazarusidestrconsts.liskmopenrecentpackage msgid "Open recent package" -msgstr "" +msgstr "Otvoriť nedávny balíček" #: lazarusidestrconsts.liskmopenrecentproject msgid "Open recent project" -msgstr "" +msgstr "Otvoriť nedávny projekt" #: lazarusidestrconsts.liskmpastecomponentsfromclipboard msgid "Paste Components" @@ -12298,7 +12290,7 @@ #: lazarusidestrconsts.lislastopened msgid "Last opened" -msgstr "" +msgstr "Naposledy otvorené" #: lazarusidestrconsts.lislaunchingapplicationinvalid msgid "Launching application invalid" @@ -12454,7 +12446,7 @@ #: lazarusidestrconsts.lislazbuildrenameprofinfo msgid "New name for profile:" -msgstr "" +msgstr "Nové meno pre profil:" #: lazarusidestrconsts.lislazbuildrestartafterbuild #, fuzzy @@ -13126,19 +13118,19 @@ #: lazarusidestrconsts.lismenueditoraddnewitemabove msgid "&Add new item above" -msgstr "" +msgstr "Prid&ať novú položku nad" #: lazarusidestrconsts.lismenueditoraddnewitemafter msgid "Add ne&w item after" -msgstr "" +msgstr "Pridať novú položku za" #: lazarusidestrconsts.lismenueditoraddnewitembefore msgid "&Add new item before" -msgstr "" +msgstr "Prid&ať novú položku pred" #: lazarusidestrconsts.lismenueditoraddnewitembelow msgid "Add ne&w item below" -msgstr "" +msgstr "Pridať &novú položku pod" #: lazarusidestrconsts.lismenueditoraddonclickhandler msgid "Add &OnClick handler" @@ -13146,23 +13138,23 @@ #: lazarusidestrconsts.lismenueditoraddseparatorafter msgid "Add separator &after" -msgstr "" +msgstr "Pridať oddeľovač &za" #: lazarusidestrconsts.lismenueditoraddseparatorbefore msgid "Add separator &before" -msgstr "" +msgstr "Pridať oddeľovač &pred" #: lazarusidestrconsts.lismenueditoraddsubmenu msgid "Add submenu" -msgstr "" +msgstr "Pridať podmenu" #: lazarusidestrconsts.lismenueditoraddsubmenubelow msgid "Add &submenu below" -msgstr "" +msgstr "Pridať &podmenu pod" #: lazarusidestrconsts.lismenueditoraddsubmenuright msgid "Add &submenu right" -msgstr "" +msgstr "Pridať &podmenu vpravo" #: lazarusidestrconsts.lismenueditoranewmenutemplatehasbeensaved #, object-pascal-format @@ -13387,7 +13379,7 @@ #: lazarusidestrconsts.lismenueditormenuitemactions msgid "Menu Item actions" -msgstr "" +msgstr "Akcie položky menu" #: lazarusidestrconsts.lismenueditormenuitemshortcutconflictsins #, object-pascal-format @@ -13400,39 +13392,37 @@ #: lazarusidestrconsts.lismenueditormoveitemdown msgid "Mo&ve item down" -msgstr "" +msgstr "Posunúť položku nadol" #: lazarusidestrconsts.lismenueditormoveitemleft msgid "&Move item left" -msgstr "" +msgstr "Posunúť položku doľava" #: lazarusidestrconsts.lismenueditormoveitemright msgid "Mo&ve item right" -msgstr "" +msgstr "Posunúť položku doprava" #: lazarusidestrconsts.lismenueditormoveitemup msgid "&Move item up" -msgstr "" +msgstr "&Posunúť položku nahor" #: lazarusidestrconsts.lismenueditormoveselecteditemdown -#, fuzzy msgctxt "lazarusidestrconsts.lismenueditormoveselecteditemdown" msgid "Move selected item down" -msgstr "Presuň vybratú položku nadol" +msgstr "Presunúť vybratú položku nadol" #: lazarusidestrconsts.lismenueditormoveselecteditemtotheleft msgid "Move selected item to the left" -msgstr "" +msgstr "Presunúť vybranú položku doľava" #: lazarusidestrconsts.lismenueditormoveselecteditemtotheright msgid "Move selected item to the right" -msgstr "" +msgstr "Presunúť vybranú položku doprava" #: lazarusidestrconsts.lismenueditormoveselecteditemup -#, fuzzy msgctxt "lazarusidestrconsts.lismenueditormoveselecteditemup" msgid "Move selected item up" -msgstr "Presuň vybratú položku nahor" +msgstr "Presunúť vybratú položku nahor" #: lazarusidestrconsts.lismenueditormoveup msgid "Move Up (or left)" @@ -13483,7 +13473,7 @@ #: lazarusidestrconsts.lismenueditorremoveallseparators msgid "&Remove all separators" -msgstr "" +msgstr "Odst&rániť všetky oddeľovače" #: lazarusidestrconsts.lismenueditorresolvedconflictss #, object-pascal-format @@ -13525,7 +13515,7 @@ #: lazarusidestrconsts.lismenueditorseparators msgid "Se¶tors" -msgstr "" +msgstr "Oddelovače" #: lazarusidestrconsts.lismenueditorshortcutitemss #, object-pascal-format @@ -13615,7 +13605,7 @@ #: lazarusidestrconsts.lismenueditorssubmenu #, object-pascal-format msgid "%s submenu" -msgstr "" +msgstr "%s podmenu" #: lazarusidestrconsts.lismenueditorstandardtemplates msgid "Standard templates" @@ -14635,15 +14625,15 @@ #: lazarusidestrconsts.lismmstoredinideenvironmentoptionsxml msgid "Stored in IDE (environmentoptions.xml)" -msgstr "" +msgstr "Uložené v IDE (environmentoptions.xml)" #: lazarusidestrconsts.lismmstoredinprojectlpi msgid "Stored in project (.lpi)" -msgstr "" +msgstr "Uložené v projekte (.lpi)" #: lazarusidestrconsts.lismmstoredinsessionofprojectlps msgid "Stored in session of project (.lps)" -msgstr "" +msgstr "Uložené v relácii projektu (.lps)" #: lazarusidestrconsts.lismmtargets msgid "Targets: " @@ -14746,12 +14736,12 @@ #: lazarusidestrconsts.lismoveonepositiondown #, object-pascal-format msgid "Move \"%s\" one position down" -msgstr "" +msgstr "Presunúť \"%s\" o jednu pozíciu nadol" #: lazarusidestrconsts.lismoveonepositionup #, object-pascal-format msgid "Move \"%s\" one position up" -msgstr "" +msgstr "Presunúť \"%s\" o jednu pozíciu nahor" #: lazarusidestrconsts.lismoveorcopyfiles msgid "Move or Copy files?" @@ -15723,7 +15713,7 @@ #: lazarusidestrconsts.lispckeditaddfilesfromfilesystem msgid "Add Files from File System" -msgstr "" +msgstr "Pridať súbory zo systému súborov" #: lazarusidestrconsts.lispckeditaddotheritems msgid "Add other items" @@ -15753,7 +15743,7 @@ #: lazarusidestrconsts.lispckeditcleanupdependencies msgid "Clean up dependencies ..." -msgstr "" +msgstr "Vyčistiť závislosti ..." #: lazarusidestrconsts.lispckeditcleardefaultpreferredfilenameofdependency msgid "Clear default/preferred filename of dependency" @@ -15876,14 +15866,10 @@ msgstr "Len na čítanie: %s" #: lazarusidestrconsts.lispckeditrecompileallrequired -#, fuzzy -#| msgid "Recompile all required" msgid "Recompile All Required" msgstr "Znova preložiť všetky vyžadované" #: lazarusidestrconsts.lispckeditrecompileclean -#, fuzzy -#| msgid "Recompile clean" msgid "Recompile Clean" msgstr "Vyčistiť a znova preložiť" @@ -16212,25 +16198,23 @@ #: lazarusidestrconsts.lispesavepackageas msgid "Save Package As ..." -msgstr "" +msgstr "Uložiť balíček ako ..." #: lazarusidestrconsts.lispeshowdirectoryhierarchy msgid "Show directory hierarchy" -msgstr "" +msgstr "Zobraziť hierarchiu adresárov" #: lazarusidestrconsts.lispeshowmissingfiles msgid "Show Missing Files" -msgstr "" +msgstr "Zobraziť chýbajúce súbory" #: lazarusidestrconsts.lispesortfiles -#, fuzzy -#| msgid "Sort Files" msgid "Sort Files Permanently" -msgstr "Zoradiť súbory" +msgstr "Zoradiť súbory natrvalo" #: lazarusidestrconsts.lispesortfilesalphabetically msgid "Sort files alphabetically" -msgstr "" +msgstr "Zoradiť súbory podľa abecedy" #: lazarusidestrconsts.lispethefileiscurrentlynotintheincludepathofthepackagea #, object-pascal-format @@ -16713,16 +16697,14 @@ msgstr "Meno balíčka %s%s%s %ssúboru %s%s%s je neplatné." #: lazarusidestrconsts.lispkgmangthepackagewasmarkedcurrentlylazarus -#, object-pascal-format, fuzzy, badformat -#| msgid "The package %s%s%s was marked.%sCurrently Lazarus only supports static linked packages. The real un-installation needs rebuilding and restarting of Lazarus.%s%sDo you want to rebuild Lazarus now?" +#, object-pascal-format msgid "The package \"%s\" was marked.%sCurrently Lazarus only supports static linked packages. The real un-installation needs rebuilding and restarting of Lazarus.%sDo you want to rebuild Lazarus now?" -msgstr "Balíček %s%s%s bol označený na odinštaláciu.%sMomentálne Lazarus podporuje builen staticky pripojené balíčky, preto odinštalácia vyžaduje prebudovanie a reštart Lazarus.%s%sChcete teraz prebudovať Lazarus?" +msgstr "Balíček \"%s\" bol označený.%sMomentálne Lazarus podporuje len staticky pripojené balíčky, preto odinštalácia vyžaduje prebudovanie a reštart Lazarusu.%sChcete teraz prebudovať Lazarus?" #: lazarusidestrconsts.lispkgmangthepackagewasmarkedforinstallationcurrentlylazarus -#, object-pascal-format, fuzzy, badformat -#| msgid "The package %s%s%s was marked for installation.%sCurrently Lazarus only supports static linked packages. The real installation needs rebuilding and restarting of Lazarus.%s%sDo you want to rebuild Lazarus now?" +#, object-pascal-format msgid "The package \"%s\" was marked for installation.%sCurrently Lazarus only supports static linked packages. The real installation needs rebuilding and restarting of Lazarus.%sDo you want to rebuild Lazarus now?" -msgstr "Balíček %s%s%s bol označený na inštaláciu.%sMomentálne Lazarus podporuje len staticky pripojené balíčky, preto inštalácia vyžaduje prebudovanie a reštart Lazarus.%s%sChcete teraz prebudovať Lazarus?" +msgstr "Balíček \"%s\" bol označený na inštaláciu.%sMomentálne Lazarus podporuje len staticky pripojené balíčky, preto inštalácia vyžaduje prebudovanie a reštart Lazarus.%sChcete teraz prebudovať Lazarus?" #: lazarusidestrconsts.lispkgmangtheprojectrequiresthepackagebutitwasnotfound #, object-pascal-format, fuzzy, badformat @@ -18777,7 +18759,7 @@ #: lazarusidestrconsts.lisstorepathdelimitersandas msgid "Store path delimiters \\ and / as" -msgstr "" +msgstr "Ukladať oddeľovače cesty \\ a / ako" #: lazarusidestrconsts.lisstrangelpifile msgid "Strange lpi file" @@ -19340,10 +19322,9 @@ msgstr "" #: lazarusidestrconsts.listheprogrammakewasnotfoundthistoolisneededtobuildla -#, object-pascal-format, fuzzy, badformat -#| msgid "The program %smake%s was not found.%sThis tool is needed to build Lazarus.%s" +#, object-pascal-format msgid "The program \"make\" was not found.%sThis tool is needed to build Lazarus." -msgstr "Program %smake%s nebol nájdený.%sTento nástroj je potrebný na prebudovanie Lazarus.%s" +msgstr "Program \"make\" nebol nájdený.%sTento nástroj je potrebný na prebudovanie Lazarusu." #: lazarusidestrconsts.listheprojectcompileroptionsandthedirectivesinthemain msgid "The project compiler options and the directives in the main source differ. For the new unit the mode and string type of the project options are used:" @@ -20139,10 +20120,9 @@ msgstr "Nemožno vyčistiť cieľový adresár" #: lazarusidestrconsts.lisunabletocleanuppleasecheckpermissions -#, object-pascal-format, fuzzy, badformat -#| msgid "Unable to clean up %s%s%s.%sPlease check permissions." +#, object-pascal-format msgid "Unable to clean up \"%s\".%sPlease check permissions." -msgstr "Nemožno vyčistiť %s%s%s.%sProsím skontrolujte prístupové práva." +msgstr "Nemožno vyčistiť \"%s\".%sProsím skontrolujte prístupové práva." #: lazarusidestrconsts.lisunabletoconvertcomponenttextintobinaryformat #, object-pascal-format @@ -21284,7 +21264,7 @@ #: lazarusidestrconsts.rscloseall msgid "Close all pages" -msgstr "" +msgstr "Zatvoriť všetky stránky" #: lazarusidestrconsts.rsclosecurrentpage msgid "Close current page" @@ -21328,11 +21308,11 @@ #: lazarusidestrconsts.rsi18nexcluded msgid "Excluded" -msgstr "" +msgstr "Vylúčené" #: lazarusidestrconsts.rsi18nforceupdatepofilesonnextbuild msgid "Force update PO files on next build" -msgstr "" +msgstr "Vynútiť aktualizáciu súborov PO pri ďalšom vybudovaní" #: lazarusidestrconsts.rsi18nidentifiers msgid "Identifiers:" @@ -21525,7 +21505,7 @@ #: lazarusidestrconsts.srkmcarhelpmenu msgid "Help menu commands" -msgstr "Príkazu menu Help" +msgstr "Príkazy menu Help" #: lazarusidestrconsts.srkmcatcmdcmd msgid "Command commands" diff -Nru lazarus-2.2.4+dfsg1/lazarus.app/Contents/Info.plist lazarus-2.2.6+dfsg1/lazarus.app/Contents/Info.plist --- lazarus-2.2.4+dfsg1/lazarus.app/Contents/Info.plist 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lazarus.app/Contents/Info.plist 2023-03-04 14:24:25.000000000 +0100 @@ -148,7 +148,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>2.2.4</string> + <string>2.2.6</string> <key>CFBundleSignature</key> <string>laza</string> <key>CFBundleVersion</key> diff -Nru lazarus-2.2.4+dfsg1/lcl/dialogs.pp lazarus-2.2.6+dfsg1/lcl/dialogs.pp --- lazarus-2.2.4+dfsg1/lcl/dialogs.pp 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/dialogs.pp 2023-03-04 14:24:25.000000000 +0100 @@ -307,6 +307,8 @@ procedure SetButtonColorSize(const AValue: Integer); protected class procedure WSRegisterClass; override; + procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy; + const AXProportion, AYProportion: Double); override; function DrawGlyph(ACanvas: TCanvas; const AClient: TRect; const AOffset: TPoint; AState: TButtonState; ATransparent: Boolean; BiDiFlags: Longint): TRect; override; function GetDisabledPattern: TBitmap; virtual; diff -Nru lazarus-2.2.4+dfsg1/lcl/grids.pas lazarus-2.2.6+dfsg1/lcl/grids.pas --- lazarus-2.2.4+dfsg1/lcl/grids.pas 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/grids.pas 2023-03-04 14:24:25.000000000 +0100 @@ -6532,7 +6532,10 @@ aColRow: Integer; begin if FromIndex=ToIndex then + begin + VisualChange; exit; + end; CheckIndex(IsColumn, FromIndex); CheckIndex(IsColumn, ToIndex); diff -Nru lazarus-2.2.4+dfsg1/lcl/include/colorbutton.inc lazarus-2.2.6+dfsg1/lcl/include/colorbutton.inc --- lazarus-2.2.4+dfsg1/lcl/include/colorbutton.inc 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/include/colorbutton.inc 2023-03-04 14:24:25.000000000 +0100 @@ -117,6 +117,17 @@ //debugln(['TColorButton.GetGlyphSize ',DbgSName(Self),' Drawing=',Drawing,' PaintRect=',dbgs(PaintRect),' Result=',dbgs(Result),' BoundsRect=',dbgs(BoundsRect),' Spacing=',Spacing,' Margin=',Margin]); end; +procedure TColorButton.DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy; + const AXProportion, AYProportion: Double); +begin + inherited; + if AMode in [lapAutoAdjustWithoutHorizontalScrolling, lapAutoAdjustForDPI] then + begin + FButtonColorSize := round(FButtonColorSize * AXProportion); + FBorderWidth := round(FBorderWidth * AXProportion); + end; +end; + function TColorButton.DrawGlyph(ACanvas: TCanvas; const AClient: TRect; const AOffset: TPoint; AState: TButtonState; ATransparent: Boolean; BiDiFlags: Longint): TRect; diff -Nru lazarus-2.2.4+dfsg1/lcl/include/customflowpanel.inc lazarus-2.2.6+dfsg1/lcl/include/customflowpanel.inc --- lazarus-2.2.4+dfsg1/lcl/include/customflowpanel.inc 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/include/customflowpanel.inc 2023-03-04 14:24:25.000000000 +0100 @@ -398,6 +398,8 @@ for I := 0 to ControlCount-1 do begin xControl := FControlList.Items[I].Control; + if not xControl.Visible then + Continue; if FFlowStyle in [fsLeftRightTopBottom, fsRightLeftTopBottom, fsLeftRightBottomTop, fsRightLeftBottomTop] then begin PreferredHeight := Max(PreferredHeight, diff -Nru lazarus-2.2.4+dfsg1/lcl/include/customform.inc lazarus-2.2.6+dfsg1/lcl/include/customform.inc --- lazarus-2.2.4+dfsg1/lcl/include/customform.inc 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/include/customform.inc 2023-03-04 14:24:25.000000000 +0100 @@ -706,7 +706,7 @@ end; { call onShow() or onActivate() for the first time, after first OnResize() and OnChangeBounds() } - if FDelayedOnResize and FDelayedOnChangeBounds then + if (FDelayedOnResize or FDelayedOnChangeBounds) and Visible then begin if FIsFirstOnShow then begin diff -Nru lazarus-2.2.4+dfsg1/lcl/include/speedbutton.inc lazarus-2.2.6+dfsg1/lcl/include/speedbutton.inc --- lazarus-2.2.4+dfsg1/lcl/include/speedbutton.inc 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/include/speedbutton.inc 2023-03-04 14:24:25.000000000 +0100 @@ -1119,7 +1119,6 @@ if FShowCaption and (Caption <> '') then begin TMP := Caption; - DeleteAmpersands(TMP); Flags := DT_CalcRect; if not Canvas.TextStyle.SingleLine then Inc(Flags, DT_WordBreak); diff -Nru lazarus-2.2.4+dfsg1/lcl/include/wincontrol.inc lazarus-2.2.6+dfsg1/lcl/include/wincontrol.inc --- lazarus-2.2.4+dfsg1/lcl/include/wincontrol.inc 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/include/wincontrol.inc 2023-03-04 14:24:25.000000000 +0100 @@ -4050,7 +4050,7 @@ or (Height<>InterfaceHeight) then begin // the LCL is not in sync with the interface - if wcfBoundsRealized in FWinControlFlags then + if not (wcfBoundsRealized in FWinControlFlags) then begin // no bounds were sent yet to the interface and it didn't initialize // them on its own @@ -4058,12 +4058,16 @@ // they will probably change // to avoid resizes it is better use the defaults GetDefaults(Result); - end else begin + end else + if not (self is TCustomForm) then + begin // -> adjust client rect based on LCL bounds // for example: if the Width in LCL differ from the Width of the Interface // object, then adjust the clientwidth accordingly // this often anticipates later LM_SIZE messages from the interface // and reduces resizes + // BUT: Do this only when not a form. Form has its own clientrect specification: + // https://wiki.lazarus.freepascal.org/Lazarus_FAQ#Why_are_TForm.ClientWidth.2FClientHeight_the_same_as_TForm.Width.2FHeight inc(Result.Right,Width-InterfaceWidth); inc(Result.Bottom,Height-InterfaceHeight); end; diff -Nru lazarus-2.2.4+dfsg1/lcl/interfaces/lcl.lpk lazarus-2.2.6+dfsg1/lcl/interfaces/lcl.lpk --- lazarus-2.2.4+dfsg1/lcl/interfaces/lcl.lpk 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/interfaces/lcl.lpk 2023-03-04 14:24:25.000000000 +0100 @@ -129,7 +129,7 @@ "/> <License Value="modified LGPL-2 "/> - <Version Major="2" Minor="2" Release="4"/> + <Version Major="2" Minor="2" Release="6"/> <Files Count="488"> <Item1> <Filename Value="carbon/agl.pp"/> diff -Nru lazarus-2.2.4+dfsg1/lcl/interfaces/win32/win32wscomctrls.pp lazarus-2.2.6+dfsg1/lcl/interfaces/win32/win32wscomctrls.pp --- lazarus-2.2.4+dfsg1/lcl/interfaces/win32/win32wscomctrls.pp 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/interfaces/win32/win32wscomctrls.pp 2023-03-04 14:24:25.000000000 +0100 @@ -1009,8 +1009,16 @@ Windows.SendMessage(wHandle, TBM_CLEARSEL, Windows.WPARAM(True), 0) else begin - Windows.SendMessage(wHandle, TBM_SETSELSTART, Windows.WParam(False), SelStart); - Windows.SendMessage(wHandle, TBM_SETSELEND, Windows.WParam(True), SelEnd) + if (GetWindowLong(ATrackBar.Handle, GWL_STYLE) and TBS_REVERSED) <> 0 then + begin + Windows.SendMessage(wHandle, TBM_SETSELSTART, Windows.WParam(False), ATrackBar.Max-SelEnd); //SelStart/SelEnd are not relative to Min/Max + Windows.SendMessage(wHandle, TBM_SETSELEND, Windows.WParam(True), ATrackBar.Max-SelStart) + end + else + begin + Windows.SendMessage(wHandle, TBM_SETSELSTART, Windows.WParam(False), SelStart); + Windows.SendMessage(wHandle, TBM_SETSELEND, Windows.WParam(True), SelEnd) + end; end; end; end; diff -Nru lazarus-2.2.4+dfsg1/lcl/interfaces/win32/win32wsmenus.pp lazarus-2.2.6+dfsg1/lcl/interfaces/win32/win32wsmenus.pp --- lazarus-2.2.4+dfsg1/lcl/interfaces/win32/win32wsmenus.pp 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/interfaces/win32/win32wsmenus.pp 2023-03-04 14:24:25.000000000 +0100 @@ -1166,13 +1166,10 @@ AImageIndex := AMenuItem.ImageIndex; end; - if not AMenuItem.Enabled then - AEffect := gdeDisabled + if AMenuItem.Enabled then + AEffect := gdeNormal else - if ASelected then - AEffect := gdeHighlighted - else - AEffect := gdeNormal; + AEffect := gdeDisabled; if AImageIndex < AImageList.Count then begin diff -Nru lazarus-2.2.4+dfsg1/lcl/lazcanvas.pas lazarus-2.2.6+dfsg1/lcl/lazcanvas.pas --- lazarus-2.2.4+dfsg1/lcl/lazcanvas.pas 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/lazcanvas.pas 2023-03-04 14:24:25.000000000 +0100 @@ -406,7 +406,7 @@ if (nodeX[i ] < lBoundingBox.Left) then nodeX[i] := lBoundingBox.Left; if (nodeX[i+1] > lBoundingBox.Right) then nodeX[i+1] := lBoundingBox.Right; for X := nodeX[i] to nodeX[i+1]-1 do - SetColor(X, Y, Brush.FPColor); + DrawPixel(X, Y, Brush.FPColor); end; i := i + 2; diff -Nru lazarus-2.2.4+dfsg1/lcl/lclbase.lpk lazarus-2.2.6+dfsg1/lcl/lclbase.lpk --- lazarus-2.2.4+dfsg1/lcl/lclbase.lpk 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/lcl/lclbase.lpk 2023-03-04 14:24:25.000000000 +0100 @@ -26,7 +26,7 @@ "/> <License Value="modified LGPL-2 "/> - <Version Major="2" Minor="2" Release="4"/> + <Version Major="2" Minor="2" Release="6"/> <Files Count="287"> <Item1> <Filename Value="checklst.pas"/> diff -Nru lazarus-2.2.4+dfsg1/packager/globallinks/lcl-2.2.4.lpl lazarus-2.2.6+dfsg1/packager/globallinks/lcl-2.2.4.lpl --- lazarus-2.2.4+dfsg1/packager/globallinks/lcl-2.2.4.lpl 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/packager/globallinks/lcl-2.2.4.lpl 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -$(LazarusDir)/lcl/interfaces/lcl.lpk diff -Nru lazarus-2.2.4+dfsg1/packager/globallinks/lcl-2.2.6.lpl lazarus-2.2.6+dfsg1/packager/globallinks/lcl-2.2.6.lpl --- lazarus-2.2.4+dfsg1/packager/globallinks/lcl-2.2.6.lpl 1970-01-01 01:00:00.000000000 +0100 +++ lazarus-2.2.6+dfsg1/packager/globallinks/lcl-2.2.6.lpl 2023-03-04 14:24:25.000000000 +0100 @@ -0,0 +1 @@ +$(LazarusDir)/lcl/interfaces/lcl.lpk diff -Nru lazarus-2.2.4+dfsg1/packager/globallinks/lclbase-2.2.4.lpl lazarus-2.2.6+dfsg1/packager/globallinks/lclbase-2.2.4.lpl --- lazarus-2.2.4+dfsg1/packager/globallinks/lclbase-2.2.4.lpl 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/packager/globallinks/lclbase-2.2.4.lpl 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -$(LazarusDir)/lcl/lclbase.lpk diff -Nru lazarus-2.2.4+dfsg1/packager/globallinks/lclbase-2.2.6.lpl lazarus-2.2.6+dfsg1/packager/globallinks/lclbase-2.2.6.lpl --- lazarus-2.2.4+dfsg1/packager/globallinks/lclbase-2.2.6.lpl 1970-01-01 01:00:00.000000000 +0100 +++ lazarus-2.2.6+dfsg1/packager/globallinks/lclbase-2.2.6.lpl 2023-03-04 14:24:25.000000000 +0100 @@ -0,0 +1 @@ +$(LazarusDir)/lcl/lclbase.lpk diff -Nru lazarus-2.2.4+dfsg1/tools/install/linux/environmentoptions.xml lazarus-2.2.6+dfsg1/tools/install/linux/environmentoptions.xml --- lazarus-2.2.4+dfsg1/tools/install/linux/environmentoptions.xml 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/tools/install/linux/environmentoptions.xml 2023-03-04 14:24:26.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <CONFIG> <EnvironmentOptions> - <Version Value="110" Lazarus="2.2.4"/> + <Version Value="110" Lazarus="2.2.6"/> <LazarusDirectory Value="__LAZARUSDIR__"> <History Count="1"> <Item1 Value="/usr/lib/lazarus/"/> diff -Nru lazarus-2.2.4+dfsg1/tools/install/macosx/environmentoptions.xml lazarus-2.2.6+dfsg1/tools/install/macosx/environmentoptions.xml --- lazarus-2.2.4+dfsg1/tools/install/macosx/environmentoptions.xml 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/tools/install/macosx/environmentoptions.xml 2023-03-04 14:24:26.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <CONFIG> <EnvironmentOptions> - <Version Value="110" Lazarus="2.2.4"/> + <Version Value="110" Lazarus="2.2.6"/> <LazarusDirectory Value="/Developer/lazarus/"> <History Count="1"> <Item1 Value="/Developer/lazarus/"/> diff -Nru lazarus-2.2.4+dfsg1/tools/install/win/environmentoptions.xml lazarus-2.2.6+dfsg1/tools/install/win/environmentoptions.xml --- lazarus-2.2.4+dfsg1/tools/install/win/environmentoptions.xml 2022-09-25 12:37:18.000000000 +0200 +++ lazarus-2.2.6+dfsg1/tools/install/win/environmentoptions.xml 2023-03-04 14:24:26.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <CONFIG> <EnvironmentOptions> - <Version Value="110" Lazarus="2.2.4"/> + <Version Value="110" Lazarus="2.2.6"/> <LazarusDirectory Value="%LazDir%"> </LazarusDirectory> <CompilerFilename Value="%FpcBinDir%\fpc.exe">
Attachment:
signature.asc
Description: This is a digitally signed message part