- clipboard->m_waiting = FALSE;
- return;
- }
-
- if (selection_data->length <= 0)
- {
- clipboard->m_waiting = FALSE;
- return;
- }
-
- /* make sure we got the data in the correct form */
- if (selection_data->type != GDK_SELECTION_TYPE_ATOM)
- {
- clipboard->m_waiting = FALSE;
- return;
- }
-
-/*
- wxDataFormat clip( selection_data->selection );
- wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
-*/
-
- // the atoms we received, holding a list of targets (= formats)
- GdkAtom *atoms = (GdkAtom *)selection_data->data;
+ /* make sure we got the data in the correct form */
+
+ // VZ: I don't know what does this mean (and GTK+ authors apparently
+ // don't know either, Owen Taylor writes that "Motif seems to ask
+ // for TARGETS atom sometimes" (??)), but it seems that xterm
+ // (which is not a Motif app AFAIK) does this too, so it's
+ // absolutely essential to support this, otherwise we can't paste
+ // text from xterm!
+ GdkAtom type = selection_data->type;
+ if ( type != GDK_SELECTION_TYPE_ATOM )
+ {
+ if ( strcmp(gdk_atom_name(type), "TARGETS") != 0 )
+ {
+ // don't know what this is
+ clipboard->m_waiting = FALSE;
+ return;
+ }
+ //else: don't know what this is, but it seems to work in the same
+ // way as GDK_SELECTION_TYPE_ATOM does
+ }
+ //else: the data is the list of formats supported by the selection