Linuxでは、ドラッグアンドドロップはどのように機能しますか?

Linuxでは、ドラッグアンドドロップはどのように機能しますか?

クリップボードの実装を最初に学ぶ必要がありますか、それともドラッグアンドドロップ(D&D)は完全に独立している必要がありますか?

D&D関連コードを含むコンポーネントは何ですか? (.svgへのリンクは最高の答えになるでしょう)

「ドラッグアンドドロップ前にウィンドウを復元するにはタスクバーにドラッグ」機能を実装するには、DEにパッチを適用する必要がありますか?それでは、Gnome、KDE、XFCEを扱うのに十分ですか?

ドラッグ中にウィンドウとコントロールの不透明度/透明度に関する問題は何ですか? (WinForms Designerの完了を妨げるものは何ですか)?

https://bugzilla.novell.com/show_bug.cgi?id=323819

エンドポイントジョブの変更にキー(、、、、Shift)とその組み合わせは通常どのように使用されますか?CtrlAltWin

答えとどこでも得られる最も有用な平和:

The X11 drag and drop protocol is called XDND:
http://www.newplanetsoftware.com/xdnd
API which gives an access to the protocol implementation (is it Xlib?):
https://en.wikipedia.org/wiki/X_Window_selection

Gtk (uses Xlib):
https://wiki.gnome.org/GnomeLove/DragNDropTutorial

Gtk# (uses Gtk):
https://github.com/mono/gtk-sharp/blob/master/sample/TestDnd.cs
http://my.safaribooksonline.com/book/programming/mono/0596007922/gtksharp/monoadn-chp-4-sect-8

mono WinForms implementation (Uses Gtk# ?)
http://www.mono-project.com/docs/gui/winforms/

D&D in client application (uses WinForms):
http://zetcode.com/gui/csharpwinforms/dragdrop/

guides to overview use cases:
https://en.wikipedia.org/wiki/Human_interface_guidelines
("four-finger drag" operation and similar things)

ベストアンサー1

ドラッグアンドドロップAPIは、他のものの上に構築されたGUIウィジェットライブラリに実装されています(Linuxの場合、拡張ライブラリ)。

Qt(KDE)、Gtk(Gnome)、XFC(XFCE)には十分ですか?

QtとGtkは異なるGUIライブラリです。ドラッグアンドドロップが可能な唯一のコンテキストであるGUIアプリケーションを作成する場合は、次を選択します。図書館、二人でも三人でもありません。 QtとGtkのバージョンを作成して維持する人がいるということを聞いたことはありません。なぜならそれは言葉にならないからです。同じプラットフォームセットに移植できるからです。 Gtkバージョンがあれば、おそらくQtを実行しているシステムで動作し、その逆も同様です。

QtアプリケーションとGtkアプリケーションはどちらもLinux DEで問題なく実行されます。 GNOME と KDE に限定されない。 KDEを使用している場合は、デスクトップにGtkアプリケーションがあります。 GNOMEを使用している場合は、おそらくQtがあります。それはソフトウェアスタックの仕組み

Xlibのみを使用してGUIアプリケーションを作成することは可能ですが、これはいくつかの理由でやや異例です1。移植性がなく、ソフトウェア設計におけるモジュラー層の目的を無効にします。

移植性の高い高レベルライブラリ(Gtk、Qt)の中核の1つは、Xlibなどの低レベルのプラットフォーム固有のライブラリを抽象化することです。

まず、クリップボードの実装方法を学びましょう。

Xlibクリップボードがそれに関連しているかどうか疑問です。ただし、Linux用のGUIアプリケーションを作成したい場合は、Xlibについてあまり知る必要はありません。より高いレベルのライブラリの1つから始めます。

GtkのドラッグアンドドロップAPIについて学び、それが基盤とするXlib機能について素早く学びたい場合(Xlibを使用するシステムでは)、ねえ


「ウィンドウを放す前に、タスクバーにドラッグして復元する」などの機能を一般化することに興味があると述べました。この動作は実際にはDEまたはウィンドウマネージャ(WM - all)に属します。DEにはWMが必要ですしかし、WMにはDEは必要ありませんが、実際のDnDメカニズムは低くなります。その動作は、メカニズムの特定のタイプのユースケースにのみ関連します。しかし、それはDEの親領域であるため、個人の領域内にはありません。アプリケーション。 GUIアプリケーションを作成する場合は、次のようになります。いいえまったく気にしないでください。

Linuxは、デスクトップインターフェイスが異機種であるという点でWindowsとは異なります。これは、このような高レベルの動作を一般化することを意味します。意図的に疑わしいです(誰もがリングでそれらをすべて結びたくありません)。アプリケーションレベルの異機種間ウィンドウメカニズムに焦点を当てるのは、境界線とタイトルバーの正確な形状に焦点を合わせるよりも適切ではありません。 DE / WMはこれを処理して統合された外観を作成します。そして感じデスクトップ全体に対してユーザーが構成します。単一のアプリケーションがエンドユーザーとDEからこのコントロールを奪い、Windowsの実行を見たい方法で実行することは適切ではなく、ユーザーフレンドリーではありません。あなたのデスクトップの選択。あなたのアプリケーションを使いたいからといって、あなたのWRTウィンドウの動作規則も遵守したいという意味ではありません。アプリケーションは含まれる必要はなく、ほとんどの場合関与してはいけません。このモードに反対する理由はありません。気に入らないかもしれませんが、ターゲットにしたいオペレーティングシステムのユーザーが好きかもしれません。 Appleユーザーは、デスクトップをWindowsのように動作させたいアプリケーションプログラマーを嫌い、WindowsユーザーはデスクトップをKDEのように動作させたいアプリケーションプログラマーが好きではありません。

つまり、一種のアドオン「ジェスチャー」ライブラリには何の問題もありません。しかし、これはDE実装に適しているようですが、いくつかは設定可能なジェスチャーを持っていますが、それは言います。あなたは興味があるかもしれません拡張ウィンドウマネージャのプロンプトこれは、アプリケーションが特定の種類の動作を呼び出すのに役立つ高レベルの汎用プロトコルを作成しようとします。汎用プロトコルは確認するこの場合、タスクバー)。 EWMH準拠はもちろん自発的であり、WMによって異なる場合があります。


1.ベアメタルからGUIアプリケーションを作成することも可能です。独自のオペレーティングシステムを作成し、そこから始めます。しかし、繰り返しますが、これは本格的なアプローチではありません。

おすすめ記事