GTK+ 有一套高級的函式用來支持圖形程式之間通過拖曳系統傳遞訊息。GTK+ 能在低級的 Xdnd 和 Motif 拖曳協議基礎上實施拖曳。
概述
一個支持 GTK+ 拖曳的應用程式先要定義和設置能拖曳的元件。每個元件都可以是拖曳的來源端和/或目標端。注意這些元件必須有一個關聯的 X 視窗,用 GTK_WIDGET_NO_WINDOW(widget) 檢測。
來源元件可以發送拖動資料,因此允許用戶把東西從它們上面拖出去,同時目標元件能接收拖動資料。拖曳的目標端能限制它們接受誰的拖動資料,比如,同一應用程式或任意應用程式(包括它自己)。
發送和接收拖動資料是利用 GTK+ 信號來進行的。投放一個項目到一個目的元件需要一個資料請求(來源元件使用)和資料接收信號處理函式(目的元件使用)。如果你想要知道何時拖動開始(在開始的最初一瞬間),以及何時整個拖曳過程完成(是否成功)可以連接一些附加的信號處理函式來使用。
當接收到請求時,你的應用程式將需要為來源元件提供資料,還包括一個拖動資料請求信號處理函式。而對目的元件將需要一個拖動資料接收信號處理函式。
一個典型的拖曳週期將像下面這樣:
- 拖動開始。
- 拖動資料請求(當投放發生)。
- 拖動資料被接收(可能在同一個應用程式內部或不同應用程式之間)。
- 拖動資料被刪除(如果拖動是移動)。
- 拖曳過程完成。
在它們之間也有一些次要的步驟,但這些我們等下再作詳細介紹。
1 則留言