mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-08 09:39:06 +02:00
* Various TCustomMemo memleaks & bug fixes.
git-svn-id: trunk@11525 -
This commit is contained in:
parent
4fbaaf4f4e
commit
b6c49dc891
@ -310,13 +310,19 @@ end;
|
||||
Updates Qt Widget from text - If DelphiOnChange, generates OnChange Event
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TQtMemoStrings.ExternalUpdate(var Astr: WideString; Clear: Boolean = True);
|
||||
{var
|
||||
Mess: TLMessage;}
|
||||
var
|
||||
Str: WideString;
|
||||
begin
|
||||
FUpdating := True;
|
||||
Str := UTF8Decode(AStr);
|
||||
if Clear then
|
||||
begin
|
||||
QTextEdit_clear(FQtTextEdit);
|
||||
QTextEdit_append(FQtTextEdit,@Astr);
|
||||
QTextEdit_setPlainText(FQtTextEdit,@Str);
|
||||
end
|
||||
else
|
||||
QTextEdit_append(FQtTextEdit,@Str);
|
||||
|
||||
FUpdating := False;
|
||||
{FillChar(Mess, SizeOf(Mess), #0);
|
||||
(FOwner as TCustomMemo).Modified := False;
|
||||
@ -406,6 +412,7 @@ begin
|
||||
FStringList := TStringList.Create;
|
||||
FQtTextEdit := TextEdit;
|
||||
QTextEdit_toPlainText(TextEdit,@Astr); // get the memo content
|
||||
AStr := UTF8Encode(AStr);
|
||||
FStringList.Text := Astr;
|
||||
FOwner:=TheOwner;
|
||||
|
||||
@ -425,6 +432,8 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
destructor TQtMemoStrings.Destroy;
|
||||
begin
|
||||
Clear;
|
||||
FStringList.Free;
|
||||
// don't destroy the widgets
|
||||
inherited Destroy;
|
||||
end;
|
||||
@ -486,19 +495,17 @@ end;
|
||||
Clears all.
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TQtMemoStrings.Clear;
|
||||
{var
|
||||
Mess: TLMessage;}
|
||||
begin
|
||||
FUpdating := True;
|
||||
FStringList.Clear;
|
||||
QTextEdit_clear(FQtTextEdit);
|
||||
|
||||
if not (csDestroying in FOwner.ComponentState)
|
||||
and not (csFreeNotification in FOwner.ComponentState)
|
||||
then
|
||||
QTextEdit_clear(FQtTextEdit);
|
||||
|
||||
FTextChanged := False;
|
||||
FUpdating := False;
|
||||
{FillChar(Mess, SizeOf(Mess), #0);
|
||||
FillChar(Mess, SizeOf(Mess), #0);
|
||||
Mess.Msg := CM_TEXTCHANGED;
|
||||
(FOwner as TCustomMemo).Modified := False;
|
||||
FOwner.Dispatch(TLMessage(Mess));}
|
||||
IsChanged;
|
||||
end;
|
||||
|
||||
@ -514,12 +521,13 @@ var
|
||||
Astr: WideString;
|
||||
begin
|
||||
if FTextChanged then InternalUpdate;
|
||||
if Index < FStringList.Count then begin
|
||||
if Index < FStringList.Count then
|
||||
begin
|
||||
FStringList.Delete(Index);
|
||||
Astr := FStringList.Text;
|
||||
ExternalUpdate(AStr,True);
|
||||
FTextChanged := False;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -535,12 +543,13 @@ var
|
||||
begin
|
||||
if FTextChanged then InternalUpdate;
|
||||
if Index < 0 then Index := 0;
|
||||
if Index <= FStringList.Count then begin
|
||||
if Index <= FStringList.Count then
|
||||
begin
|
||||
FStringList.Insert(Index,S);
|
||||
Astr := FStringList.Text;
|
||||
ExternalUpdate(Astr,True);
|
||||
FTextChanged := False;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
|
@ -390,6 +390,7 @@ type
|
||||
protected
|
||||
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
|
||||
public
|
||||
FList: TStrings;
|
||||
destructor Destroy; override;
|
||||
procedure SetColor(const Value: PQColor); override;
|
||||
procedure SetAlignment(const AAlignment: TAlignment);
|
||||
|
@ -592,6 +592,9 @@ begin
|
||||
QtTextEdit := TQtTextEdit.Create(AWinControl, AParams);
|
||||
QtTextEdit.AttachEvents;
|
||||
|
||||
// create our FList helper
|
||||
QtTextEdit.FList := TQtMemoStrings.Create(QTextEditH(QtTextEdit.Widget), TCustomMemo(AWinControl));
|
||||
|
||||
Result := THandle(QtTextEdit);
|
||||
end;
|
||||
|
||||
@ -619,9 +622,7 @@ begin
|
||||
if Length(AText) = 0 then
|
||||
exit;
|
||||
Astr := UTF8Decode(AText);
|
||||
//QTextEdit_append(QTextEditH(ACustomMemo.Handle),@Astr);
|
||||
QTextEdit_append(QTextEditH(TQtWidget(ACustomMemo.Handle).Widget),@Astr);
|
||||
|
||||
end;
|
||||
|
||||
class procedure TQtWSCustomMemo.SetAlignment(const ACustomMemo: TCustomMemo;
|
||||
@ -640,8 +641,13 @@ class function TQtWSCustomMemo.GetStrings(const ACustomMemo: TCustomMemo): TStri
|
||||
var
|
||||
TextEditH: QTextEditH;
|
||||
begin
|
||||
TextEditH := QTextEditH((TQtWidget(ACustomMemo.Handle).Widget)); // set to proper type
|
||||
Result := TQtMemoStrings.Create(TextEditH,ACustomMemo);
|
||||
if not Assigned(TQtTextEdit(ACustomMemo.Handle).FList) then
|
||||
begin
|
||||
TextEditH := QTextEditH((TQtTextEdit(ACustomMemo.Handle).Widget)); // set to proper type
|
||||
TQtTextEdit(ACustomMemo.Handle).FList := TQtMemoStrings.Create(TextEditH,ACustomMemo);
|
||||
end;
|
||||
|
||||
Result := TQtTextEdit(ACustomMemo.Handle).FList;
|
||||
end;
|
||||
|
||||
|
||||
@ -687,8 +693,7 @@ var
|
||||
AString: WideString;
|
||||
begin
|
||||
AString := UTF8Decode(AText);
|
||||
|
||||
QTextEdit_append(QTextEditH(TQtWidget(AWinControl.Handle).Widget), @AString);
|
||||
QTextEdit_setPlainText(QTextEditH(TQtWidget(AWinControl.Handle).Widget), @AString);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user