mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-10 19:18:14 +02:00
Qt: avoid crash inside q_DrawXXX() functions when palette paremeter is nil and painter parent is nil. fixes #14673
git-svn-id: trunk@21876 -
This commit is contained in:
parent
b680c53595
commit
771b53b7e8
@ -1943,21 +1943,46 @@ end;
|
||||
|
||||
procedure TQtDeviceContext.qDrawShadeRect(x, y, w, h: integer; Palette: QPaletteH = nil; Sunken: Boolean = False;
|
||||
lineWidth: Integer = 1; midLineWidth: Integer = 0; FillBrush: QBrushH = nil);
|
||||
var
|
||||
AppPalette: QPaletteH;
|
||||
begin
|
||||
AppPalette := nil;
|
||||
if Palette = nil then
|
||||
Palette := QWidget_palette(Parent);
|
||||
begin
|
||||
if Parent = nil then
|
||||
begin
|
||||
AppPalette := QPalette_create();
|
||||
QApplication_palette(AppPalette);
|
||||
Palette := AppPalette;
|
||||
end else
|
||||
Palette := QWidget_palette(Parent);
|
||||
end;
|
||||
q_DrawShadeRect(Widget, x, y, w, h, Palette, Sunken, lineWidth, midLineWidth, FillBrush);
|
||||
if AppPalette <> nil then
|
||||
begin
|
||||
QPalette_destroy(AppPalette);
|
||||
Palette := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQtDeviceContext.qDrawWinPanel(x, y, w, h: integer;
|
||||
Palette: QPaletteH; Sunken: Boolean; lineWidth: Integer; FillBrush: QBrushH);
|
||||
var
|
||||
i: integer;
|
||||
AppPalette: QPaletteH;
|
||||
begin
|
||||
AppPalette := nil;
|
||||
if Palette = nil then
|
||||
Palette := QWidget_palette(Parent);
|
||||
begin
|
||||
if Parent = nil then
|
||||
begin
|
||||
AppPalette := QPalette_create();
|
||||
QApplication_palette(AppPalette);
|
||||
Palette := AppPalette;
|
||||
end else
|
||||
Palette := QWidget_palette(Parent);
|
||||
end;
|
||||
// since q_DrawWinPanel doesnot supports lineWidth we should do it ourself
|
||||
|
||||
for i := 1 to lineWidth - 2 do
|
||||
begin
|
||||
q_DrawWinPanel(Widget, x, y, w, h, Palette, Sunken);
|
||||
@ -1975,6 +2000,11 @@ begin
|
||||
else
|
||||
q_DrawShadePanel(Widget, x, y, w, h, Palette, Sunken, 1, FillBrush);
|
||||
end;
|
||||
if AppPalette <> nil then
|
||||
begin
|
||||
QPalette_destroy(AppPalette);
|
||||
Palette := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user