Where to get timestamp for selection?

Yann Droneaud ydroneaud at mandriva.com
Fri Feb 26 01:06:41 PST 2010


Le vendredi 26 février 2010 à 13:39 +0800, Zhang, Xing Z a écrit :
> Hello experts:
> 
>          ICCCM said “Clients attempting to acquire a selection must
> set the time value of the SetSelectionOwner 
> 
> request to the timestamp of the event triggering the acquisition
> attempt, not to CurrentTime”. In my simple
> 
> code, there is no event happen before SetSelectionOwner, how can I get
> the timestamp? I didn’t see a function
> 
> used to require timestamp in Xlib, so I have to trigger an event just
> for getting timestamp?
> 
>          I see in MetaCity, there is a PropModeReplace event prior to
> SetSelectionOwner. If I have to produce an event
> 
> by myself, what’s event usually used?
> 

The timestamp usually come from a ButtonEvent or KeyPressEvent, any
event linked to the user's action which creates the selection.
Selection shouldn't come from the ether, and that's why ICCCM forbid
CurrentTime usage.

For a test, you could could use the trick, from gtk,
gdk_x11_get_server_time():

  XChangeProperty (xdisplay, xwindow, timestamp_prop_atom,
                   timestamp_prop_atom,
                   8, PropModeReplace, &c, 1);

  XIfEvent (xdisplay, &xevent,
            timestamp_predicate, GUINT_TO_POINTER(xwindow));

That should be the trick used by Metacity.

>  
> 
>          I am not sure if there is a maillist for X newbie, if I post
> to wrong place, pls kindly direct me to right room.
> 

In the future, you should ask on xorg at freedesktop.org instead of
xorg-devel at lists.x.org.

Regards.

-- 
Yann Droneaud





More information about the xorg mailing list