mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 18:39:10 +02:00
parent
45c85c3a98
commit
8c2e23e096
@ -1931,7 +1931,12 @@ begin
|
|||||||
if lineWidth > 1 then
|
if lineWidth > 1 then
|
||||||
q_DrawWinPanel(Widget, x, y, w, h, Palette, Sunken, FillBrush)
|
q_DrawWinPanel(Widget, x, y, w, h, Palette, Sunken, FillBrush)
|
||||||
else
|
else
|
||||||
q_DrawShadePanel(Widget, x, y, w, h, Palette, Sunken, 1, FillBrush);
|
begin
|
||||||
|
if FillBrush = nil then
|
||||||
|
q_DrawShadePanel(Widget, x, y, w, h, Palette, Sunken, 1, QPalette_background(Palette))
|
||||||
|
else
|
||||||
|
q_DrawShadePanel(Widget, x, y, w, h, Palette, Sunken, 1, FillBrush);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
|
@ -114,102 +114,111 @@ var
|
|||||||
Element: TQtDrawElement;
|
Element: TQtDrawElement;
|
||||||
Features: QStyleOptionButtonButtonFeatures;
|
Features: QStyleOptionButtonButtonFeatures;
|
||||||
Position: QStyleOptionHeaderSectionPosition;
|
Position: QStyleOptionHeaderSectionPosition;
|
||||||
|
Palette: QPaletteH;
|
||||||
begin
|
begin
|
||||||
if (Context <> nil) then
|
if (Context <> nil) then
|
||||||
begin
|
begin
|
||||||
ARect := R;
|
Context.save;
|
||||||
Element := GetDrawElement(Details);
|
try
|
||||||
case Element.DrawVariant of
|
if Context.Parent <> nil then
|
||||||
qdvNone:
|
|
||||||
inherited DrawElement(DC, Details, R, ClipRect);
|
|
||||||
qdvControl:
|
|
||||||
begin
|
begin
|
||||||
if (Element.ControlElement in [QStyleCE_PushButton, QStyleCE_RadioButton, QStyleCE_CheckBox]) then
|
Palette := QWidget_palette(Context.Parent);
|
||||||
begin
|
QPainter_setBackground(Context.Widget, QPalette_background(Palette));
|
||||||
opt := QStyleOptionButton_create();
|
|
||||||
Features := QStyleOptionButtonNone;
|
|
||||||
if Details.Element = teToolBar then
|
|
||||||
Features := Features or QStyleOptionButtonFlat;
|
|
||||||
QStyleOptionButton_setFeatures(QStyleOptionButtonH(opt), Features);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if (Element.ControlElement = QStyleCE_HeaderSection) then
|
|
||||||
begin
|
|
||||||
opt := QStyleOptionHeader_create();
|
|
||||||
case Details.Part of
|
|
||||||
HP_HEADERITEM: Position := QStyleOptionHeaderMiddle;
|
|
||||||
HP_HEADERITEMLEFT: Position := QStyleOptionHeaderBeginning;
|
|
||||||
HP_HEADERITEMRIGHT: Position := QStyleOptionHeaderEnd;
|
|
||||||
end;
|
|
||||||
QStyleOptionHeader_setPosition(QStyleOptionHeaderH(opt), Position);
|
|
||||||
QStyleOptionHeader_setOrientation(QStyleOptionHeaderH(opt), QtHorizontal);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
opt := QStyleOptionComplex_create(LongInt(QStyleOptionVersion), LongInt(QStyleOptionSO_Default));
|
|
||||||
|
|
||||||
QStyleOption_setState(opt, GetControlState(Details));
|
|
||||||
QStyleOption_setRect(opt, @ARect);
|
|
||||||
|
|
||||||
QStyle_drawControl(Style, Element.ControlElement, opt, Context.Widget);
|
|
||||||
QStyleOption_Destroy(opt);
|
|
||||||
end;
|
end;
|
||||||
qdvComplexControl:
|
ARect := R;
|
||||||
begin
|
Element := GetDrawElement(Details);
|
||||||
Context.save;
|
case Element.DrawVariant of
|
||||||
case Element.ComplexControl of
|
qdvNone:
|
||||||
QStyleCC_ToolButton: opt := QStyleOptionToolButton_create();
|
inherited DrawElement(DC, Details, R, ClipRect);
|
||||||
|
qdvControl:
|
||||||
QStyleCC_TitleBar, QStyleCC_MdiControls:
|
begin
|
||||||
|
if (Element.ControlElement in [QStyleCE_PushButton, QStyleCE_RadioButton, QStyleCE_CheckBox]) then
|
||||||
begin
|
begin
|
||||||
opt := QStyleOptionTitleBar_create();
|
opt := QStyleOptionButton_create();
|
||||||
QStyleOptionTitleBar_setTitleBarFlags(QStyleOptionTitleBarH(opt), QtWindow or QtWindowSystemMenuHint);
|
Features := QStyleOptionButtonNone;
|
||||||
// workaround: qt has own minds about position of requested part -
|
if Details.Element = teToolBar then
|
||||||
// but we need a way to draw it at our position
|
Features := Features or QStyleOptionButtonFlat;
|
||||||
Context.translate(ARect.Left, ARect.Top);
|
QStyleOptionButton_setFeatures(QStyleOptionButtonH(opt), Features);
|
||||||
OffsetRect(ARect, -ARect.Left, -ARect.Top);
|
end
|
||||||
end;
|
else
|
||||||
QStyleCC_Slider, QStyleCC_ScrollBar:
|
if (Element.ControlElement = QStyleCE_HeaderSection) then
|
||||||
begin
|
begin
|
||||||
opt := QStyleOptionSlider_create();
|
opt := QStyleOptionHeader_create();
|
||||||
QStyleOptionSlider_setMinimum(QStyleOptionSliderH(opt), 0);
|
case Details.Part of
|
||||||
QStyleOptionSlider_setMaximum(QStyleOptionSliderH(opt), 100);
|
HP_HEADERITEM: Position := QStyleOptionHeaderMiddle;
|
||||||
end;
|
HP_HEADERITEMLEFT: Position := QStyleOptionHeaderBeginning;
|
||||||
else
|
HP_HEADERITEMRIGHT: Position := QStyleOptionHeaderEnd;
|
||||||
opt := QStyleOptionComplex_create(LongInt(QStyleOptionVersion), LongInt(QStyleOptionSO_Default));
|
end;
|
||||||
|
QStyleOptionHeader_setPosition(QStyleOptionHeaderH(opt), Position);
|
||||||
|
QStyleOptionHeader_setOrientation(QStyleOptionHeaderH(opt), QtHorizontal);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
opt := QStyleOptionComplex_create(LongInt(QStyleOptionVersion), LongInt(QStyleOptionSO_Default));
|
||||||
|
|
||||||
|
QStyleOption_setState(opt, GetControlState(Details));
|
||||||
|
QStyleOption_setRect(opt, @ARect);
|
||||||
|
|
||||||
|
QStyle_drawControl(Style, Element.ControlElement, opt, Context.Widget);
|
||||||
|
QStyleOption_Destroy(opt);
|
||||||
end;
|
end;
|
||||||
|
qdvComplexControl:
|
||||||
QStyleOptionComplex_setSubControls(QStyleOptionComplexH(opt), Element.SubControls);
|
begin
|
||||||
|
case Element.ComplexControl of
|
||||||
QStyleOption_setState(opt, GetControlState(Details));
|
QStyleCC_ToolButton: opt := QStyleOptionToolButton_create();
|
||||||
QStyleOption_setRect(opt, @ARect);
|
|
||||||
QStyle_drawComplexControl(Style, Element.ComplexControl, QStyleOptionComplexH(opt), Context.Widget);
|
QStyleCC_TitleBar, QStyleCC_MdiControls:
|
||||||
QStyleOption_Destroy(opt);
|
begin
|
||||||
Context.restore;
|
opt := QStyleOptionTitleBar_create();
|
||||||
end;
|
QStyleOptionTitleBar_setTitleBarFlags(QStyleOptionTitleBarH(opt), QtWindow or QtWindowSystemMenuHint);
|
||||||
qdvPrimitive:
|
// workaround: qt has own minds about position of requested part -
|
||||||
begin
|
// but we need a way to draw it at our position
|
||||||
if Element.PrimitiveElement = QStylePE_FrameTabWidget then
|
Context.translate(ARect.Left, ARect.Top);
|
||||||
|
OffsetRect(ARect, -ARect.Left, -ARect.Top);
|
||||||
|
end;
|
||||||
|
QStyleCC_Slider, QStyleCC_ScrollBar:
|
||||||
|
begin
|
||||||
|
opt := QStyleOptionSlider_create();
|
||||||
|
QStyleOptionSlider_setMinimum(QStyleOptionSliderH(opt), 0);
|
||||||
|
QStyleOptionSlider_setMaximum(QStyleOptionSliderH(opt), 100);
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
opt := QStyleOptionComplex_create(LongInt(QStyleOptionVersion), LongInt(QStyleOptionSO_Default));
|
||||||
|
end;
|
||||||
|
|
||||||
|
QStyleOptionComplex_setSubControls(QStyleOptionComplexH(opt), Element.SubControls);
|
||||||
|
|
||||||
|
QStyleOption_setState(opt, GetControlState(Details));
|
||||||
|
QStyleOption_setRect(opt, @ARect);
|
||||||
|
QStyle_drawComplexControl(Style, Element.ComplexControl, QStyleOptionComplexH(opt), Context.Widget);
|
||||||
|
QStyleOption_Destroy(opt);
|
||||||
|
end;
|
||||||
|
qdvPrimitive:
|
||||||
|
begin
|
||||||
|
if Element.PrimitiveElement = QStylePE_FrameTabWidget then
|
||||||
|
begin
|
||||||
|
opt := QStyleOptionTabWidgetFrame_create();
|
||||||
|
// need widget to draw gradient
|
||||||
|
end
|
||||||
|
else
|
||||||
|
opt := QStyleOption_create(Integer(QStyleOptionVersion), Integer(QStyleOptionSO_Default));
|
||||||
|
QStyleOption_setState(opt, GetControlState(Details));
|
||||||
|
QStyleOption_setRect(opt, @ARect);
|
||||||
|
QStyle_drawPrimitive(Style, Element.PrimitiveElement, opt, Context.Widget);
|
||||||
|
QStyleOption_Destroy(opt);
|
||||||
|
end;
|
||||||
|
qdvStandardPixmap:
|
||||||
begin
|
begin
|
||||||
opt := QStyleOptionTabWidgetFrame_create();
|
|
||||||
// need widget to draw gradient
|
|
||||||
end
|
|
||||||
else
|
|
||||||
opt := QStyleOption_create(Integer(QStyleOptionVersion), Integer(QStyleOptionSO_Default));
|
opt := QStyleOption_create(Integer(QStyleOptionVersion), Integer(QStyleOptionSO_Default));
|
||||||
QStyleOption_setState(opt, GetControlState(Details));
|
AIcon := QIcon_create();
|
||||||
QStyleOption_setRect(opt, @ARect);
|
QStyle_standardIcon(Style, AIcon, Element.StandardPixmap, opt);
|
||||||
QStyle_drawPrimitive(Style, Element.PrimitiveElement, opt, Context.Widget);
|
QIcon_paint(AIcon, Context.Widget, ARect.Left, ARect.Top,
|
||||||
QStyleOption_Destroy(opt);
|
ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
|
||||||
end;
|
QIcon_destroy(AIcon);
|
||||||
qdvStandardPixmap:
|
QStyleOption_Destroy(opt);
|
||||||
begin
|
end;
|
||||||
opt := QStyleOption_create(Integer(QStyleOptionVersion), Integer(QStyleOptionSO_Default));
|
|
||||||
AIcon := QIcon_create();
|
|
||||||
QStyle_standardIcon(Style, AIcon, Element.StandardPixmap, opt);
|
|
||||||
QIcon_paint(AIcon, Context.Widget, ARect.Left, ARect.Top,
|
|
||||||
ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
|
|
||||||
QIcon_destroy(AIcon);
|
|
||||||
QStyleOption_Destroy(opt);
|
|
||||||
end;
|
end;
|
||||||
|
finally
|
||||||
|
Context.restore;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user