summaryrefslogtreecommitdiff
path: root/src/corelib
diff options
context:
space:
mode:
authorgraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2008-03-07 12:54:40 +0000
committergraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2008-03-07 12:54:40 +0000
commite98eebf9c9745228b76319d615ca6ee4a62a0f6f (patch)
tree57db96b2458acd4e7541c3caccd213536171433d /src/corelib
parent173450f98ff30dc29219440af6668e345d072f75 (diff)
downloadfpGUI-e98eebf9c9745228b76319d615ca6ee4a62a0f6f.tar.xz
* TfpgForm now has a FullScreen property. Currently only implemented in X11.
* TfpgForm also has a new method SetFullscreen(boolean) which allows you to switch fullscreen mode at any time.
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/gfxbase.pas12
-rw-r--r--src/corelib/x11/gfx_x11.pas10
2 files changed, 21 insertions, 1 deletions
diff --git a/src/corelib/gfxbase.pas b/src/corelib/gfxbase.pas
index ffba04bb..276f5a38 100644
--- a/src/corelib/gfxbase.pas
+++ b/src/corelib/gfxbase.pas
@@ -24,7 +24,7 @@ type
TWindowType = (wtChild, wtWindow, wtModalForm, wtPopup);
- TWindowAttribute = (waSizeable, waAutoPos, waScreenCenterPos, waStayOnTop);
+ TWindowAttribute = (waSizeable, waAutoPos, waScreenCenterPos, waStayOnTop, waFullScreen);
TWindowAttributes = set of TWindowAttribute;
TMouseCursor = (mcDefault, mcArrow, mcCross, mcIBeam, mcSizeEW, mcSizeNS,
@@ -364,6 +364,7 @@ type
function WindowToScreen(ASource: TfpgWindowBase; const AScreenPos: TPoint): TPoint;
procedure CaptureMouse; virtual; abstract;
procedure ReleaseMouse; virtual; abstract;
+ procedure SetFullscreen(AValue: Boolean); virtual;
property HasHandle: boolean read HandleIsValid;
property WindowType: TWindowType read FWindowType write FWindowType;
property WindowAttributes: TWindowAttributes read FWindowAttributes write FWindowAttributes;
@@ -883,6 +884,15 @@ begin
Result := DoWindowToScreen(ASource, AScreenPos);
end;
+procedure TfpgWindowBase.SetFullscreen(AValue: Boolean);
+begin
+ if AValue then
+ Include(FWindowAttributes, waFullScreen)
+ else
+ Exclude(FWindowAttributes, waFullScreen);
+ // now decendants must override this and implement the actualy fullscreen part
+end;
+
{ TfpgCanvasBase }
procedure TfpgCanvasBase.SetInterpolation(const AValue: TfpgCustomInterpolation);
diff --git a/src/corelib/x11/gfx_x11.pas b/src/corelib/x11/gfx_x11.pas
index 94c86a88..65533570 100644
--- a/src/corelib/x11/gfx_x11.pas
+++ b/src/corelib/x11/gfx_x11.pas
@@ -147,6 +147,7 @@ type
constructor Create(AOwner: TComponent); override;
procedure CaptureMouse; override;
procedure ReleaseMouse; override;
+ procedure SetFullscreen(AValue: Boolean); override;
end;
@@ -1346,6 +1347,9 @@ begin
AllocateWindowHandle;
XMapWindow(xapplication.Display, FWinHandle);
Include(FWinFlags, xwsfMapped);
+ // Fullscreen can only be set visible (mapped) windows.
+ if waFullScreen in FWindowAttributes then
+ fpgApplication.netlayer.WindowSetFullscreen(FWinHandle, True);
end
else
begin
@@ -1473,6 +1477,12 @@ begin
XUngrabPointer(xapplication.display, CurrentTime);
end;
+procedure TfpgWindowImpl.SetFullscreen(AValue: Boolean);
+begin
+ inherited SetFullscreen(AValue);
+ fpgApplication.netlayer.WindowSetFullscreen(FWinHandle, AValue);
+end;
+
{ TfpgFontResourceImpl }
constructor TfpgFontResourceImpl.Create(const afontdesc: string);