On Thu, 2007-04-19 at 12:16 +0200, Bert Freudenberg wrote: > On Apr 19, 2007, at 12:11 , Marco Pesenti Gritti wrote: > > > On Thu, 2007-04-19 at 05:51 -0400, Zephaniah E. Hull wrote: > >> On Thu, Apr 19, 2007 at 11:47:22AM +0200, Marco Pesenti Gritti wrote: > >>> On Thu, 2007-04-19 at 01:41 -0400, Zephaniah E. Hull wrote: > >>>> 2: This is where you have choices and tradeoffs. > >>>> You can simply grab the core pointer events and let the > >>>> pointer move > >>>> around, this has the problem of not being able to scroll in one > >>>> direction once the pointer has reached the edge of the screen. > >>> > >>> Yeah, this won't work. > >>> > >>>> You can do a full pointer grab, as many games do, usually > >>>> making the > >>>> pointer invisible at the same time. This allows you to scroll > >>>> around however you want, but without some tricks to save/ > >>>> restore > >>>> pointer position, this leaves the pointer in the middle of the > >>>> screen when you let go. > >>>> > >>> > >>> What do you mean with full pointer grab exactly? This is what SDL > >>> does: > >>> > >>> XGrabPointer(SDL_Display, SDL_Window, True, 0, > >>> GrabModeAsync, GrabModeAsync, > >>> SDL_Window, None, CurrentTime); > >>> > >>> I tried it out with neverball and once you reach the edge you > >>> can't move in that > >>> direction anymore. > >> > >> Extra work is needed, specificly you have to move the pointer to the > >> center of the screen, and on each movement move the pointer back > >> to the > >> center of the screen. > >> > >> It's ugly, but it's also how X applications have stolen the > >> pointer for > >> ages. > >>> > > > > OK, sounds like a reasonable approach for Gen1 to me. The only > > downside > > I can think of is that we have to hide the pointer. > > ... and that every activity will have to implement this.
We can provide an implementation that activities can reuse. For GtkScrolledWindow we can provide a subclass or even patch gtk to support this out of the box. Clearly it would be better if it could work for everyone transparently but I can't think of any way to do that (other that using mouse wheel scroll events, which are fairly limited). Marco _______________________________________________ Devel mailing list [email protected] http://mailman.laptop.org/mailman/listinfo/devel
