LCL: gtk2: fix toolbutton dropdown arrow painting

git-svn-id: trunk@50929 -
This commit is contained in:
ondrej 2015-12-19 10:51:28 +00:00
parent ce69f57579
commit cf23ce6dbb

View File

@ -370,7 +370,30 @@ begin
TP_SPLITBUTTON, TP_SPLITBUTTON,
TP_SPLITBUTTONDROPDOWN: TP_SPLITBUTTONDROPDOWN:
begin begin
if (Details.Part = TP_SPLITBUTTONDROPDOWN) and (AIndex = 1) then Result.Widget := GetStyleWidget(lgsToolButton);
case Details.State of
TS_PRESSED, TS_CHECKED, TS_HOTCHECKED:
Result.Shadow := GTK_SHADOW_IN;
TS_HOT:
Result.Shadow := GTK_SHADOW_ETCHED_OUT;
else
Result.Shadow := GTK_SHADOW_NONE;
end;
if Details.Part = TP_SPLITBUTTONDROPDOWN then
begin
case Details.State of
TS_DISABLED: Result.State := GTK_STATE_INSENSITIVE;
//TS_HOT: Result.State := GTK_STATE_ACTIVE; // << painting bug in Laz+Gtk2
else
Result.State := GTK_STATE_NORMAL;
end;
end else
Result.State := GtkButtonMap[Details.State];
Result.IsHot := Details.State in [TS_HOT, TS_HOTCHECKED];
if Result.Style = nil then
Result.Style := GetStyle(lgsToolButton);
if (Details.Part = TP_SPLITBUTTONDROPDOWN) then
begin begin
Result.Detail := 'arrow'; Result.Detail := 'arrow';
Result.ArrowType := GTK_ARROW_DOWN; Result.ArrowType := GTK_ARROW_DOWN;
@ -380,20 +403,6 @@ begin
end end
else else
begin begin
Result.Widget := GetStyleWidget(lgsToolButton);
if Result.Style = nil then
Result.Style := GetStyle(lgsToolButton);
Result.State := GtkButtonMap[Details.State];
if Details.State in [TS_PRESSED, TS_CHECKED, TS_HOTCHECKED] then
Result.Shadow := GTK_SHADOW_IN
else
if Details.State in [TS_HOT] then
Result.Shadow := GTK_SHADOW_ETCHED_OUT
else
Result.Shadow := GTK_SHADOW_NONE;
Result.IsHot := Details.State in [TS_HOT, TS_HOTCHECKED];
Result.Detail := 'button'; Result.Detail := 'button';
if Result.Shadow = GTK_SHADOW_NONE then if Result.Shadow = GTK_SHADOW_NONE then
Result.Painter := gptNone Result.Painter := gptNone
@ -551,8 +560,6 @@ begin
else else
begin begin
Result := 1; Result := 1;
if (Details.Element = teToolBar) and (Details.Part = TP_SPLITBUTTONDROPDOWN) then
inc(Result); // + Arrow
end; end;
end; end;