Mattias wrote:
On Tue, 15 Aug 2006 13:19:51 -0400
Andrew Haines <[EMAIL PROTECTED]> wrote:

A.J. Venter wrote:
Basically I don't know if lazarus CAN do what I need for this
part... and before I can finalize design, I need to know if this
will be a form inside the app or a sepperate program altogether
acting as a plugin.
I'm not sure that X/The Window manager can do what you want ?
This is not a Lazarus matter alone.
That part at least I CAN answer. It can, there is a wm hint for
this. The reason I know is that I have done it before. If you use SDL and create your screen with OR SDL_FullScreen it
does exactly that .
The real question is if you can do this in lazarus - I am pretty
sure GTK ALSO has a function for it (not ABSOLUTELY sure in this
case though).

I used the SDL plugin mechanism in direqcafe up to and including
version 3.x - as I am starting on version 4.0 (with new name
zycafe) I would LIKE if possible to do that WITHOUT the SDL
dependency though.

In theory somebody with sufficient knowledge of C and xlib should
be able to figure out how it's done by looking at the SDL code, and
possibly implementing something like an fs_FullScreen or perhaps a
TFullScreen component based on it (e.g. a nonvisual component you
can drop on a form to make the form fullscreen which also lets you
set parameters like 'grab keyboard' or such) ?
For windows the sheer AMOUNT of existing full-screen apps suggest
there is a almost certainly a win32 API call for it.

I won't lie and pretend I am good enough at C and Xlib to do it by
myself (I could but I don't have the TIME for all the research I
would need to do first) but if anybody else would have a use for
such a function, we could work together on it. I have done some xlib work in lazarus before TScreenSize uses it
under Linux.

Either way - the consensus seems to be that lazarus cannot do it at
present ?

A.J.
Hi, the attached tar.bz2 project shows how to use a lcl x11/gtk1 form
fullscreen and have exclusivly the mouse and keyboard.

Gtk2 is possible as well, you just need to make minor changes to
Form2X11Window

Thanks.
I added those functions to gtkproc.pp:

procedure SetWindowFullScreen(AForm: TCustomForm; const AValue: Boolean);
procedure GrabKeyBoardToForm(AForm: TCustomForm);
procedure ReleaseKeyBoardFromForm(AForm: TCustomForm);
procedure GrabMouseToForm(AForm: TCustomForm);
procedure ReleaseMouseFromForm(AForm: TCustomForm);

Better add these to TWSGTKCustomForm

Thats the place were most gtk proc suff will endup in the future.
(or whn ther are not poblished in the WS add them to TWSGTKCustomFormPrivate (or was it TWSGTKProvateCustomForm)

function FormToX11Window(const AForm: TCustomForm): X.TWindow;


Now we need some nice function names for the LCL.
In some sense fullscreen is a windowstate. So maybe we should add it
'wsFullScreen' to TWindowState. OTOH a fullscreen is just a
special wsMaximized, so a FullScreen boolean property might be better.
Comments?

I think we can use wsFullScreen for that. What would be the meaning of a wsMinimized windowstate with a FullScreen := True. A lot of code is optimized to do noting if the WindowState is wsMinimized. If we have an extra boolen, those have to be reviewed all.

The exclusive grab of mouse and keyboard functions for TCustomForm:
procedure GrabKeyboard;   // grab even winow manager keys
procedure ReleaseKeyboard;// undo GrabKeyboard
procedure GrabMouse;   // grab mouse for form and childs
procedure ReleaseMouse;// undo GrabMouse

Comments?

Arent those already there in TControl ?
At least for the mouse there is the csCaptureMouse control state.
Further there is something like SetMouseCapture iirc.

Marc


_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to