diff options
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/gfxbase.pas | 12 | ||||
-rw-r--r-- | src/corelib/x11/gfx_x11.pas | 10 |
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); |