クリップボードとドラッグアンドドロップ
ユーザが異なるアプリケーションでさまざまな種類のデータを処理するようになるにつれアプリケーション間でオブジェクトやデータを共有する必要は増加してきまた。GNOMEはアプリケーション間でのデータ転送に関連する2つの方法をサポートします:ドラッグアンドドロップ操作の使用と、システム規模のクリップボードを介したコピーおよびペーストです。クリップボードとドラッグアンドドロップは複数のアプリケーション間で機能し、GNOMEで開発されていないアプリケーションもそれに含まれます
クリップボードはアプリケーションのデータに対してユーザが明示的にコピーの操作を行ったときに使用されます。それによりアプリケーションはクリップボードの所有権を主張したことになります。ユーザが他のアプリケーションでペーストの操作を行ったときは、そのアプリケーションから最初のアプリケーションに対してクリップボードのデータが要求されます。クリップボードの操作はGTK+でフルにサポートされています。
ドラッグアンドドロップも同様の操作ですが、ポインタを追跡してドロップするターゲットとなる可能性がある対象の上を通過する場合は、カーソルを更新することが要求されます。アプリケーションはドラッグ中にポインタが上を通過すると通知を受けます。そのときアプリケーションはカーソルを更新すしてドロップを受け入れられるかどうかを示さなければなりません。GTK+はドロップされるターゲットをアプリケーションで管理するのを容易にする、洗練されたAPIによってドラッグアンドドロップをサポートします。
クリップボードとドラッグアンドドロップ操作はどちらもコンテンツのネゴシエーションをサポートします。アプリケーションが提供すべきデータを持っているときは、そのデータに関してどのようなフォーマットが有効なのかを提示します。データを受け取るアプリケーションは最も適切なフォーマットを要求します。たとえばユーザがウェブブラウザからテキストをコピーした場合、ワードプロセッサは受け取るデータがHTMLフォーマットでも管理できるためHTMLフォーマットを要求し、通常のテキストエディタはフォーマットなしのテキストを要求します。
あなたはあなたのアプリケーションで操作するデータにたいして、クリップボードとドラッグアンドドロップの機能を提供するべきです。クリップボードとドラッグアンドドロップはテキストにたいしてだけではなく、他のデータにたいしても便利な機能です: ファイル、グラフィック、そしてサウンド・クリップなどはどれもアプリケーション間で転送が可能なデータの例です。GTK+を使用すれば、テキストアリア、カラーボタン、ファイル選択、その他の組み込み済みのユーザインタフェース・コントロールで自動的にクリップボードとドラッグアンドドロップのサポートを享受することができます。アプリケーションで使用するその他のデータにたいするサポートを提供するためにもGTK+のAPIを使用するべきです。
詳細については Drag-and-Drop Protocol for the X Window System、X Clipboard Explanation、そして The Clipboard Manager Specification を参照してください。