From 1fdddb7bd226bb26a4bf0427f8f877e68936ea72 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 29 Sep 2007 17:34:45 +0000 Subject: [PATCH] Qt: fix possible caret crash git-svn-id: trunk@12246 - --- lcl/interfaces/qt/qtcaret.pas | 5 ++--- lcl/interfaces/qt/qtwidgets.pas | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lcl/interfaces/qt/qtcaret.pas b/lcl/interfaces/qt/qtcaret.pas index 7309ea57fc..3034cdc711 100644 --- a/lcl/interfaces/qt/qtcaret.pas +++ b/lcl/interfaces/qt/qtcaret.pas @@ -341,7 +341,6 @@ end; procedure TEmulatedCaret.SetPos(const Value: TQtPoint); begin - if (FWidget = nil) or (FWidget.Widget = nil) then begin FPos.X := 0; @@ -438,13 +437,13 @@ procedure TEmulatedCaret.UpdateCaret; var R: TRect; begin - if (FWidget <> nil) and (FWidget.Widget <> nil) then + if (FWidget <> nil) then begin R.Left := FPos.x; R.Top := FPos.y; R.Right := R.Left + FWidth + 2; R.Bottom := R.Top + FHeight + 2; - if FWidget.Context = 0 then + if (FWidget.Context = 0) and (FWidget.Widget <> nil) then begin if not EqualRect(FOldRect, R) then FWidget.Update(@FOldRect); diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index f88f053b97..3a802d7123 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -1123,6 +1123,9 @@ begin QCursor_destroy(FDefaultCursor); + if HasCaret then + DestroyCaret; + if (Widget <> nil) and FOwnWidget then QWidget_destroy(QWidgetH(Widget)); Widget := nil;