Hi Bill, Em Ter, 2006-09-26 às 17:12 +0100, Bill Haneman escreveu: > ... > > As an aside, why isn't there a race in the setproperty/IfEvent code > below? (You can answer me offline)
I don't understand your question here Bill. What do you mean by "a race"? > > Bill Carlos. > > Matthias Clasen wrote: > > >On Tue, 2006-09-26 at 17:58 +0200, Lubos Lunak wrote: > > > > > >>Dne úterý 26 září 2006 12:21 Bill Haneman napsal(a): > >> > >> > >>>Matthias/All: > >>> > >>>The whole _NET_WM_USER_TIME thing is a continuing problem for > >>>accessibility, as it now stands. In an assistive technology setting, > >>>there isn't always an X event that corresponds to the "user action" > >>>which results in a new window being posted or focus changing. Since X > >>>doesn't allow us to get a meaningful answer to "what's the current > >>>timestamp", we have serious problems when trying to interact with > >>>windows via non-X-device-based user requests. > >>> > >>>We really need a solution for this! > >>> > >>> > >> Copy&paste from KApplication::updateUserTimestamp(): > >> > >>// get current X timestamp > >>Window w = XCreateSimpleWindow( qt_xdisplay(), qt_xrootwin(), 0, 0, 1, 1, > >>0, > >>0, 0 ); > >>XSelectInput( qt_xdisplay(), w, PropertyChangeMask ); > >>unsigned char data[ 1 ]; > >>XChangeProperty( qt_xdisplay(), w, XA_ATOM, XA_ATOM, 8, PropModeAppend, > >>data, > >>1 ); > >>XEvent ev; > >>XWindowEvent( qt_xdisplay(), w, PropertyChangeMask, &ev ); > >>time = ev.xproperty.time; > >>XDestroyWindow( qt_xdisplay(), w ); > >> > >> > >> > > > >Here is the gdk equivalent: > > > >guint32 > >gdk_x11_get_server_time (GdkWindow *window) > >{ > > Display *xdisplay; > > Window xwindow; > > guchar c = 'a'; > > XEvent xevent; > > Atom timestamp_prop_atom; > > g_return_val_if_fail (GDK_IS_WINDOW (window), 0); > > g_return_val_if_fail (!GDK_WINDOW_DESTROYED (window), 0); > > xdisplay = GDK_WINDOW_XDISPLAY (window); > > xwindow = GDK_WINDOW_XWINDOW (window); > > timestamp_prop_atom = > > gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window), > > "GDK_TIMESTAMP_PROP"); > > XChangeProperty (xdisplay, xwindow, timestamp_prop_atom, > > timestamp_prop_atom, > > 8, PropModeReplace, &c, 1); > > XIfEvent (xdisplay, &xevent, > > timestamp_predicate, GUINT_TO_POINTER(xwindow)); > > return xevent.xproperty.time; > >} > > > >it is even exported, so you can just use it. > > > > > >_______________________________________________ > >wm-spec-list mailing list > >wm-spec-list@gnome.org > >http://mail.gnome.org/mailman/listinfo/wm-spec-list > > > > > > _______________________________________________ > wm-spec-list mailing list > wm-spec-list@gnome.org > http://mail.gnome.org/mailman/listinfo/wm-spec-list _______________________________________________________ Voc� quer respostas para suas perguntas? Ou voc� sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas ! http://br.answers.yahoo.com/
_______________________________________________ wm-spec-list mailing list wm-spec-list@gnome.org http://mail.gnome.org/mailman/listinfo/wm-spec-list