On Thu, 17 Aug 2006 14:51:17 +0200
Marc Weustink <[EMAIL PROTECTED]> wrote:

> 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)

Yes.

 
> > 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.

Ok. Maybe FormStyle could be even better?

 
> > 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.

That's not the same.
When Form.MouseGrabbing=true it is still possible for all child controls to 
work normally, including SetMouseCapture. The above mouse 'grabbing' limits the 
mouse pointer to the forms region. It does not really grab. Maybe it should be 
renamed to 'LimitMouseMovement'.


Mattias

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

Reply via email to