mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 16:38:02 +02:00
QT implement TColorDialog.AlphaChannel and associated option cdShowAlphaChannel.
This commit is contained in:
parent
633cb5bbc0
commit
2753fed6e8
@ -857,11 +857,11 @@ end;
|
|||||||
class procedure TQtWSColorDialog.ShowModal(const ACommonDialog: TCommonDialog);
|
class procedure TQtWSColorDialog.ShowModal(const ACommonDialog: TCommonDialog);
|
||||||
var
|
var
|
||||||
AColor: TColorRef;
|
AColor: TColorRef;
|
||||||
AQColor: TQColor;
|
AQColor, AQColorRet: TQColor;
|
||||||
AQtColor: QColorH;
|
|
||||||
ARgb: QRgb;
|
|
||||||
ReturnBool: Boolean;
|
ReturnBool: Boolean;
|
||||||
|
ATitle: WideString;
|
||||||
ColorDialog: TColorDialog absolute ACommonDialog;
|
ColorDialog: TColorDialog absolute ACommonDialog;
|
||||||
|
AOptions: QColorDialogColorDialogOptions;
|
||||||
{$IFDEF HASX11}
|
{$IFDEF HASX11}
|
||||||
AWND: HWND;
|
AWND: HWND;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -881,30 +881,35 @@ var
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
AColor := ColorToRgb(ColorDialog.Color);
|
AColor := ColorToRgb(ColorDialog.Color);
|
||||||
AQColor.Alpha := $FFFF;
|
AQColor.Alpha := Word(ColorDialog.AlphaChannel) * $0101;
|
||||||
AQColor.ColorSpec := 1;
|
AQColor.ColorSpec := 1;
|
||||||
AQColor.Pad := 0;
|
AQColor.Pad := 0;
|
||||||
ColorRefToTQColor(AColor, AQColor);
|
ColorRefToTQColor(AColor, AQColor);
|
||||||
AQtColor := QColor_create(PQColor(@AQColor));
|
|
||||||
ARgb := QColor_rgba(AQtColor);
|
|
||||||
FillCustomColors;
|
FillCustomColors;
|
||||||
|
|
||||||
ARgb := QColorDialog_getRgba(ARgb, @ReturnBool,
|
{$IFDEF HASX11}
|
||||||
TQtWSCommonDialog.GetDialogParent(ACommonDialog));
|
Clipboard.BeginX11SelectionLock;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
QColor_fromRgba(PQColor(AQtColor), ARgb);
|
ATitle := UTF8ToUTF16(ACommonDialog.Title);
|
||||||
try
|
AQColorRet := Default(TQColor);
|
||||||
QColor_toRgb(AQtColor, @AQColor);
|
AOptions := 0; // here we add possible options from ColorDialog.Options, see QColorDialogColorDialogOptions for possible options.
|
||||||
TQColorToColorRef(AQColor, AColor);
|
if (cdShowAlphaChannel in ColorDialog.Options) then
|
||||||
ColorDialog.Color := TColor(AColor);
|
AOptions := AOptions or QColorDialogShowAlphaChannel;
|
||||||
finally
|
QColorDialog_getColor(PQColor(@AQColorRet), PQColor(@AQColor), TQtWSCommonDialog.GetDialogParent(ACommonDialog), @ATitle, AOptions);
|
||||||
QColor_destroy(AQtColor);
|
|
||||||
end;
|
ReturnBool := AQColorRet.ColorSpec <> 0;
|
||||||
|
|
||||||
if ReturnBool then
|
if ReturnBool then
|
||||||
ACommonDialog.UserChoice := mrOk
|
begin
|
||||||
else
|
TQColorToColorRef(AQColorRet, AColor);
|
||||||
ACommonDialog.UserChoice := mrCancel;
|
ColorDialog.Color := AColor;
|
||||||
|
ColorDialog.AlphaChannel := AQColorRet.Alpha and $FF;
|
||||||
|
ColorDialog.UserChoice := mrOk
|
||||||
|
end else
|
||||||
|
ColorDialog.UserChoice := mrCancel;
|
||||||
|
|
||||||
{$IFDEF HASX11}
|
{$IFDEF HASX11}
|
||||||
if (QtWidgetSet.WindowManagerName = 'xfwm4') and (QApplication_activeModalWidget() <> nil) then
|
if (QtWidgetSet.WindowManagerName = 'xfwm4') and (QApplication_activeModalWidget() <> nil) then
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user