discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GWorkspace as windowmanager?


From: Gregory John Casamento
Subject: Re: GWorkspace as windowmanager?
Date: Sat, 12 Jun 2004 12:20:57 -0700 (PDT)

--- Enrico Sersale <enrico@imago.ro> wrote:
> On 2004-06-12 18:33:14 +0300 Enrico Sersale <enrico@imago.ro> wrote:
> 
> > On 2004-06-12 18:10:27 +0300 Enrico Sersale <enrico@imago.ro> wrote:
> > 
> >> On 2004-06-12 15:03:49 +0300 Enrico Sersale <enrico@imago.ro> wrote:
> >> 
> >>> On 2004-06-12 14:05:37 +0300 Gregory John Casamento 
> >>> <greg_casamento@yahoo.com> wrote:
> >>> 
> >>>> 
> >>>>>> <snip>
> >>>>> 
> >>>>> Is there a way to have a NSWindow which _windowNum is 0, that is, the X
> 
> >>>>> root
> >>>>> window?
> >>>>> In XGServerWindow we have a -_rootWindowForScreen: method returning a
> >>>>> gswindow_device_t structure that represents the root window; it is used
> 
> >>>>> in
> >>>>> -window::: to set the root window for all the new windows.
> >>>>> I've tried to subclass NSWindow to override -_initBackendWindow: and 
> >>>>> then add
> >>>>> something in XGServerWindow to setup all the stuff, but I can't because
> >>>>> -_initBackendWindow: accesses windowmaps, a class variable of NSWindow.
> >>>> 
> >>>> If you find the answer to this, please let me know as well. 
> >>>> InnerSpace.app,
> >>>> the screensaver in my GAP project, needs to have a window which sits at 
> >>>> this
> >>>> level as well.
> >>> 
> >>> Only a idea...
> >>> 
> >>> If a window is deferred, NSWindow calls -_initBackendWindow: only in 
> >>> -orderWindow:relativeTo:.
> >>> NSDesktopWindowLevel is a GNUstep addition, so, the case of a window that
> 
> >>> is deferred *and* which level is NSDesktopWindowLevel could be used to 
> >>> identify the root window.
> >>> In this case NSWindow, instead of -_initBackendWindow:, could use a other
> 
> >>> method, say "-_initRootBackendWindow:", that, throught a appropiate
> method 
> >>> in GSDisplayServer (instead of -window:::, -rootwindow:::, for example), 
> >>> let the backend class setup the window. (The backend part should be easy 
> >>> to write, I think).
> >> 
> >> This seems to work, but I'm getting a "Desktop[9837] X-Windows error - 
> >> BadAccess (attempt to access private resource denied)" in the new backend 
> >> method. I'm doing something wrong with some X function. Could somebody a 
> >> little more expert in X take a look at this? Gregory?
> > 
> > The problem is here:
> > 
> >   XSelectInput(dpy, window->ident, ExposureMask | KeyPressMask |
> >                             KeyReleaseMask | ButtonPressMask |
> >                          ButtonReleaseMask | ButtonMotionMask |
> >                        StructureNotifyMask | PointerMotionMask |
> >                            EnterWindowMask | LeaveWindowMask |
> >                            FocusChangeMask | PropertyChangeMask |
> >                         ColormapChangeMask | KeymapStateMask |
> >                         VisibilityChangeMask);
> > 
> > Anyway, I can confirm that this works; I'm adding NSViews in the root
> window 
> > and drawing in them. The only thing that doesn't work are the events.
> 
> Excuse me. This is the third time I reply to my mail :-)
> 
> It seems that there are some restrictions in setting the event-mask in
> XSelectInput(); I never used XLib and I didn't know this. I can't get mouse
> and key events beacause the window manager has already selected them.
> 
> Is there any way to go around this?
> 
> All the other things work perfectly, the Desktop.app window is now the real X
> root window (windowNumber = 0); and this only with four lines added in
> NSWindow.m, a little method in GSDisplayServer and the rest in
> XGServerWindow.
> I think that it would be a pity not make it to work...

I'm wondering if changing this would cause issues with the window manager.  
What do you think? :/   

You should probably go ahead and commit what you've changed, so that the rest
of us can take a look at it.  My knowledge of "pure" X is a little rusty, but I
might be able to figure it out.

GJC

=====
Gregory John Casamento -- CEO/President Open Logic Corp.
#### Maintainer of Gorm for GNUstep.


        
                
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]