summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graemeg@gmail.com>2013-04-02 11:56:03 +0100
committerGraeme Geldenhuys <graemeg@gmail.com>2013-04-02 11:56:03 +0100
commitb8b108a2e3db8a24288bb62bdd5c2cfb493ba4c8 (patch)
treef58024185a8dc76c1df1535198b2696eff265de8
parent053f7cb975dbe506446fe2600e6a1e284ce45106 (diff)
downloadfpGUI-b8b108a2e3db8a24288bb62bdd5c2cfb493ba4c8.tar.xz
Buttons & Styles now support hover effect on standard buttons too.
Before we only had the mouse hover effect on Flat buttons. But now the Style can enable hover support for normal buttons too. Important for Win7 and MacOSX like themes.
-rw-r--r--src/corelib/fpg_main.pas6
-rw-r--r--src/gui/fpg_button.pas12
2 files changed, 15 insertions, 3 deletions
diff --git a/src/corelib/fpg_main.pas b/src/corelib/fpg_main.pas
index f90e6b4c..89c5da1d 100644
--- a/src/corelib/fpg_main.pas
+++ b/src/corelib/fpg_main.pas
@@ -214,6 +214,7 @@ type
procedure DrawButtonFace(ACanvas: TfpgCanvas; r: TfpgRect; AFlags: TfpgButtonFlags); overload;
function GetButtonBorders: TRect; virtual;
function GetButtonShift: TPoint; virtual;
+ function HasButtonHoverEffect: boolean; virtual;
{ Menus }
procedure DrawMenuBar(ACanvas: TfpgCanvas; r: TfpgRect; ABackgroundColor: TfpgColor); virtual;
procedure DrawMenuRow(ACanvas: TfpgCanvas; r: TfpgRect; AFlags: TfpgMenuItemFlags); virtual;
@@ -2340,6 +2341,11 @@ begin
Result := Point(1, 1);
end;
+function TfpgStyle.HasButtonHoverEffect: boolean;
+begin
+ Result := False;
+end;
+
function TfpgStyle.GetControlFrameBorders: TRect;
begin
Result := Rect(2, 2, 2, 2);
diff --git a/src/gui/fpg_button.pas b/src/gui/fpg_button.pas
index 28db95d6..3bc026de 100644
--- a/src/gui/fpg_button.pas
+++ b/src/gui/fpg_button.pas
@@ -550,6 +550,12 @@ begin
Include(lBtnFlags, btfHover)
else if FFlat then
Include(lBtnFlags, btfFlat);
+
+ if (not FFlat) and (not FDown) and fpgStyle.HasButtonHoverEffect then
+ begin
+ if FState = 1 then
+ Include(lBtnFlags, btfHover);
+ end;
end
else
begin
@@ -558,7 +564,7 @@ begin
Include(lBtnFlags, btfHover);
end;
- if not FFlat and FDefault then
+ if (not FFlat) and FDefault then
Include(lBtnFlags, btfIsDefault);
if FBackgroundColor <> clButtonFace then
@@ -747,7 +753,7 @@ begin
FDown := False;
Repaint;
end
- else if FFlat then
+ else if FFlat or fpgStyle.HasButtonHoverEffect then
begin
if Enabled then
Repaint;
@@ -766,7 +772,7 @@ begin
FDown := True;
Repaint;
end
- else if FFlat then
+ else if FFlat or fpgStyle.HasButtonHoverEffect then
begin
if Enabled then
Repaint;